Hi Daniel, On Sat, Nov 29, 2008 at 9:47 AM, Daniel Mack <[EMAIL PROTECTED]> wrote:
> 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. > > 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]> > > > diff --git a/drivers/net/ax88796.h b/drivers/net/ax88796.h > index 43a1639..60469c0 100644 > --- a/drivers/net/ax88796.h > +++ b/drivers/net/ax88796.h > @@ -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 > + 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) > > #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__ */ > + > ___________ regards, Ben
_______________________________________________ U-Boot mailing list [email protected] http://lists.denx.de/mailman/listinfo/u-boot

