All of lore.kernel.org
 help / color / mirror / Atom feed
* hwmon: Add ir38064 variants and expose devicetree probing
@ 2021-12-13 14:28 arthur
  2021-12-13 14:28 ` [PATCH v2 1/3] hwmon/ir38064: Add support for IR38060, IR38164 IR38263 arthur
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: arthur @ 2021-12-13 14:28 UTC (permalink / raw)
  To: linux-hwmon; +Cc: patrick.rudolph

Hi,

these patches add support for similar hardware to the Infineon IR38064
driver.
The following features are added:
  - a .of_match_table is provided to allow device tree probing
  - add	an option to expose a regulator, guarded by a Kconfig parameter

Changes	since v1:
  - use of_match_ptr() when providing .of_match_table
  - Remove unused PMBUS_HAVE_VOUT_COMMAND



^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v2 1/3] hwmon/ir38064: Add support for IR38060, IR38164 IR38263
  2021-12-13 14:28 hwmon: Add ir38064 variants and expose devicetree probing arthur
@ 2021-12-13 14:28 ` arthur
  2021-12-17 16:10   ` Guenter Roeck
  2021-12-13 14:28 ` [PATCH v2 2/3] pmbus/ir38064: Add of_match_table arthur
  2021-12-13 14:28 ` [PATCH v2 3/3] ir38064: Expose a regulator arthur
  2 siblings, 1 reply; 5+ messages in thread
From: arthur @ 2021-12-13 14:28 UTC (permalink / raw)
  To: linux-hwmon; +Cc: patrick.rudolph, Arthur Heymans

From: Patrick Rudolph <patrick.rudolph@9elements.com>

The IR38060, IR38164 and IR38263 can be supported using this driver.

Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Signed-off-by: Arthur Heymans <arthur.heymans@9elements.com>
---
 .../devicetree/bindings/trivial-devices.yaml  |  6 ++++
 Documentation/hwmon/ir38064.rst               | 28 +++++++++++++++++--
 drivers/hwmon/pmbus/Kconfig                   |  4 +--
 drivers/hwmon/pmbus/ir38064.c                 |  5 +++-
 4 files changed, 38 insertions(+), 5 deletions(-)

diff --git a/Documentation/devicetree/bindings/trivial-devices.yaml b/Documentation/devicetree/bindings/trivial-devices.yaml
index 791079021f1b..38c3264b3dcb 100644
--- a/Documentation/devicetree/bindings/trivial-devices.yaml
+++ b/Documentation/devicetree/bindings/trivial-devices.yaml
@@ -121,8 +121,14 @@ properties:
           - ibm,cffps2
             # Infineon IR36021 digital POL buck controller
           - infineon,ir36021
+          # Infineon IR38060 Voltage Regulator
+          - infineon,ir38060
             # Infineon IR38064 Voltage Regulator
           - infineon,ir38064
+          # Infineon IR38164 Voltage Regulator
+          - infineon,ir38164
+          # Infineon IR38263 Voltage Regulator
+          - infineon,ir38263
             # Infineon SLB9635 (Soft-) I2C TPM (old protocol, max 100khz)
           - infineon,slb9635tt
             # Infineon SLB9645 I2C TPM (new protocol, max 400khz)
diff --git a/Documentation/hwmon/ir38064.rst b/Documentation/hwmon/ir38064.rst
index c455d755a267..e1148f21ea2a 100644
--- a/Documentation/hwmon/ir38064.rst
+++ b/Documentation/hwmon/ir38064.rst
@@ -3,14 +3,38 @@ Kernel driver ir38064
 
 Supported chips:
 
+  * Infineon IR38060
+
+    Prefix: 'IR38060'
+    Addresses scanned: -
+
+    Datasheet: Publicly available at the Infineon website
+      https://www.infineon.com/dgdl/Infineon-IR38060M-DS-v03_16-EN.pdf?fileId=5546d4625c167129015c3291ea9a4cee
+
   * Infineon IR38064
 
     Prefix: 'ir38064'
     Addresses scanned: -
 
-    Datasheet: Publicly available at the Infineon webiste
+    Datasheet: Publicly available at the Infineon website
       https://www.infineon.com/dgdl/Infineon-IR38064MTRPBF-DS-v03_07-EN.pdf?fileId=5546d462584d1d4a0158db0d9efb67ca
 
+  * Infineon IR38164
+
+    Prefix: 'ir38164'
+    Addresses scanned: -
+
+    Datasheet: Publicly available at the Infineon website
+      https://www.infineon.com/dgdl/Infineon-IR38164M-DS-v02_02-EN.pdf?fileId=5546d462636cc8fb01640046efea1248
+
+  * Infineon ir38263
+
+    Prefix: 'ir38263'
+    Addresses scanned: -
+
+    Datasheet:  Publicly available at the Infineon website
+      https://www.infineon.com/dgdl/Infineon-IR38263M-DataSheet-v03_05-EN.pdf?fileId=5546d4625b62cd8a015bcf81f90a6e52
+
 Authors:
       - Maxim Sloyko <maxims@google.com>
       - Patrick Venture <venture@google.com>
@@ -18,7 +42,7 @@ Authors:
 Description
 -----------
 
-IR38064 is a Single-input Voltage, Synchronous Buck Regulator, DC-DC Converter.
+IR38x6x are a Single-input Voltage, Synchronous Buck Regulator, DC-DC Converter.
 
 Usage Notes
 -----------
diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
index ffb609cee3a4..d2b178a902f0 100644
--- a/drivers/hwmon/pmbus/Kconfig
+++ b/drivers/hwmon/pmbus/Kconfig
@@ -123,10 +123,10 @@ config SENSORS_IR36021
 	  be called ir36021.
 
 config SENSORS_IR38064
-	tristate "Infineon IR38064"
+	tristate "Infineon IR38064 and compatibles"
 	help
 	  If you say yes here you get hardware monitoring support for Infineon
-	  IR38064.
+	  IR38060, IR38064, IR38164 and IR38263.
 
 	  This driver can also be built as a module. If so, the module will
 	  be called ir38064.
diff --git a/drivers/hwmon/pmbus/ir38064.c b/drivers/hwmon/pmbus/ir38064.c
index 1fb7f1248639..4e91d3e54a4a 100644
--- a/drivers/hwmon/pmbus/ir38064.c
+++ b/drivers/hwmon/pmbus/ir38064.c
@@ -41,7 +41,10 @@ static int ir38064_probe(struct i2c_client *client)
 }
 
 static const struct i2c_device_id ir38064_id[] = {
+	{"ir38060", 0},
 	{"ir38064", 0},
+	{"ir38164", 0},
+	{"ir38263", 0},
 	{}
 };
 
@@ -59,6 +62,6 @@ static struct i2c_driver ir38064_driver = {
 module_i2c_driver(ir38064_driver);
 
 MODULE_AUTHOR("Maxim Sloyko <maxims@google.com>");
-MODULE_DESCRIPTION("PMBus driver for Infineon IR38064");
+MODULE_DESCRIPTION("PMBus driver for Infineon IR38064 and comaptible chips");
 MODULE_LICENSE("GPL");
 MODULE_IMPORT_NS(PMBUS);
-- 
2.33.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v2 2/3] pmbus/ir38064: Add of_match_table
  2021-12-13 14:28 hwmon: Add ir38064 variants and expose devicetree probing arthur
  2021-12-13 14:28 ` [PATCH v2 1/3] hwmon/ir38064: Add support for IR38060, IR38164 IR38263 arthur
