the ds1672 can be detected -- fix the driver and remove unneeded hacks
[openwrt.git] / target / linux / ixp4xx / patches-2.6.24 / 021-ixp4xx_use_leds_gpio.patch
1 From 383256474f2ba043bdb57a657f9d786df88780f1 Mon Sep 17 00:00:00 2001
2 From: Rod Whitby <rod@whitby.id.au>
3 Date: Tue, 29 Jan 2008 17:17:29 +1030
4 Subject: ixp4xx: Use leds-gpio driver instead of IXP4XX-GPIO-LED driver
5
6 These are the only three boards to use the IXP4XX-GPIO-LED driver, and
7 they can all use the new leds-gpio driver instead with no change in
8 functionality.
9
10 Signed-off-by: Rod Whitby <rod@whitby.id.au>
11 --
12 PATCH FOLLOWS
13 KernelVersion: v2.6.24-1915-gc9b12e6
14
15 diff --git a/arch/arm/configs/ixp4xx_defconfig b/arch/arm/configs/ixp4xx_defconfig
16 index 2d5ae33..77fe3b0 100644
17 --- a/arch/arm/configs/ixp4xx_defconfig
18 +++ b/arch/arm/configs/ixp4xx_defconfig
19 @@ -1330,8 +1330,8 @@ CONFIG_LEDS_CLASS=y
20 #
21 # LED drivers
22 #
23 -CONFIG_LEDS_IXP4XX=y
24 -# CONFIG_LEDS_GPIO is not set
25 +# CONFIG_LEDS_IXP4XX is not set
26 +CONFIG_LEDS_GPIO=y
27
28 #
29 # LED Triggers
30 diff --git a/arch/arm/mach-ixp4xx/dsmg600-setup.c b/arch/arm/mach-ixp4xx/dsmg600-setup.c
31 index a1c44ef..d0e1295 100644
32 --- a/arch/arm/mach-ixp4xx/dsmg600-setup.c
33 +++ b/arch/arm/mach-ixp4xx/dsmg600-setup.c
34 @@ -14,6 +14,7 @@
35 #include <linux/kernel.h>
36 #include <linux/serial.h>
37 #include <linux/serial_8250.h>
38 +#include <linux/leds.h>
39 #include <linux/i2c.h>
40 #include <linux/i2c-gpio.h>
41
42 @@ -58,29 +59,28 @@ static struct i2c_board_info __initdata dsmg600_i2c_board_info [] = {
43 },
44 };
45
46 -#ifdef CONFIG_LEDS_CLASS
47 -static struct resource dsmg600_led_resources[] = {
48 +static struct gpio_led dsmg600_led_pins[] = {
49 {
50 - .name = "power",
51 - .start = DSMG600_LED_PWR_GPIO,
52 - .end = DSMG600_LED_PWR_GPIO,
53 - .flags = IXP4XX_GPIO_HIGH,
54 + .name = "power",
55 + .gpio = DSMG600_LED_PWR_GPIO,
56 },
57 {
58 - .name = "wlan",
59 - .start = DSMG600_LED_WLAN_GPIO,
60 - .end = DSMG600_LED_WLAN_GPIO,
61 - .flags = IXP4XX_GPIO_LOW,
62 + .name = "wlan",
63 + .gpio = DSMG600_LED_WLAN_GPIO,
64 + .active_low = true,
65 },
66 };
67
68 +static struct gpio_led_platform_data dsmg600_led_data = {
69 + .num_leds = ARRAY_SIZE(dsmg600_led_pins),
70 + .leds = dsmg600_led_pins,
71 +};
72 +
73 static struct platform_device dsmg600_leds = {
74 - .name = "IXP4XX-GPIO-LED",
75 - .id = -1,
76 - .num_resources = ARRAY_SIZE(dsmg600_led_resources),
77 - .resource = dsmg600_led_resources,
78 + .name = "leds-gpio",
79 + .id = -1,
80 + .dev.platform_data = &dsmg600_led_data,
81 };
82 -#endif
83
84 static struct resource dsmg600_uart_resources[] = {
85 {
86 @@ -128,6 +128,7 @@ static struct platform_device dsmg600_uart = {
87 static struct platform_device *dsmg600_devices[] __initdata = {
88 &dsmg600_i2c_gpio,
89 &dsmg600_flash,
90 + &dsmg600_leds,
91 };
92
93 static void dsmg600_power_off(void)
94 @@ -175,11 +176,6 @@ static void __init dsmg600_init(void)
95 (void)platform_device_register(&dsmg600_uart);
96
97 platform_add_devices(dsmg600_devices, ARRAY_SIZE(dsmg600_devices));
98 -
99 -#ifdef CONFIG_LEDS_CLASS
100 - /* We don't care whether or not this works. */
101 - (void)platform_device_register(&dsmg600_leds);
102 -#endif
103 }
104
105 MACHINE_START(DSMG600, "D-Link DSM-G600 RevA")
106 diff --git a/arch/arm/mach-ixp4xx/nas100d-setup.c b/arch/arm/mach-ixp4xx/nas100d-setup.c
107 index dc782d0..5801579 100644
108 --- a/arch/arm/mach-ixp4xx/nas100d-setup.c
109 +++ b/arch/arm/mach-ixp4xx/nas100d-setup.c
110 @@ -46,35 +46,34 @@ static struct i2c_board_info __initdata nas100d_i2c_board_info [] = {
111 },
112 };
113
114 -#ifdef CONFIG_LEDS_IXP4XX
115 -static struct resource nas100d_led_resources[] = {
116 +static struct gpio_led nas100d_led_pins[] = {
117 {
118 .name = "wlan", /* green led */
119 - .start = NAS100D_LED_WLAN_GPIO,
120 - .end = NAS100D_LED_WLAN_GPIO,
121 - .flags = IXP4XX_GPIO_LOW,
122 + .gpio = NAS100D_LED_WLAN_GPIO,
123 + .active_low = true,
124 },
125 {
126 .name = "power", /* blue power led (off=flashing) */
127 - .start = NAS100D_LED_PWR_GPIO,
128 - .end = NAS100D_LED_PWR_GPIO,
129 - .flags = IXP4XX_GPIO_LOW,
130 + .gpio = NAS100D_LED_PWR_GPIO,
131 + .active_low = true,
132 },
133 {
134 .name = "disk", /* yellow led */
135 - .start = NAS100D_LED_DISK_GPIO,
136 - .end = NAS100D_LED_DISK_GPIO,
137 - .flags = IXP4XX_GPIO_LOW,
138 + .gpio = NAS100D_LED_DISK_GPIO,
139 + .active_low = true,
140 },
141 };
142
143 +static struct gpio_led_platform_data nas100d_led_data = {
144 + .num_leds = ARRAY_SIZE(nas100d_led_pins),
145 + .leds = nas100d_led_pins,
146 +};
147 +
148 static struct platform_device nas100d_leds = {
149 - .name = "IXP4XX-GPIO-LED",
150 + .name = "leds-gpio",
151 .id = -1,
152 - .num_resources = ARRAY_SIZE(nas100d_led_resources),
153 - .resource = nas100d_led_resources,
154 + .dev.platform_data = &nas100d_led_data,
155 };
156 -#endif
157
158 static struct i2c_gpio_platform_data nas100d_i2c_gpio_data = {
159 .sda_pin = NAS100D_SDA_PIN,
160 @@ -135,9 +134,7 @@ static struct platform_device nas100d_uart = {
161 static struct platform_device *nas100d_devices[] __initdata = {
162 &nas100d_i2c_gpio,
163 &nas100d_flash,
164 -#ifdef CONFIG_LEDS_IXP4XX
165 &nas100d_leds,
166 -#endif
167 };
168
169 static void nas100d_power_off(void)
170 diff --git a/arch/arm/mach-ixp4xx/nslu2-setup.c b/arch/arm/mach-ixp4xx/nslu2-setup.c
171 index 16d091c..41d55c8 100644
172 --- a/arch/arm/mach-ixp4xx/nslu2-setup.c
173 +++ b/arch/arm/mach-ixp4xx/nslu2-setup.c
174 @@ -54,41 +54,37 @@ static struct i2c_board_info __initdata nslu2_i2c_board_info [] = {
175 },
176 };
177
178 -#ifdef CONFIG_LEDS_IXP4XX
179 -static struct resource nslu2_led_resources[] = {
180 +static struct gpio_led nslu2_led_pins[] = {
181 {
182 .name = "ready", /* green led */
183 - .start = NSLU2_LED_GRN_GPIO,
184 - .end = NSLU2_LED_GRN_GPIO,
185 - .flags = IXP4XX_GPIO_HIGH,
186 + .gpio = NSLU2_LED_GRN_GPIO,
187 },
188 {
189 .name = "status", /* red led */
190 - .start = NSLU2_LED_RED_GPIO,
191 - .end = NSLU2_LED_RED_GPIO,
192 - .flags = IXP4XX_GPIO_HIGH,
193 + .gpio = NSLU2_LED_RED_GPIO,
194 },
195 {
196 .name = "disk-1",
197 - .start = NSLU2_LED_DISK1_GPIO,
198 - .end = NSLU2_LED_DISK1_GPIO,
199 - .flags = IXP4XX_GPIO_LOW,
200 + .gpio = NSLU2_LED_DISK1_GPIO,
201 + .active_low = true,
202 },
203 {
204 .name = "disk-2",
205 - .start = NSLU2_LED_DISK2_GPIO,
206 - .end = NSLU2_LED_DISK2_GPIO,
207 - .flags = IXP4XX_GPIO_LOW,
208 + .gpio = NSLU2_LED_DISK2_GPIO,
209 + .active_low = true,
210 },
211 };
212
213 +static struct gpio_led_platform_data nslu2_led_data = {
214 + .num_leds = ARRAY_SIZE(nslu2_led_pins),
215 + .leds = nslu2_led_pins,
216 +};
217 +
218 static struct platform_device nslu2_leds = {
219 - .name = "IXP4XX-GPIO-LED",
220 + .name = "leds-gpio",
221 .id = -1,
222 - .num_resources = ARRAY_SIZE(nslu2_led_resources),
223 - .resource = nslu2_led_resources,
224 + .dev.platform_data = &nslu2_led_data,
225 };
226 -#endif
227
228 static struct platform_device nslu2_i2c_gpio = {
229 .name = "i2c-gpio",
230 @@ -151,9 +147,7 @@ static struct platform_device *nslu2_devices[] __initdata = {
231 &nslu2_i2c_gpio,
232 &nslu2_flash,
233 &nslu2_beeper,
234 -#ifdef CONFIG_LEDS_IXP4XX
235 &nslu2_leds,
236 -#endif
237 };
238
239 static void nslu2_power_off(void)
240 --
241 1.5.2.5
242
This page took 0.048123 seconds and 5 git commands to generate.