[v4,09/11] leds: aw200xx: add support for aw20108 device

Message ID 20231121202835.28152-10-ddrokosov@salutedevices.com
State New
Headers
Series leds: aw200xx: several driver updates |

Commit Message

Dmitry Rokosov Nov. 21, 2023, 8:28 p.m. UTC
  From: George Stark <gnstark@salutedevices.com>

Add support for Awinic aw20108 device from the same LED drivers family.
New device supports 108 LEDs using a matrix of 12x9 outputs.

Signed-off-by: George Stark <gnstark@salutedevices.com>
Signed-off-by: Dmitry Rokosov <ddrokosov@salutedevices.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
---
 drivers/leds/Kconfig        | 14 +++++++++-----
 drivers/leds/leds-aw200xx.c | 10 +++++++++-
 2 files changed, 18 insertions(+), 6 deletions(-)
  

Comments

Lee Jones Nov. 23, 2023, 4:44 p.m. UTC | #1
On Tue, 21 Nov 2023, Dmitry Rokosov wrote:

> From: George Stark <gnstark@salutedevices.com>
> 
> Add support for Awinic aw20108 device from the same LED drivers family.
> New device supports 108 LEDs using a matrix of 12x9 outputs.
> 
> Signed-off-by: George Stark <gnstark@salutedevices.com>
> Signed-off-by: Dmitry Rokosov <ddrokosov@salutedevices.com>
> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
> ---
>  drivers/leds/Kconfig        | 14 +++++++++-----
>  drivers/leds/leds-aw200xx.c | 10 +++++++++-
>  2 files changed, 18 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
> index 6046dfeca16f..a879628e985c 100644
> --- a/drivers/leds/Kconfig
> +++ b/drivers/leds/Kconfig
> @@ -95,14 +95,18 @@ config LEDS_ARIEL
>  	  Say Y to if your machine is a Dell Wyse 3020 thin client.
>  
>  config LEDS_AW200XX
> -	tristate "LED support for Awinic AW20036/AW20054/AW20072"
> +	tristate "LED support for Awinic AW20036/AW20054/AW20072/AW20108"
>  	depends on LEDS_CLASS
>  	depends on I2C
>  	help
> -	  This option enables support for the AW20036/AW20054/AW20072 LED driver.
> -	  It is a 3x12/6x9/6x12 matrix LED driver programmed via
> -	  an I2C interface, up to 36/54/72 LEDs or 12/18/24 RGBs,
> -	  3 pattern controllers for auto breathing or group dimming control.
> +	  This option enables support for Awinic AW200XX LED controller.

"for ..." THE or AN.

Or put an 's' at the end of "controller".

> +	  It is a matrix LED driver programmed via an I2C interface. Devices have
> +	  a set of individually controlled leds and support 3 pattern controllers

LEDs

