Re: [PATCH v2 1/3] backlight: mp3309c: Make use of device properties

2024-02-02 Thread Daniel Thompson
On Thu, Feb 01, 2024 at 05:14:13PM +0200, Andy Shevchenko wrote:
> Convert the module to be property provider agnostic and allow
> it to be used on non-OF platforms.
>
> Add mod_devicetable.h include.
>
> Tested-by: Flavio Suligoi 
> Signed-off-by: Andy Shevchenko 

Reviewed-by: Daniel Thompson 


Daniel.


[PATCH v2 1/3] backlight: mp3309c: Make use of device properties

2024-02-01 Thread Andy Shevchenko
Convert the module to be property provider agnostic and allow
it to be used on non-OF platforms.

Add mod_devicetable.h include.

Tested-by: Flavio Suligoi 
Signed-off-by: Andy Shevchenko 
---
 drivers/video/backlight/mp3309c.c | 44 +--
 1 file changed, 18 insertions(+), 26 deletions(-)

diff --git a/drivers/video/backlight/mp3309c.c 
b/drivers/video/backlight/mp3309c.c
index 34d71259fac1..762bd738c903 100644
--- a/drivers/video/backlight/mp3309c.c
+++ b/drivers/video/backlight/mp3309c.c
@@ -15,6 +15,8 @@
 #include 
 #include 
 #include 
+#include 
+#include 
 #include 
 #include 
 
@@ -199,18 +201,15 @@ static const struct backlight_ops mp3309c_bl_ops = {
.update_status = mp3309c_bl_update_status,
 };
 
-static int pm3309c_parse_dt_node(struct mp3309c_chip *chip,
-struct mp3309c_platform_data *pdata)
+static int mp3309c_parse_fwnode(struct mp3309c_chip *chip,
+   struct mp3309c_platform_data *pdata)
 {
-   struct device_node *node = chip->dev->of_node;
-   struct property *prop_pwms;
-   struct property *prop_levels = NULL;
-   int length = 0;
int ret, i;
unsigned int num_levels, tmp_value;
+   struct device *dev = chip->dev;
 
-   if (!node) {
-   dev_err(chip->dev, "failed to get DT node\n");
+   if (!dev_fwnode(dev)) {
+   dev_err(dev, "failed to get firmware node\n");
return -ENODEV;
}
 
@@ -224,8 +223,7 @@ static int pm3309c_parse_dt_node(struct mp3309c_chip *chip,
 * found in the backlight node, the mode switches to PWM mode.
 */
pdata->dimming_mode = DIMMING_ANALOG_I2C;
-   prop_pwms = of_find_property(node, "pwms", &length);
-   if (prop_pwms) {
+   if (device_property_present(dev, "pwms")) {
chip->pwmd = devm_pwm_get(chip->dev, NULL);
if (IS_ERR(chip->pwmd))
return dev_err_probe(chip->dev, PTR_ERR(chip->pwmd),
@@ -257,11 +255,9 @@ static int pm3309c_parse_dt_node(struct mp3309c_chip *chip,
/*
 * PWM control mode: check for brightness level in DT
 */
-   prop_levels = of_find_property(node, "brightness-levels",
-  &length);
-   if (prop_levels) {
+   if (device_property_present(dev, "brightness-levels")) {
/* Read brightness levels from DT */
-   num_levels = length / sizeof(u32);
+   num_levels = device_property_count_u32(dev, 
"brightness-levels");
if (num_levels < 2)
return -EINVAL;
} else {
@@ -275,10 +271,9 @@ static int pm3309c_parse_dt_node(struct mp3309c_chip *chip,
 sizeof(*pdata->levels), GFP_KERNEL);
if (!pdata->levels)
return -ENOMEM;
-   if (prop_levels) {
-   ret = of_property_read_u32_array(node, "brightness-levels",
-pdata->levels,
-num_levels);
+   if (device_property_present(dev, "brightness-levels")) {
+   ret = device_property_read_u32_array(dev, "brightness-levels",
+pdata->levels, num_levels);
if (ret < 0)
return ret;
} else {
@@ -288,8 +283,7 @@ static int pm3309c_parse_dt_node(struct mp3309c_chip *chip,
 
pdata->max_brightness = num_levels - 1;
 
-   ret = of_property_read_u32(node, "default-brightness",
-  &pdata->default_brightness);
+   ret = device_property_read_u32(dev, "default-brightness", 
&pdata->default_brightness);
if (ret)
pdata->default_brightness = pdata->max_brightness;
if (pdata->default_brightness > pdata->max_brightness) {
@@ -310,8 +304,8 @@ static int pm3309c_parse_dt_node(struct mp3309c_chip *chip,
 * If missing, the default value for OVP is 35.5V
 */
pdata->over_voltage_protection = REG_I2C_1_OVP1;
-   if (!of_property_read_u32(node, "mps,overvoltage-protection-microvolt",
- &tmp_value)) {
+   ret = device_property_read_u32(dev, 
"mps,overvoltage-protection-microvolt", &tmp_value);
+   if (!ret) {
switch (tmp_value) {
case 1350:
pdata->over_voltage_protection = 0x00;
@@ -328,9 +322,7 @@ static int pm3309c_parse_dt_node(struct mp3309c_chip *chip,
}
 
/* Synchronous (default) and non-synchronous mode */
-   pdata->sync_mode = true;
-   if (of_property_read_bool(node, "mps,no-sync-mode"))
-   pdata->sync_mode = false;
+   pdata->sync_mode = !device_property_read_bool(dev, "mps,no-sync-mode");