Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 47ec340c authored by Qing Xu's avatar Qing Xu Committed by Samuel Ortiz
Browse files

mfd: max8925: Support dt for backlight



Add device tree support in max8925 backlight.

Signed-off-by: default avatarQing Xu <qingx@marvell.com>
Signed-off-by: default avatarHaojian Zhuang <haojian.zhuang@gmail.com>
Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
parent 678e8cb5
Loading
Loading
Loading
Loading
+30 −1
Original line number Diff line number Diff line
@@ -101,6 +101,29 @@ static const struct backlight_ops max8925_backlight_ops = {
	.get_brightness	= max8925_backlight_get_brightness,
};

#ifdef CONFIG_OF
static int max8925_backlight_dt_init(struct platform_device *pdev,
			      struct max8925_backlight_pdata *pdata)
{
	struct device_node *nproot = pdev->dev.parent->of_node, *np;
	int dual_string;

	if (!nproot)
		return -ENODEV;
	np = of_find_node_by_name(nproot, "backlight");
	if (!np) {
		dev_err(&pdev->dev, "failed to find backlight node\n");
		return -ENODEV;
	}

	of_property_read_u32(np, "maxim,max8925-dual-string", &dual_string);
	pdata->dual_string = dual_string;
	return 0;
}
#else
#define max8925_backlight_dt_init(x, y)	(-1)
#endif

static int max8925_backlight_probe(struct platform_device *pdev)
{
	struct max8925_chip *chip = dev_get_drvdata(pdev->dev.parent);
@@ -147,6 +170,13 @@ static int max8925_backlight_probe(struct platform_device *pdev)
	platform_set_drvdata(pdev, bl);

	value = 0;
	if (pdev->dev.parent->of_node && !pdata) {
		pdata = devm_kzalloc(&pdev->dev,
				     sizeof(struct max8925_backlight_pdata),
				     GFP_KERNEL);
		max8925_backlight_dt_init(pdev, pdata);
	}

	if (pdata) {
		if (pdata->lxw_scl)
			value |= (1 << 7);
@@ -158,7 +188,6 @@ static int max8925_backlight_probe(struct platform_device *pdev)
	ret = max8925_set_bits(chip->i2c, data->reg_mode_cntl, 0xfe, value);
	if (ret < 0)
		goto out_brt;

	backlight_update_status(bl);
	return 0;
out_brt: