[U-Boot] [PATCH] drivers/net/ax88796.h revised

Ben Warren biggerbadderben at gmail.com
Mon Dec 1 07:36:15 CET 2008


Hi Daniel,

On Sat, Nov 29, 2008 at 9:47 AM, Daniel Mack <daniel at caiaq.de> 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 <daniel at caiaq.de>
>
>
> 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


More information about the U-Boot mailing list