diff options
author | Svyatoslav Ryhel <clamor95@gmail.com> | 2025-02-21 17:22:47 +0200 |
---|---|---|
committer | Svyatoslav Ryhel <clamor95@gmail.com> | 2025-03-19 10:59:23 +0200 |
commit | 1d4e23d3d4fe90071b29a381f0ea04214d45b181 (patch) | |
tree | 3c169ebf91cd7fc5495e1329e4391d70f8ba6cc6 | |
parent | c3eb558288d1b3c4b9ebde3d08310622b63f7afe (diff) |
video: backlight: lm3533: configure core in the probe
Configure core stuff in the probe.
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
-rw-r--r-- | drivers/video/lm3533_backlight.c | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/drivers/video/lm3533_backlight.c b/drivers/video/lm3533_backlight.c index a1a7397cbdc..f97f17fec4e 100644 --- a/drivers/video/lm3533_backlight.c +++ b/drivers/video/lm3533_backlight.c @@ -23,6 +23,10 @@ #define LM3533_CONTROL_BANK_A_FULLSCALE_CURRENT 0x1F #define LM3533_CONTROL_BANK_ENABLE 0x27 #define LM3533_OVP_FREQUENCY_PWM_POLARITY 0x2C +#define BOOST_OVP_MASK GENMASK(2, 1) +#define BOOST_OVP_SHIFT 1 +#define BOOST_FREQ_MASK BIT(0) +#define BOOST_FREQ_SHIFT 0 #define LM3533_BRIGHTNESS_REGISTER_A 0x40 #define LM3533_BOOST_OVP_16V 16000000UL @@ -49,9 +53,6 @@ static int lm3533_backlight_enable(struct udevice *dev) struct lm3533_backlight_priv *priv = dev_get_priv(dev); int ret; - dm_gpio_set_value(&priv->enable_gpio, 1); - mdelay(5); - /* HVLED 1 & 2 are controlled by Bank A */ ret = dm_i2c_reg_write(dev, LM3533_SINK_OUTPUT_CONFIG_1, 0x00); if (ret) @@ -77,10 +78,6 @@ static int lm3533_backlight_enable(struct udevice *dev) if (ret) return ret; - ret = dm_i2c_reg_write(dev, LM3533_OVP_FREQUENCY_PWM_POLARITY, 0x0A); - if (ret) - return ret; - return 0; } @@ -159,9 +156,29 @@ static int lm3533_backlight_of_to_plat(struct udevice *dev) static int lm3533_backlight_probe(struct udevice *dev) { + struct lm3533_backlight_priv *priv = dev_get_priv(dev); + int ret; + if (device_get_uclass_id(dev->parent) != UCLASS_I2C) return -EPROTONOSUPPORT; + dm_gpio_set_value(&priv->enable_gpio, 1); + mdelay(5); + + ret = dm_i2c_reg_clrset(dev, LM3533_OVP_FREQUENCY_PWM_POLARITY, + BOOST_FREQ_MASK, priv->boost_freq << BOOST_FREQ_SHIFT); + if (ret) { + log_debug("%s: freq config failed %d\n", __func__, ret); + return ret; + } + + ret = dm_i2c_reg_clrset(dev, LM3533_OVP_FREQUENCY_PWM_POLARITY, + BOOST_OVP_MASK, priv->boost_ovp << BOOST_OVP_SHIFT); + if (ret) { + log_debug("%s: ovp config failed %d\n", __func__, ret); + return ret; + } + return 0; } |