#include <linux/backlight.h>
#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/mfd/as3711.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
enum as3711_bl_type type;
struct backlight_device *bl;
struct as3711_bl_supply {
struct as3711_bl_data su1;
struct as3711_bl_data su2;
const struct as3711_bl_pdata *pdata;
static struct as3711_bl_supply *to_supply(struct as3711_bl_data *su)
return container_of(su, struct as3711_bl_supply, su1);
return container_of(su, struct as3711_bl_supply, su2);
static int as3711_set_brightness_auto_i(struct as3711_bl_data *data,
struct as3711_bl_supply *supply = to_supply(data);
struct as3711 *as3711 = supply->as3711;
const struct as3711_bl_pdata *pdata = supply->pdata;
if (pdata->su2_auto_curr1)
ret = regmap_write(as3711->regmap, AS3711_CURR1_VALUE,
if (!ret && pdata->su2_auto_curr2)
ret = regmap_write(as3711->regmap, AS3711_CURR2_VALUE,
if (!ret && pdata->su2_auto_curr3)
ret = regmap_write(as3711->regmap, AS3711_CURR3_VALUE,
static int as3711_set_brightness_v(struct as3711 *as3711,
return regmap_update_bits(as3711->regmap, reg, 0xf0,
static int as3711_bl_su2_reset(struct as3711_bl_supply *supply)
struct as3711 *as3711 = supply->as3711;
int ret = regmap_update_bits(as3711->regmap, AS3711_STEPUP_CONTROL_5,
3, supply->pdata->su2_fbprot);
ret = regmap_update_bits(as3711->regmap,
AS3711_STEPUP_CONTROL_2, 1, 0);