public inbox for netdev@vger.kernel.org 
 help / color / mirror / Atom feed
From: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft•com>
To: Joachim Eastwood <manabian@gmail•com>
Cc: bgat@billgatliff•com, netdev@vger•kernel.org,
	nicolas.ferre@atmel•com, hskinnemoen@gmail•com,
	davem@davemloft•net, linux-arm-kernel@lists•infradead.org,
	egtvedt@samfundet•no
Subject: Re: [PATCH 3/5] net/at91_ether: move eth addr quirk into csb337 board setup
Date: Sun, 21 Oct 2012 20:34:18 +0200	[thread overview]
Message-ID: <20121021183418.GC18964@game.jcrosoft.org> (raw)
In-Reply-To: <1350829392-3812-4-git-send-email-manabian@gmail.com>

On 16:23 Sun 21 Oct     , Joachim Eastwood wrote:
> Move Ethernet address byte order fix for csb337 into it's board
> setup.
> 
> This will allow us to remove the last mach include from at91_ether
> and also to share the address setup with the macb driver.
no the current drivers expect mach/board.h, mach/at91rm9200_emac.h, asm/gpio.h

waht you did will not even compile on non at91 platform

Did you even compile it on non at91?

Best Regards,
J.
> 
> Signed-off-by: Joachim Eastwood <manabian@gmail•com>
> ---
>  arch/arm/mach-at91/board-csb337.c         | 35 +++++++++++++++++++++++++++++++
>  drivers/net/ethernet/cadence/Kconfig      |  1 -
>  drivers/net/ethernet/cadence/at91_ether.c | 26 ++++++-----------------
>  3 files changed, 41 insertions(+), 21 deletions(-)
> 
> diff --git a/arch/arm/mach-at91/board-csb337.c b/arch/arm/mach-at91/board-csb337.c
> index 3e37437..5522132 100644
> --- a/arch/arm/mach-at91/board-csb337.c
> +++ b/arch/arm/mach-at91/board-csb337.c
> @@ -217,6 +217,40 @@ static struct gpio_led csb_leds[] = {
>  	}
>  };
>  
> +/*
> + * MicroMonitor (uMon) on the CSB337 store the ethernet address in the
> + * wrong byte order (and continues to do so, for bug-compatibility).
> + */
> +#define MACB_SA1B	0x0098
> +#define MACB_SA1T	0x009c
> +static void __init csb337_fix_eth_addr(void)
> +{
> +	void __iomem *emac;
> +	u32 lo, hi, tmp;
> +	int i;
> +
> +	emac = ioremap(AT91RM9200_BASE_EMAC, SZ_16K);
> +	if (!emac) {
> +		printk(KERN_ERR "csb337: unable to fixup Ethernet address\n");
> +		return;
> +	}
> +
> +	/* Fix byte order on all 4 address registers */
> +	for (i = 0; i < 4; i++) {
> +		lo = readl(emac + MACB_SA1B + i * 8);
> +		hi = readl(emac + MACB_SA1T + i * 8);
> +
> +		tmp = (lo & 0xff) << 8 | (lo & 0xff00) >> 8;
> +		writel(tmp, emac + MACB_SA1T + i * 8);
> +
> +		tmp = (hi & 0xff) << 8 | (hi & 0xff00) >> 8
> +			| (lo & 0xff0000) << 8
> +			| (lo & 0xff000000) >> 8;
> +		writel(tmp, emac + MACB_SA1B + i * 8);
> +	}
> +
> +	iounmap(emac);
> +}
>  
>  static void __init csb337_board_init(void)
>  {
> @@ -225,6 +259,7 @@ static void __init csb337_board_init(void)
>  	at91_register_uart(0, 0, 0);
>  	at91_add_device_serial();
>  	/* Ethernet */
> +	csb337_fix_eth_addr();
>  	at91_add_device_eth(&csb337_eth_data);
>  	/* USB Host */
>  	at91_add_device_usbh(&csb337_usbh_data);
> diff --git a/drivers/net/ethernet/cadence/Kconfig b/drivers/net/ethernet/cadence/Kconfig
> index f6d0956..40172d1 100644
> --- a/drivers/net/ethernet/cadence/Kconfig
> +++ b/drivers/net/ethernet/cadence/Kconfig
> @@ -21,7 +21,6 @@ if NET_CADENCE
>  
>  config ARM_AT91_ETHER
>  	tristate "AT91RM9200 Ethernet support"
> -	depends on ARM && ARCH_AT91RM9200
>  	select NET_CORE
>  	select MACB
>  	---help---
> diff --git a/drivers/net/ethernet/cadence/at91_ether.c b/drivers/net/ethernet/cadence/at91_ether.c
> index 375d272..5ed1a63 100644
> --- a/drivers/net/ethernet/cadence/at91_ether.c
> +++ b/drivers/net/ethernet/cadence/at91_ether.c
> @@ -32,8 +32,6 @@
>  #include <linux/phy.h>
>  #include <linux/io.h>
>  
> -#include <asm/mach-types.h>
> -
>  #include "macb.h"
>  
>  #define DRV_NAME	"at91_ether"
> @@ -55,30 +53,18 @@
>   *   U-Boot on the AT91RM9200-DK do not do this.
>   *
>   * - Likewise it must store the addresses in the correct byte order.
> - *   MicroMonitor (uMon) on the CSB337 does this incorrectly (and
> - *   continues to do so, for bug-compatibility).
>   */
>  
>  static short __init unpack_mac_address(struct net_device *dev, unsigned int hi, unsigned int lo)
>  {
>  	char addr[6];
>  
> -	if (machine_is_csb337()) {
> -		addr[5] = (lo & 0xff);			/* The CSB337 bootloader stores the MAC the wrong-way around */
> -		addr[4] = (lo & 0xff00) >> 8;
> -		addr[3] = (lo & 0xff0000) >> 16;
> -		addr[2] = (lo & 0xff000000) >> 24;
> -		addr[1] = (hi & 0xff);
> -		addr[0] = (hi & 0xff00) >> 8;
> -	}
> -	else {
> -		addr[0] = (lo & 0xff);
> -		addr[1] = (lo & 0xff00) >> 8;
> -		addr[2] = (lo & 0xff0000) >> 16;
> -		addr[3] = (lo & 0xff000000) >> 24;
> -		addr[4] = (hi & 0xff);
> -		addr[5] = (hi & 0xff00) >> 8;
> -	}
> +	addr[0] = (lo & 0xff);
> +	addr[1] = (lo & 0xff00) >> 8;
> +	addr[2] = (lo & 0xff0000) >> 16;
> +	addr[3] = (lo & 0xff000000) >> 24;
> +	addr[4] = (hi & 0xff);
> +	addr[5] = (hi & 0xff00) >> 8;
>  
>  	if (is_valid_ether_addr(addr)) {
>  		memcpy(dev->dev_addr, &addr, 6);
> -- 
> 1.7.12.4
> 

  parent reply	other threads:[~2012-10-21 18:34 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-21 14:23 [PATCH 0/5] make cadence ethernet drivers build on any architecture Joachim Eastwood
2012-10-21 14:23 ` [PATCH 1/5] net/cadence: get rid of HAVE_NET_MACB Joachim Eastwood
2012-10-21 18:30   ` Jean-Christophe PLAGNIOL-VILLARD
2012-10-21 20:26     ` Joachim Eastwood
2012-10-21 23:27   ` David Miller
2012-10-22  6:59     ` Joachim Eastwood
2012-10-22  7:10       ` David Miller
2012-10-21 14:23 ` [PATCH 2/5] net/at91_ether: select MACB in Kconfig Joachim Eastwood
2012-10-21 18:31   ` Jean-Christophe PLAGNIOL-VILLARD
2012-10-21 20:27     ` Joachim Eastwood
2012-10-21 14:23 ` [PATCH 3/5] net/at91_ether: move eth addr quirk into csb337 board setup Joachim Eastwood
2012-10-21 18:25   ` Jean-Christophe PLAGNIOL-VILLARD
2012-10-21 20:39     ` Joachim Eastwood
2012-10-21 18:34   ` Jean-Christophe PLAGNIOL-VILLARD [this message]
2012-10-21 20:30     ` Joachim Eastwood
2012-10-21 14:23 ` [PATCH 4/5] ARM: AT91: Remove HAVE_NET_MACB Joachim Eastwood
2012-10-21 14:23 ` [PATCH 5/5] AVR32: " Joachim Eastwood

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20121021183418.GC18964@game.jcrosoft.org \
    --to=plagnioj@jcrosoft$(echo .)com \
    --cc=bgat@billgatliff$(echo .)com \
    --cc=davem@davemloft$(echo .)net \
    --cc=egtvedt@samfundet$(echo .)no \
    --cc=hskinnemoen@gmail$(echo .)com \
    --cc=linux-arm-kernel@lists$(echo .)infradead.org \
    --cc=manabian@gmail$(echo .)com \
    --cc=netdev@vger$(echo .)kernel.org \
    --cc=nicolas.ferre@atmel$(echo .)com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox