drivers/net/ax88796.h revised
PATCH 1/1 drivers/net/ax88796.h revised
Hi,
I overhauled drivers/net/ax88796.h a bit to make some more settings board-dependend that used to be hard-coded.
There is also a new settings block for the chip to be used on the Colibri PXA300 board.
drivers/net/ax88796.h +42 -21
@@ -23,7 +23,6 @@#ifndef __DRIVERS_AX88796L_H__#define __DRIVERS_AX88796L_H__ -#define DP_DATA (0x10 << 1)#define START_PG 0x40/* First page of TX buffer */ #define START_PG2 0x48#define STOP_PG 0x80/* Last page +1 of RX ring */
@@ -32,8 +31,47 @@#define RX_END STOP_PG#define AX88796L_BASE_ADDRESS CONFIG_DRIVER_NE2000_BASE -#define AX88796L_BYTE_ACCESS 0x00001000 -#define AX88796L_OFFSET 0x00000400 + +/* R7780MP Specific code */ +#if defined(CONFIG_R7780MP ) +#define DP_DATA (0x10 << 1) +#define ISA_OFFSET 0x1400 +#define AX88796L_BYTE_ACCESS 0x00001000 +#define AX88796L_OFFSET 0x00000400 + +#define DP_IN (_b_, _o_, _d_) (_d_) = \ + *( (vu_short *) ((_b_) + ((_o_) * 2) + ISA_OFFSET)) +#define DP_OUT (_b_, _o_, _d_) \ + *((vu_short *)((_b_) + ((_o_) * 2) + ISA_OFFSET)) = (_d_) +#define DP_IN_DATA (_b_, _d_) (_d_) = *( (vu_short *) ((_b_) + ISA_OFFSET)) +#define DP_OUT_DATA (_b_, _d_) *( (vu_short *) ((_b_)+ISA_OFFSET)) = (_d_) +/* Colribri PXA300 specific code */ +#elif defined(CONFIG_COLIBRI_PXA300 ) +#define ISA_OFFSET 0 +#define DP_DATA (1 << 11) +#define AX88796L_BYTE_ACCESS 0 +#define AX88796L_OFFSET 0 + +#define DP_IN (_b_, _o_, _d_) (_d_) = \ + *( (vu_char *) ((_b_) + ((_o_) * 2) + ISA_OFFSET)) +#define DP_OUT (_b_, _o_, _d_) \ + *((vu_char *)((_b_) + ((_o_) * 2) + ISA_OFFSET)) = (_d_) +#define DP_IN_DATA (_b_, _d_) (_d_) = *( (vu_char *) ((_b_) + ISA_OFFSET)) +#define DP_OUT_DATA (_b_, _d_) *( (vu_char *) ((_b_)+ISA_OFFSET)) = (_d_) +#else +/* Please change for your target boards */ +#warning PLEASE DEFINE AX88796 SETTINGS! +#define ISA_OFFSET 0 +#define DP_DATA 0 +#define AX88796L_BYTE_ACCESS 0 +#define AX88796L_OFFSET 0 + +#define DP_IN (_b_, _o_, _d_) (_d_) = *( (vu_short *)((_b_)+(_o_ )+ISA_OFFSET)) +#define DP_OUT (_b_, _o_, _d_) *((vu_short *)((_b_)+(_o_)+ISA_OFFSET)) = (_d_) +#define DP_IN_DATA (_b_, _d_) (_d_) = *( (vu_short *) ((_b_)+ISA_OFFSET)) +#define DP_OUT_DATA (_b_, _d_) *( (vu_short *) ((_b_)+ISA_OFFSET)) = (_d_) +#endif +#define AX88796L_ADDRESS_BYTE AX88796L_BASE_ADDRESS + \ AX88796L_BYTE_ACCESS + AX88796L_OFFSET#define AX88796L_REG_MEMR AX88796L_ADDRESS_BYTE + (0x14<<1)
@@ -60,22 +98,5 @@#define MAC_EEP_EWEN 4#define MAC_EEP_EWDS 5 -/* R7780MP Specific code */ -#if defined(CONFIG_R7780MP ) -#define ISA_OFFSET 0x1400 -#define DP_IN (_b_, _o_, _d_) (_d_) = \ - *( (vu_short *) ((_b_) + ((_o_) * 2) + ISA_OFFSET)) -#define DP_OUT (_b_, _o_, _d_) \ - *((vu_short *)((_b_) + ((_o_) * 2) + ISA_OFFSET)) = (_d_) -#define DP_IN_DATA (_b_, _d_) (_d_) = *( (vu_short *) ((_b_) + ISA_OFFSET)) -#define DP_OUT_DATA (_b_, _d_) *( (vu_short *) ((_b_)+ISA_OFFSET)) = (_d_) -#else -/* Please change for your target boards */ -#define ISA_OFFSET 0x0000 -#define DP_IN (_b_, _o_, _d_) (_d_) = *( (vu_short *)((_b_)+(_o_ )+ISA_OFFSET)) -#define DP_OUT (_b_, _o_, _d_) *((vu_short *)((_b_)+(_o_)+ISA_OFFSET)) = (_d_) -#define DP_IN_DATA (_b_, _d_) (_d_) = *( (vu_short *) ((_b_)+ISA_OFFSET)) -#define DP_OUT_DATA (_b_, _d_) *( (vu_short *) ((_b_)+ISA_OFFSET)) = (_d_) -#endif -#endif /* __DRIVERS_AX88796L_H__ */ +
PATCH 1/1 drivers/net/ax88796.h revised
Hi Daniel,
Quoted 5 lines · Daniel Mack
Hi,
I overhauled
drivers/net/ax88796.ha bit to make some more settings board-dependend that used to be hard-coded.
No board-specific code in drivers please. Ignore the existing mess and strive to do better.
Quoted 72 lines
There is also a new settings block for the chip to be used on the Colibri PXA300 board.
Signed-off-by Daniel Mack <[email protected]>drivers/net/ax88796.h +27
-3@@ -23,7 +23,6 @@#ifndef __DRIVERS_AX88796L_H__#define __DRIVERS_AX88796L_H__ -#define DP_DATA (0x10 << 1)#define START_PG 0x40/* First page of TX buffer */ #define START_PG2 0x48#define STOP_PG 0x80/* Last page +1 of RX ring */ @@ -32,8 +31,47 @@#define RX_END STOP_PG#define AX88796L_BASE_ADDRESS CONFIG_DRIVER_NE2000_BASE -#define AX88796L_BYTE_ACCESS 0x00001000 -#define AX88796L_OFFSET 0x00000400 + +/* R7780MP Specific code */ +#if defined(CONFIG_R7780MP ) +#define DP_DATA (0x10 << 1) +#define ISA_OFFSET 0x1400 +#define AX88796L_BYTE_ACCESS 0x00001000 +#define AX88796L_OFFSET 0x00000400 + +#define DP_IN (_b_, _o_, _d_) (_d_) = \ + *( (vu_short *) ((_b_) + ((_o_) * 2) + ISA_OFFSET)) +#define DP_OUT (_b_, _o_, _d_) \ + *((vu_short *)((_b_) + ((_o_) * 2) + ISA_OFFSET)) = (_d_) +#define DP_IN_DATA (_b_, _d_) (_d_) = *( (vu_short *) ((_b_) + ISA_OFFSET)) +#define DP_OUT_DATA (_b_, _d_) *( (vu_short *) ((_b_)+ISA_OFFSET)) = (_d_) +/* Colribri PXA300 specific code */ +#elif defined(CONFIG_COLIBRI_PXA300 ) +#define ISA_OFFSET 0 +#define DP_DATA (1 << 11) +#define AX88796L_BYTE_ACCESS 0 +#define AX88796L_OFFSET 0 + +#define DP_IN (_b_, _o_, _d_) (_d_) = \ + *( (vu_char *) ((_b_) + ((_o_) * 2) + ISA_OFFSET)) +#define DP_OUT (_b_, _o_, _d_) \ + *((vu_char *)((_b_) + ((_o_) * 2) + ISA_OFFSET)) = (_d_) +#define DP_IN_DATA (_b_, _d_) (_d_) = *( (vu_char *) ((_b_) + ISA_OFFSET)) +#define DP_OUT_DATA (_b_, _d_) *( (vu_char *) ((_b_)+ISA_OFFSET))= (_d_)
drivers/net/ax88796.h +9
-0+#else +/* Please change for your target boards */ +#warning PLEASE DEFINE AX88796 SETTINGS! +#define ISA_OFFSET 0 +#define DP_DATA 0 +#define AX88796L_BYTE_ACCESS 0 +#define AX88796L_OFFSET 0 + +#define DP_IN (_b_, _o_, _d_) (_d_) = *( (vu_short *)((_b_)+(_o_)+ISA_OFFSET))
+ #defineDP_OUT(_b_, _o_, _d_)*((vu_short
*)((_b_)+(_o_)+ISA_OFFSET)) = (_d_)
+ #defineDP_IN_DATA(_b_, _d_)(_d_) = *( (vu_short*)
((_b_)+ISA_OFFSET))
+ #defineDP_OUT_DATA(_b_, _d_)*( (vu_short*) ((_b_)+ISA_OFFSET))
= (_d_)
drivers/net/ax88796.h line 74
Quoted 2 lines
drivers/net/ax88796.h +2
-0+#endif +
Please have a look at the smc911x driver to see a preferable way of handling different bus widths. Use static inlines instead of these hideous macros (I know you've only cut&pasted so aren't responsible for the originals)
Quoted 31 lines
#define AX88796L_ADDRESS_BYTE AX88796L_BASE_ADDRESS + \ AX88796L_BYTE_ACCESS + AX88796L_OFFSET#define
AX88796L_REG_MEMRAX88796L_ADDRESS_BYTE+ (0x14<<1)drivers/net/ax88796.h +0
-14@@ -60,22 +98,5 @@#define MAC_EEP_EWEN 4#define MAC_EEP_EWDS 5 -/* R7780MP Specific code */ -#if defined(CONFIG_R7780MP ) -#define ISA_OFFSET 0x1400 -#define DP_IN (_b_, _o_, _d_) (_d_) = \ - *( (vu_short *) ((_b_) + ((_o_) * 2) + ISA_OFFSET)) -#define DP_OUT (_b_, _o_, _d_) \ - *((vu_short *)((_b_) + ((_o_) * 2) + ISA_OFFSET)) = (_d_) -#define DP_IN_DATA (_b_, _d_) (_d_) = *( (vu_short *) ((_b_) + ISA_OFFSET)) -#define DP_OUT_DATA (_b_, _d_) *( (vu_short *) ((_b_)+ISA_OFFSET)) = (_d_) -#else -/* Please change for your target boards */ -#define ISA_OFFSET 0x0000 -#define DP_IN (_b_, _o_, _d_) (_d_) = *( (vu_short *)((_b_)+(_o_ )+ISA_OFFSET)) -#define DP_OUT (_b_, _o_, _d_) *((vu_short *)((_b_)+(_o_)+ISA_OFFSET)) =(_d_)
drivers/net/ax88796.h +1
-4-#define DP_IN_DATA (_b_, _d_) (_d_) = *( (vu_short *) ((_b_)+ISA_OFFSET)) -#define DP_OUT_DATA (_b_, _d_) *( (vu_short *) ((_b_)+ISA_OFFSET)) = (_d_) -#endif -#endif /* __DRIVERS_AX88796L_H__ */ +
Quoted 1 line
___________
regards,
Ben