diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-11-03 12:40:51 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-11-03 12:40:51 -0400 |
commit | a0a4194c943bc64dd7b6e26cccb036cb26b81363 (patch) | |
tree | 4282f0dd573344d10f69616eb05868b5cd563cc1 /drivers/leds | |
parent | cf0223503e6198292cdcc864e01eeb5fe7490752 (diff) | |
parent | b958f7a7cbdfbf59ba61de7ebb9c59b0ee3a7967 (diff) |
Merge branch 'for-next' of git://git.infradead.org/users/sameo/mfd-2.6
* 'for-next' of git://git.infradead.org/users/sameo/mfd-2.6: (80 commits)
mfd: Fix missing abx500 header file updates
mfd: Add missing <linux/io.h> include to intel_msic
x86, mrst: add platform support for MSIC MFD driver
mfd: Expose TurnOnStatus in ab8500 sysfs
mfd: Remove support for early drop ab8500 chip
mfd: Add support for ab8500 v3.3
mfd: Add ab8500 interrupt disable hook
mfd: Convert db8500-prcmu panic() into pr_crit()
mfd: Refactor db8500-prcmu request_clock() function
mfd: Rename db8500-prcmu init function
mfd: Fix db5500-prcmu defines
mfd: db8500-prcmu voltage domain consumers additions
mfd: db8500-prcmu reset code retrieval
mfd: db8500-prcmu tweak for modem wakeup
mfd: Add db8500-pcmu watchdog accessor functions for watchdog
mfd: hwacc power state db8500-prcmu accessor
mfd: Add db8500-prcmu accessors for PLL and SGA clock
mfd: Move to the new db500 PRCMU API
mfd: Create a common interface for dbx500 PRCMU drivers
mfd: Initialize DB8500 PRCMU regs
...
Fix up trivial conflicts in
arch/arm/mach-imx/mach-mx31moboard.c
arch/arm/mach-omap2/board-omap3beagle.c
arch/arm/mach-u300/include/mach/irqs.h
drivers/mfd/wm831x-spi.c
Diffstat (limited to 'drivers/leds')
-rw-r--r-- | drivers/leds/leds-asic3.c | 35 | ||||
-rw-r--r-- | drivers/leds/leds-mc13783.c | 60 |
2 files changed, 64 insertions, 31 deletions
diff --git a/drivers/leds/leds-asic3.c b/drivers/leds/leds-asic3.c index 22f847c890c..fbd5d88ccd8 100644 --- a/drivers/leds/leds-asic3.c +++ b/drivers/leds/leds-asic3.c | |||
@@ -107,9 +107,10 @@ static int __devinit asic3_led_probe(struct platform_device *pdev) | |||
107 | } | 107 | } |
108 | 108 | ||
109 | led->cdev->name = led->name; | 109 | led->cdev->name = led->name; |
110 | led->cdev->default_trigger = led->default_trigger; | 110 | led->cdev->flags = LED_CORE_SUSPENDRESUME; |
111 | led->cdev->brightness_set = brightness_set; | 111 | led->cdev->brightness_set = brightness_set; |
112 | led->cdev->blink_set = blink_set; | 112 | led->cdev->blink_set = blink_set; |
113 | led->cdev->default_trigger = led->default_trigger; | ||
113 | 114 | ||
114 | ret = led_classdev_register(&pdev->dev, led->cdev); | 115 | ret = led_classdev_register(&pdev->dev, led->cdev); |
115 | if (ret < 0) | 116 | if (ret < 0) |
@@ -136,12 +137,44 @@ static int __devexit asic3_led_remove(struct platform_device *pdev) | |||
136 | return mfd_cell_disable(pdev); | 137 | return mfd_cell_disable(pdev); |
137 | } | 138 | } |
138 | 139 | ||
140 | static int asic3_led_suspend(struct device *dev) | ||
141 | { | ||
142 | struct platform_device *pdev = to_platform_device(dev); | ||
143 | const struct mfd_cell *cell = mfd_get_cell(pdev); | ||
144 | int ret; | ||
145 | |||
146 | ret = 0; | ||
147 | if (cell->suspend) | ||
148 | ret = (*cell->suspend)(pdev); | ||
149 | |||
150 | return ret; | ||
151 | } | ||
152 | |||
153 | static int asic3_led_resume(struct device *dev) | ||
154 | { | ||
155 | struct platform_device *pdev = to_platform_device(dev); | ||
156 | const struct mfd_cell *cell = mfd_get_cell(pdev); | ||
157 | int ret; | ||
158 | |||
159 | ret = 0; | ||
160 | if (cell->resume) | ||
161 | ret = (*cell->resume)(pdev); | ||
162 | |||
163 | return ret; | ||
164 | } | ||
165 | |||
166 | static const struct dev_pm_ops asic3_led_pm_ops = { | ||
167 | .suspend = asic3_led_suspend, | ||
168 | .resume = asic3_led_resume, | ||
169 | }; | ||
170 | |||
139 | static struct platform_driver asic3_led_driver = { | 171 | static struct platform_driver asic3_led_driver = { |
140 | .probe = asic3_led_probe, | 172 | .probe = asic3_led_probe, |
141 | .remove = __devexit_p(asic3_led_remove), | 173 | .remove = __devexit_p(asic3_led_remove), |
142 | .driver = { | 174 | .driver = { |
143 | .name = "leds-asic3", | 175 | .name = "leds-asic3", |
144 | .owner = THIS_MODULE, | 176 | .owner = THIS_MODULE, |
177 | .pm = &asic3_led_pm_ops, | ||
145 | }, | 178 | }, |
146 | }; | 179 | }; |
147 | 180 | ||
diff --git a/drivers/leds/leds-mc13783.c b/drivers/leds/leds-mc13783.c index f369e56d654..b3393a9f213 100644 --- a/drivers/leds/leds-mc13783.c +++ b/drivers/leds/leds-mc13783.c | |||
@@ -21,13 +21,13 @@ | |||
21 | #include <linux/platform_device.h> | 21 | #include <linux/platform_device.h> |
22 | #include <linux/leds.h> | 22 | #include <linux/leds.h> |
23 | #include <linux/workqueue.h> | 23 | #include <linux/workqueue.h> |
24 | #include <linux/mfd/mc13783.h> | 24 | #include <linux/mfd/mc13xxx.h> |
25 | #include <linux/slab.h> | 25 | #include <linux/slab.h> |
26 | 26 | ||
27 | struct mc13783_led { | 27 | struct mc13783_led { |
28 | struct led_classdev cdev; | 28 | struct led_classdev cdev; |
29 | struct work_struct work; | 29 | struct work_struct work; |
30 | struct mc13783 *master; | 30 | struct mc13xxx *master; |
31 | enum led_brightness new_brightness; | 31 | enum led_brightness new_brightness; |
32 | int id; | 32 | int id; |
33 | }; | 33 | }; |
@@ -111,11 +111,11 @@ static void mc13783_led_work(struct work_struct *work) | |||
111 | break; | 111 | break; |
112 | } | 112 | } |
113 | 113 | ||
114 | mc13783_lock(led->master); | 114 | mc13xxx_lock(led->master); |
115 | 115 | ||
116 | mc13783_reg_rmw(led->master, reg, mask, value); | 116 | mc13xxx_reg_rmw(led->master, reg, mask, value); |
117 | 117 | ||
118 | mc13783_unlock(led->master); | 118 | mc13xxx_unlock(led->master); |
119 | } | 119 | } |
120 | 120 | ||
121 | static void mc13783_led_set(struct led_classdev *led_cdev, | 121 | static void mc13783_led_set(struct led_classdev *led_cdev, |
@@ -172,23 +172,23 @@ static int __devinit mc13783_led_setup(struct mc13783_led *led, int max_current) | |||
172 | break; | 172 | break; |
173 | } | 173 | } |
174 | 174 | ||
175 | mc13783_lock(led->master); | 175 | mc13xxx_lock(led->master); |
176 | 176 | ||
177 | ret = mc13783_reg_rmw(led->master, reg, mask << shift, | 177 | ret = mc13xxx_reg_rmw(led->master, reg, mask << shift, |
178 | value << shift); | 178 | value << shift); |
179 | 179 | ||
180 | mc13783_unlock(led->master); | 180 | mc13xxx_unlock(led->master); |
181 | return ret; | 181 | return ret; |
182 | } | 182 | } |
183 | 183 | ||
184 | static int __devinit mc13783_leds_prepare(struct platform_device *pdev) | 184 | static int __devinit mc13783_leds_prepare(struct platform_device *pdev) |
185 | { | 185 | { |
186 | struct mc13783_leds_platform_data *pdata = dev_get_platdata(&pdev->dev); | 186 | struct mc13xxx_leds_platform_data *pdata = dev_get_platdata(&pdev->dev); |
187 | struct mc13783 *dev = dev_get_drvdata(pdev->dev.parent); | 187 | struct mc13xxx *dev = dev_get_drvdata(pdev->dev.parent); |
188 | int ret = 0; | 188 | int ret = 0; |
189 | int reg = 0; | 189 | int reg = 0; |
190 | 190 | ||
191 | mc13783_lock(dev); | 191 | mc13xxx_lock(dev); |
192 | 192 | ||
193 | if (pdata->flags & MC13783_LED_TC1HALF) | 193 | if (pdata->flags & MC13783_LED_TC1HALF) |
194 | reg |= MC13783_LED_C1_TC1HALF_BIT; | 194 | reg |= MC13783_LED_C1_TC1HALF_BIT; |
@@ -196,7 +196,7 @@ static int __devinit mc13783_leds_prepare(struct platform_device *pdev) | |||
196 | if (pdata->flags & MC13783_LED_SLEWLIMTC) | 196 | if (pdata->flags & MC13783_LED_SLEWLIMTC) |
197 | reg |= MC13783_LED_Cx_SLEWLIM_BIT; | 197 | reg |= MC13783_LED_Cx_SLEWLIM_BIT; |
198 | 198 | ||
199 | ret = mc13783_reg_write(dev, MC13783_REG_LED_CONTROL_1, reg); | 199 | ret = mc13xxx_reg_write(dev, MC13783_REG_LED_CONTROL_1, reg); |
200 | if (ret) | 200 | if (ret) |
201 | goto out; | 201 | goto out; |
202 | 202 | ||
@@ -206,7 +206,7 @@ static int __devinit mc13783_leds_prepare(struct platform_device *pdev) | |||
206 | if (pdata->flags & MC13783_LED_SLEWLIMBL) | 206 | if (pdata->flags & MC13783_LED_SLEWLIMBL) |
207 | reg |= MC13783_LED_Cx_SLEWLIM_BIT; | 207 | reg |= MC13783_LED_Cx_SLEWLIM_BIT; |
208 | 208 | ||
209 | ret = mc13783_reg_write(dev, MC13783_REG_LED_CONTROL_2, reg); | 209 | ret = mc13xxx_reg_write(dev, MC13783_REG_LED_CONTROL_2, reg); |
210 | if (ret) | 210 | if (ret) |
211 | goto out; | 211 | goto out; |
212 | 212 | ||
@@ -216,7 +216,7 @@ static int __devinit mc13783_leds_prepare(struct platform_device *pdev) | |||
216 | if (pdata->flags & MC13783_LED_TRIODE_TC1) | 216 | if (pdata->flags & MC13783_LED_TRIODE_TC1) |
217 | reg |= MC13783_LED_Cx_TRIODE_TC_BIT; | 217 | reg |= MC13783_LED_Cx_TRIODE_TC_BIT; |
218 | 218 | ||
219 | ret = mc13783_reg_write(dev, MC13783_REG_LED_CONTROL_3, reg); | 219 | ret = mc13xxx_reg_write(dev, MC13783_REG_LED_CONTROL_3, reg); |
220 | if (ret) | 220 | if (ret) |
221 | goto out; | 221 | goto out; |
222 | 222 | ||
@@ -226,7 +226,7 @@ static int __devinit mc13783_leds_prepare(struct platform_device *pdev) | |||
226 | if (pdata->flags & MC13783_LED_TRIODE_TC2) | 226 | if (pdata->flags & MC13783_LED_TRIODE_TC2) |
227 | reg |= MC13783_LED_Cx_TRIODE_TC_BIT; | 227 | reg |= MC13783_LED_Cx_TRIODE_TC_BIT; |
228 | 228 | ||
229 | ret = mc13783_reg_write(dev, MC13783_REG_LED_CONTROL_4, reg); | 229 | ret = mc13xxx_reg_write(dev, MC13783_REG_LED_CONTROL_4, reg); |
230 | if (ret) | 230 | if (ret) |
231 | goto out; | 231 | goto out; |
232 | 232 | ||
@@ -236,7 +236,7 @@ static int __devinit mc13783_leds_prepare(struct platform_device *pdev) | |||
236 | if (pdata->flags & MC13783_LED_TRIODE_TC3) | 236 | if (pdata->flags & MC13783_LED_TRIODE_TC3) |
237 | reg |= MC13783_LED_Cx_TRIODE_TC_BIT; | 237 | reg |= MC13783_LED_Cx_TRIODE_TC_BIT; |
238 | 238 | ||
239 | ret = mc13783_reg_write(dev, MC13783_REG_LED_CONTROL_5, reg); | 239 | ret = mc13xxx_reg_write(dev, MC13783_REG_LED_CONTROL_5, reg); |
240 | if (ret) | 240 | if (ret) |
241 | goto out; | 241 | goto out; |
242 | 242 | ||
@@ -255,17 +255,17 @@ static int __devinit mc13783_leds_prepare(struct platform_device *pdev) | |||
255 | reg |= (pdata->abref & MC13783_LED_C0_ABREF_MASK) << | 255 | reg |= (pdata->abref & MC13783_LED_C0_ABREF_MASK) << |
256 | MC13783_LED_C0_ABREF; | 256 | MC13783_LED_C0_ABREF; |
257 | 257 | ||
258 | ret = mc13783_reg_write(dev, MC13783_REG_LED_CONTROL_0, reg); | 258 | ret = mc13xxx_reg_write(dev, MC13783_REG_LED_CONTROL_0, reg); |
259 | 259 | ||
260 | out: | 260 | out: |
261 | mc13783_unlock(dev); | 261 | mc13xxx_unlock(dev); |
262 | return ret; | 262 | return ret; |
263 | } | 263 | } |
264 | 264 | ||
265 | static int __devinit mc13783_led_probe(struct platform_device *pdev) | 265 | static int __devinit mc13783_led_probe(struct platform_device *pdev) |
266 | { | 266 | { |
267 | struct mc13783_leds_platform_data *pdata = dev_get_platdata(&pdev->dev); | 267 | struct mc13xxx_leds_platform_data *pdata = dev_get_platdata(&pdev->dev); |
268 | struct mc13783_led_platform_data *led_cur; | 268 | struct mc13xxx_led_platform_data *led_cur; |
269 | struct mc13783_led *led, *led_dat; | 269 | struct mc13783_led *led, *led_dat; |
270 | int ret, i; | 270 | int ret, i; |
271 | int init_led = 0; | 271 | int init_led = 0; |
@@ -351,9 +351,9 @@ err_free: | |||
351 | 351 | ||
352 | static int __devexit mc13783_led_remove(struct platform_device *pdev) | 352 | static int __devexit mc13783_led_remove(struct platform_device *pdev) |
353 | { | 353 | { |
354 | struct mc13783_leds_platform_data *pdata = dev_get_platdata(&pdev->dev); | 354 | struct mc13xxx_leds_platform_data *pdata = dev_get_platdata(&pdev->dev); |
355 | struct mc13783_led *led = platform_get_drvdata(pdev); | 355 | struct mc13783_led *led = platform_get_drvdata(pdev); |
356 | struct mc13783 *dev = dev_get_drvdata(pdev->dev.parent); | 356 | struct mc13xxx *dev = dev_get_drvdata(pdev->dev.parent); |
357 | int i; | 357 | int i; |
358 | 358 | ||
359 | for (i = 0; i < pdata->num_leds; i++) { | 359 | for (i = 0; i < pdata->num_leds; i++) { |
@@ -361,16 +361,16 @@ static int __devexit mc13783_led_remove(struct platform_device *pdev) | |||
361 | cancel_work_sync(&led[i].work); | 361 | cancel_work_sync(&led[i].work); |
362 | } | 362 | } |
363 | 363 | ||
364 | mc13783_lock(dev); | 364 | mc13xxx_lock(dev); |
365 | 365 | ||
366 | mc13783_reg_write(dev, MC13783_REG_LED_CONTROL_0, 0); | 366 | mc13xxx_reg_write(dev, MC13783_REG_LED_CONTROL_0, 0); |
367 | mc13783_reg_write(dev, MC13783_REG_LED_CONTROL_1, 0); | 367 | mc13xxx_reg_write(dev, MC13783_REG_LED_CONTROL_1, 0); |
368 | mc13783_reg_write(dev, MC13783_REG_LED_CONTROL_2, 0); | 368 | mc13xxx_reg_write(dev, MC13783_REG_LED_CONTROL_2, 0); |
369 | mc13783_reg_write(dev, MC13783_REG_LED_CONTROL_3, 0); | 369 | mc13xxx_reg_write(dev, MC13783_REG_LED_CONTROL_3, 0); |
370 | mc13783_reg_write(dev, MC13783_REG_LED_CONTROL_4, 0); | 370 | mc13xxx_reg_write(dev, MC13783_REG_LED_CONTROL_4, 0); |
371 | mc13783_reg_write(dev, MC13783_REG_LED_CONTROL_5, 0); | 371 | mc13xxx_reg_write(dev, MC13783_REG_LED_CONTROL_5, 0); |
372 | 372 | ||
373 | mc13783_unlock(dev); | 373 | mc13xxx_unlock(dev); |
374 | 374 | ||
375 | kfree(led); | 375 | kfree(led); |
376 | return 0; | 376 | return 0; |