projects
/
oweals
/
u-boot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
net: smc911x: Add pkt_data_pull and pkt_data_push function
[oweals/u-boot.git]
/
drivers
/
net
/
smc911x.c
diff --git
a/drivers/net/smc911x.c
b/drivers/net/smc911x.c
index 7555cb967b8941c125d93be7b0de156e2c83ea25..648c94cbbbbd8046631ad19bac80d6a54e019d2a 100644
(file)
--- a/
drivers/net/smc911x.c
+++ b/
drivers/net/smc911x.c
@@
-33,7
+33,7
@@
CONFIG_DRIVER_SMC911X_16_BIT shall be set"
#endif
CONFIG_DRIVER_SMC911X_16_BIT shall be set"
#endif
-#if
def CONFIG_DRIVER_SMC911X_32_BIT
+#if
defined (CONFIG_DRIVER_SMC911X_32_BIT)
static inline u32 reg_read(u32 addr)
{
return *(volatile u32*)addr;
static inline u32 reg_read(u32 addr)
{
return *(volatile u32*)addr;
@@
-42,7
+42,7
@@
static inline void reg_write(u32 addr, u32 val)
{
*(volatile u32*)addr = val;
}
{
*(volatile u32*)addr = val;
}
-#elif
CONFIG_DRIVER_SMC911X_16_BIT
+#elif
defined (CONFIG_DRIVER_SMC911X_16_BIT)
static inline u32 reg_read(u32 addr)
{
volatile u16 *addr_16 = (u16 *)addr;
static inline u32 reg_read(u32 addr)
{
volatile u16 *addr_16 = (u16 *)addr;
@@
-57,6
+57,11
@@
static inline void reg_write(u32 addr, u32 val)
#error "SMC911X: undefined bus width"
#endif /* CONFIG_DRIVER_SMC911X_16_BIT */
#error "SMC911X: undefined bus width"
#endif /* CONFIG_DRIVER_SMC911X_16_BIT */
+u32 pkt_data_pull(u32 addr) \
+ __attribute__ ((weak, alias ("reg_read")));
+void pkt_data_push(u32 addr, u32 val) \
+ __attribute__ ((weak, alias ("reg_write")));
+
#define mdelay(n) udelay((n)*1000)
/* Below are the register offsets and bit definitions
#define mdelay(n) udelay((n)*1000)
/* Below are the register offsets and bit definitions
@@
-597,7
+602,7
@@
int eth_init(bd_t *bd)
val = reg_read(BYTE_TEST);
if (val != 0x87654321) {
val = reg_read(BYTE_TEST);
if (val != 0x87654321) {
- printf(DRIVERNAME ": Invalid chip endian 0x
08%
x\n", val);
+ printf(DRIVERNAME ": Invalid chip endian 0x
%08l
x\n", val);
goto err_out;
}
goto err_out;
}
@@
-606,7
+611,7
@@
int eth_init(bd_t *bd)
if (chip_ids[i].id == val) break;
}
if (!chip_ids[i].id) {
if (chip_ids[i].id == val) break;
}
if (!chip_ids[i].id) {
- printf(DRIVERNAME ": Unknown chip ID %04x\n", val);
+ printf(DRIVERNAME ": Unknown chip ID %04
l
x\n", val);
goto err_out;
}
goto err_out;
}
@@
-641,7
+646,7
@@
int eth_send(volatile void *packet, int length)
tmplen = (length + 3) / 4;
while (tmplen--)
tmplen = (length + 3) / 4;
while (tmplen--)
-
reg_write
(TX_DATA_FIFO, *data++);
+
pkt_data_push
(TX_DATA_FIFO, *data++);
/* wait for transmission */
while (!((reg_read(TX_FIFO_INF) & TX_FIFO_INF_TSUSED) >> 16));
/* wait for transmission */
while (!((reg_read(TX_FIFO_INF) & TX_FIFO_INF_TSUSED) >> 16));
@@
-684,7
+689,7
@@
int eth_rx(void)
tmplen = (pktlen + 2+ 3) / 4;
while (tmplen--)
tmplen = (pktlen + 2+ 3) / 4;
while (tmplen--)
- *data++ =
reg_read
(RX_DATA_FIFO);
+ *data++ =
pkt_data_pull
(RX_DATA_FIFO);
if (status & RX_STS_ES)
printf(DRIVERNAME
if (status & RX_STS_ES)
printf(DRIVERNAME