Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3b68d70d authored by Lennert Buytenhek's avatar Lennert Buytenhek Committed by Linus Torvalds
Browse files

[PATCH] cs89x0: cleanly implement ixdp2x01 and pnx0501 support



Implement suitable versions of the readword/writeword macros for ixdp2x01 and
pnx0501.  Handle the 32-bit spacing of the registers in these functions
instead of in the header file.

Signed-off-by: default avatarLennert Buytenhek <buytenh@wantstofly.org>
Cc: dmitry pervushin <dpervushin@ru.mvista.com>
Cc: <dsaxena@plexity.net>
Cc: Jeff Garzik <jgarzik@pobox.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 3eaa5e7d
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -338,6 +338,32 @@ out:
}
#endif

#if defined(CONFIG_ARCH_IXDP2X01)
static int
readword(unsigned long base_addr, int portno)
{
	return (u16)__raw_readl(base_addr + (portno << 1));
}

static void
writeword(unsigned long base_addr, int portno, int value)
{
	__raw_writel((u16)value, base_addr + (portno << 1));
}
#else
#if defined(CONFIG_ARCH_PNX0501)
static int
readword(unsigned long base_addr, int portno)
{
	return inw(base_addr + (portno << 1));
}

static void
writeword(unsigned long base_addr, int portno, int value)
{
	outw(value, base_addr + (portno << 1));
}
#else
static int
readword(unsigned long base_addr, int portno)
{
@@ -349,6 +375,8 @@ writeword(unsigned long base_addr, int portno, int value)
{
	outw(value, base_addr + portno);
}
#endif
#endif

static int
readreg(struct net_device *dev, int regno)
+6 −13
Original line number Diff line number Diff line
@@ -16,13 +16,6 @@

#include <linux/config.h>

#if defined(CONFIG_ARCH_IXDP2X01) || defined(CONFIG_ARCH_PNX0105)
/* IXDP2401/IXDP2801 uses dword-aligned register addressing */
#define CS89x0_PORT(reg) ((reg) * 2)
#else
#define CS89x0_PORT(reg) (reg)
#endif

#define PP_ChipID 0x0000	/* offset   0h -> Corp -ID              */
				/* offset   2h -> Model/Product Number  */
				/* offset   3h -> Chip Revision Number  */
@@ -332,16 +325,16 @@
#define RAM_SIZE	0x1000       /*  The card has 4k bytes or RAM */
#define PKT_START PP_TxFrame  /*  Start of packet RAM */

#define RX_FRAME_PORT	CS89x0_PORT(0x0000)
#define RX_FRAME_PORT	0x0000
#define TX_FRAME_PORT RX_FRAME_PORT
#define TX_CMD_PORT	CS89x0_PORT(0x0004)
#define TX_CMD_PORT	0x0004
#define TX_NOW		0x0000       /*  Tx packet after   5 bytes copied */
#define TX_AFTER_381	0x0040       /*  Tx packet after 381 bytes copied */
#define TX_AFTER_ALL	0x00c0       /*  Tx packet after all bytes copied */
#define TX_LEN_PORT	CS89x0_PORT(0x0006)
#define ISQ_PORT	CS89x0_PORT(0x0008)
#define ADD_PORT	CS89x0_PORT(0x000A)
#define DATA_PORT	CS89x0_PORT(0x000C)
#define TX_LEN_PORT	0x0006
#define ISQ_PORT	0x0008
#define ADD_PORT	0x000A
#define DATA_PORT	0x000C

#define EEPROM_WRITE_EN		0x00F0
#define EEPROM_WRITE_DIS	0x0000