/* update and get brightness */ staticint lm3639_bled_update_status(struct backlight_device *bl)
{ int ret; unsignedint reg_val; struct lm3639_chip_data *pchip = bl_get_data(bl); struct lm3639_platform_data *pdata = pchip->pdata;
ret = regmap_read(pchip->regmap, REG_FLAG, ®_val); if (ret < 0) goto out;
if (reg_val != 0)
dev_info(pchip->dev, "last flag is 0x%x\n", reg_val);
/* pwm control */ if (pdata->pin_pwm) { if (pdata->pwm_set_intensity)
pdata->pwm_set_intensity(bl->props.brightness,
pdata->max_brt_led); else
dev_err(pchip->dev, "No pwm control func. in plat-data\n"); return bl->props.brightness;
}
/* i2c control and set brigtness */
ret = regmap_write(pchip->regmap, REG_BL_CONF_4, bl->props.brightness); if (ret < 0) goto out;
ret = regmap_write(pchip->regmap, REG_BL_CONF_3, bl->props.brightness); if (ret < 0) goto out;
if (!bl->props.brightness)
ret = regmap_update_bits(pchip->regmap, REG_ENABLE, 0x01, 0x00); else
ret = regmap_update_bits(pchip->regmap, REG_ENABLE, 0x01, 0x01); if (ret < 0) goto out;
if (pdata->pin_pwm) { if (pdata->pwm_get_intensity)
bl->props.brightness = pdata->pwm_get_intensity(); else
dev_err(pchip->dev, "No pwm control func. in plat-data\n"); return bl->props.brightness;
}
ret = regmap_read(pchip->regmap, REG_BL_CONF_1, ®_val); if (ret < 0) goto out; if (reg_val & 0x10)
ret = regmap_read(pchip->regmap, REG_BL_CONF_4, ®_val); else
ret = regmap_read(pchip->regmap, REG_BL_CONF_3, ®_val); if (ret < 0) goto out;
bl->props.brightness = reg_val;
ret = kstrtouint(buf, 10, &state); if (ret) goto out_input;
if (!state)
ret =
regmap_update_bits(pchip->regmap, REG_BL_CONF_1, 0x10,
0x00); else
ret =
regmap_update_bits(pchip->regmap, REG_BL_CONF_1, 0x10,
0x10);
if (ret < 0) goto out;
return size;
out:
dev_err(pchip->dev, "%s:i2c access fail to register\n", __func__); return ret;
ret = regmap_read(pchip->regmap, REG_FLAG, ®_val); if (ret < 0) goto out; if (reg_val != 0)
dev_info(pchip->dev, "last flag is 0x%x\n", reg_val);
/* brightness 0 means off state */ if (!brightness) {
ret = regmap_update_bits(pchip->regmap, REG_ENABLE, 0x06, 0x00); if (ret < 0) goto out; return;
}
ret = regmap_update_bits(pchip->regmap,
REG_FL_CONF_1, 0x70, (brightness - 1) << 4); if (ret < 0) goto out;
ret = regmap_update_bits(pchip->regmap, REG_ENABLE, 0x06, 0x02); if (ret < 0) goto out;
return;
out:
dev_err(pchip->dev, "i2c failed to access register\n");
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.