[PATCH] cs89x0: cleanly implement ixdp2x01 and pnx0501 support
authorLennert Buytenhek <buytenh@wantstofly.org>
Sun, 8 Jan 2006 09:01:11 +0000 (01:01 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Mon, 9 Jan 2006 04:12:45 +0000 (20:12 -0800)
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: Lennert Buytenhek <buytenh@wantstofly.org>
Cc: dmitry pervushin <dpervushin@ru.mvista.com>
Cc: <dsaxena@plexity.net>
Cc: Jeff Garzik <jgarzik@pobox.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/net/cs89x0.c
drivers/net/cs89x0.h

index 756d80adc47bd36fac53a2f392c96025079f540c..7abc9f858f9854eb6edf8bf71b7b62bc291db6f8 100644 (file)
@@ -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)
index decea264f1214c615b557e2678f34ce6225b8643..bd954aaa636f2490850e29aec57b9fb265f2dca8 100644 (file)
 
 #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  */
 #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