mirror of https://gitee.com/openkylin/linux.git
[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: 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>
This commit is contained in:
parent
3eaa5e7dcc
commit
3b68d70dff
|
@ -338,6 +338,32 @@ struct net_device * __init cs89x0_probe(int unit)
|
||||||
}
|
}
|
||||||
#endif
|
#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
|
static int
|
||||||
readword(unsigned long base_addr, int portno)
|
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);
|
outw(value, base_addr + portno);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
static int
|
static int
|
||||||
readreg(struct net_device *dev, int regno)
|
readreg(struct net_device *dev, int regno)
|
||||||
|
|
|
@ -16,13 +16,6 @@
|
||||||
|
|
||||||
#include <linux/config.h>
|
#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 */
|
#define PP_ChipID 0x0000 /* offset 0h -> Corp -ID */
|
||||||
/* offset 2h -> Model/Product Number */
|
/* offset 2h -> Model/Product Number */
|
||||||
/* offset 3h -> Chip Revision Number */
|
/* offset 3h -> Chip Revision Number */
|
||||||
|
@ -332,16 +325,16 @@
|
||||||
#define RAM_SIZE 0x1000 /* The card has 4k bytes or RAM */
|
#define RAM_SIZE 0x1000 /* The card has 4k bytes or RAM */
|
||||||
#define PKT_START PP_TxFrame /* Start of packet 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_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_NOW 0x0000 /* Tx packet after 5 bytes copied */
|
||||||
#define TX_AFTER_381 0x0040 /* Tx packet after 381 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_AFTER_ALL 0x00c0 /* Tx packet after all bytes copied */
|
||||||
#define TX_LEN_PORT CS89x0_PORT(0x0006)
|
#define TX_LEN_PORT 0x0006
|
||||||
#define ISQ_PORT CS89x0_PORT(0x0008)
|
#define ISQ_PORT 0x0008
|
||||||
#define ADD_PORT CS89x0_PORT(0x000A)
|
#define ADD_PORT 0x000A
|
||||||
#define DATA_PORT CS89x0_PORT(0x000C)
|
#define DATA_PORT 0x000C
|
||||||
|
|
||||||
#define EEPROM_WRITE_EN 0x00F0
|
#define EEPROM_WRITE_EN 0x00F0
|
||||||
#define EEPROM_WRITE_DIS 0x0000
|
#define EEPROM_WRITE_DIS 0x0000
|
||||||
|
|
Loading…
Reference in New Issue