Lines Matching +full:ext +full:- +full:gen
51 /* Per-'string' registers below */
92 u16 val = bl->props.brightness; in pm8941_wled_update_status()
97 if (bl->props.power != FB_BLANK_UNBLANK || in pm8941_wled_update_status()
98 bl->props.fb_blank != FB_BLANK_UNBLANK || in pm8941_wled_update_status()
99 bl->props.state & BL_CORE_FBBLANK) in pm8941_wled_update_status()
105 rc = regmap_update_bits(wled->regmap, in pm8941_wled_update_status()
106 wled->addr + PM8941_WLED_REG_MOD_EN, in pm8941_wled_update_status()
111 for (i = 0; i < wled->cfg.num_strings; ++i) { in pm8941_wled_update_status()
114 rc = regmap_bulk_write(wled->regmap, in pm8941_wled_update_status()
115 wled->addr + PM8941_WLED_REG_VAL_BASE + 2 * i, in pm8941_wled_update_status()
121 rc = regmap_update_bits(wled->regmap, in pm8941_wled_update_status()
122 wled->addr + PM8941_WLED_REG_SYNC, in pm8941_wled_update_status()
127 rc = regmap_update_bits(wled->regmap, in pm8941_wled_update_status()
128 wled->addr + PM8941_WLED_REG_SYNC, in pm8941_wled_update_status()
138 rc = regmap_update_bits(wled->regmap, in pm8941_wled_setup()
139 wled->addr + PM8941_WLED_REG_OVP, in pm8941_wled_setup()
140 PM8941_WLED_REG_OVP_MASK, wled->cfg.ovp); in pm8941_wled_setup()
144 rc = regmap_update_bits(wled->regmap, in pm8941_wled_setup()
145 wled->addr + PM8941_WLED_REG_BOOST, in pm8941_wled_setup()
146 PM8941_WLED_REG_BOOST_MASK, wled->cfg.i_boost_limit); in pm8941_wled_setup()
150 rc = regmap_update_bits(wled->regmap, in pm8941_wled_setup()
151 wled->addr + PM8941_WLED_REG_FREQ, in pm8941_wled_setup()
152 PM8941_WLED_REG_FREQ_MASK, wled->cfg.switch_freq); in pm8941_wled_setup()
156 if (wled->cfg.cs_out_en) { in pm8941_wled_setup()
157 u8 all = (BIT(wled->cfg.num_strings) - 1) in pm8941_wled_setup()
160 rc = regmap_update_bits(wled->regmap, in pm8941_wled_setup()
161 wled->addr + PM8941_WLED_REG_SINK, in pm8941_wled_setup()
167 for (i = 0; i < wled->cfg.num_strings; ++i) { in pm8941_wled_setup()
168 u16 addr = wled->addr + PM8941_WLED_REG_STR_OFFSET * i; in pm8941_wled_setup()
170 rc = regmap_update_bits(wled->regmap, in pm8941_wled_setup()
177 if (wled->cfg.ext_gen) { in pm8941_wled_setup()
178 rc = regmap_update_bits(wled->regmap, in pm8941_wled_setup()
186 rc = regmap_update_bits(wled->regmap, in pm8941_wled_setup()
189 wled->cfg.i_limit); in pm8941_wled_setup()
193 rc = regmap_update_bits(wled->regmap, in pm8941_wled_setup()
196 wled->cfg.cabc_en ? in pm8941_wled_setup()
266 if (idx >= cfg->size) in pm8941_wled_values()
268 if (cfg->fn) in pm8941_wled_values()
269 return cfg->fn(idx); in pm8941_wled_values()
270 if (cfg->values) in pm8941_wled_values()
271 return cfg->values[idx]; in pm8941_wled_values()
277 struct pm8941_wled_config *cfg = &wled->cfg; in pm8941_wled_configure()
290 "qcom,current-boost-limit", in pm8941_wled_configure()
291 &cfg->i_boost_limit, in pm8941_wled_configure()
295 "qcom,current-limit", in pm8941_wled_configure()
296 &cfg->i_limit, in pm8941_wled_configure()
301 &cfg->ovp, in pm8941_wled_configure()
305 "qcom,switching-freq", in pm8941_wled_configure()
306 &cfg->switch_freq, in pm8941_wled_configure()
310 "qcom,num-strings", in pm8941_wled_configure()
311 &cfg->num_strings, in pm8941_wled_configure()
319 { "qcom,cs-out", &cfg->cs_out_en, }, in pm8941_wled_configure()
320 { "qcom,ext-gen", &cfg->ext_gen, }, in pm8941_wled_configure()
321 { "qcom,cabc", &cfg->cabc_en, }, in pm8941_wled_configure()
324 rc = of_property_read_u32(dev->of_node, "reg", &val); in pm8941_wled_configure()
327 return rc ? rc : -EINVAL; in pm8941_wled_configure()
329 wled->addr = val; in pm8941_wled_configure()
331 rc = of_property_read_string(dev->of_node, "label", &wled->name); in pm8941_wled_configure()
333 wled->name = dev->of_node->name; in pm8941_wled_configure()
337 rc = of_property_read_u32(dev->of_node, u32_opts[i].name, &val); in pm8941_wled_configure()
338 if (rc == -EINVAL) { in pm8941_wled_configure()
351 return -EINVAL; in pm8941_wled_configure()
360 if (of_property_read_bool(dev->of_node, bool_opts[i].name)) in pm8941_wled_configure()
364 cfg->num_strings = cfg->num_strings + 1; in pm8941_wled_configure()
382 regmap = dev_get_regmap(pdev->dev.parent, NULL); in pm8941_wled_probe()
384 dev_err(&pdev->dev, "Unable to get regmap\n"); in pm8941_wled_probe()
385 return -EINVAL; in pm8941_wled_probe()
388 wled = devm_kzalloc(&pdev->dev, sizeof(*wled), GFP_KERNEL); in pm8941_wled_probe()
390 return -ENOMEM; in pm8941_wled_probe()
392 wled->regmap = regmap; in pm8941_wled_probe()
394 rc = pm8941_wled_configure(wled, &pdev->dev); in pm8941_wled_probe()
403 of_property_read_u32(pdev->dev.of_node, "default-brightness", &val); in pm8941_wled_probe()
409 bl = devm_backlight_device_register(&pdev->dev, wled->name, in pm8941_wled_probe()
410 &pdev->dev, wled, in pm8941_wled_probe()
416 { .compatible = "qcom,pm8941-wled" },
424 .name = "pm8941-wled",