* [PATCH v2 0/2] usb: typec: tps6598x: add reset gpio support
@ 2023-09-15 12:23 Javier Carrasco
2023-09-15 12:23 ` [PATCH v2 1/2] " Javier Carrasco
2023-09-15 12:23 ` [PATCH v2 2/2] dt-bindings: usb: tps6598x: add reset-gpios property Javier Carrasco
0 siblings, 2 replies; 6+ messages in thread
From: Javier Carrasco @ 2023-09-15 12:23 UTC (permalink / raw)
To: Heikki Krogerus, Greg Kroah-Hartman, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bryan O'Donoghue
Cc: linux-usb, linux-kernel, devicetree, Javier Carrasco,
Krzysztof Kozlowski
The TPS6598x PD controller provides an active-high hardware reset input
that reinitializes all device settings. If it is not grounded by
design, the driver must be able to de-assert it in order to initialize
the device.
This series adds and documents the reset signal management. It also
includes the basic reset management for initialization and
suspend/resume control.
Signed-off-by: Javier Carrasco <javier.carrasco@wolfvision.net>
---
Changes in v2:
- core.c: minor coding style correction ({} in 'else' after 'if {}')
- ti,tps6598x.yaml: reference to the device instead of the driver in
the commit message.
- Link to v1: https://lore.kernel.org/r/20230912-topic-tps6598x_reset-v1-0-78dc0bf61790@wolfvision.net
---
Javier Carrasco (2):
usb: typec: tps6598x: add reset gpio support
dt-bindings: usb: tps6598x: add reset-gpios property
.../devicetree/bindings/usb/ti,tps6598x.yaml | 6 ++++++
drivers/usb/typec/tipd/core.c | 20 ++++++++++++++++++++
2 files changed, 26 insertions(+)
---
base-commit: 0bb80ecc33a8fb5a682236443c1e740d5c917d1d
change-id: 20230912-topic-tps6598x_reset-55e9494e8649
Best regards,
--
Javier Carrasco <javier.carrasco@wolfvision.net>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/2] usb: typec: tps6598x: add reset gpio support
2023-09-15 12:23 [PATCH v2 0/2] usb: typec: tps6598x: add reset gpio support Javier Carrasco
@ 2023-09-15 12:23 ` Javier Carrasco
2023-09-15 12:57 ` Heikki Krogerus
2023-09-15 12:23 ` [PATCH v2 2/2] dt-bindings: usb: tps6598x: add reset-gpios property Javier Carrasco
1 sibling, 1 reply; 6+ messages in thread
From: Javier Carrasco @ 2023-09-15 12:23 UTC (permalink / raw)
To: Heikki Krogerus, Greg Kroah-Hartman, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bryan O'Donoghue
Cc: linux-usb, linux-kernel, devicetree, Javier Carrasco
The TPS6598x PD controller provides an active-high hardware reset input
that reinitializes all device settings. If it is not grounded by
design, the driver must be able to de-assert it in order to initialize
the device.
The PD controller is not ready for registration right after the reset
de-assertion and a delay must be introduced in that case. According to
TI, the delay can reach up to 1000 ms [1], which is in line with the
experimental results obtained with a TPS65987D.
Add a GPIO descriptor for the reset signal and basic reset management
for initialization and suspend/resume.
[1] https://e2e.ti.com/support/power-management-group/power-management/
f/power-management-forum/1269856/tps65987d-tps65987d-reset-de-assert-
to-normal-operation/4809389#4809389
Signed-off-by: Javier Carrasco <javier.carrasco@wolfvision.net>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
---
drivers/usb/typec/tipd/core.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/drivers/usb/typec/tipd/core.c b/drivers/usb/typec/tipd/core.c
index 37b56ce75f39..3068ef300073 100644
--- a/drivers/usb/typec/tipd/core.c
+++ b/drivers/usb/typec/tipd/core.c
@@ -8,6 +8,7 @@
#include <linux/i2c.h>
#include <linux/acpi.h>
+#include <linux/gpio/consumer.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/power_supply.h>
@@ -43,6 +44,9 @@
/* TPS_REG_SYSTEM_CONF bits */
#define TPS_SYSCONF_PORTINFO(c) ((c) & 7)
+/* reset de-assertion to ready for operation */
+#define SETUP_MS 1000
+
enum {
TPS_PORTINFO_SINK,
TPS_PORTINFO_SINK_ACCESSORY,
@@ -86,6 +90,7 @@ struct tps6598x {
struct mutex lock; /* device lock */
u8 i2c_protocol:1;
+ struct gpio_desc *reset;
struct typec_port *port;
struct typec_partner *partner;
struct usb_pd_identity partner_identity;
@@ -717,6 +722,13 @@ static int tps6598x_probe(struct i2c_client *client)
mutex_init(&tps->lock);
tps->dev = &client->dev;
+ tps->reset = devm_gpiod_get_optional(tps->dev, "reset", GPIOD_OUT_LOW);
+ if (IS_ERR(tps->reset))
+ return dev_err_probe(tps->dev, PTR_ERR(tps->reset),
+ "failed to get reset GPIO\n");
+ if (tps->reset)
+ msleep(SETUP_MS);
+
tps->regmap = devm_regmap_init_i2c(client, &tps6598x_regmap_config);
if (IS_ERR(tps->regmap))
return PTR_ERR(tps->regmap);
@@ -892,6 +904,9 @@ static void tps6598x_remove(struct i2c_client *client)
tps6598x_disconnect(tps, 0);
typec_unregister_port(tps->port);
usb_role_switch_put(tps->role_sw);
+
+ if (tps->reset)
+ gpiod_set_value_cansleep(tps->reset, 1);
}
static int __maybe_unused tps6598x_suspend(struct device *dev)
@@ -902,6 +917,8 @@ static int __maybe_unused tps6598x_suspend(struct device *dev)
if (tps->wakeup) {
disable_irq(client->irq);
enable_irq_wake(client->irq);
+ } else if (tps->reset) {
+ gpiod_set_value_cansleep(tps->reset, 1);
}
if (!client->irq)
@@ -918,6 +935,9 @@ static int __maybe_unused tps6598x_resume(struct device *dev)
if (tps->wakeup) {
disable_irq_wake(client->irq);
enable_irq(client->irq);
+ } else if (tps->reset) {
+ gpiod_set_value_cansleep(tps->reset, 0);
+ msleep(SETUP_MS);
}
if (!client->irq)
--
2.39.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 2/2] dt-bindings: usb: tps6598x: add reset-gpios property
2023-09-15 12:23 [PATCH v2 0/2] usb: typec: tps6598x: add reset gpio support Javier Carrasco
2023-09-15 12:23 ` [PATCH v2 1/2] " Javier Carrasco
@ 2023-09-15 12:23 ` Javier Carrasco
1 sibling, 0 replies; 6+ messages in thread
From: Javier Carrasco @ 2023-09-15 12:23 UTC (permalink / raw)
To: Heikki Krogerus, Greg Kroah-Hartman, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bryan O'Donoghue
Cc: linux-usb, linux-kernel, devicetree, Javier Carrasco,
Krzysztof Kozlowski
The TPS6598x device family provides a high-level reset pin. It can be
either grounded or used to reinitialize all device settings.
Document the reset GPIO as an optional property and add it to the
existing example.
Signed-off-by: Javier Carrasco <javier.carrasco@wolfvision.net>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
Documentation/devicetree/bindings/usb/ti,tps6598x.yaml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/Documentation/devicetree/bindings/usb/ti,tps6598x.yaml b/Documentation/devicetree/bindings/usb/ti,tps6598x.yaml
index 5497a60cddbc..b1a621e06127 100644
--- a/Documentation/devicetree/bindings/usb/ti,tps6598x.yaml
+++ b/Documentation/devicetree/bindings/usb/ti,tps6598x.yaml
@@ -23,6 +23,10 @@ properties:
reg:
maxItems: 1
+ reset-gpios:
+ description: GPIO used for the HRESET pin.
+ maxItems: 1
+
wakeup-source: true
interrupts:
@@ -40,6 +44,7 @@ additionalProperties: true
examples:
- |
+ #include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
i2c {
#address-cells = <1>;
@@ -56,6 +61,7 @@ examples:
pinctrl-names = "default";
pinctrl-0 = <&typec_pins>;
+ reset-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
typec_con: connector {
compatible = "usb-c-connector";
--
2.39.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] usb: typec: tps6598x: add reset gpio support
2023-09-15 12:23 ` [PATCH v2 1/2] " Javier Carrasco
@ 2023-09-15 12:57 ` Heikki Krogerus
2023-09-15 13:17 ` Javier Carrasco
0 siblings, 1 reply; 6+ messages in thread
From: Heikki Krogerus @ 2023-09-15 12:57 UTC (permalink / raw)
To: Javier Carrasco
Cc: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bryan O'Donoghue, linux-usb, linux-kernel,
devicetree
On Fri, Sep 15, 2023 at 02:23:48PM +0200, Javier Carrasco wrote:
> The TPS6598x PD controller provides an active-high hardware reset input
> that reinitializes all device settings. If it is not grounded by
> design, the driver must be able to de-assert it in order to initialize
> the device.
>
> The PD controller is not ready for registration right after the reset
> de-assertion and a delay must be introduced in that case. According to
> TI, the delay can reach up to 1000 ms [1], which is in line with the
> experimental results obtained with a TPS65987D.
>
> Add a GPIO descriptor for the reset signal and basic reset management
> for initialization and suspend/resume.
>
> [1] https://e2e.ti.com/support/power-management-group/power-management/
> f/power-management-forum/1269856/tps65987d-tps65987d-reset-de-assert-
> to-normal-operation/4809389#4809389
>
> Signed-off-by: Javier Carrasco <javier.carrasco@wolfvision.net>
> Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> ---
> drivers/usb/typec/tipd/core.c | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
>
> diff --git a/drivers/usb/typec/tipd/core.c b/drivers/usb/typec/tipd/core.c
> index 37b56ce75f39..3068ef300073 100644
> --- a/drivers/usb/typec/tipd/core.c
> +++ b/drivers/usb/typec/tipd/core.c
> @@ -8,6 +8,7 @@
>
> #include <linux/i2c.h>
> #include <linux/acpi.h>
> +#include <linux/gpio/consumer.h>
> #include <linux/module.h>
> #include <linux/of.h>
> #include <linux/power_supply.h>
> @@ -43,6 +44,9 @@
> /* TPS_REG_SYSTEM_CONF bits */
> #define TPS_SYSCONF_PORTINFO(c) ((c) & 7)
>
> +/* reset de-assertion to ready for operation */
> +#define SETUP_MS 1000
> +
> enum {
> TPS_PORTINFO_SINK,
> TPS_PORTINFO_SINK_ACCESSORY,
> @@ -86,6 +90,7 @@ struct tps6598x {
> struct mutex lock; /* device lock */
> u8 i2c_protocol:1;
>
> + struct gpio_desc *reset;
> struct typec_port *port;
> struct typec_partner *partner;
> struct usb_pd_identity partner_identity;
> @@ -717,6 +722,13 @@ static int tps6598x_probe(struct i2c_client *client)
> mutex_init(&tps->lock);
> tps->dev = &client->dev;
>
> + tps->reset = devm_gpiod_get_optional(tps->dev, "reset", GPIOD_OUT_LOW);
> + if (IS_ERR(tps->reset))
> + return dev_err_probe(tps->dev, PTR_ERR(tps->reset),
> + "failed to get reset GPIO\n");
> + if (tps->reset)
> + msleep(SETUP_MS);
> +
> tps->regmap = devm_regmap_init_i2c(client, &tps6598x_regmap_config);
> if (IS_ERR(tps->regmap))
> return PTR_ERR(tps->regmap);
> @@ -892,6 +904,9 @@ static void tps6598x_remove(struct i2c_client *client)
> tps6598x_disconnect(tps, 0);
> typec_unregister_port(tps->port);
> usb_role_switch_put(tps->role_sw);
> +
> + if (tps->reset)
> + gpiod_set_value_cansleep(tps->reset, 1);
Do you need that "if (tps->reset)" in this case? That function is NULL safe,
right?
> }
>
> static int __maybe_unused tps6598x_suspend(struct device *dev)
> @@ -902,6 +917,8 @@ static int __maybe_unused tps6598x_suspend(struct device *dev)
> if (tps->wakeup) {
> disable_irq(client->irq);
> enable_irq_wake(client->irq);
> + } else if (tps->reset) {
> + gpiod_set_value_cansleep(tps->reset, 1);
> }
>
> if (!client->irq)
> @@ -918,6 +935,9 @@ static int __maybe_unused tps6598x_resume(struct device *dev)
> if (tps->wakeup) {
> disable_irq_wake(client->irq);
> enable_irq(client->irq);
> + } else if (tps->reset) {
> + gpiod_set_value_cansleep(tps->reset, 0);
> + msleep(SETUP_MS);
> }
>
> if (!client->irq)
>
> --
> 2.39.2
thanks,
--
heikki
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] usb: typec: tps6598x: add reset gpio support
2023-09-15 12:57 ` Heikki Krogerus
@ 2023-09-15 13:17 ` Javier Carrasco
2023-09-15 13:23 ` Heikki Krogerus
0 siblings, 1 reply; 6+ messages in thread
From: Javier Carrasco @ 2023-09-15 13:17 UTC (permalink / raw)
To: Heikki Krogerus
Cc: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bryan O'Donoghue, linux-usb, linux-kernel,
devicetree
On 15.09.23 14:57, Heikki Krogerus wrote:
> On Fri, Sep 15, 2023 at 02:23:48PM +0200, Javier Carrasco wrote:
>> The TPS6598x PD controller provides an active-high hardware reset input
>> that reinitializes all device settings. If it is not grounded by
>> design, the driver must be able to de-assert it in order to initialize
>> the device.
>>
>> The PD controller is not ready for registration right after the reset
>> de-assertion and a delay must be introduced in that case. According to
>> TI, the delay can reach up to 1000 ms [1], which is in line with the
>> experimental results obtained with a TPS65987D.
>>
>> Add a GPIO descriptor for the reset signal and basic reset management
>> for initialization and suspend/resume.
>>
>> [1] https://e2e.ti.com/support/power-management-group/power-management/
>> f/power-management-forum/1269856/tps65987d-tps65987d-reset-de-assert-
>> to-normal-operation/4809389#4809389
>>
>> Signed-off-by: Javier Carrasco <javier.carrasco@wolfvision.net>
>> Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
>> ---
>> drivers/usb/typec/tipd/core.c | 20 ++++++++++++++++++++
>> 1 file changed, 20 insertions(+)
>>
>> diff --git a/drivers/usb/typec/tipd/core.c b/drivers/usb/typec/tipd/core.c
>> index 37b56ce75f39..3068ef300073 100644
>> --- a/drivers/usb/typec/tipd/core.c
>> +++ b/drivers/usb/typec/tipd/core.c
>> @@ -8,6 +8,7 @@
>>
>> #include <linux/i2c.h>
>> #include <linux/acpi.h>
>> +#include <linux/gpio/consumer.h>
>> #include <linux/module.h>
>> #include <linux/of.h>
>> #include <linux/power_supply.h>
>> @@ -43,6 +44,9 @@
>> /* TPS_REG_SYSTEM_CONF bits */
>> #define TPS_SYSCONF_PORTINFO(c) ((c) & 7)
>>
>> +/* reset de-assertion to ready for operation */
>> +#define SETUP_MS 1000
>> +
>> enum {
>> TPS_PORTINFO_SINK,
>> TPS_PORTINFO_SINK_ACCESSORY,
>> @@ -86,6 +90,7 @@ struct tps6598x {
>> struct mutex lock; /* device lock */
>> u8 i2c_protocol:1;
>>
>> + struct gpio_desc *reset;
>> struct typec_port *port;
>> struct typec_partner *partner;
>> struct usb_pd_identity partner_identity;
>> @@ -717,6 +722,13 @@ static int tps6598x_probe(struct i2c_client *client)
>> mutex_init(&tps->lock);
>> tps->dev = &client->dev;
>>
>> + tps->reset = devm_gpiod_get_optional(tps->dev, "reset", GPIOD_OUT_LOW);
>> + if (IS_ERR(tps->reset))
>> + return dev_err_probe(tps->dev, PTR_ERR(tps->reset),
>> + "failed to get reset GPIO\n");
>> + if (tps->reset)
>> + msleep(SETUP_MS);
>> +
>> tps->regmap = devm_regmap_init_i2c(client, &tps6598x_regmap_config);
>> if (IS_ERR(tps->regmap))
>> return PTR_ERR(tps->regmap);
>> @@ -892,6 +904,9 @@ static void tps6598x_remove(struct i2c_client *client)
>> tps6598x_disconnect(tps, 0);
>> typec_unregister_port(tps->port);
>> usb_role_switch_put(tps->role_sw);
>> +
>> + if (tps->reset)
>> + gpiod_set_value_cansleep(tps->reset, 1);
>
> Do you need that "if (tps->reset)" in this case? That function is NULL safe,
> right?
>
The function makes use of the VALIDATE_DESC_VOID macro to make it NULL
safe, but this macro also calls pr_warn if the descriptor is NULL and I
do not want to add warnings for an optional property that did not exist
before because it could be confusing. But if that is the desired
behavior, I will remove the checks.
>> }
>>
>> static int __maybe_unused tps6598x_suspend(struct device *dev)
>> @@ -902,6 +917,8 @@ static int __maybe_unused tps6598x_suspend(struct device *dev)
>> if (tps->wakeup) {
>> disable_irq(client->irq);
>> enable_irq_wake(client->irq);
>> + } else if (tps->reset) {
>> + gpiod_set_value_cansleep(tps->reset, 1);
>> }
>>
>> if (!client->irq)
>> @@ -918,6 +935,9 @@ static int __maybe_unused tps6598x_resume(struct device *dev)
>> if (tps->wakeup) {
>> disable_irq_wake(client->irq);
>> enable_irq(client->irq);
>> + } else if (tps->reset) {
>> + gpiod_set_value_cansleep(tps->reset, 0);
>> + msleep(SETUP_MS);
>> }
>>
>> if (!client->irq)
>>
>> --
>> 2.39.2
>
> thanks,
>
Thanks and best regards,
Javier Carrasco
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] usb: typec: tps6598x: add reset gpio support
2023-09-15 13:17 ` Javier Carrasco
@ 2023-09-15 13:23 ` Heikki Krogerus
0 siblings, 0 replies; 6+ messages in thread
From: Heikki Krogerus @ 2023-09-15 13:23 UTC (permalink / raw)
To: Javier Carrasco
Cc: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bryan O'Donoghue, linux-usb, linux-kernel,
devicetree
Hi,
On Fri, Sep 15, 2023 at 03:17:28PM +0200, Javier Carrasco wrote:
> On 15.09.23 14:57, Heikki Krogerus wrote:
> > On Fri, Sep 15, 2023 at 02:23:48PM +0200, Javier Carrasco wrote:
> >> The TPS6598x PD controller provides an active-high hardware reset input
> >> that reinitializes all device settings. If it is not grounded by
> >> design, the driver must be able to de-assert it in order to initialize
> >> the device.
> >>
> >> The PD controller is not ready for registration right after the reset
> >> de-assertion and a delay must be introduced in that case. According to
> >> TI, the delay can reach up to 1000 ms [1], which is in line with the
> >> experimental results obtained with a TPS65987D.
> >>
> >> Add a GPIO descriptor for the reset signal and basic reset management
> >> for initialization and suspend/resume.
> >>
> >> [1] https://e2e.ti.com/support/power-management-group/power-management/
> >> f/power-management-forum/1269856/tps65987d-tps65987d-reset-de-assert-
> >> to-normal-operation/4809389#4809389
> >>
> >> Signed-off-by: Javier Carrasco <javier.carrasco@wolfvision.net>
> >> Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
> >> ---
> >> drivers/usb/typec/tipd/core.c | 20 ++++++++++++++++++++
> >> 1 file changed, 20 insertions(+)
> >>
> >> diff --git a/drivers/usb/typec/tipd/core.c b/drivers/usb/typec/tipd/core.c
> >> index 37b56ce75f39..3068ef300073 100644
> >> --- a/drivers/usb/typec/tipd/core.c
> >> +++ b/drivers/usb/typec/tipd/core.c
> >> @@ -8,6 +8,7 @@
> >>
> >> #include <linux/i2c.h>
> >> #include <linux/acpi.h>
> >> +#include <linux/gpio/consumer.h>
> >> #include <linux/module.h>
> >> #include <linux/of.h>
> >> #include <linux/power_supply.h>
> >> @@ -43,6 +44,9 @@
> >> /* TPS_REG_SYSTEM_CONF bits */
> >> #define TPS_SYSCONF_PORTINFO(c) ((c) & 7)
> >>
> >> +/* reset de-assertion to ready for operation */
> >> +#define SETUP_MS 1000
> >> +
> >> enum {
> >> TPS_PORTINFO_SINK,
> >> TPS_PORTINFO_SINK_ACCESSORY,
> >> @@ -86,6 +90,7 @@ struct tps6598x {
> >> struct mutex lock; /* device lock */
> >> u8 i2c_protocol:1;
> >>
> >> + struct gpio_desc *reset;
> >> struct typec_port *port;
> >> struct typec_partner *partner;
> >> struct usb_pd_identity partner_identity;
> >> @@ -717,6 +722,13 @@ static int tps6598x_probe(struct i2c_client *client)
> >> mutex_init(&tps->lock);
> >> tps->dev = &client->dev;
> >>
> >> + tps->reset = devm_gpiod_get_optional(tps->dev, "reset", GPIOD_OUT_LOW);
> >> + if (IS_ERR(tps->reset))
> >> + return dev_err_probe(tps->dev, PTR_ERR(tps->reset),
> >> + "failed to get reset GPIO\n");
> >> + if (tps->reset)
> >> + msleep(SETUP_MS);
> >> +
> >> tps->regmap = devm_regmap_init_i2c(client, &tps6598x_regmap_config);
> >> if (IS_ERR(tps->regmap))
> >> return PTR_ERR(tps->regmap);
> >> @@ -892,6 +904,9 @@ static void tps6598x_remove(struct i2c_client *client)
> >> tps6598x_disconnect(tps, 0);
> >> typec_unregister_port(tps->port);
> >> usb_role_switch_put(tps->role_sw);
> >> +
> >> + if (tps->reset)
> >> + gpiod_set_value_cansleep(tps->reset, 1);
> >
> > Do you need that "if (tps->reset)" in this case? That function is NULL safe,
> > right?
> >
> The function makes use of the VALIDATE_DESC_VOID macro to make it NULL
> safe, but this macro also calls pr_warn if the descriptor is NULL and I
> do not want to add warnings for an optional property that did not exist
> before because it could be confusing. But if that is the desired
> behavior, I will remove the checks.
No, I don't want noise either.
> >> }
> >>
> >> static int __maybe_unused tps6598x_suspend(struct device *dev)
> >> @@ -902,6 +917,8 @@ static int __maybe_unused tps6598x_suspend(struct device *dev)
> >> if (tps->wakeup) {
> >> disable_irq(client->irq);
> >> enable_irq_wake(client->irq);
> >> + } else if (tps->reset) {
> >> + gpiod_set_value_cansleep(tps->reset, 1);
> >> }
> >>
> >> if (!client->irq)
> >> @@ -918,6 +935,9 @@ static int __maybe_unused tps6598x_resume(struct device *dev)
> >> if (tps->wakeup) {
> >> disable_irq_wake(client->irq);
> >> enable_irq(client->irq);
> >> + } else if (tps->reset) {
> >> + gpiod_set_value_cansleep(tps->reset, 0);
> >> + msleep(SETUP_MS);
> >> }
> >>
> >> if (!client->irq)
> >>
> >> --
> >> 2.39.2
thanks,
--
heikki
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-09-15 13:24 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-15 12:23 [PATCH v2 0/2] usb: typec: tps6598x: add reset gpio support Javier Carrasco
2023-09-15 12:23 ` [PATCH v2 1/2] " Javier Carrasco
2023-09-15 12:57 ` Heikki Krogerus
2023-09-15 13:17 ` Javier Carrasco
2023-09-15 13:23 ` Heikki Krogerus
2023-09-15 12:23 ` [PATCH v2 2/2] dt-bindings: usb: tps6598x: add reset-gpios property Javier Carrasco
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).