
The MACB IP used by AVR32 & AT91 have two different layout for USRIO register. We have to differentiate this in the driver code. No more cpu specific #ifdefs in driver: we manage a configuration variable.
Signed-off-by: Nicolas Ferre nicolas.ferre@atmel.com --- drivers/net/macb.c | 6 ++---- drivers/net/macb.h | 7 +++++++ 2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/drivers/net/macb.c b/drivers/net/macb.c index 6de0a04..1023315 100644 --- a/drivers/net/macb.c +++ b/drivers/net/macb.c @@ -446,15 +446,13 @@ static int macb_init(struct eth_device *netdev, bd_t *bd)
/* choose RMII or MII mode. This depends on the board */ #ifdef CONFIG_RMII -#if defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \ - defined(CONFIG_AT91SAM9263) || defined(CONFIG_AT91SAM9G20) +#if defined(CONFIG_MACB_USRIO_CFG1) macb_writel(macb, USRIO, MACB_BIT(RMII) | MACB_BIT(CLKEN)); #else macb_writel(macb, USRIO, 0); #endif #else -#if defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \ - defined(CONFIG_AT91SAM9263) || defined(CONFIG_AT91SAM9G20) +#if defined(CONFIG_MACB_USRIO_CFG1) macb_writel(macb, USRIO, MACB_BIT(CLKEN)); #else macb_writel(macb, USRIO, MACB_BIT(MII)); diff --git a/drivers/net/macb.h b/drivers/net/macb.h index f92a20c..349499c 100644 --- a/drivers/net/macb.h +++ b/drivers/net/macb.h @@ -212,6 +212,13 @@ #define MACB_SOF_OFFSET 30 #define MACB_SOF_SIZE 2
+/* MACB IP used by AVR32 & AT91 have two + * different layout for USRIO register. */ +#if !defined(CONFIG_AVR32) +/* Use AT91 USRIO layout */ +#define CONFIG_MACB_USRIO_CFG1 1 +#endif + /* Bitfields in USRIO */ #define MACB_MII_OFFSET 0 #define MACB_MII_SIZE 1