diff mbox series

[v7,21/21] auxdisplay: ht16k33: Make use of device properties

Message ID 20211012183327.649865-22-geert@linux-m68k.org (mailing list archive)
State Superseded
Headers show
Series auxdisplay: ht16k33: Add character display support | expand

Commit Message

Geert Uytterhoeven Oct. 12, 2021, 6:33 p.m. UTC
The device property API allows drivers to gather device resources from
different sources, such as ACPI, and lift the dependency on Device Tree.
Convert the driver to unleash the power of the device property API.

Suggested-by: Marek BehĂșn <kabel@kernel.org>
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
---
v7:
  - Integrate into this series,
  - Add Reviewed-by,
  - Use device_property_read_bool() as replacement for
    of_get_property(),
  - Call matrix_keypad_parse_properties() instead of
    matrix_keypad_parse_of_params().
---
 drivers/auxdisplay/Kconfig   |  2 +-
 drivers/auxdisplay/ht16k33.c | 27 ++++++++++++---------------
 2 files changed, 13 insertions(+), 16 deletions(-)

Comments

Robin van der Gracht Oct. 13, 2021, 7:28 a.m. UTC | #1
Acked-by: Robin van der Gracht <robin@protonic.nl>

On 2021-10-12 20:33, Geert Uytterhoeven wrote:
> The device property API allows drivers to gather device resources from
> different sources, such as ACPI, and lift the dependency on Device Tree.
> Convert the driver to unleash the power of the device property API.
> 
> Suggested-by: Marek BehĂșn <kabel@kernel.org>
> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
> ---
> v7:
>   - Integrate into this series,
>   - Add Reviewed-by,
>   - Use device_property_read_bool() as replacement for
>     of_get_property(),
>   - Call matrix_keypad_parse_properties() instead of
>     matrix_keypad_parse_of_params().
> ---
>  drivers/auxdisplay/Kconfig   |  2 +-
>  drivers/auxdisplay/ht16k33.c | 27 ++++++++++++---------------
>  2 files changed, 13 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/auxdisplay/Kconfig b/drivers/auxdisplay/Kconfig
> index e32ef7f9945d49b2..64012cda4d126707 100644
> --- a/drivers/auxdisplay/Kconfig
> +++ b/drivers/auxdisplay/Kconfig
> @@ -169,7 +169,7 @@ config IMG_ASCII_LCD
> 
>  config HT16K33
>  	tristate "Holtek Ht16K33 LED controller with keyscan"
> -	depends on FB && OF && I2C && INPUT
> +	depends on FB && I2C && INPUT
>  	select FB_SYS_FOPS
>  	select FB_SYS_FILLRECT
>  	select FB_SYS_COPYAREA
> diff --git a/drivers/auxdisplay/ht16k33.c b/drivers/auxdisplay/ht16k33.c
> index aef3dc87dc9f5ed2..1134ae9f30de4baa 100644
> --- a/drivers/auxdisplay/ht16k33.c
> +++ b/drivers/auxdisplay/ht16k33.c
> @@ -12,7 +12,7 @@
>  #include <linux/module.h>
>  #include <linux/interrupt.h>
>  #include <linux/i2c.h>
> -#include <linux/of.h>
> +#include <linux/property.h>
>  #include <linux/fb.h>
>  #include <linux/slab.h>
>  #include <linux/backlight.h>
> @@ -491,15 +491,13 @@ static int ht16k33_led_probe(struct device *dev, 
> struct
> led_classdev *led,
>  			     unsigned int brightness)
>  {
>  	struct led_init_data init_data = {};
> -	struct device_node *node;
>  	int err;
> 
>  	/* The LED is optional */
> -	node = of_get_child_by_name(dev->of_node, "led");
> -	if (!node)
> +	init_data.fwnode = device_get_named_child_node(dev, "led");
> +	if (!init_data.fwnode)
>  		return 0;
> 
> -	init_data.fwnode = of_fwnode_handle(node);
>  	init_data.devicename = "auxdisplay";
>  	init_data.devname_mandatory = true;
> 
> @@ -520,7 +518,6 @@ static int ht16k33_keypad_probe(struct i2c_client 
> *client,
>  				struct ht16k33_keypad *keypad)
>  {
>  	struct device *dev = &client->dev;
> -	struct device_node *node = dev->of_node;
>  	u32 rows = HT16K33_MATRIX_KEYPAD_MAX_ROWS;
>  	u32 cols = HT16K33_MATRIX_KEYPAD_MAX_COLS;
>  	int err;
> @@ -539,17 +536,17 @@ static int ht16k33_keypad_probe(struct i2c_client 
> *client,
>  	keypad->dev->open = ht16k33_keypad_start;
>  	keypad->dev->close = ht16k33_keypad_stop;
> 
> -	if (!of_get_property(node, "linux,no-autorepeat", NULL))
> +	if (!device_property_read_bool(dev, "linux,no-autorepeat"))
>  		__set_bit(EV_REP, keypad->dev->evbit);
> 
> -	err = of_property_read_u32(node, "debounce-delay-ms",
> -				   &keypad->debounce_ms);
> +	err = device_property_read_u32(dev, "debounce-delay-ms",
> +				       &keypad->debounce_ms);
>  	if (err) {
>  		dev_err(dev, "key debounce delay not specified\n");
>  		return err;
>  	}
> 
> -	err = matrix_keypad_parse_of_params(dev, &rows, &cols);
> +	err = matrix_keypad_parse_properties(dev, &rows, &cols);
>  	if (err)
>  		return err;
>  	if (rows > HT16K33_MATRIX_KEYPAD_MAX_ROWS ||
> @@ -634,8 +631,8 @@ static int ht16k33_fbdev_probe(struct device *dev, 
> struct
> ht16k33_priv *priv,
>  		goto err_fbdev_buffer;
>  	}
> 
> -	err = of_property_read_u32(dev->of_node, "refresh-rate-hz",
> -				   &fbdev->refresh_rate);
> +	err = device_property_read_u32(dev, "refresh-rate-hz",
> +				       &fbdev->refresh_rate);
>  	if (err) {
>  		dev_err(dev, "refresh rate not specified\n");
>  		goto err_fbdev_info;
> @@ -741,8 +738,8 @@ static int ht16k33_probe(struct i2c_client *client)
>  	if (err)
>  		return err;
> 
> -	err = of_property_read_u32(dev->of_node, "default-brightness-level",
> -				   &dft_brightness);
> +	err = device_property_read_u32(dev, "default-brightness-level",
> +				       &dft_brightness);
>  	if (err) {
>  		dft_brightness = MAX_BRIGHTNESS;
>  	} else if (dft_brightness > MAX_BRIGHTNESS) {
> @@ -830,7 +827,7 @@ static struct i2c_driver ht16k33_driver = {
>  	.remove		= ht16k33_remove,
>  	.driver		= {
>  		.name		= DRIVER_NAME,
> -		.of_match_table	= of_match_ptr(ht16k33_of_match),
> +		.of_match_table	= ht16k33_of_match,
>  	},
>  	.id_table = ht16k33_i2c_match,
>  };

Met vriendelijke groet,
Robin van der Gracht
diff mbox series

Patch

diff --git a/drivers/auxdisplay/Kconfig b/drivers/auxdisplay/Kconfig
index e32ef7f9945d49b2..64012cda4d126707 100644
--- a/drivers/auxdisplay/Kconfig
+++ b/drivers/auxdisplay/Kconfig
@@ -169,7 +169,7 @@  config IMG_ASCII_LCD
 
 config HT16K33
 	tristate "Holtek Ht16K33 LED controller with keyscan"
-	depends on FB && OF && I2C && INPUT
+	depends on FB && I2C && INPUT
 	select FB_SYS_FOPS
 	select FB_SYS_FILLRECT
 	select FB_SYS_COPYAREA
diff --git a/drivers/auxdisplay/ht16k33.c b/drivers/auxdisplay/ht16k33.c
index aef3dc87dc9f5ed2..1134ae9f30de4baa 100644
--- a/drivers/auxdisplay/ht16k33.c
+++ b/drivers/auxdisplay/ht16k33.c
@@ -12,7 +12,7 @@ 
 #include <linux/module.h>
 #include <linux/interrupt.h>
 #include <linux/i2c.h>
-#include <linux/of.h>
+#include <linux/property.h>
 #include <linux/fb.h>
 #include <linux/slab.h>
 #include <linux/backlight.h>
@@ -491,15 +491,13 @@  static int ht16k33_led_probe(struct device *dev, struct led_classdev *led,
 			     unsigned int brightness)
 {
 	struct led_init_data init_data = {};
-	struct device_node *node;
 	int err;
 
 	/* The LED is optional */
-	node = of_get_child_by_name(dev->of_node, "led");
-	if (!node)
+	init_data.fwnode = device_get_named_child_node(dev, "led");
+	if (!init_data.fwnode)
 		return 0;
 
-	init_data.fwnode = of_fwnode_handle(node);
 	init_data.devicename = "auxdisplay";
 	init_data.devname_mandatory = true;
 
@@ -520,7 +518,6 @@  static int ht16k33_keypad_probe(struct i2c_client *client,
 				struct ht16k33_keypad *keypad)
 {
 	struct device *dev = &client->dev;
-	struct device_node *node = dev->of_node;
 	u32 rows = HT16K33_MATRIX_KEYPAD_MAX_ROWS;
 	u32 cols = HT16K33_MATRIX_KEYPAD_MAX_COLS;
 	int err;
@@ -539,17 +536,17 @@  static int ht16k33_keypad_probe(struct i2c_client *client,
 	keypad->dev->open = ht16k33_keypad_start;
 	keypad->dev->close = ht16k33_keypad_stop;
 
-	if (!of_get_property(node, "linux,no-autorepeat", NULL))
+	if (!device_property_read_bool(dev, "linux,no-autorepeat"))
 		__set_bit(EV_REP, keypad->dev->evbit);
 
-	err = of_property_read_u32(node, "debounce-delay-ms",
-				   &keypad->debounce_ms);
+	err = device_property_read_u32(dev, "debounce-delay-ms",
+				       &keypad->debounce_ms);
 	if (err) {
 		dev_err(dev, "key debounce delay not specified\n");
 		return err;
 	}
 
-	err = matrix_keypad_parse_of_params(dev, &rows, &cols);
+	err = matrix_keypad_parse_properties(dev, &rows, &cols);
 	if (err)
 		return err;
 	if (rows > HT16K33_MATRIX_KEYPAD_MAX_ROWS ||
@@ -634,8 +631,8 @@  static int ht16k33_fbdev_probe(struct device *dev, struct ht16k33_priv *priv,
 		goto err_fbdev_buffer;
 	}
 
-	err = of_property_read_u32(dev->of_node, "refresh-rate-hz",
-				   &fbdev->refresh_rate);
+	err = device_property_read_u32(dev, "refresh-rate-hz",
+				       &fbdev->refresh_rate);
 	if (err) {
 		dev_err(dev, "refresh rate not specified\n");
 		goto err_fbdev_info;
@@ -741,8 +738,8 @@  static int ht16k33_probe(struct i2c_client *client)
 	if (err)
 		return err;
 
-	err = of_property_read_u32(dev->of_node, "default-brightness-level",
-				   &dft_brightness);
+	err = device_property_read_u32(dev, "default-brightness-level",
+				       &dft_brightness);
 	if (err) {
 		dft_brightness = MAX_BRIGHTNESS;
 	} else if (dft_brightness > MAX_BRIGHTNESS) {
@@ -830,7 +827,7 @@  static struct i2c_driver ht16k33_driver = {
 	.remove		= ht16k33_remove,
 	.driver		= {
 		.name		= DRIVER_NAME,
-		.of_match_table	= of_match_ptr(ht16k33_of_match),
+		.of_match_table	= ht16k33_of_match,
 	},
 	.id_table = ht16k33_i2c_match,
 };