Lines Matching +full:pwm +full:- +full:gpios

5  * SPDX-License-Identifier:	GPL-2.0+
11 #include <pwm.h>
20 struct udevice *pwm; member
36 if (priv->reg) { in pwm_backlight_enable()
37 plat = dev_get_uclass_platdata(priv->reg); in pwm_backlight_enable()
39 dev->name, priv->reg->name, plat->name); in pwm_backlight_enable()
40 ret = regulator_set_enable(priv->reg, true); in pwm_backlight_enable()
42 debug("%s: Cannot enable regulator for PWM '%s'\n", in pwm_backlight_enable()
43 __func__, dev->name); in pwm_backlight_enable()
49 ret = pwm_set_invert(priv->pwm, priv->channel, priv->polarity); in pwm_backlight_enable()
51 dev_err(dev, "Failed to invert PWM\n"); in pwm_backlight_enable()
55 duty_cycle = priv->period_ns * (priv->default_level - priv->min_level) / in pwm_backlight_enable()
56 (priv->max_level - priv->min_level + 1); in pwm_backlight_enable()
57 ret = pwm_set_config(priv->pwm, priv->channel, priv->period_ns, in pwm_backlight_enable()
61 ret = pwm_set_enable(priv->pwm, priv->channel, true); in pwm_backlight_enable()
66 if (dm_gpio_is_valid(&priv->enable)) in pwm_backlight_enable()
67 dm_gpio_set_value(&priv->enable, 1); in pwm_backlight_enable()
78 ret = pwm_set_config(priv->pwm, priv->channel, priv->period_ns, 0); in pwm_backlight_disable()
83 * Sometimes there is not "enable-gpios", we have to set pwm output in pwm_backlight_disable()
84 * 0% or 100% duty to play role like "enable-gpios", so we should not in pwm_backlight_disable()
85 * disable pwm, let's keep it enabled. in pwm_backlight_disable()
87 if (dm_gpio_is_valid(&priv->enable)) { in pwm_backlight_disable()
88 ret = pwm_set_enable(priv->pwm, priv->channel, false); in pwm_backlight_disable()
94 if (dm_gpio_is_valid(&priv->enable)) in pwm_backlight_disable()
95 dm_gpio_set_value(&priv->enable, 0); in pwm_backlight_disable()
97 if (priv->reg) { in pwm_backlight_disable()
98 plat = dev_get_uclass_platdata(priv->reg); in pwm_backlight_disable()
100 dev->name, priv->reg->name, plat->name); in pwm_backlight_disable()
101 ret = regulator_set_enable(priv->reg, false); in pwm_backlight_disable()
103 debug("%s: Cannot enable regulator for PWM '%s'\n", in pwm_backlight_disable()
104 __func__, dev->name); in pwm_backlight_disable()
121 "power-supply", &priv->reg); in pwm_backlight_ofdata_to_platdata()
124 ret = gpio_request_by_name(dev, "enable-gpios", 0, &priv->enable, in pwm_backlight_ofdata_to_platdata()
129 if (ret != -ENOENT) in pwm_backlight_ofdata_to_platdata()
132 ret = dev_read_phandle_with_args(dev, "pwms", "#pwm-cells", 0, 0, in pwm_backlight_ofdata_to_platdata()
135 debug("%s: Cannot get PWM phandle: ret=%d\n", __func__, ret); in pwm_backlight_ofdata_to_platdata()
139 ret = uclass_get_device_by_ofnode(UCLASS_PWM, args.node, &priv->pwm); in pwm_backlight_ofdata_to_platdata()
141 debug("%s: Cannot get PWM: ret=%d\n", __func__, ret); in pwm_backlight_ofdata_to_platdata()
144 priv->channel = args.args[0]; in pwm_backlight_ofdata_to_platdata()
145 priv->period_ns = args.args[1]; in pwm_backlight_ofdata_to_platdata()
146 priv->polarity = args.args[2]; in pwm_backlight_ofdata_to_platdata()
148 index = dev_read_u32_default(dev, "default-brightness-level", 255); in pwm_backlight_ofdata_to_platdata()
149 cell = dev_read_prop(dev, "brightness-levels", &len); in pwm_backlight_ofdata_to_platdata()
152 priv->default_level = fdt32_to_cpu(cell[index]); in pwm_backlight_ofdata_to_platdata()
153 priv->max_level = fdt32_to_cpu(cell[count - 1]); in pwm_backlight_ofdata_to_platdata()
155 if(fdt32_to_cpu(cell[0]) > priv->max_level) in pwm_backlight_ofdata_to_platdata()
156 priv->max_level = fdt32_to_cpu(cell[0]); in pwm_backlight_ofdata_to_platdata()
158 priv->default_level = index; in pwm_backlight_ofdata_to_platdata()
159 priv->max_level = 255; in pwm_backlight_ofdata_to_platdata()
178 { .compatible = "pwm-backlight" },