* [PATCH v5 1/3] dt-bindings: hwmon: Add Infineon TDA38640
@ 2023-08-31 19:07 Naresh Solanki
2023-08-31 19:07 ` [PATCH v5 2/3] hwmon: (pmbus) Add ON_OFF_CONFIG register bits Naresh Solanki
` (4 more replies)
0 siblings, 5 replies; 8+ messages in thread
From: Naresh Solanki @ 2023-08-31 19:07 UTC (permalink / raw)
To: Guenter Roeck, Jean Delvare, krzysztof.kozlowski+dt, Rob Herring,
Conor Dooley, Naresh Solanki
Cc: linux-hwmon, Patrick Rudolph, Naresh Solanki, Rob Herring,
devicetree, linux-kernel
From: Patrick Rudolph <patrick.rudolph@9elements.com>
Add the DT property 'infineon,en-pin-fixed-level' to
indicated that the chip EN pin is at fixed level
or left unconnected(has internal pull-down).
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Signed-off-by: Naresh Solanki <Naresh.Solanki@9elements.com>
----
Changes in V5:
- Update pin name to align with datasheet
Changes in V4:
- Update property name & description.
- Update commit message.
---
.../hwmon/pmbus/infineon,tda38640.yaml | 50 +++++++++++++++++++
.../devicetree/bindings/trivial-devices.yaml | 2 -
2 files changed, 50 insertions(+), 2 deletions(-)
create mode 100644 Documentation/devicetree/bindings/hwmon/pmbus/infineon,tda38640.yaml
diff --git a/Documentation/devicetree/bindings/hwmon/pmbus/infineon,tda38640.yaml b/Documentation/devicetree/bindings/hwmon/pmbus/infineon,tda38640.yaml
new file mode 100644
index 000000000000..9eecfae5dfcf
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwmon/pmbus/infineon,tda38640.yaml
@@ -0,0 +1,50 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+
+$id: http://devicetree.org/schemas/hwmon/pmbus/infineon,tda38640.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Infineon TDA38640 Synchronous Buck Regulator with SVID and I2C
+
+maintainers:
+ - Naresh Solanki <naresh.solanki@9elements.com>
+
+description: |
+ The Infineon TDA38640 is a 40A Single-voltage Synchronous Buck
+ Regulator with SVID and I2C designed for Industrial use.
+
+ Datasheet: https://www.infineon.com/dgdl/Infineon-TDA38640-0000-DataSheet-v02_04-EN.pdf?fileId=8ac78c8c80027ecd018042f2337f00c9
+
+properties:
+ compatible:
+ enum:
+ - infineon,tda38640
+
+ reg:
+ maxItems: 1
+
+ infineon,en-pin-fixed-level:
+ description:
+ Indicates that the chip EN pin is at fixed level or left
+ unconnected(has internal pull-down).
+ type: boolean
+
+required:
+ - compatible
+ - reg
+
+additionalProperties: false
+
+examples:
+ - |
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ tda38640@40 {
+ compatible = "infineon,tda38640";
+ reg = <0x40>;
+ };
+ };
+
diff --git a/Documentation/devicetree/bindings/trivial-devices.yaml b/Documentation/devicetree/bindings/trivial-devices.yaml
index 40bc475ee7e1..86c7d34f63bf 100644
--- a/Documentation/devicetree/bindings/trivial-devices.yaml
+++ b/Documentation/devicetree/bindings/trivial-devices.yaml
@@ -151,8 +151,6 @@ properties:
- infineon,slb9645tt
# Infineon SLB9673 I2C TPM 2.0
- infineon,slb9673
- # Infineon TDA38640 Voltage Regulator
- - infineon,tda38640
# Infineon TLV493D-A1B6 I2C 3D Magnetic Sensor
- infineon,tlv493d-a1b6
# Infineon Multi-phase Digital VR Controller xdpe11280
base-commit: 919a83d020a8dfa1411c1dc1cff23a833f0f5268
--
2.41.0
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v5 2/3] hwmon: (pmbus) Add ON_OFF_CONFIG register bits
2023-08-31 19:07 [PATCH v5 1/3] dt-bindings: hwmon: Add Infineon TDA38640 Naresh Solanki
@ 2023-08-31 19:07 ` Naresh Solanki
2023-09-02 14:14 ` Guenter Roeck
2023-08-31 19:07 ` [PATCH v5 3/3] hwmon: (pmbus/tda38640) Add workaround for SVID mode Naresh Solanki
` (3 subsequent siblings)
4 siblings, 1 reply; 8+ messages in thread
From: Naresh Solanki @ 2023-08-31 19:07 UTC (permalink / raw)
To: Guenter Roeck, Jean Delvare, krzysztof.kozlowski+dt
Cc: linux-hwmon, Patrick Rudolph, Naresh Solanki, linux-kernel
From: Patrick Rudolph <patrick.rudolph@9elements.com>
Add bits found in the ON_OFF_CONFIG register.
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Signed-off-by: Naresh Solanki <Naresh.Solanki@9elements.com>
---
drivers/hwmon/pmbus/pmbus.h | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/hwmon/pmbus/pmbus.h b/drivers/hwmon/pmbus/pmbus.h
index b0832a4c690d..7a28bac7f171 100644
--- a/drivers/hwmon/pmbus/pmbus.h
+++ b/drivers/hwmon/pmbus/pmbus.h
@@ -243,6 +243,15 @@ enum pmbus_regs {
*/
#define PB_OPERATION_CONTROL_ON BIT(7)
+/*
+ * ON_OFF_CONFIG
+ */
+#define PB_ON_OFF_CONFIG_POWERUP_CONTROL BIT(4)
+#define PB_ON_OFF_CONFIG_OPERATION_REQ BIT(3)
+#define PB_ON_OFF_CONFIG_EN_PIN_REQ BIT(2)
+#define PB_ON_OFF_CONFIG_POLARITY_HIGH BIT(1)
+#define PB_ON_OFF_CONFIG_TURN_OFF_FAST BIT(0)
+
/*
* WRITE_PROTECT
*/
--
2.41.0
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v5 3/3] hwmon: (pmbus/tda38640) Add workaround for SVID mode
2023-08-31 19:07 [PATCH v5 1/3] dt-bindings: hwmon: Add Infineon TDA38640 Naresh Solanki
2023-08-31 19:07 ` [PATCH v5 2/3] hwmon: (pmbus) Add ON_OFF_CONFIG register bits Naresh Solanki
@ 2023-08-31 19:07 ` Naresh Solanki
2023-09-02 14:16 ` Guenter Roeck
2023-09-01 15:45 ` [PATCH v5 1/3] dt-bindings: hwmon: Add Infineon TDA38640 Conor Dooley
` (2 subsequent siblings)
4 siblings, 1 reply; 8+ messages in thread
From: Naresh Solanki @ 2023-08-31 19:07 UTC (permalink / raw)
To: Guenter Roeck, Jean Delvare, krzysztof.kozlowski+dt
Cc: linux-hwmon, Patrick Rudolph, Naresh Solanki, linux-kernel
From: Patrick Rudolph <patrick.rudolph@9elements.com>
TDA38640 can operate in either PMBus mode or SVID mode.
In SVID mode, by design ENABLE pin is the only option for controlling
the output rail i.e., ENABLE pin is chained to power good of another
reglator & FPGA.
In cases where the chip is configured for SVID mode, and the ENABLE pin
is set at a fixed level or is left unconnected (with an internal
pull-down), while requiring software control, the following
workaround is necessary.
The workaround utilizes ENABLE pin polarity flipping to control
output rail.
If property 'infineon,en-pin-fixed-level' is specified then
determine if chip is in SVID mode by checking BIT15 of MTP memory offset
0x44 as described in the datasheet.
If chip is in SVID mode then apply the workaround by
1. Determine EN pin level
2. Maps BIT7 of OPERATION(01h) to EN_PIN_POLARITY(BIT1) of
PB_ON_OFF_CONFIG.
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Signed-off-by: Naresh Solanki <Naresh.Solanki@9elements.com>
----
Changes in V5:
- None
Changes in V4:
- Update DT property name
- Commit message update
Changes in V3:
- Use dt property to determine if workaround is needed.
Changes in V2:
- Remove dependency on DT propery,
- Runtime determine SVID mode & ENABLE pin level,
- Update commit message.
---
drivers/hwmon/pmbus/tda38640.c | 154 ++++++++++++++++++++++++++++++++-
1 file changed, 152 insertions(+), 2 deletions(-)
diff --git a/drivers/hwmon/pmbus/tda38640.c b/drivers/hwmon/pmbus/tda38640.c
index 450b0273fb59..c238330d2e6c 100644
--- a/drivers/hwmon/pmbus/tda38640.c
+++ b/drivers/hwmon/pmbus/tda38640.c
@@ -18,6 +18,127 @@ static const struct regulator_desc __maybe_unused tda38640_reg_desc[] = {
PMBUS_REGULATOR("vout", 0),
};
+struct tda38640_data {
+ struct pmbus_driver_info info;
+ u32 en_pin_lvl;
+};
+
+#define to_tda38640_data(x) container_of(x, struct tda38640_data, info)
+
+/*
+ * Map PB_ON_OFF_CONFIG_POLARITY_HIGH to PB_OPERATION_CONTROL_ON.
+ */
+static int tda38640_read_byte_data(struct i2c_client *client, int page, int reg)
+{
+ const struct pmbus_driver_info *info = pmbus_get_driver_info(client);
+ struct tda38640_data *data = to_tda38640_data(info);
+ int ret, on_off_config, enabled;
+
+ if (reg != PMBUS_OPERATION)
+ return -ENODATA;
+
+ ret = pmbus_read_byte_data(client, page, reg);
+ if (ret < 0)
+ return ret;
+
+ on_off_config = pmbus_read_byte_data(client, page,
+ PMBUS_ON_OFF_CONFIG);
+ if (on_off_config < 0)
+ return on_off_config;
+
+ enabled = !!(on_off_config & PB_ON_OFF_CONFIG_POLARITY_HIGH);
+
+ enabled ^= data->en_pin_lvl;
+ if (enabled)
+ ret &= ~PB_OPERATION_CONTROL_ON;
+ else
+ ret |= PB_OPERATION_CONTROL_ON;
+
+ return ret;
+}
+
+/*
+ * Map PB_OPERATION_CONTROL_ON to PB_ON_OFF_CONFIG_POLARITY_HIGH.
+ */
+static int tda38640_write_byte_data(struct i2c_client *client, int page,
+ int reg, u8 byte)
+{
+ const struct pmbus_driver_info *info = pmbus_get_driver_info(client);
+ struct tda38640_data *data = to_tda38640_data(info);
+ int enable, ret;
+
+ if (reg != PMBUS_OPERATION)
+ return -ENODATA;
+
+ enable = !!(byte & PB_OPERATION_CONTROL_ON);
+
+ byte &= ~PB_OPERATION_CONTROL_ON;
+ ret = pmbus_write_byte_data(client, page, reg, byte);
+ if (ret < 0)
+ return ret;
+
+ enable ^= data->en_pin_lvl;
+
+ return pmbus_update_byte_data(client, page, PMBUS_ON_OFF_CONFIG,
+ PB_ON_OFF_CONFIG_POLARITY_HIGH,
+ enable ? 0 : PB_ON_OFF_CONFIG_POLARITY_HIGH);
+}
+
+static int svid_mode(struct i2c_client *client, struct tda38640_data *data)
+{
+ /* PMBUS_MFR_READ(0xD0) + MTP Address offset */
+ u8 write_buf[] = {0xd0, 0x44, 0x00};
+ u8 read_buf[2];
+ int ret, svid;
+ bool off, reg_en_pin_pol;
+
+ struct i2c_msg msgs[2] = {
+ {
+ .addr = client->addr,
+ .flags = 0,
+ .buf = write_buf,
+ .len = sizeof(write_buf),
+ },
+ {
+ .addr = client->addr,
+ .flags = I2C_M_RD,
+ .buf = read_buf,
+ .len = sizeof(read_buf),
+ }
+ };
+
+ ret = i2c_transfer(client->adapter, msgs, 2);
+ if (ret < 0) {
+ dev_err(&client->dev, "i2c_transfer failed. %d", ret);
+ return ret;
+ }
+
+ /*
+ * 0x44[15] determines PMBus Operating Mode
+ * If bit is set then it is SVID mode.
+ */
+ svid = !!(read_buf[1] & BIT(7));
+
+ /*
+ * Determine EN pin level for use in SVID mode.
+ * This is done with help of STATUS_BYTE bit 6(OFF) & ON_OFF_CONFIG bit 2(EN pin polarity).
+ */
+ if (svid) {
+ ret = i2c_smbus_read_byte_data(client, PMBUS_STATUS_BYTE);
+ if (ret < 0)
+ return ret;
+ off = !!(ret & PB_STATUS_OFF);
+
+ ret = i2c_smbus_read_byte_data(client, PMBUS_ON_OFF_CONFIG);
+ if (ret < 0)
+ return ret;
+ reg_en_pin_pol = !!(ret & PB_ON_OFF_CONFIG_POLARITY_HIGH);
+ data->en_pin_lvl = off ^ reg_en_pin_pol;
+ }
+
+ return svid;
+}
+
static struct pmbus_driver_info tda38640_info = {
.pages = 1,
.format[PSC_VOLTAGE_IN] = linear,
@@ -26,7 +147,6 @@ static struct pmbus_driver_info tda38640_info = {
.format[PSC_CURRENT_IN] = linear,
.format[PSC_POWER] = linear,
.format[PSC_TEMPERATURE] = linear,
-
.func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_STATUS_INPUT
| PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP
| PMBUS_HAVE_IIN
@@ -41,7 +161,37 @@ static struct pmbus_driver_info tda38640_info = {
static int tda38640_probe(struct i2c_client *client)
{
- return pmbus_do_probe(client, &tda38640_info);
+ struct tda38640_data *data;
+ int svid;
+
+ data = devm_kzalloc(&client->dev, sizeof(*data), GFP_KERNEL);
+ if (!data)
+ return -ENOMEM;
+ memcpy(&data->info, &tda38640_info, sizeof(tda38640_info));
+
+ if (IS_ENABLED(CONFIG_SENSORS_TDA38640_REGULATOR) && \
+ of_property_read_bool(client->dev.of_node, "infineon,en-pin-fixed-level")) {
+ svid = svid_mode(client, data);
+ if (svid < 0) {
+ dev_err_probe(&client->dev, svid, "Could not determine operating mode.");
+ return svid;
+ }
+
+ /*
+ * Apply ON_OFF_CONFIG workaround as enabling the regulator using the
+ * OPERATION register doesn't work in SVID mode.
+ *
+ * One should configure PMBUS_ON_OFF_CONFIG here, but
+ * PB_ON_OFF_CONFIG_POWERUP_CONTROL and PB_ON_OFF_CONFIG_EN_PIN_REQ
+ * are ignored by the device.
+ * Only PB_ON_OFF_CONFIG_POLARITY_HIGH has an effect.
+ */
+ if (svid) {
+ data->info.read_byte_data = tda38640_read_byte_data;
+ data->info.write_byte_data = tda38640_write_byte_data;
+ }
+ }
+ return pmbus_do_probe(client, &data->info);
}
static const struct i2c_device_id tda38640_id[] = {
--
2.41.0
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v5 1/3] dt-bindings: hwmon: Add Infineon TDA38640
2023-08-31 19:07 [PATCH v5 1/3] dt-bindings: hwmon: Add Infineon TDA38640 Naresh Solanki
2023-08-31 19:07 ` [PATCH v5 2/3] hwmon: (pmbus) Add ON_OFF_CONFIG register bits Naresh Solanki
2023-08-31 19:07 ` [PATCH v5 3/3] hwmon: (pmbus/tda38640) Add workaround for SVID mode Naresh Solanki
@ 2023-09-01 15:45 ` Conor Dooley
2023-09-02 14:13 ` Guenter Roeck
2023-09-05 6:42 ` Krzysztof Kozlowski
4 siblings, 0 replies; 8+ messages in thread
From: Conor Dooley @ 2023-09-01 15:45 UTC (permalink / raw)
To: Naresh Solanki
Cc: Guenter Roeck, Jean Delvare, krzysztof.kozlowski+dt, Rob Herring,
Conor Dooley, linux-hwmon, Patrick Rudolph, Rob Herring,
devicetree, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 3538 bytes --]
On Thu, Aug 31, 2023 at 09:07:27PM +0200, Naresh Solanki wrote:
> From: Patrick Rudolph <patrick.rudolph@9elements.com>
>
> Add the DT property 'infineon,en-pin-fixed-level' to
> indicated that the chip EN pin is at fixed level
> or left unconnected(has internal pull-down).
>
> Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
> Signed-off-by: Naresh Solanki <Naresh.Solanki@9elements.com>
If there's another revision, please add some of the context as to why
the property is needed to the commit message. Otherwise, this looks okay
to me.
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
Thanks,
Conor.
> ----
> Changes in V5:
> - Update pin name to align with datasheet
> Changes in V4:
> - Update property name & description.
> - Update commit message.
> ---
> .../hwmon/pmbus/infineon,tda38640.yaml | 50 +++++++++++++++++++
> .../devicetree/bindings/trivial-devices.yaml | 2 -
> 2 files changed, 50 insertions(+), 2 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/hwmon/pmbus/infineon,tda38640.yaml
>
> diff --git a/Documentation/devicetree/bindings/hwmon/pmbus/infineon,tda38640.yaml b/Documentation/devicetree/bindings/hwmon/pmbus/infineon,tda38640.yaml
> new file mode 100644
> index 000000000000..9eecfae5dfcf
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/hwmon/pmbus/infineon,tda38640.yaml
> @@ -0,0 +1,50 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +
> +$id: http://devicetree.org/schemas/hwmon/pmbus/infineon,tda38640.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Infineon TDA38640 Synchronous Buck Regulator with SVID and I2C
> +
> +maintainers:
> + - Naresh Solanki <naresh.solanki@9elements.com>
> +
> +description: |
> + The Infineon TDA38640 is a 40A Single-voltage Synchronous Buck
> + Regulator with SVID and I2C designed for Industrial use.
> +
> + Datasheet: https://www.infineon.com/dgdl/Infineon-TDA38640-0000-DataSheet-v02_04-EN.pdf?fileId=8ac78c8c80027ecd018042f2337f00c9
> +
> +properties:
> + compatible:
> + enum:
> + - infineon,tda38640
> +
> + reg:
> + maxItems: 1
> +
> + infineon,en-pin-fixed-level:
> + description:
> + Indicates that the chip EN pin is at fixed level or left
> + unconnected(has internal pull-down).
> + type: boolean
> +
> +required:
> + - compatible
> + - reg
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + i2c {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + tda38640@40 {
> + compatible = "infineon,tda38640";
> + reg = <0x40>;
> + };
> + };
> +
> diff --git a/Documentation/devicetree/bindings/trivial-devices.yaml b/Documentation/devicetree/bindings/trivial-devices.yaml
> index 40bc475ee7e1..86c7d34f63bf 100644
> --- a/Documentation/devicetree/bindings/trivial-devices.yaml
> +++ b/Documentation/devicetree/bindings/trivial-devices.yaml
> @@ -151,8 +151,6 @@ properties:
> - infineon,slb9645tt
> # Infineon SLB9673 I2C TPM 2.0
> - infineon,slb9673
> - # Infineon TDA38640 Voltage Regulator
> - - infineon,tda38640
> # Infineon TLV493D-A1B6 I2C 3D Magnetic Sensor
> - infineon,tlv493d-a1b6
> # Infineon Multi-phase Digital VR Controller xdpe11280
>
> base-commit: 919a83d020a8dfa1411c1dc1cff23a833f0f5268
> --
> 2.41.0
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v5 1/3] dt-bindings: hwmon: Add Infineon TDA38640
2023-08-31 19:07 [PATCH v5 1/3] dt-bindings: hwmon: Add Infineon TDA38640 Naresh Solanki
` (2 preceding siblings ...)
2023-09-01 15:45 ` [PATCH v5 1/3] dt-bindings: hwmon: Add Infineon TDA38640 Conor Dooley
@ 2023-09-02 14:13 ` Guenter Roeck
2023-09-05 6:42 ` Krzysztof Kozlowski
4 siblings, 0 replies; 8+ messages in thread
From: Guenter Roeck @ 2023-09-02 14:13 UTC (permalink / raw)
To: Naresh Solanki
Cc: Jean Delvare, krzysztof.kozlowski+dt, Rob Herring, Conor Dooley,
linux-hwmon, Patrick Rudolph, Rob Herring, devicetree,
linux-kernel
On Thu, Aug 31, 2023 at 09:07:27PM +0200, Naresh Solanki wrote:
> From: Patrick Rudolph <patrick.rudolph@9elements.com>
>
> Add the DT property 'infineon,en-pin-fixed-level' to
> indicated that the chip EN pin is at fixed level
> or left unconnected(has internal pull-down).
>
> Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
> Signed-off-by: Naresh Solanki <Naresh.Solanki@9elements.com>
> ----
> Changes in V5:
> - Update pin name to align with datasheet
> Changes in V4:
> - Update property name & description.
> - Update commit message.
> Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
Applied to hwmon-next.
Thanks,
Guenter
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v5 2/3] hwmon: (pmbus) Add ON_OFF_CONFIG register bits
2023-08-31 19:07 ` [PATCH v5 2/3] hwmon: (pmbus) Add ON_OFF_CONFIG register bits Naresh Solanki
@ 2023-09-02 14:14 ` Guenter Roeck
0 siblings, 0 replies; 8+ messages in thread
From: Guenter Roeck @ 2023-09-02 14:14 UTC (permalink / raw)
To: Naresh Solanki
Cc: Jean Delvare, krzysztof.kozlowski+dt, linux-hwmon,
Patrick Rudolph, linux-kernel
On Thu, Aug 31, 2023 at 09:07:28PM +0200, Naresh Solanki wrote:
> From: Patrick Rudolph <patrick.rudolph@9elements.com>
>
> Add bits found in the ON_OFF_CONFIG register.
>
> Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
> Signed-off-by: Naresh Solanki <Naresh.Solanki@9elements.com>
Applied to hwmon-next.
Thanks,
Guenter
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v5 3/3] hwmon: (pmbus/tda38640) Add workaround for SVID mode
2023-08-31 19:07 ` [PATCH v5 3/3] hwmon: (pmbus/tda38640) Add workaround for SVID mode Naresh Solanki
@ 2023-09-02 14:16 ` Guenter Roeck
0 siblings, 0 replies; 8+ messages in thread
From: Guenter Roeck @ 2023-09-02 14:16 UTC (permalink / raw)
To: Naresh Solanki
Cc: Jean Delvare, krzysztof.kozlowski+dt, linux-hwmon,
Patrick Rudolph, linux-kernel
On Thu, Aug 31, 2023 at 09:07:29PM +0200, Naresh Solanki wrote:
> From: Patrick Rudolph <patrick.rudolph@9elements.com>
>
> TDA38640 can operate in either PMBus mode or SVID mode.
>
> In SVID mode, by design ENABLE pin is the only option for controlling
> the output rail i.e., ENABLE pin is chained to power good of another
> reglator & FPGA.
>
> In cases where the chip is configured for SVID mode, and the ENABLE pin
> is set at a fixed level or is left unconnected (with an internal
> pull-down), while requiring software control, the following
> workaround is necessary.
>
> The workaround utilizes ENABLE pin polarity flipping to control
> output rail.
>
> If property 'infineon,en-pin-fixed-level' is specified then
> determine if chip is in SVID mode by checking BIT15 of MTP memory offset
> 0x44 as described in the datasheet.
>
> If chip is in SVID mode then apply the workaround by
> 1. Determine EN pin level
> 2. Maps BIT7 of OPERATION(01h) to EN_PIN_POLARITY(BIT1) of
> PB_ON_OFF_CONFIG.
>
> Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
> Signed-off-by: Naresh Solanki <Naresh.Solanki@9elements.com>
> ----
Applied to hwmon-next.
Thanks,
Guenter
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v5 1/3] dt-bindings: hwmon: Add Infineon TDA38640
2023-08-31 19:07 [PATCH v5 1/3] dt-bindings: hwmon: Add Infineon TDA38640 Naresh Solanki
` (3 preceding siblings ...)
2023-09-02 14:13 ` Guenter Roeck
@ 2023-09-05 6:42 ` Krzysztof Kozlowski
4 siblings, 0 replies; 8+ messages in thread
From: Krzysztof Kozlowski @ 2023-09-05 6:42 UTC (permalink / raw)
To: Naresh Solanki, Guenter Roeck, Jean Delvare,
krzysztof.kozlowski+dt, Rob Herring, Conor Dooley
Cc: linux-hwmon, Patrick Rudolph, Rob Herring, devicetree, linux-kernel
On 31/08/2023 21:07, Naresh Solanki wrote:
> +required:
> + - compatible
> + - reg
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + i2c {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + tda38640@40 {
Any reason why you ignored Conor's comment here?
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2023-09-05 16:57 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-31 19:07 [PATCH v5 1/3] dt-bindings: hwmon: Add Infineon TDA38640 Naresh Solanki
2023-08-31 19:07 ` [PATCH v5 2/3] hwmon: (pmbus) Add ON_OFF_CONFIG register bits Naresh Solanki
2023-09-02 14:14 ` Guenter Roeck
2023-08-31 19:07 ` [PATCH v5 3/3] hwmon: (pmbus/tda38640) Add workaround for SVID mode Naresh Solanki
2023-09-02 14:16 ` Guenter Roeck
2023-09-01 15:45 ` [PATCH v5 1/3] dt-bindings: hwmon: Add Infineon TDA38640 Conor Dooley
2023-09-02 14:13 ` Guenter Roeck
2023-09-05 6:42 ` Krzysztof Kozlowski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox