diff options
Diffstat (limited to 'drivers/video/backlight/lp855x_bl.c')
| -rw-r--r-- | drivers/video/backlight/lp855x_bl.c | 43 | 
1 files changed, 22 insertions, 21 deletions
diff --git a/drivers/video/backlight/lp855x_bl.c b/drivers/video/backlight/lp855x_bl.c index c0b41f13bd4..2ca3a040007 100644 --- a/drivers/video/backlight/lp855x_bl.c +++ b/drivers/video/backlight/lp855x_bl.c @@ -26,13 +26,15 @@  #define LP8556_EPROM_START		0xA0  #define LP8556_EPROM_END		0xAF -/* LP8557 Registers */ +/* LP8555/7 Registers */  #define LP8557_BL_CMD			0x00  #define LP8557_BL_MASK			0x01  #define LP8557_BL_ON			0x01  #define LP8557_BL_OFF			0x00  #define LP8557_BRIGHTNESS_CTRL		0x04  #define LP8557_CONFIG			0x10 +#define LP8555_EPROM_START		0x10 +#define LP8555_EPROM_END		0x7A  #define LP8557_EPROM_START		0x10  #define LP8557_EPROM_END		0x1E @@ -111,6 +113,10 @@ static bool lp855x_is_valid_rom_area(struct lp855x *lp, u8 addr)  		start = LP8556_EPROM_START;  		end = LP8556_EPROM_END;  		break; +	case LP8555: +		start = LP8555_EPROM_START; +		end = LP8555_EPROM_END; +		break;  	case LP8557:  		start = LP8557_EPROM_START;  		end = LP8557_EPROM_END; @@ -119,7 +125,7 @@ static bool lp855x_is_valid_rom_area(struct lp855x *lp, u8 addr)  		return false;  	} -	return (addr >= start && addr <= end); +	return addr >= start && addr <= end;  }  static int lp8557_bl_off(struct lp855x *lp) @@ -165,9 +171,14 @@ static int lp855x_configure(struct lp855x *lp)  	struct lp855x_platform_data *pd = lp->pdata;  	switch (lp->chip_id) { -	case LP8550 ... LP8556: +	case LP8550: +	case LP8551: +	case LP8552: +	case LP8553: +	case LP8556:  		lp->cfg = &lp855x_dev_cfg;  		break; +	case LP8555:  	case LP8557:  		lp->cfg = &lp8557_dev_cfg;  		break; @@ -289,7 +300,7 @@ static int lp855x_backlight_register(struct lp855x *lp)  	props.brightness = pdata->initial_brightness; -	bl = backlight_device_register(name, lp->dev, lp, +	bl = devm_backlight_device_register(lp->dev, name, lp->dev, lp,  				       &lp855x_bl_ops, &props);  	if (IS_ERR(bl))  		return PTR_ERR(bl); @@ -299,12 +310,6 @@ static int lp855x_backlight_register(struct lp855x *lp)  	return 0;  } -static void lp855x_backlight_unregister(struct lp855x *lp) -{ -	if (lp->bl) -		backlight_device_unregister(lp->bl); -} -  static ssize_t lp855x_get_chip_id(struct device *dev,  				struct device_attribute *attr, char *buf)  { @@ -394,7 +399,7 @@ static int lp855x_parse_dt(struct device *dev, struct device_node *node)  static int lp855x_probe(struct i2c_client *cl, const struct i2c_device_id *id)  {  	struct lp855x *lp; -	struct lp855x_platform_data *pdata = cl->dev.platform_data; +	struct lp855x_platform_data *pdata = dev_get_platdata(&cl->dev);  	struct device_node *node = cl->dev.of_node;  	int ret; @@ -403,7 +408,7 @@ static int lp855x_probe(struct i2c_client *cl, const struct i2c_device_id *id)  		if (ret < 0)  			return ret; -		pdata = cl->dev.platform_data; +		pdata = dev_get_platdata(&cl->dev);  	}  	if (!i2c_check_functionality(cl->adapter, I2C_FUNC_SMBUS_I2C_BLOCK)) @@ -428,29 +433,24 @@ static int lp855x_probe(struct i2c_client *cl, const struct i2c_device_id *id)  	ret = lp855x_configure(lp);  	if (ret) {  		dev_err(lp->dev, "device config err: %d", ret); -		goto err_dev; +		return ret;  	}  	ret = lp855x_backlight_register(lp);  	if (ret) {  		dev_err(lp->dev,  			"failed to register backlight. err: %d\n", ret); -		goto err_dev; +		return ret;  	}  	ret = sysfs_create_group(&lp->dev->kobj, &lp855x_attr_group);  	if (ret) {  		dev_err(lp->dev, "failed to register sysfs. err: %d\n", ret); -		goto err_sysfs; +		return ret;  	}  	backlight_update_status(lp->bl);  	return 0; - -err_sysfs: -	lp855x_backlight_unregister(lp); -err_dev: -	return ret;  }  static int lp855x_remove(struct i2c_client *cl) @@ -460,7 +460,6 @@ static int lp855x_remove(struct i2c_client *cl)  	lp->bl->props.brightness = 0;  	backlight_update_status(lp->bl);  	sysfs_remove_group(&lp->dev->kobj, &lp855x_attr_group); -	lp855x_backlight_unregister(lp);  	return 0;  } @@ -470,6 +469,7 @@ static const struct of_device_id lp855x_dt_ids[] = {  	{ .compatible = "ti,lp8551", },  	{ .compatible = "ti,lp8552", },  	{ .compatible = "ti,lp8553", }, +	{ .compatible = "ti,lp8555", },  	{ .compatible = "ti,lp8556", },  	{ .compatible = "ti,lp8557", },  	{ } @@ -481,6 +481,7 @@ static const struct i2c_device_id lp855x_ids[] = {  	{"lp8551", LP8551},  	{"lp8552", LP8552},  	{"lp8553", LP8553}, +	{"lp8555", LP8555},  	{"lp8556", LP8556},  	{"lp8557", LP8557},  	{ }  | 
