aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2019-05-14 13:45:03 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2019-05-14 13:45:03 -0400
commite0654264c4806dc436b291294a0fbf9be7571ab6 (patch)
tree62988a8b9bed18fb5c60335f3c7cc8be2560f055 /drivers
parentebcf5bb28241fe3ddc9e786e3816848a10f688b8 (diff)
parent8fbce8efe15cd2ca7a4947bc814f890dbe4e43d7 (diff)
Merge tag 'backlight-next-5.2' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/backlight
Pull backlight updates from Lee Jones: "Fix-ups: - Remove unused BACKLIGHT_LCD_SUPPORT symbol - Remove unused BACKLIGHT_CLASS_DEVICE dependencies - Add DT support to lm3630a_bl Bug Fixes: - Fix error path issues in lm3630a_bl" * tag 'backlight-next-5.2' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/backlight: backlight: lm3630a: Add firmware node support dt-bindings: backlight: Add lm3630a bindings backlight: lm3630a: Return 0 on success in update_status functions video: lcd: Remove useless BACKLIGHT_CLASS_DEVICE dependencies video: backlight: Remove useless BACKLIGHT_LCD_SUPPORT kernel symbol
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/Kconfig2
-rw-r--r--drivers/gpu/drm/bridge/Kconfig1
-rw-r--r--drivers/gpu/drm/fsl-dcu/Kconfig1
-rw-r--r--drivers/gpu/drm/i915/Kconfig1
-rw-r--r--drivers/gpu/drm/nouveau/Kconfig2
-rw-r--r--drivers/gpu/drm/shmobile/Kconfig1
-rw-r--r--drivers/gpu/drm/tilcdc/Kconfig1
-rw-r--r--drivers/staging/olpc_dcon/Kconfig1
-rw-r--r--drivers/usb/misc/Kconfig1
-rw-r--r--drivers/video/backlight/Kconfig35
-rw-r--r--drivers/video/backlight/lm3630a_bl.c153
-rw-r--r--drivers/video/fbdev/Kconfig5
12 files changed, 160 insertions, 44 deletions
diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
index 2267e84d5cb4..e360a4a131e1 100644
--- a/drivers/gpu/drm/Kconfig
+++ b/drivers/gpu/drm/Kconfig
@@ -200,7 +200,6 @@ config DRM_RADEON
200 select POWER_SUPPLY 200 select POWER_SUPPLY
201 select HWMON 201 select HWMON
202 select BACKLIGHT_CLASS_DEVICE 202 select BACKLIGHT_CLASS_DEVICE
203 select BACKLIGHT_LCD_SUPPORT
204 select INTERVAL_TREE 203 select INTERVAL_TREE
205 help 204 help
206 Choose this option if you have an ATI Radeon graphics card. There 205 Choose this option if you have an ATI Radeon graphics card. There
@@ -221,7 +220,6 @@ config DRM_AMDGPU
221 select POWER_SUPPLY 220 select POWER_SUPPLY
222 select HWMON 221 select HWMON
223 select BACKLIGHT_CLASS_DEVICE 222 select BACKLIGHT_CLASS_DEVICE
224 select BACKLIGHT_LCD_SUPPORT
225 select INTERVAL_TREE 223 select INTERVAL_TREE
226 select CHASH 224 select CHASH
227 help 225 help
diff --git a/drivers/gpu/drm/bridge/Kconfig b/drivers/gpu/drm/bridge/Kconfig
index 8840f396a7b6..3dff9997f5e3 100644
--- a/drivers/gpu/drm/bridge/Kconfig
+++ b/drivers/gpu/drm/bridge/Kconfig
@@ -76,7 +76,6 @@ config DRM_PARADE_PS8622
76 depends on OF 76 depends on OF
77 select DRM_PANEL 77 select DRM_PANEL
78 select DRM_KMS_HELPER 78 select DRM_KMS_HELPER
79 select BACKLIGHT_LCD_SUPPORT
80 select BACKLIGHT_CLASS_DEVICE 79 select BACKLIGHT_CLASS_DEVICE
81 ---help--- 80 ---help---
82 Parade eDP-LVDS bridge chip driver. 81 Parade eDP-LVDS bridge chip driver.
diff --git a/drivers/gpu/drm/fsl-dcu/Kconfig b/drivers/gpu/drm/fsl-dcu/Kconfig
index 14a72c4c496d..dc825883400d 100644
--- a/drivers/gpu/drm/fsl-dcu/Kconfig
+++ b/drivers/gpu/drm/fsl-dcu/Kconfig
@@ -2,7 +2,6 @@ config DRM_FSL_DCU
2 tristate "DRM Support for Freescale DCU" 2 tristate "DRM Support for Freescale DCU"
3 depends on DRM && OF && ARM && COMMON_CLK 3 depends on DRM && OF && ARM && COMMON_CLK
4 select BACKLIGHT_CLASS_DEVICE 4 select BACKLIGHT_CLASS_DEVICE
5 select BACKLIGHT_LCD_SUPPORT
6 select DRM_KMS_HELPER 5 select DRM_KMS_HELPER
7 select DRM_KMS_CMA_HELPER 6 select DRM_KMS_CMA_HELPER
8 select DRM_PANEL 7 select DRM_PANEL
diff --git a/drivers/gpu/drm/i915/Kconfig b/drivers/gpu/drm/i915/Kconfig
index 148be8e1a090..3d5f1cb6a76c 100644
--- a/drivers/gpu/drm/i915/Kconfig
+++ b/drivers/gpu/drm/i915/Kconfig
@@ -15,7 +15,6 @@ config DRM_I915
15 select IRQ_WORK 15 select IRQ_WORK
16 # i915 depends on ACPI_VIDEO when ACPI is enabled 16 # i915 depends on ACPI_VIDEO when ACPI is enabled
17 # but for select to work, need to select ACPI_VIDEO's dependencies, ick 17 # but for select to work, need to select ACPI_VIDEO's dependencies, ick
18 select BACKLIGHT_LCD_SUPPORT if ACPI
19 select BACKLIGHT_CLASS_DEVICE if ACPI 18 select BACKLIGHT_CLASS_DEVICE if ACPI
20 select INPUT if ACPI 19 select INPUT if ACPI
21 select ACPI_VIDEO if ACPI 20 select ACPI_VIDEO if ACPI
diff --git a/drivers/gpu/drm/nouveau/Kconfig b/drivers/gpu/drm/nouveau/Kconfig
index 553c7da5e8e0..1f1395148ff0 100644
--- a/drivers/gpu/drm/nouveau/Kconfig
+++ b/drivers/gpu/drm/nouveau/Kconfig
@@ -5,14 +5,12 @@ config DRM_NOUVEAU
5 select DRM_KMS_HELPER 5 select DRM_KMS_HELPER
6 select DRM_TTM 6 select DRM_TTM
7 select BACKLIGHT_CLASS_DEVICE if DRM_NOUVEAU_BACKLIGHT 7 select BACKLIGHT_CLASS_DEVICE if DRM_NOUVEAU_BACKLIGHT
8 select BACKLIGHT_LCD_SUPPORT if DRM_NOUVEAU_BACKLIGHT
9 select ACPI_VIDEO if ACPI && X86 && BACKLIGHT_CLASS_DEVICE && INPUT 8 select ACPI_VIDEO if ACPI && X86 && BACKLIGHT_CLASS_DEVICE && INPUT
10 select X86_PLATFORM_DEVICES if ACPI && X86 9 select X86_PLATFORM_DEVICES if ACPI && X86
11 select ACPI_WMI if ACPI && X86 10 select ACPI_WMI if ACPI && X86
12 select MXM_WMI if ACPI && X86 11 select MXM_WMI if ACPI && X86
13 select POWER_SUPPLY 12 select POWER_SUPPLY
14 # Similar to i915, we need to select ACPI_VIDEO and it's dependencies 13 # Similar to i915, we need to select ACPI_VIDEO and it's dependencies
15 select BACKLIGHT_LCD_SUPPORT if ACPI && X86
16 select BACKLIGHT_CLASS_DEVICE if ACPI && X86 14 select BACKLIGHT_CLASS_DEVICE if ACPI && X86
17 select INPUT if ACPI && X86 15 select INPUT if ACPI && X86
18 select THERMAL if ACPI && X86 16 select THERMAL if ACPI && X86
diff --git a/drivers/gpu/drm/shmobile/Kconfig b/drivers/gpu/drm/shmobile/Kconfig
index 61bbe8e8bcc5..e2a6c82c8252 100644
--- a/drivers/gpu/drm/shmobile/Kconfig
+++ b/drivers/gpu/drm/shmobile/Kconfig
@@ -4,7 +4,6 @@ config DRM_SHMOBILE
4 depends on DRM && ARM 4 depends on DRM && ARM
5 depends on ARCH_SHMOBILE || COMPILE_TEST 5 depends on ARCH_SHMOBILE || COMPILE_TEST
6 select BACKLIGHT_CLASS_DEVICE 6 select BACKLIGHT_CLASS_DEVICE
7 select BACKLIGHT_LCD_SUPPORT
8 select DRM_KMS_HELPER 7 select DRM_KMS_HELPER
9 select DRM_KMS_CMA_HELPER 8 select DRM_KMS_CMA_HELPER
10 select DRM_GEM_CMA_HELPER 9 select DRM_GEM_CMA_HELPER
diff --git a/drivers/gpu/drm/tilcdc/Kconfig b/drivers/gpu/drm/tilcdc/Kconfig
index 52598049c096..cb7df2086aee 100644
--- a/drivers/gpu/drm/tilcdc/Kconfig
+++ b/drivers/gpu/drm/tilcdc/Kconfig
@@ -8,7 +8,6 @@ config DRM_TILCDC
8 select DRM_PANEL_BRIDGE 8 select DRM_PANEL_BRIDGE
9 select VIDEOMODE_HELPERS 9 select VIDEOMODE_HELPERS
10 select BACKLIGHT_CLASS_DEVICE 10 select BACKLIGHT_CLASS_DEVICE
11 select BACKLIGHT_LCD_SUPPORT
12 help 11 help
13 Choose this option if you have an TI SoC with LCDC display 12 Choose this option if you have an TI SoC with LCDC display
14 controller, for example AM33xx in beagle-bone, DA8xx, or 13 controller, for example AM33xx in beagle-bone, DA8xx, or
diff --git a/drivers/staging/olpc_dcon/Kconfig b/drivers/staging/olpc_dcon/Kconfig
index 255e266c40e1..f5c716bb3413 100644
--- a/drivers/staging/olpc_dcon/Kconfig
+++ b/drivers/staging/olpc_dcon/Kconfig
@@ -3,7 +3,6 @@ config FB_OLPC_DCON
3 tristate "One Laptop Per Child Display CONtroller support" 3 tristate "One Laptop Per Child Display CONtroller support"
4 depends on OLPC && FB 4 depends on OLPC && FB
5 depends on I2C 5 depends on I2C
6 depends on BACKLIGHT_LCD_SUPPORT
7 depends on (GPIO_CS5535 || GPIO_CS5535=n) 6 depends on (GPIO_CS5535 || GPIO_CS5535=n)
8 select BACKLIGHT_CLASS_DEVICE 7 select BACKLIGHT_CLASS_DEVICE
9 help 8 help
diff --git a/drivers/usb/misc/Kconfig b/drivers/usb/misc/Kconfig
index be04c117fe80..c97f270338bf 100644
--- a/drivers/usb/misc/Kconfig
+++ b/drivers/usb/misc/Kconfig
@@ -142,7 +142,6 @@ config USB_FTDI_ELAN
142 142
143config USB_APPLEDISPLAY 143config USB_APPLEDISPLAY
144 tristate "Apple Cinema Display support" 144 tristate "Apple Cinema Display support"
145 select BACKLIGHT_LCD_SUPPORT
146 select BACKLIGHT_CLASS_DEVICE 145 select BACKLIGHT_CLASS_DEVICE
147 help 146 help
148 Say Y here if you want to control the backlight of Apple Cinema 147 Say Y here if you want to control the backlight of Apple Cinema
diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kconfig
index 71ee978c848f..3ed1d9084f94 100644
--- a/drivers/video/backlight/Kconfig
+++ b/drivers/video/backlight/Kconfig
@@ -2,13 +2,7 @@
2# Backlight & LCD drivers configuration 2# Backlight & LCD drivers configuration
3# 3#
4 4
5menuconfig BACKLIGHT_LCD_SUPPORT 5menu "Backlight & LCD device support"
6 bool "Backlight & LCD device support"
7 help
8 Enable this to be able to choose the drivers for controlling the
9 backlight and the LCD panel on some platforms, for example on PDAs.
10
11if BACKLIGHT_LCD_SUPPORT
12 6
13# 7#
14# LCD 8# LCD
@@ -199,7 +193,6 @@ config BACKLIGHT_IPAQ_MICRO
199 193
200config BACKLIGHT_LM3533 194config BACKLIGHT_LM3533
201 tristate "Backlight Driver for LM3533" 195 tristate "Backlight Driver for LM3533"
202 depends on BACKLIGHT_CLASS_DEVICE
203 depends on MFD_LM3533 196 depends on MFD_LM3533
204 help 197 help
205 Say Y to enable the backlight driver for National Semiconductor / TI 198 Say Y to enable the backlight driver for National Semiconductor / TI
@@ -323,7 +316,7 @@ config BACKLIGHT_ADP5520
323 316
324config BACKLIGHT_ADP8860 317config BACKLIGHT_ADP8860
325 tristate "Backlight Driver for ADP8860/ADP8861/ADP8863 using WLED" 318 tristate "Backlight Driver for ADP8860/ADP8861/ADP8863 using WLED"
326 depends on BACKLIGHT_CLASS_DEVICE && I2C 319 depends on I2C
327 select NEW_LEDS 320 select NEW_LEDS
328 select LEDS_CLASS 321 select LEDS_CLASS
329 help 322 help
@@ -335,7 +328,7 @@ config BACKLIGHT_ADP8860
335 328
336config BACKLIGHT_ADP8870 329config BACKLIGHT_ADP8870
337 tristate "Backlight Driver for ADP8870 using WLED" 330 tristate "Backlight Driver for ADP8870 using WLED"
338 depends on BACKLIGHT_CLASS_DEVICE && I2C 331 depends on I2C
339 select NEW_LEDS 332 select NEW_LEDS
340 select LEDS_CLASS 333 select LEDS_CLASS
341 help 334 help
@@ -353,28 +346,28 @@ config BACKLIGHT_88PM860X
353 346
354config BACKLIGHT_PCF50633 347config BACKLIGHT_PCF50633
355 tristate "Backlight driver for NXP PCF50633 MFD" 348 tristate "Backlight driver for NXP PCF50633 MFD"
356 depends on BACKLIGHT_CLASS_DEVICE && MFD_PCF50633 349 depends on MFD_PCF50633
357 help 350 help
358 If you have a backlight driven by a NXP PCF50633 MFD, say Y here to 351 If you have a backlight driven by a NXP PCF50633 MFD, say Y here to
359 enable its driver. 352 enable its driver.
360 353
361config BACKLIGHT_AAT2870 354config BACKLIGHT_AAT2870
362 tristate "AnalogicTech AAT2870 Backlight" 355 tristate "AnalogicTech AAT2870 Backlight"
363 depends on BACKLIGHT_CLASS_DEVICE && MFD_AAT2870_CORE 356 depends on MFD_AAT2870_CORE
364 help 357 help
365 If you have a AnalogicTech AAT2870 say Y to enable the 358 If you have a AnalogicTech AAT2870 say Y to enable the
366 backlight driver. 359 backlight driver.
367 360
368config BACKLIGHT_LM3630A 361config BACKLIGHT_LM3630A
369 tristate "Backlight Driver for LM3630A" 362 tristate "Backlight Driver for LM3630A"
370 depends on BACKLIGHT_CLASS_DEVICE && I2C && PWM 363 depends on I2C && PWM
371 select REGMAP_I2C 364 select REGMAP_I2C
372 help 365 help
373 This supports TI LM3630A Backlight Driver 366 This supports TI LM3630A Backlight Driver
374 367
375config BACKLIGHT_LM3639 368config BACKLIGHT_LM3639
376 tristate "Backlight Driver for LM3639" 369 tristate "Backlight Driver for LM3639"
377 depends on BACKLIGHT_CLASS_DEVICE && I2C 370 depends on I2C
378 select REGMAP_I2C 371 select REGMAP_I2C
379 select NEW_LEDS 372 select NEW_LEDS
380 select LEDS_CLASS 373 select LEDS_CLASS
@@ -383,20 +376,20 @@ config BACKLIGHT_LM3639
383 376
384config BACKLIGHT_LP855X 377config BACKLIGHT_LP855X
385 tristate "Backlight driver for TI LP855X" 378 tristate "Backlight driver for TI LP855X"
386 depends on BACKLIGHT_CLASS_DEVICE && I2C && PWM 379 depends on I2C && PWM
387 help 380 help
388 This supports TI LP8550, LP8551, LP8552, LP8553, LP8555, LP8556 and 381 This supports TI LP8550, LP8551, LP8552, LP8553, LP8555, LP8556 and
389 LP8557 backlight driver. 382 LP8557 backlight driver.
390 383
391config BACKLIGHT_LP8788 384config BACKLIGHT_LP8788
392 tristate "Backlight driver for TI LP8788 MFD" 385 tristate "Backlight driver for TI LP8788 MFD"
393 depends on BACKLIGHT_CLASS_DEVICE && MFD_LP8788 && PWM 386 depends on MFD_LP8788 && PWM
394 help 387 help
395 This supports TI LP8788 backlight driver. 388 This supports TI LP8788 backlight driver.
396 389
397config BACKLIGHT_OT200 390config BACKLIGHT_OT200
398 tristate "Backlight driver for ot200 visualisation device" 391 tristate "Backlight driver for ot200 visualisation device"
399 depends on BACKLIGHT_CLASS_DEVICE && CS5535_MFGPT && GPIO_CS5535 392 depends on CS5535_MFGPT && GPIO_CS5535
400 help 393 help
401 To compile this driver as a module, choose M here: the module will be 394 To compile this driver as a module, choose M here: the module will be
402 called ot200_bl. 395 called ot200_bl.
@@ -410,7 +403,7 @@ config BACKLIGHT_PANDORA
410 403
411config BACKLIGHT_SKY81452 404config BACKLIGHT_SKY81452
412 tristate "Backlight driver for SKY81452" 405 tristate "Backlight driver for SKY81452"
413 depends on BACKLIGHT_CLASS_DEVICE && MFD_SKY81452 406 depends on MFD_SKY81452
414 help 407 help
415 If you have a Skyworks SKY81452, say Y to enable the 408 If you have a Skyworks SKY81452, say Y to enable the
416 backlight driver. 409 backlight driver.
@@ -420,14 +413,14 @@ config BACKLIGHT_SKY81452
420 413
421config BACKLIGHT_TPS65217 414config BACKLIGHT_TPS65217
422 tristate "TPS65217 Backlight" 415 tristate "TPS65217 Backlight"
423 depends on BACKLIGHT_CLASS_DEVICE && MFD_TPS65217 416 depends on MFD_TPS65217
424 help 417 help
425 If you have a Texas Instruments TPS65217 say Y to enable the 418 If you have a Texas Instruments TPS65217 say Y to enable the
426 backlight driver. 419 backlight driver.
427 420
428config BACKLIGHT_AS3711 421config BACKLIGHT_AS3711
429 tristate "AS3711 Backlight" 422 tristate "AS3711 Backlight"
430 depends on BACKLIGHT_CLASS_DEVICE && MFD_AS3711 423 depends on MFD_AS3711
431 help 424 help
432 If you have an Austrian Microsystems AS3711 say Y to enable the 425 If you have an Austrian Microsystems AS3711 say Y to enable the
433 backlight driver. 426 backlight driver.
@@ -466,4 +459,4 @@ config BACKLIGHT_RAVE_SP
466 459
467endif # BACKLIGHT_CLASS_DEVICE 460endif # BACKLIGHT_CLASS_DEVICE
468 461
469endif # BACKLIGHT_LCD_SUPPORT 462endmenu
diff --git a/drivers/video/backlight/lm3630a_bl.c b/drivers/video/backlight/lm3630a_bl.c
index 2030a6b77a09..75d996490cf0 100644
--- a/drivers/video/backlight/lm3630a_bl.c
+++ b/drivers/video/backlight/lm3630a_bl.c
@@ -35,6 +35,14 @@
35#define REG_MAX 0x50 35#define REG_MAX 0x50
36 36
37#define INT_DEBOUNCE_MSEC 10 37#define INT_DEBOUNCE_MSEC 10
38
39#define LM3630A_BANK_0 0
40#define LM3630A_BANK_1 1
41
42#define LM3630A_NUM_SINKS 2
43#define LM3630A_SINK_0 0
44#define LM3630A_SINK_1 1
45
38struct lm3630a_chip { 46struct lm3630a_chip {
39 struct device *dev; 47 struct device *dev;
40 struct delayed_work work; 48 struct delayed_work work;
@@ -201,7 +209,7 @@ static int lm3630a_bank_a_update_status(struct backlight_device *bl)
201 LM3630A_LEDA_ENABLE, LM3630A_LEDA_ENABLE); 209 LM3630A_LEDA_ENABLE, LM3630A_LEDA_ENABLE);
202 if (ret < 0) 210 if (ret < 0)
203 goto out_i2c_err; 211 goto out_i2c_err;
204 return bl->props.brightness; 212 return 0;
205 213
206out_i2c_err: 214out_i2c_err:
207 dev_err(pchip->dev, "i2c failed to access\n"); 215 dev_err(pchip->dev, "i2c failed to access\n");
@@ -278,7 +286,7 @@ static int lm3630a_bank_b_update_status(struct backlight_device *bl)
278 LM3630A_LEDB_ENABLE, LM3630A_LEDB_ENABLE); 286 LM3630A_LEDB_ENABLE, LM3630A_LEDB_ENABLE);
279 if (ret < 0) 287 if (ret < 0)
280 goto out_i2c_err; 288 goto out_i2c_err;
281 return bl->props.brightness; 289 return 0;
282 290
283out_i2c_err: 291out_i2c_err:
284 dev_err(pchip->dev, "i2c failed to access REG_CTRL\n"); 292 dev_err(pchip->dev, "i2c failed to access REG_CTRL\n");
@@ -329,15 +337,17 @@ static const struct backlight_ops lm3630a_bank_b_ops = {
329 337
330static int lm3630a_backlight_register(struct lm3630a_chip *pchip) 338static int lm3630a_backlight_register(struct lm3630a_chip *pchip)
331{ 339{
332 struct backlight_properties props;
333 struct lm3630a_platform_data *pdata = pchip->pdata; 340 struct lm3630a_platform_data *pdata = pchip->pdata;
341 struct backlight_properties props;
342 const char *label;
334 343
335 props.type = BACKLIGHT_RAW; 344 props.type = BACKLIGHT_RAW;
336 if (pdata->leda_ctrl != LM3630A_LEDA_DISABLE) { 345 if (pdata->leda_ctrl != LM3630A_LEDA_DISABLE) {
337 props.brightness = pdata->leda_init_brt; 346 props.brightness = pdata->leda_init_brt;
338 props.max_brightness = pdata->leda_max_brt; 347 props.max_brightness = pdata->leda_max_brt;
348 label = pdata->leda_label ? pdata->leda_label : "lm3630a_leda";
339 pchip->bleda = 349 pchip->bleda =
340 devm_backlight_device_register(pchip->dev, "lm3630a_leda", 350 devm_backlight_device_register(pchip->dev, label,
341 pchip->dev, pchip, 351 pchip->dev, pchip,
342 &lm3630a_bank_a_ops, &props); 352 &lm3630a_bank_a_ops, &props);
343 if (IS_ERR(pchip->bleda)) 353 if (IS_ERR(pchip->bleda))
@@ -348,8 +358,9 @@ static int lm3630a_backlight_register(struct lm3630a_chip *pchip)
348 (pdata->ledb_ctrl != LM3630A_LEDB_ON_A)) { 358 (pdata->ledb_ctrl != LM3630A_LEDB_ON_A)) {
349 props.brightness = pdata->ledb_init_brt; 359 props.brightness = pdata->ledb_init_brt;
350 props.max_brightness = pdata->ledb_max_brt; 360 props.max_brightness = pdata->ledb_max_brt;
361 label = pdata->ledb_label ? pdata->ledb_label : "lm3630a_ledb";
351 pchip->bledb = 362 pchip->bledb =
352 devm_backlight_device_register(pchip->dev, "lm3630a_ledb", 363 devm_backlight_device_register(pchip->dev, label,
353 pchip->dev, pchip, 364 pchip->dev, pchip,
354 &lm3630a_bank_b_ops, &props); 365 &lm3630a_bank_b_ops, &props);
355 if (IS_ERR(pchip->bledb)) 366 if (IS_ERR(pchip->bledb))
@@ -364,6 +375,123 @@ static const struct regmap_config lm3630a_regmap = {
364 .max_register = REG_MAX, 375 .max_register = REG_MAX,
365}; 376};
366 377
378static int lm3630a_parse_led_sources(struct fwnode_handle *node,
379 int default_led_sources)
380{
381 u32 sources[LM3630A_NUM_SINKS];
382 int ret, num_sources, i;
383
384 num_sources = fwnode_property_read_u32_array(node, "led-sources", NULL,
385 0);
386 if (num_sources < 0)
387 return default_led_sources;
388 else if (num_sources > ARRAY_SIZE(sources))
389 return -EINVAL;
390
391 ret = fwnode_property_read_u32_array(node, "led-sources", sources,
392 num_sources);
393 if (ret)
394 return ret;
395
396 for (i = 0; i < num_sources; i++) {
397 if (sources[i] < LM3630A_SINK_0 || sources[i] > LM3630A_SINK_1)
398 return -EINVAL;
399
400 ret |= BIT(sources[i]);
401 }
402
403 return ret;
404}
405
406static int lm3630a_parse_bank(struct lm3630a_platform_data *pdata,
407 struct fwnode_handle *node, int *seen_led_sources)
408{
409 int led_sources, ret;
410 const char *label;
411 u32 bank, val;
412 bool linear;
413
414 ret = fwnode_property_read_u32(node, "reg", &bank);
415 if (ret)
416 return ret;
417
418 if (bank < LM3630A_BANK_0 || bank > LM3630A_BANK_1)
419 return -EINVAL;
420
421 led_sources = lm3630a_parse_led_sources(node, BIT(bank));
422 if (led_sources < 0)
423 return led_sources;
424
425 if (*seen_led_sources & led_sources)
426 return -EINVAL;
427
428 *seen_led_sources |= led_sources;
429
430 linear = fwnode_property_read_bool(node,
431 "ti,linear-mapping-mode");
432 if (bank) {
433 if (led_sources & BIT(LM3630A_SINK_0) ||
434 !(led_sources & BIT(LM3630A_SINK_1)))
435 return -EINVAL;
436
437 pdata->ledb_ctrl = linear ?
438 LM3630A_LEDB_ENABLE_LINEAR :
439 LM3630A_LEDB_ENABLE;
440 } else {
441 if (!(led_sources & BIT(LM3630A_SINK_0)))
442 return -EINVAL;
443
444 pdata->leda_ctrl = linear ?
445 LM3630A_LEDA_ENABLE_LINEAR :
446 LM3630A_LEDA_ENABLE;
447
448 if (led_sources & BIT(LM3630A_SINK_1))
449 pdata->ledb_ctrl = LM3630A_LEDB_ON_A;
450 }
451
452 ret = fwnode_property_read_string(node, "label", &label);
453 if (!ret) {
454 if (bank)
455 pdata->ledb_label = label;
456 else
457 pdata->leda_label = label;
458 }
459
460 ret = fwnode_property_read_u32(node, "default-brightness",
461 &val);
462 if (!ret) {
463 if (bank)
464 pdata->ledb_init_brt = val;
465 else
466 pdata->leda_init_brt = val;
467 }
468
469 ret = fwnode_property_read_u32(node, "max-brightness", &val);
470 if (!ret) {
471 if (bank)
472 pdata->ledb_max_brt = val;
473 else
474 pdata->leda_max_brt = val;
475 }
476
477 return 0;
478}
479
480static int lm3630a_parse_node(struct lm3630a_chip *pchip,
481 struct lm3630a_platform_data *pdata)
482{
483 int ret = -ENODEV, seen_led_sources = 0;
484 struct fwnode_handle *node;
485
486 device_for_each_child_node(pchip->dev, node) {
487 ret = lm3630a_parse_bank(pdata, node, &seen_led_sources);
488 if (ret)
489 return ret;
490 }
491
492 return ret;
493}
494
367static int lm3630a_probe(struct i2c_client *client, 495static int lm3630a_probe(struct i2c_client *client,
368 const struct i2c_device_id *id) 496 const struct i2c_device_id *id)
369{ 497{
@@ -396,13 +524,18 @@ static int lm3630a_probe(struct i2c_client *client,
396 GFP_KERNEL); 524 GFP_KERNEL);
397 if (pdata == NULL) 525 if (pdata == NULL)
398 return -ENOMEM; 526 return -ENOMEM;
527
399 /* default values */ 528 /* default values */
400 pdata->leda_ctrl = LM3630A_LEDA_ENABLE;
401 pdata->ledb_ctrl = LM3630A_LEDB_ENABLE;
402 pdata->leda_max_brt = LM3630A_MAX_BRIGHTNESS; 529 pdata->leda_max_brt = LM3630A_MAX_BRIGHTNESS;
403 pdata->ledb_max_brt = LM3630A_MAX_BRIGHTNESS; 530 pdata->ledb_max_brt = LM3630A_MAX_BRIGHTNESS;
404 pdata->leda_init_brt = LM3630A_MAX_BRIGHTNESS; 531 pdata->leda_init_brt = LM3630A_MAX_BRIGHTNESS;
405 pdata->ledb_init_brt = LM3630A_MAX_BRIGHTNESS; 532 pdata->ledb_init_brt = LM3630A_MAX_BRIGHTNESS;
533
534 rval = lm3630a_parse_node(pchip, pdata);
535 if (rval) {
536 dev_err(&client->dev, "fail : parse node\n");
537 return rval;
538 }
406 } 539 }
407 pchip->pdata = pdata; 540 pchip->pdata = pdata;
408 541
@@ -470,11 +603,17 @@ static const struct i2c_device_id lm3630a_id[] = {
470 {} 603 {}
471}; 604};
472 605
606static const struct of_device_id lm3630a_match_table[] = {
607 { .compatible = "ti,lm3630a", },
608 { },
609};
610
473MODULE_DEVICE_TABLE(i2c, lm3630a_id); 611MODULE_DEVICE_TABLE(i2c, lm3630a_id);
474 612
475static struct i2c_driver lm3630a_i2c_driver = { 613static struct i2c_driver lm3630a_i2c_driver = {
476 .driver = { 614 .driver = {
477 .name = LM3630A_NAME, 615 .name = LM3630A_NAME,
616 .of_match_table = lm3630a_match_table,
478 }, 617 },
479 .probe = lm3630a_probe, 618 .probe = lm3630a_probe,
480 .remove = lm3630a_remove, 619 .remove = lm3630a_remove,
diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig
index 47ecf9ad4d51..bf6b77b964f1 100644
--- a/drivers/video/fbdev/Kconfig
+++ b/drivers/video/fbdev/Kconfig
@@ -186,7 +186,6 @@ config FB_MACMODES
186config FB_BACKLIGHT 186config FB_BACKLIGHT
187 tristate 187 tristate
188 depends on FB 188 depends on FB
189 select BACKLIGHT_LCD_SUPPORT
190 select BACKLIGHT_CLASS_DEVICE 189 select BACKLIGHT_CLASS_DEVICE
191 190
192config FB_MODE_HELPERS 191config FB_MODE_HELPERS
@@ -281,7 +280,6 @@ config FB_ARMCLCD
281 select FB_CFB_IMAGEBLIT 280 select FB_CFB_IMAGEBLIT
282 select FB_MODE_HELPERS if OF 281 select FB_MODE_HELPERS if OF
283 select VIDEOMODE_HELPERS if OF 282 select VIDEOMODE_HELPERS if OF
284 select BACKLIGHT_LCD_SUPPORT if OF
285 select BACKLIGHT_CLASS_DEVICE if OF 283 select BACKLIGHT_CLASS_DEVICE if OF
286 help 284 help
287 This framebuffer device driver is for the ARM PrimeCell PL110 285 This framebuffer device driver is for the ARM PrimeCell PL110
@@ -307,7 +305,6 @@ config FB_ACORN
307config FB_CLPS711X 305config FB_CLPS711X
308 tristate "CLPS711X LCD support" 306 tristate "CLPS711X LCD support"
309 depends on FB && (ARCH_CLPS711X || COMPILE_TEST) 307 depends on FB && (ARCH_CLPS711X || COMPILE_TEST)
310 select BACKLIGHT_LCD_SUPPORT
311 select FB_MODE_HELPERS 308 select FB_MODE_HELPERS
312 select FB_SYS_FILLRECT 309 select FB_SYS_FILLRECT
313 select FB_SYS_COPYAREA 310 select FB_SYS_COPYAREA
@@ -335,7 +332,6 @@ config FB_SA1100
335config FB_IMX 332config FB_IMX
336 tristate "Freescale i.MX1/21/25/27 LCD support" 333 tristate "Freescale i.MX1/21/25/27 LCD support"
337 depends on FB && ARCH_MXC 334 depends on FB && ARCH_MXC
338 select BACKLIGHT_LCD_SUPPORT
339 select LCD_CLASS_DEVICE 335 select LCD_CLASS_DEVICE
340 select FB_CFB_FILLRECT 336 select FB_CFB_FILLRECT
341 select FB_CFB_COPYAREA 337 select FB_CFB_COPYAREA
@@ -2184,7 +2180,6 @@ config FB_MX3
2184 tristate "MX3 Framebuffer support" 2180 tristate "MX3 Framebuffer support"
2185 depends on FB && MX3_IPU 2181 depends on FB && MX3_IPU
2186 select BACKLIGHT_CLASS_DEVICE 2182 select BACKLIGHT_CLASS_DEVICE
2187 select BACKLIGHT_LCD_SUPPORT
2188 select FB_CFB_FILLRECT 2183 select FB_CFB_FILLRECT
2189 select FB_CFB_COPYAREA 2184 select FB_CFB_COPYAREA
2190 select FB_CFB_IMAGEBLIT 2185 select FB_CFB_IMAGEBLIT