Skip to contentSkip to conversation

drivers/net/ax88796.h revised

PATCH New Daniel Mack 2 participants 2 messages Nov 29, 2008 – Dec 1, 2008 Network drivers

lore
Share & tools
lore
#0 lore raw

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
index 43a1639..60469c0 100644
@@ -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__ */
+
#1 lore raw

PATCH 1/1 drivers/net/ax88796.h revised

Hi Daniel,

Quoted 5 lines · Daniel Mack

Hi,

I overhauled drivers/net/ax88796.h a 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.

drivers/net/ax88796.h +27 -3
index 43a1639..60469c0 100644
@@ -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))
+ #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_)

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_MEMR AX88796L_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