[PATCH v1 2/3] video: backlight: lm3533: configure core in the probe

Svyatoslav Ryhel clamor95 at gmail.com
Wed Mar 12 19:20:13 CET 2025


Configure core stuff in the probe.

Signed-off-by: Svyatoslav Ryhel <clamor95 at gmail.com>
---
 drivers/video/lm3533_backlight.c | 31 ++++++++++++++++++++++++-------
 1 file 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;
 }
 
-- 
2.43.0



More information about the U-Boot mailing list