@ 2021-12-13 14:28 ` arthur
  2021-12-13 14:28 ` [PATCH v2 3/3] ir38064: Expose a regulator arthur
  2 siblings, 0 replies; 5+ messages in thread
From: arthur @ 2021-12-13 14:28 UTC (permalink / raw)
  To: linux-hwmon; +Cc: patrick.rudolph, Arthur Heymans

From: Arthur Heymans <arthur.heymans@9elements.com>

Add the missing of_match_table to allow device tree probing.

Signed-off-by: Arthur Heymans <arthur.heymans@9elements.com>
---
 drivers/hwmon/pmbus/ir38064.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/hwmon/pmbus/ir38064.c b/drivers/hwmon/pmbus/ir38064.c
index 4e91d3e54a4a..4211de048069 100644
--- a/drivers/hwmon/pmbus/ir38064.c
+++ b/drivers/hwmon/pmbus/ir38064.c
@@ -16,6 +16,7 @@
 #include <linux/init.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
+#include <linux/of_device.h>
 #include "pmbus.h"
 
 static struct pmbus_driver_info ir38064_info = {
@@ -50,10 +51,21 @@ static const struct i2c_device_id ir38064_id[] = {
 
 MODULE_DEVICE_TABLE(i2c, ir38064_id);
 
+static const struct of_device_id ir38064_of_match[] = {
+	{ .compatible = "infineon,ir38060" },
+	{ .compatible = "infineon,ir38064" },
+	{ .compatible = "infineon,ir38164" },
+	{ .compatible = "infineon,ir38263" },
+	{}
+};
+
+MODULE_DEVICE_TABLE(of, ir38064_of_match);
+
 /* This is the driver that will be inserted */
 static struct i2c_driver ir38064_driver = {
 	.driver = {
 		   .name = "ir38064",
+		   .of_match_table = of_match_ptr(ir38064_of_match),
 		   },
 	.probe_new = ir38064_probe,
 	.id_table = ir38064_id,
-- 
2.33.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v2 3/3] ir38064: Expose a regulator
  2021-12-13 14:28 hwmon: Add ir38064 variants and expose devicetree probing arthur
  2021-12-13 14:28 ` [PATCH v2 1/3] hwmon/ir38064: Add support for IR38060, IR38164 IR38263 arthur
  2021-12-13 14:28 ` [PATCH v2 2/3] pmbus/ir38064: Add of_match_table arthur
@ 2021-12-13 14:28 ` arthur
  2 siblings, 0 replies; 5+ messages in thread
From: arthur @ 2021-12-13 14:28 UTC (permalink / raw)
  To: linux-hwmon; +Cc: patrick.rudolph

From: Patrick Rudolph <patrick.rudolph@9elements.com>

Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
---
 drivers/hwmon/pmbus/Kconfig   |  6 ++++++
 drivers/hwmon/pmbus/ir38064.c | 11 +++++++++++
 2 files changed, 17 insertions(+)

diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
index d2b178a902f0..fdfe1cd54799 100644
--- a/drivers/hwmon/pmbus/Kconfig
+++ b/drivers/hwmon/pmbus/Kconfig
@@ -131,6 +131,12 @@ config SENSORS_IR38064
 	  This driver can also be built as a module. If so, the module will
 	  be called ir38064.
 
+config SENSORS_IR38064_REGULATOR
+	bool "Regulator support for IR38064 and compatibles"
+	depends on SENSORS_IR38064 && REGULATOR
+	help
+	  Uses the IR38064 or compatible as regulator.
+
 config SENSORS_IRPS5401
 	tristate "Infineon IRPS5401"
 	help
diff --git a/drivers/hwmon/pmbus/ir38064.c b/drivers/hwmon/pmbus/ir38064.c
index 4211de048069..07bdbb16f216 100644
--- a/drivers/hwmon/pmbus/ir38064.c
+++ b/drivers/hwmon/pmbus/ir38064.c
@@ -17,8 +17,15 @@
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/of_device.h>
+#include <linux/regulator/driver.h>
 #include "pmbus.h"
 
+#if IS_ENABLED(CONFIG_SENSORS_IR38064_REGULATOR)
+static const struct regulator_desc ir38064_reg_desc[] = {
+	PMBUS_REGULATOR("vout", 0),
+};
+#endif /* CONFIG_SENSORS_IR38064_REGULATOR */
+
 static struct pmbus_driver_info ir38064_info = {
 	.pages = 1,
 	.format[PSC_VOLTAGE_IN] = linear,
@@ -34,6 +41,10 @@ static struct pmbus_driver_info ir38064_info = {
 	    | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT
 	    | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT
 	    | PMBUS_HAVE_POUT,
+#if IS_ENABLED(CONFIG_SENSORS_IR38064_REGULATOR)
+	.num_regulators = 1,
+	.reg_desc = ir38064_reg_desc,
+#endif
 };
 
 static int ir38064_probe(struct i2c_client *client)
-- 
2.33.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 1/3] hwmon/ir38064: Add support for IR38060, IR38164 IR38263
  2021-12-13 14:28 ` [PATCH v2 1/3] hwmon/ir38064: Add support for IR38060, IR38164 IR38263 arthur
@ 2021-12-17 16:10   ` Guenter Roeck
  0 siblings, 0 replies; 5+ messages in thread
From: Guenter Roeck @ 2021-12-17 16:10 UTC (permalink / raw)
  To: arthur; +Cc: linux-hwmon, patrick.rudolph, Arthur Heymans

On Mon, Dec 13, 2021 at 03:28:12PM +0100, arthur@aheymans.xyz wrote:
> From: Patrick Rudolph <patrick.rudolph@9elements.com>
> 
> The IR38060, IR38164 and IR38263 can be supported using this driver.
> 
> Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
> Signed-off-by: Arthur Heymans <arthur.heymans@9elements.com>

Series applied.

Thanks,
Guenter

> ---
>  .../devicetree/bindings/trivial-devices.yaml  |  6 ++++
>  Documentation/hwmon/ir38064.rst               | 28 +++++++++++++++++--
>  drivers/hwmon/pmbus/Kconfig                   |  4 +--
>  drivers/hwmon/pmbus/ir38064.c                 |  5 +++-
>  4 files changed, 38 insertions(+), 5 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/trivial-devices.yaml b/Documentation/devicetree/bindings/trivial-devices.yaml
> index 791079021f1b..38c3264b3dcb 100644
> --- a/Documentation/devicetree/bindings/trivial-devices.yaml
> +++ b/Documentation/devicetree/bindings/trivial-devices.yaml
> @@ -121,8 +121,14 @@ properties:
>            - ibm,cffps2
>              # Infineon IR36021 digital POL buck controller
>            - infineon,ir36021
> +          # Infineon IR38060 Voltage Regulator
> +          - infineon,ir38060
>              # Infineon IR38064 Voltage Regulator
>            - infineon,ir38064
> +          # Infineon IR38164 Voltage Regulator
> +          - infineon,ir38164
> +          # Infineon IR38263 Voltage Regulator
> +          - infineon,ir38263
>              # Infineon SLB9635 (Soft-) I2C TPM (old protocol, max 100khz)
>            - infineon,slb9635tt
>              # Infineon SLB9645 I2C TPM (new protocol, max 400khz)
> diff --git a/Documentation/hwmon/ir38064.rst b/Documentation/hwmon/ir38064.rst
> index c455d755a267..e1148f21ea2a 100644
> --- a/Documentation/hwmon/ir38064.rst
> +++ b/Documentation/hwmon/ir38064.rst
> @@ -3,14 +3,38 @@ Kernel driver ir38064
>  
>  Supported chips:
>  
> +  * Infineon IR38060
> +
> +    Prefix: 'IR38060'
> +    Addresses scanned: -
> +
> +    Datasheet: Publicly available at the Infineon website
> +      https://www.infineon.com/dgdl/Infineon-IR38060M-DS-v03_16-EN.pdf?fileId=5546d4625c167129015c3291ea9a4cee
> +
>    * Infineon IR38064
>  
>      Prefix: 'ir38064'
>      Addresses scanned: -
>  
> -    Datasheet: Publicly available at the Infineon webiste
> +    Datasheet: Publicly available at the Infineon website
>        https://www.infineon.com/dgdl/Infineon-IR38064MTRPBF-DS-v03_07-EN.pdf?fileId=5546d462584d1d4a0158db0d9efb67ca
>  
> +  * Infineon IR38164
> +
> +    Prefix: 'ir38164'
> +    Addresses scanned: -
> +
> +    Datasheet: Publicly available at the Infineon website
> +      https://www.infineon.com/dgdl/Infineon-IR38164M-DS-v02_02-EN.pdf?fileId=5546d462636cc8fb01640046efea1248
> +
> +  * Infineon ir38263
> +
> +    Prefix: 'ir38263'
> +    Addresses scanned: -
> +
> +    Datasheet:  Publicly available at the Infineon website
> +      https://www.infineon.com/dgdl/Infineon-IR38263M-DataSheet-v03_05-EN.pdf?fileId=5546d4625b62cd8a015bcf81f90a6e52
> +
>  Authors:
>        - Maxim Sloyko <maxims@google.com>
>        - Patrick Venture <venture@google.com>
> @@ -18,7 +42,7 @@ Authors:
>  Description
>  -----------
>  
> -IR38064 is a Single-input Voltage, Synchronous Buck Regulator, DC-DC Converter.
> +IR38x6x are a Single-input Voltage, Synchronous Buck Regulator, DC-DC Converter.
>  
>  Usage Notes
>  -----------
> diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
> index ffb609cee3a4..d2b178a902f0 100644
> --- a/drivers/hwmon/pmbus/Kconfig
> +++ b/drivers/hwmon/pmbus/Kconfig
> @@ -123,10 +123,10 @@ config SENSORS_IR36021
>  	  be called ir36021.
>  
>  config SENSORS_IR38064
> -	tristate "Infineon IR38064"
> +	tristate "Infineon IR38064 and compatibles"
>  	help
>  	  If you say yes here you get hardware monitoring support for Infineon
> -	  IR38064.
> +	  IR38060, IR38064, IR38164 and IR38263.
>  
>  	  This driver can also be built as a module. If so, the module will
>  	  be called ir38064.
> diff --git a/drivers/hwmon/pmbus/ir38064.c b/drivers/hwmon/pmbus/ir38064.c
> index 1fb7f1248639..4e91d3e54a4a 100644
> --- a/drivers/hwmon/pmbus/ir38064.c
> +++ b/drivers/hwmon/pmbus/ir38064.c
> @@ -41,7 +41,10 @@ static int ir38064_probe(struct i2c_client *client)
>  }
>  
>  static const struct i2c_device_id ir38064_id[] = {
> +	{"ir38060", 0},
>  	{"ir38064", 0},
> +	{"ir38164", 0},
> +	{"ir38263", 0},
>  	{}
>  };
>  
> @@ -59,6 +62,6 @@ static struct i2c_driver ir38064_driver = {
>  module_i2c_driver(ir38064_driver);
>  
>  MODULE_AUTHOR("Maxim Sloyko <maxims@google.com>");
> -MODULE_DESCRIPTION("PMBus driver for Infineon IR38064");
> +MODULE_DESCRIPTION("PMBus driver for Infineon IR38064 and comaptible chips");
>  MODULE_LICENSE("GPL");
>  MODULE_IMPORT_NS(PMBUS);

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-12-17 16:11 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-13 14:28 hwmon: Add ir38064 variants and expose devicetree probing arthur
2021-12-13 14:28 ` [PATCH v2 1/3] hwmon/ir38064: Add support for IR38060, IR38164 IR38263 arthur
2021-12-17 16:10   ` Guenter Roeck
2021-12-13 14:28 ` [PATCH v2 2/3] pmbus/ir38064: Add of_match_table arthur
2021-12-13 14:28 ` [PATCH v2 3/3] ir38064: Expose a regulator arthur

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.