linux/drivers/leds
Milo Kim ed13335204 leds:lp55xx: use the private data instead of updating I2C device platform data
Currently, lp55xx_of_populate_pdata() allocates lp55xx_platform_data if
it's null. And it parses the DT and copies values into the
'client->dev.platform_data'. This may have architectural issue.
Platform data is configurable through the DT or I2C board info inside the
platform area. However, lp55xx common driver changes this configuration
when it is loaded. So 'client->dev.platform_data' is not null anymore.
Eventually, the driver initialization is not identical when it's unloaded
and loaded again.
The lp55xx common driver should use the private data, 'lp55xx_chip->pdata'
instead of changing the original platform data.

So, lp55xx_of_populate_pdata() is modified as follows.
* Do not update 'dev->platform_data'. Return the pointer of new allocated
   lp55xx_platform_data. Then the driver points it to private data,
   'lp55xx_chip->pdata'.
* Each lp55xx driver checks the pointer and handles an error case.

Then, original platform data configuration will be kept regardless of
loading or unloading the driver.
The driver allocates the memory and copies them from the DT if it's NULL.
After the driver is loaded again, 'client->dev.platform_data' is same as
initial load, so the driver is initialized identically.

Cc: Toshi Kikuchi <toshik@chromium.org>
Cc: linux-leds@vger.kernel.org
Signed-off-by: Milo Kim <milo.kim@ti.com>
Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
2015-08-28 14:06:28 +02:00
..
trigger leds: Allow compile test of GPIO consumers if !GPIOLIB 2015-08-28 14:05:57 +02:00
dell-led.c dell-led: add mic mute led interface 2014-05-08 14:28:07 +08:00
Kconfig leds: leds-ns2: depends on MACH_ARMADA_370 2015-08-28 14:06:12 +02:00
led-class-flash.c leds: flash: Remove synchronized flash strobe feature 2015-03-09 17:16:23 -07:00
led-class.c leds/led-class: Add missing put_device() 2015-08-28 14:06:19 +02:00
led-core.c leds: fix brightness changing when software blinking is active 2015-05-25 13:26:47 -07:00
led-triggers.c leds: implement sysfs interface locking mechanism 2014-11-14 14:29:35 -08:00
leds-88pm860x.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-aat1290.c leds: aat1290: pass flags parameter to devm_gpiod_get 2015-06-22 13:57:24 -07:00
leds-adp5520.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-asic3.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-bcm6328.c leds: add BCM6328 LED driver 2015-05-04 11:22:28 -07:00
leds-bcm6358.c leds: add BCM6358 LED driver 2015-05-25 13:26:48 -07:00
leds-bd2802.c leds: Remove duplicated OOM message for individual driver 2014-05-08 14:28:08 +08:00
leds-blinkm.c leds: blinkm: remove unnecessary spaces 2014-02-27 10:19:57 -08:00
leds-clevo-mail.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-cobalt-qube.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-cobalt-raq.c drivers/leds: don't use module_init in non-modular leds-cobalt-raq.c 2015-06-22 13:57:09 -07:00
leds-da903x.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-da9052.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-dac124s085.c leds: dac124s085: Remove redundant spi_set_drvdata 2013-10-22 10:57:34 -07:00
leds-fsg.c leds: leds-fsg: Use devm_led_classdev_register 2015-08-28 14:06:23 +02:00
leds-gpio-register.c led: gpio: Fix possible ZERO_SIZE_PTR pointer dereferencing error. 2014-09-29 10:21:01 -07:00
leds-gpio.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds 2015-07-01 19:09:11 -07:00
leds-hp6xx.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-ipaq-micro.c leds: ipaq-micro: fix sparse non static symbol warning 2014-07-29 10:57:20 -07:00
leds-ktd2692.c leds: ktd2692: pass flags parameter to devm_gpiod_get 2015-06-22 13:57:16 -07:00
leds-lm355x.c leds: Drop owner assignment from i2c_driver 2015-08-28 14:06:02 +02:00
leds-lm3530.c leds: Drop owner assignment from i2c_driver 2015-08-28 14:06:02 +02:00
leds-lm3533.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-lm3642.c leds: Drop owner assignment from i2c_driver 2015-08-28 14:06:02 +02:00
leds-locomo.c
leds-lp55xx-common.c leds:lp55xx: use the private data instead of updating I2C device platform data 2015-08-28 14:06:28 +02:00
leds-lp55xx-common.h leds:lp55xx: use the private data instead of updating I2C device platform data 2015-08-28 14:06:28 +02:00
leds-lp3944.c leds: lp3944: fix sparse warning 2014-09-11 16:55:27 -07:00
leds-lp5521.c leds:lp55xx: use the private data instead of updating I2C device platform data 2015-08-28 14:06:28 +02:00
leds-lp5523.c leds:lp55xx: use the private data instead of updating I2C device platform data 2015-08-28 14:06:28 +02:00
leds-lp5562.c leds:lp55xx: use the private data instead of updating I2C device platform data 2015-08-28 14:06:28 +02:00
leds-lp8501.c leds:lp55xx: use the private data instead of updating I2C device platform data 2015-08-28 14:06:28 +02:00
leds-lp8788.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-lp8860.c leds: lp8860: Constify reg_default tables 2015-08-28 14:06:04 +02:00
leds-lt3593.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-max8997.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-max77693.c leds: max77693: add support for V4L2 Flash sub-device 2015-06-22 13:55:17 -07:00
leds-mc13783.c leds: leds-mc13783: Use of_get_child_by_name() instead of refcount hack 2015-01-14 10:40:20 -08:00
leds-menf21bmc.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-net48xx.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-netxbig.c leds: netxbig: fix oops at probe time 2015-01-13 13:49:01 -08:00
leds-ns2.c leds: leds-ns2: handle can_sleep GPIOs 2015-08-28 14:06:09 +02:00
leds-ot200.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-pca955x.c leds: Drop owner assignment from i2c_driver 2015-08-28 14:06:02 +02:00
leds-pca963x.c leds: Drop owner assignment from i2c_driver 2015-08-28 14:06:02 +02:00
leds-pca9532.c driver:gpio remove all usage of gpio_remove retval in driver 2014-09-18 11:03:10 -07:00
leds-pm8941-wled.c leds: add Qualcomm PM8941 WLED driver 2015-03-30 11:55:49 -07:00
leds-pwm.c leds: leds-pwm: drop one pwm_get_period() call 2015-02-24 11:42:18 -08:00
leds-rb532.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-regulator.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds 2014-12-15 18:28:25 -08:00
leds-s3c24xx.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-ss4200.c leds: ss4200: fix attribute-creation race 2014-06-25 15:34:24 -07:00
leds-sunfire.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-syscon.c leds: syscon: Correct check for syscon_node_to_regmap() errors 2015-08-28 14:06:25 +02:00
leds-tca6507.c leds: Drop owner assignment from i2c_driver 2015-08-28 14:06:02 +02:00
leds-tlc591xx.c leds: tlc591xx: Remove redundant I2C_FUNC_SMBUS_BYTE_DATA functionality check 2015-08-28 14:06:14 +02:00
leds-versatile.c ARM/leds: move ARM Versatile LED driver to leds subsystem 2014-03-28 10:54:15 +01:00
leds-wm831x-status.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-wm8350.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-wrap.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds.h leds: unify the location of led-trigger API 2015-05-04 11:05:55 -07:00
Makefile leds: add BCM6358 LED driver 2015-05-25 13:26:48 -07:00