Commit 5bc23a0c authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'backlight-for-linus-4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/backlight

Pull backlight updates from Lee Jones:
 "New Device Support
   - None

  New Functionality:
   - None

  Core Frameworks:
   - Reject legacy PWM request for device defined in DT

  Fix-ups:
   - Remove unnecessary MODULE_ALIAS(); adp8860_bl, adp8870_bl
   - Simplify code: pm8941-wled
   - Supply default-brightness logic; pm8941-wled

  Bug Fixes:
   - Clean up OF node; 88pm860x_bl
   - Ensure struct is zeroed; lp855x_bl"

* tag 'backlight-for-linus-4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/backlight:
  backlight: pm8941-wled: Add default-brightness property
  backlight: pm8941-wled: Fix ptr_ret.cocci warnings
  backlight: pwm: Reject legacy PWM request for device defined in DT
  backlight: 88pm860x_bl: Add missing of_node_put
  backlight: adp8870: Remove unnecessary MODULE_ALIAS()
  backlight: adp8860: Remove unnecessary MODULE_ALIAS()
  backlight: lp855x: Make sure props struct is zeroed
parents 4dcee4d8 9d6c2435
...@@ -5,6 +5,8 @@ Required properties: ...@@ -5,6 +5,8 @@ Required properties:
- reg: slave address - reg: slave address
Optional properties: Optional properties:
- default-brightness: brightness value on boot, value from: 0-4095
default: 2048
- label: The name of the backlight device - label: The name of the backlight device
- qcom,cs-out: bool; enable current sink output - qcom,cs-out: bool; enable current sink output
- qcom,cabc: bool; enable content adaptive backlight control - qcom,cabc: bool; enable content adaptive backlight control
......
...@@ -180,6 +180,7 @@ static int pm860x_backlight_dt_init(struct platform_device *pdev, ...@@ -180,6 +180,7 @@ static int pm860x_backlight_dt_init(struct platform_device *pdev,
data->iset = PM8606_WLED_CURRENT(iset); data->iset = PM8606_WLED_CURRENT(iset);
of_property_read_u32(np, "marvell,88pm860x-pwm", of_property_read_u32(np, "marvell,88pm860x-pwm",
&data->pwm); &data->pwm);
of_node_put(np);
break; break;
} }
} }
......
...@@ -819,4 +819,3 @@ module_i2c_driver(adp8860_driver); ...@@ -819,4 +819,3 @@ module_i2c_driver(adp8860_driver);
MODULE_LICENSE("GPL v2"); MODULE_LICENSE("GPL v2");
MODULE_AUTHOR("Michael Hennerich <hennerich@blackfin.uclinux.org>"); MODULE_AUTHOR("Michael Hennerich <hennerich@blackfin.uclinux.org>");
MODULE_DESCRIPTION("ADP8860 Backlight driver"); MODULE_DESCRIPTION("ADP8860 Backlight driver");
MODULE_ALIAS("i2c:adp8860-backlight");
...@@ -992,4 +992,3 @@ module_i2c_driver(adp8870_driver); ...@@ -992,4 +992,3 @@ module_i2c_driver(adp8870_driver);
MODULE_LICENSE("GPL v2"); MODULE_LICENSE("GPL v2");
MODULE_AUTHOR("Michael Hennerich <hennerich@blackfin.uclinux.org>"); MODULE_AUTHOR("Michael Hennerich <hennerich@blackfin.uclinux.org>");
MODULE_DESCRIPTION("ADP8870 Backlight driver"); MODULE_DESCRIPTION("ADP8870 Backlight driver");
MODULE_ALIAS("i2c:adp8870-backlight");
...@@ -283,6 +283,7 @@ static int lp855x_backlight_register(struct lp855x *lp) ...@@ -283,6 +283,7 @@ static int lp855x_backlight_register(struct lp855x *lp)
struct lp855x_platform_data *pdata = lp->pdata; struct lp855x_platform_data *pdata = lp->pdata;
const char *name = pdata->name ? : DEFAULT_BL_NAME; const char *name = pdata->name ? : DEFAULT_BL_NAME;
memset(&props, 0, sizeof(props));
props.type = BACKLIGHT_PLATFORM; props.type = BACKLIGHT_PLATFORM;
props.max_brightness = MAX_BRIGHTNESS; props.max_brightness = MAX_BRIGHTNESS;
......
...@@ -17,6 +17,9 @@ ...@@ -17,6 +17,9 @@
#include <linux/of_device.h> #include <linux/of_device.h>
#include <linux/regmap.h> #include <linux/regmap.h>
/* From DT binding */
#define PM8941_WLED_DEFAULT_BRIGHTNESS 2048
#define PM8941_WLED_REG_VAL_BASE 0x40 #define PM8941_WLED_REG_VAL_BASE 0x40
#define PM8941_WLED_REG_VAL_MAX 0xFFF #define PM8941_WLED_REG_VAL_MAX 0xFFF
...@@ -373,6 +376,7 @@ static int pm8941_wled_probe(struct platform_device *pdev) ...@@ -373,6 +376,7 @@ static int pm8941_wled_probe(struct platform_device *pdev)
struct backlight_device *bl; struct backlight_device *bl;
struct pm8941_wled *wled; struct pm8941_wled *wled;
struct regmap *regmap; struct regmap *regmap;
u32 val;
int rc; int rc;
regmap = dev_get_regmap(pdev->dev.parent, NULL); regmap = dev_get_regmap(pdev->dev.parent, NULL);
...@@ -395,16 +399,17 @@ static int pm8941_wled_probe(struct platform_device *pdev) ...@@ -395,16 +399,17 @@ static int pm8941_wled_probe(struct platform_device *pdev)
if (rc) if (rc)
return rc; return rc;
val = PM8941_WLED_DEFAULT_BRIGHTNESS;
of_property_read_u32(pdev->dev.of_node, "default-brightness", &val);
memset(&props, 0, sizeof(struct backlight_properties)); memset(&props, 0, sizeof(struct backlight_properties));
props.type = BACKLIGHT_RAW; props.type = BACKLIGHT_RAW;
props.brightness = val;
props.max_brightness = PM8941_WLED_REG_VAL_MAX; props.max_brightness = PM8941_WLED_REG_VAL_MAX;
bl = devm_backlight_device_register(&pdev->dev, wled->name, bl = devm_backlight_device_register(&pdev->dev, wled->name,
&pdev->dev, wled, &pdev->dev, wled,
&pm8941_wled_ops, &props); &pm8941_wled_ops, &props);
if (IS_ERR(bl)) return PTR_ERR_OR_ZERO(bl);
return PTR_ERR(bl);
return 0;
}; };
static const struct of_device_id pm8941_wled_match_table[] = { static const struct of_device_id pm8941_wled_match_table[] = {
......
...@@ -271,19 +271,18 @@ static int pwm_backlight_probe(struct platform_device *pdev) ...@@ -271,19 +271,18 @@ static int pwm_backlight_probe(struct platform_device *pdev)
} }
pb->pwm = devm_pwm_get(&pdev->dev, NULL); pb->pwm = devm_pwm_get(&pdev->dev, NULL);
if (IS_ERR(pb->pwm)) { if (IS_ERR(pb->pwm) && PTR_ERR(pb->pwm) != -EPROBE_DEFER
ret = PTR_ERR(pb->pwm); && !pdev->dev.of_node) {
if (ret == -EPROBE_DEFER)
goto err_alloc;
dev_err(&pdev->dev, "unable to request PWM, trying legacy API\n"); dev_err(&pdev->dev, "unable to request PWM, trying legacy API\n");
pb->legacy = true; pb->legacy = true;
pb->pwm = pwm_request(data->pwm_id, "pwm-backlight"); pb->pwm = pwm_request(data->pwm_id, "pwm-backlight");
if (IS_ERR(pb->pwm)) { }
dev_err(&pdev->dev, "unable to request legacy PWM\n");
ret = PTR_ERR(pb->pwm); if (IS_ERR(pb->pwm)) {
goto err_alloc; ret = PTR_ERR(pb->pwm);
} if (ret != -EPROBE_DEFER)
dev_err(&pdev->dev, "unable to request PWM\n");
goto err_alloc;
} }
dev_dbg(&pdev->dev, "got pwm for backlight\n"); dev_dbg(&pdev->dev, "got pwm for backlight\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment