ixp4xx: Updated patches to include all upstream-merged ixp4xx patches
[openwrt.git] / target / linux / ixp4xx / patches-2.6.24 / 014_ixp4xx_i2c_gpio.patch
1 Migrate all ixp4xx devices to the bitbanging I2C bus driver utilizing
2 the arch-neutral GPIO API (linux/i2c-gpio.h).
3
4 Tested by the nslu2-linux and openwrt projects in public firmware releases.
5
6 Acked-by: Rod Whitby <rod@whitby.id.au>
7 Signed-off-by: Michael-Luke Jones <mlj28@cam.ac.uk>
8
9 Index: linux-2.6.24-rc6-armeb/arch/arm/mach-ixp4xx/nslu2-setup.c
10 ===================================================================
11 --- linux-2.6.24-rc6-armeb.orig/arch/arm/mach-ixp4xx/nslu2-setup.c      2008-01-05 18:10:05.000000000 +1030
12 +++ linux-2.6.24-rc6-armeb/arch/arm/mach-ixp4xx/nslu2-setup.c   2008-01-05 18:10:10.000000000 +1030
13 @@ -18,6 +18,7 @@
14  #include <linux/serial.h>
15  #include <linux/serial_8250.h>
16  #include <linux/leds.h>
17 +#include <linux/i2c-gpio.h>
18  
19  #include <asm/mach-types.h>
20  #include <asm/mach/arch.h>
21 @@ -41,7 +42,7 @@
22         .resource               = &nslu2_flash_resource,
23  };
24  
25 -static struct ixp4xx_i2c_pins nslu2_i2c_gpio_pins = {
26 +static struct i2c_gpio_platform_data nslu2_i2c_gpio_data = {
27         .sda_pin                = NSLU2_SDA_PIN,
28         .scl_pin                = NSLU2_SCL_PIN,
29  };
30 @@ -82,11 +83,12 @@
31  };
32  #endif
33  
34 -static struct platform_device nslu2_i2c_controller = {
35 -       .name                   = "IXP4XX-I2C",
36 +static struct platform_device nslu2_i2c_gpio = {
37 +       .name                   = "i2c-gpio",
38         .id                     = 0,
39 -       .dev.platform_data      = &nslu2_i2c_gpio_pins,
40 -       .num_resources          = 0,
41 +       .dev     = {
42 +               .platform_data  = &nslu2_i2c_gpio_data,
43 +       },
44  };
45  
46  static struct platform_device nslu2_beeper = {
47 @@ -139,7 +141,7 @@
48  };
49  
50  static struct platform_device *nslu2_devices[] __initdata = {
51 -       &nslu2_i2c_controller,
52 +       &nslu2_i2c_gpio,
53         &nslu2_flash,
54         &nslu2_beeper,
55  #ifdef CONFIG_LEDS_IXP4XX
56 Index: linux-2.6.24-rc6-armeb/arch/arm/mach-ixp4xx/nas100d-setup.c
57 ===================================================================
58 --- linux-2.6.24-rc6-armeb.orig/arch/arm/mach-ixp4xx/nas100d-setup.c    2008-01-05 18:10:05.000000000 +1030
59 +++ linux-2.6.24-rc6-armeb/arch/arm/mach-ixp4xx/nas100d-setup.c 2008-01-05 18:10:10.000000000 +1030
60 @@ -16,6 +16,7 @@
61  #include <linux/serial.h>
62  #include <linux/serial_8250.h>
63  #include <linux/leds.h>
64 +#include <linux/i2c-gpio.h>
65  
66  #include <asm/mach-types.h>
67  #include <asm/mach/arch.h>
68 @@ -68,16 +69,17 @@
69  };
70  #endif
71  
72 -static struct ixp4xx_i2c_pins nas100d_i2c_gpio_pins = {
73 +static struct i2c_gpio_platform_data nas100d_i2c_gpio_data = {
74         .sda_pin                = NAS100D_SDA_PIN,
75         .scl_pin                = NAS100D_SCL_PIN,
76  };
77  
78 -static struct platform_device nas100d_i2c_controller = {
79 -       .name                   = "IXP4XX-I2C",
80 +static struct platform_device nas100d_i2c_gpio = {
81 +       .name                   = "i2c-gpio",
82         .id                     = 0,
83 -       .dev.platform_data      = &nas100d_i2c_gpio_pins,
84 -       .num_resources          = 0,
85 +       .dev     = {
86 +               .platform_data  = &nas100d_i2c_gpio_data,
87 +       },
88  };
89  
90  static struct resource nas100d_uart_resources[] = {
91 @@ -124,7 +126,7 @@
92  };
93  
94  static struct platform_device *nas100d_devices[] __initdata = {
95 -       &nas100d_i2c_controller,
96 +       &nas100d_i2c_gpio,
97         &nas100d_flash,
98  #ifdef CONFIG_LEDS_IXP4XX
99         &nas100d_leds,
100 Index: linux-2.6.24-rc6-armeb/arch/arm/mach-ixp4xx/avila-setup.c
101 ===================================================================
102 --- linux-2.6.24-rc6-armeb.orig/arch/arm/mach-ixp4xx/avila-setup.c      2008-01-05 18:10:05.000000000 +1030
103 +++ linux-2.6.24-rc6-armeb/arch/arm/mach-ixp4xx/avila-setup.c   2008-01-05 18:10:10.000000000 +1030
104 @@ -18,6 +18,7 @@
105  #include <linux/tty.h>
106  #include <linux/serial_8250.h>
107  #include <linux/slab.h>
108 +#include <linux/i2c-gpio.h>
109  
110  #include <asm/types.h>
111  #include <asm/setup.h>
112 @@ -47,18 +48,17 @@
113         .resource       = &avila_flash_resource,
114  };
115  
116 -static struct ixp4xx_i2c_pins avila_i2c_gpio_pins = {
117 +static struct i2c_gpio_platform_data avila_i2c_gpio_data = {
118         .sda_pin        = AVILA_SDA_PIN,
119         .scl_pin        = AVILA_SCL_PIN,
120  };
121  
122 -static struct platform_device avila_i2c_controller = {
123 -       .name           = "IXP4XX-I2C",
124 +static struct platform_device avila_i2c_gpio = {
125 +       .name           = "i2c-gpio",
126         .id             = 0,
127 -       .dev            = {
128 -               .platform_data = &avila_i2c_gpio_pins,
129 +       .dev     = {
130 +               .platform_data  = &avila_i2c_gpio_data,
131         },
132 -       .num_resources  = 0
133  };
134  
135  static struct resource avila_uart_resources[] = {
136 @@ -133,7 +133,7 @@
137  };
138  
139  static struct platform_device *avila_devices[] __initdata = {
140 -       &avila_i2c_controller,
141 +       &avila_i2c_gpio,
142         &avila_flash,
143         &avila_uart
144  };
145 Index: linux-2.6.24-rc6-armeb/arch/arm/mach-ixp4xx/dsmg600-setup.c
146 ===================================================================
147 --- linux-2.6.24-rc6-armeb.orig/arch/arm/mach-ixp4xx/dsmg600-setup.c    2008-01-05 18:10:05.000000000 +1030
148 +++ linux-2.6.24-rc6-armeb/arch/arm/mach-ixp4xx/dsmg600-setup.c 2008-01-05 18:10:10.000000000 +1030
149 @@ -14,6 +14,7 @@
150  #include <linux/kernel.h>
151  #include <linux/serial.h>
152  #include <linux/serial_8250.h>
153 +#include <linux/i2c-gpio.h>
154  
155  #include <asm/mach-types.h>
156  #include <asm/mach/arch.h>
157 @@ -37,15 +38,17 @@
158         .resource               = &dsmg600_flash_resource,
159  };
160  
161 -static struct ixp4xx_i2c_pins dsmg600_i2c_gpio_pins = {
162 +static struct i2c_gpio_platform_data dsmg600_i2c_gpio_data = {
163         .sda_pin                = DSMG600_SDA_PIN,
164         .scl_pin                = DSMG600_SCL_PIN,
165  };
166  
167 -static struct platform_device dsmg600_i2c_controller = {
168 -       .name                   = "IXP4XX-I2C",
169 +static struct platform_device dsmg600_i2c_gpio = {
170 +       .name                   = "i2c-gpio",
171         .id                     = 0,
172 -       .dev.platform_data      = &dsmg600_i2c_gpio_pins,
173 +       .dev     = {
174 +               .platform_data  = &dsmg600_i2c_gpio_data,
175 +       },
176  };
177  
178  #ifdef CONFIG_LEDS_CLASS
179 @@ -116,7 +119,7 @@
180  };
181  
182  static struct platform_device *dsmg600_devices[] __initdata = {
183 -       &dsmg600_i2c_controller,
184 +       &dsmg600_i2c_gpio,
185         &dsmg600_flash,
186  };
187  
188 Index: linux-2.6.24-rc6-armeb/arch/arm/mach-ixp4xx/ixdp425-setup.c
189 ===================================================================
190 --- linux-2.6.24-rc6-armeb.orig/arch/arm/mach-ixp4xx/ixdp425-setup.c    2008-01-05 18:10:05.000000000 +1030
191 +++ linux-2.6.24-rc6-armeb/arch/arm/mach-ixp4xx/ixdp425-setup.c 2008-01-05 18:10:10.000000000 +1030
192 @@ -15,6 +15,7 @@
193  #include <linux/tty.h>
194  #include <linux/serial_8250.h>
195  #include <linux/slab.h>
196 +#include <linux/i2c-gpio.h>
197  #include <linux/io.h>
198  #include <linux/mtd/mtd.h>
199  #include <linux/mtd/nand.h>
200 @@ -120,18 +121,17 @@
201  };
202  #endif /* CONFIG_MTD_NAND_PLATFORM */
203  
204 -static struct ixp4xx_i2c_pins ixdp425_i2c_gpio_pins = {
205 +static struct i2c_gpio_platform_data ixdp425_i2c_gpio_data = {
206         .sda_pin        = IXDP425_SDA_PIN,
207         .scl_pin        = IXDP425_SCL_PIN,
208  };
209  
210 -static struct platform_device ixdp425_i2c_controller = {
211 -       .name           = "IXP4XX-I2C",
212 +static struct platform_device ixdp425_i2c_gpio = {
213 +       .name           = "i2c-gpio",
214         .id             = 0,
215 -       .dev            = {
216 -               .platform_data = &ixdp425_i2c_gpio_pins,
217 +       .dev     = {
218 +               .platform_data  = &ixdp425_i2c_gpio_data,
219         },
220 -       .num_resources  = 0
221  };
222  
223  static struct resource ixdp425_uart_resources[] = {
224 @@ -178,7 +178,7 @@
225  };
226  
227  static struct platform_device *ixdp425_devices[] __initdata = {
228 -       &ixdp425_i2c_controller,
229 +       &ixdp425_i2c_gpio,
230         &ixdp425_flash,
231  #if defined(CONFIG_MTD_NAND_PLATFORM) || \
232      defined(CONFIG_MTD_NAND_PLATFORM_MODULE)