Lines Matching +full:bl +full:- +full:name
1 // SPDX-License-Identifier: GPL-2.0-only
22 #define LWX_FREQ(x) (((x - 601) / 100) & 0x7)
32 static int max8925_backlight_set(struct backlight_device *bl, int brightness) in max8925_backlight_set() argument
34 struct max8925_backlight_data *data = bl_get_data(bl); in max8925_backlight_set()
35 struct max8925_chip *chip = data->chip; in max8925_backlight_set()
44 ret = max8925_reg_write(chip->i2c, data->reg_cntl, value); in max8925_backlight_set()
48 if (!data->current_brightness && brightness) in max8925_backlight_set()
50 ret = max8925_set_bits(chip->i2c, data->reg_mode_cntl, 1, 1); in max8925_backlight_set()
53 ret = max8925_set_bits(chip->i2c, data->reg_mode_cntl, 1, 0); in max8925_backlight_set()
56 dev_dbg(chip->dev, "set brightness %d\n", value); in max8925_backlight_set()
57 data->current_brightness = value; in max8925_backlight_set()
60 dev_dbg(chip->dev, "set brightness %d failure with return value:%d\n", in max8925_backlight_set()
65 static int max8925_backlight_update_status(struct backlight_device *bl) in max8925_backlight_update_status() argument
67 return max8925_backlight_set(bl, backlight_get_brightness(bl)); in max8925_backlight_update_status()
70 static int max8925_backlight_get_brightness(struct backlight_device *bl) in max8925_backlight_get_brightness() argument
72 struct max8925_backlight_data *data = bl_get_data(bl); in max8925_backlight_get_brightness()
73 struct max8925_chip *chip = data->chip; in max8925_backlight_get_brightness()
76 ret = max8925_reg_read(chip->i2c, data->reg_cntl); in max8925_backlight_get_brightness()
78 return -EINVAL; in max8925_backlight_get_brightness()
79 data->current_brightness = ret; in max8925_backlight_get_brightness()
80 dev_dbg(chip->dev, "get brightness %d\n", data->current_brightness); in max8925_backlight_get_brightness()
92 struct device_node *nproot = pdev->dev.parent->of_node, *np; in max8925_backlight_dt_init()
99 pdata = devm_kzalloc(&pdev->dev, in max8925_backlight_dt_init()
107 dev_err(&pdev->dev, "failed to find backlight node\n"); in max8925_backlight_dt_init()
111 if (!of_property_read_u32(np, "maxim,max8925-dual-string", &val)) in max8925_backlight_dt_init()
112 pdata->dual_string = val; in max8925_backlight_dt_init()
116 pdev->dev.platform_data = pdata; in max8925_backlight_dt_init()
121 struct max8925_chip *chip = dev_get_drvdata(pdev->dev.parent); in max8925_backlight_probe()
124 struct backlight_device *bl; in max8925_backlight_probe() local
130 data = devm_kzalloc(&pdev->dev, sizeof(struct max8925_backlight_data), in max8925_backlight_probe()
133 return -ENOMEM; in max8925_backlight_probe()
137 dev_err(&pdev->dev, "No REG resource for mode control!\n"); in max8925_backlight_probe()
138 return -ENXIO; in max8925_backlight_probe()
140 data->reg_mode_cntl = res->start; in max8925_backlight_probe()
143 dev_err(&pdev->dev, "No REG resource for control!\n"); in max8925_backlight_probe()
144 return -ENXIO; in max8925_backlight_probe()
146 data->reg_cntl = res->start; in max8925_backlight_probe()
148 data->chip = chip; in max8925_backlight_probe()
149 data->current_brightness = 0; in max8925_backlight_probe()
154 bl = devm_backlight_device_register(&pdev->dev, "max8925-backlight", in max8925_backlight_probe()
155 &pdev->dev, data, in max8925_backlight_probe()
157 if (IS_ERR(bl)) { in max8925_backlight_probe()
158 dev_err(&pdev->dev, "failed to register backlight\n"); in max8925_backlight_probe()
159 return PTR_ERR(bl); in max8925_backlight_probe()
161 bl->props.brightness = MAX_BRIGHTNESS; in max8925_backlight_probe()
163 platform_set_drvdata(pdev, bl); in max8925_backlight_probe()
166 if (!pdev->dev.platform_data) in max8925_backlight_probe()
169 pdata = pdev->dev.platform_data; in max8925_backlight_probe()
171 if (pdata->lxw_scl) in max8925_backlight_probe()
173 if (pdata->lxw_freq) in max8925_backlight_probe()
174 value |= (LWX_FREQ(pdata->lxw_freq) << 4); in max8925_backlight_probe()
175 if (pdata->dual_string) in max8925_backlight_probe()
178 ret = max8925_set_bits(chip->i2c, data->reg_mode_cntl, 0xfe, value); in max8925_backlight_probe()
181 backlight_update_status(bl); in max8925_backlight_probe()
187 .name = "max8925-backlight",
197 MODULE_ALIAS("platform:max8925-backlight");