rename patch
[openwrt.git] / target / linux / ixp4xx / patches-2.6.23 / 032-ixp4xx-net-drivers-nas100d.patch
1 Index: linux-2.6.23.17/arch/arm/mach-ixp4xx/nas100d-setup.c
2 ===================================================================
3 --- linux-2.6.23.17.orig/arch/arm/mach-ixp4xx/nas100d-setup.c
4 +++ linux-2.6.23.17/arch/arm/mach-ixp4xx/nas100d-setup.c
5 @@ -21,6 +21,7 @@
6  #include <asm/mach-types.h>
7  #include <asm/mach/arch.h>
8  #include <asm/mach/flash.h>
9 +#include <asm/io.h>
10  
11  static struct flash_platform_data nas100d_flash_data = {
12         .map_name               = "cfi_probe",
13 @@ -125,12 +126,30 @@ static struct platform_device nas100d_ua
14         .resource               = nas100d_uart_resources,
15  };
16  
17 +/* Built-in 10/100 Ethernet MAC interfaces */
18 +static struct eth_plat_info nas100d_plat_eth[] = {
19 +        {
20 +                .phy            = 0,
21 +                .rxq            = 3,
22 +               .txreadyq       = 20,
23 +        }
24 +};
25 +
26 +static struct platform_device nas100d_eth[] = {
27 +        {
28 +                .name                   = "ixp4xx_eth",
29 +                .id                     = IXP4XX_ETH_NPEB,
30 +                .dev.platform_data      = nas100d_plat_eth,
31 +        }
32 +};
33 +
34  static struct platform_device *nas100d_devices[] __initdata = {
35         &nas100d_i2c_gpio,
36         &nas100d_flash,
37  #ifdef CONFIG_LEDS_IXP4XX
38         &nas100d_leds,
39  #endif
40 +       &nas100d_eth[0],
41  };
42  
43  static void nas100d_power_off(void)
44 @@ -146,6 +165,9 @@ static void nas100d_power_off(void)
45  
46  static void __init nas100d_init(void)
47  {
48 +       uint8_t __iomem *f;
49 +       int i;
50 +
51         ixp4xx_sys_init();
52  
53         /* gpio 14 and 15 are _not_ clocks */
54 @@ -165,6 +187,33 @@ static void __init nas100d_init(void)
55         (void)platform_device_register(&nas100d_uart);
56  
57         platform_add_devices(nas100d_devices, ARRAY_SIZE(nas100d_devices));
58 +
59 +
60 +       /*
61 +        * Map in a portion of the flash and read the MAC address.
62 +        * Since it is stored in BE in the flash itself, we need to
63 +        * byteswap it if we're in LE mode.
64 +        */
65 +       if ((f = ioremap(IXP4XX_EXP_BUS_BASE(0), 0x1000000))) {
66 +#ifdef __ARMEB__
67 +               for (i = 0; i < 6; i++) {
68 +                       nas100d_plat_eth[0].hwaddr[i] = readb(f + 0xFC0FD8 + i);
69 +               }
70 +#else
71 +               nas100d_plat_eth[0].hwaddr[0] = readb(f + 0xFC0FD8 + 3);
72 +               nas100d_plat_eth[0].hwaddr[1] = readb(f + 0xFC0FD8 + 2);
73 +               nas100d_plat_eth[0].hwaddr[2] = readb(f + 0xFC0FD8 + 1);
74 +               nas100d_plat_eth[0].hwaddr[3] = readb(f + 0xFC0FD8 + 0);
75 +               nas100d_plat_eth[0].hwaddr[4] = readb(f + 0xFC0FD8 + 7);
76 +               nas100d_plat_eth[0].hwaddr[5] = readb(f + 0xFC0FD8 + 6);
77 +#endif
78 +               iounmap(f);
79 +       }
80 +       printk(KERN_INFO "NAS100D: Using MAC address %.2x:%.2x:%.2x:%.2x:%.2x:%.2x for port 0\n",
81 +              nas100d_plat_eth[0].hwaddr[0], nas100d_plat_eth[0].hwaddr[1],
82 +              nas100d_plat_eth[0].hwaddr[2], nas100d_plat_eth[0].hwaddr[3],
83 +              nas100d_plat_eth[0].hwaddr[4], nas100d_plat_eth[0].hwaddr[5]);
84 +
85  }
86  
87  MACHINE_START(NAS100D, "Iomega NAS 100d")