> +	  for auto breathing or group dimming control. Supported devices:
> +	    - AW20036 (3x12) 36 LEDs
> +	    - AW20054 (6x9)  54 LEDs
> +	    - AW20072 (6x12) 72 LEDs
> +	    - AW20108 (9x12) 108 LEDs
>  
>  	  To compile this driver as a module, choose M here: the module
>  	  will be called leds-aw200xx.
> diff --git a/drivers/leds/leds-aw200xx.c b/drivers/leds/leds-aw200xx.c
> index c48aa11fd411..4b5036360887 100644
> --- a/drivers/leds/leds-aw200xx.c
> +++ b/drivers/leds/leds-aw200xx.c
> @@ -1,6 +1,6 @@
>  // SPDX-License-Identifier: GPL-2.0
>  /*
> - * Awinic AW20036/AW20054/AW20072 LED driver
> + * Awinic AW20036/AW20054/AW20072/AW20108 LED driver
>   *
>   * Copyright (c) 2023, SberDevices. All Rights Reserved.
>   *
> @@ -620,10 +620,17 @@ static const struct aw200xx_chipdef aw20072_cdef = {
>  	.display_size_columns = 12,
>  };
>  
> +static const struct aw200xx_chipdef aw20108_cdef = {
> +	.channels = 108,
> +	.display_size_rows_max = 9,
> +	.display_size_columns = 12,
> +};
> +
>  static const struct i2c_device_id aw200xx_id[] = {
>  	{ "aw20036" },
>  	{ "aw20054" },
>  	{ "aw20072" },
> +	{ "aw20108" },
>  	{}
>  };
>  MODULE_DEVICE_TABLE(i2c, aw200xx_id);
> @@ -632,6 +639,7 @@ static const struct of_device_id aw200xx_match_table[] = {
>  	{ .compatible = "awinic,aw20036", .data = &aw20036_cdef, },
>  	{ .compatible = "awinic,aw20054", .data = &aw20054_cdef, },
>  	{ .compatible = "awinic,aw20072", .data = &aw20072_cdef, },
> +	{ .compatible = "awinic,aw20108", .data = &aw20108_cdef, },
>  	{}
>  };
>  MODULE_DEVICE_TABLE(of, aw200xx_match_table);
> -- 
> 2.36.0
>
  

Patch

diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
index 6046dfeca16f..a879628e985c 100644
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
@@ -95,14 +95,18 @@  config LEDS_ARIEL
 	  Say Y to if your machine is a Dell Wyse 3020 thin client.
 
 config LEDS_AW200XX
-	tristate "LED support for Awinic AW20036/AW20054/AW20072"
+	tristate "LED support for Awinic AW20036/AW20054/AW20072/AW20108"
 	depends on LEDS_CLASS
 	depends on I2C
 	help
-	  This option enables support for the AW20036/AW20054/AW20072 LED driver.
-	  It is a 3x12/6x9/6x12 matrix LED driver programmed via
-	  an I2C interface, up to 36/54/72 LEDs or 12/18/24 RGBs,
-	  3 pattern controllers for auto breathing or group dimming control.
+	  This option enables support for Awinic AW200XX LED controller.
+	  It is a matrix LED driver programmed via an I2C interface. Devices have
+	  a set of individually controlled leds and support 3 pattern controllers
+	  for auto breathing or group dimming control. Supported devices:
+	    - AW20036 (3x12) 36 LEDs
+	    - AW20054 (6x9)  54 LEDs
+	    - AW20072 (6x12) 72 LEDs
+	    - AW20108 (9x12) 108 LEDs
 
 	  To compile this driver as a module, choose M here: the module
 	  will be called leds-aw200xx.
diff --git a/drivers/leds/leds-aw200xx.c b/drivers/leds/leds-aw200xx.c
index c48aa11fd411..4b5036360887 100644
--- a/drivers/leds/leds-aw200xx.c
+++ b/drivers/leds/leds-aw200xx.c
@@ -1,6 +1,6 @@ 
 // SPDX-License-Identifier: GPL-2.0
 /*
- * Awinic AW20036/AW20054/AW20072 LED driver
+ * Awinic AW20036/AW20054/AW20072/AW20108 LED driver
  *
  * Copyright (c) 2023, SberDevices. All Rights Reserved.
  *
@@ -620,10 +620,17 @@  static const struct aw200xx_chipdef aw20072_cdef = {
 	.display_size_columns = 12,
 };
 
+static const struct aw200xx_chipdef aw20108_cdef = {
+	.channels = 108,
+	.display_size_rows_max = 9,
+	.display_size_columns = 12,
+};
+
 static const struct i2c_device_id aw200xx_id[] = {
 	{ "aw20036" },
 	{ "aw20054" },
 	{ "aw20072" },
+	{ "aw20108" },
 	{}
 };
 MODULE_DEVICE_TABLE(i2c, aw200xx_id);
@@ -632,6 +639,7 @@  static const struct of_device_id aw200xx_match_table[] = {
 	{ .compatible = "awinic,aw20036", .data = &aw20036_cdef, },
 	{ .compatible = "awinic,aw20054", .data = &aw20054_cdef, },
 	{ .compatible = "awinic,aw20072", .data = &aw20072_cdef, },
+	{ .compatible = "awinic,aw20108", .data = &aw20108_cdef, },
 	{}
 };
 MODULE_DEVICE_TABLE(of, aw200xx_match_table);