netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next v2 0/2] net: pse-pd: tps23881: Reset GPIO support
@ 2024-08-22 22:01 Kyle Swenson
  2024-08-22 22:01 ` [PATCH net-next v2 1/2] dt-bindings: pse: tps23881: add reset-gpios Kyle Swenson
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Kyle Swenson @ 2024-08-22 22:01 UTC (permalink / raw)
  To: o.rempel@pengutronix.de, kory.maincent@bootlin.com,
	davem@davemloft.net, edumazet@google.com, kuba@kernel.org,
	pabeni@redhat.com
  Cc: robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org,
	thomas.petazzoni@bootlin.com, Kyle Swenson,
	netdev@vger.kernel.org, devicetree@vger.kernel.org

On some boards, the TPS2388x's reset line (active low) is pulled low to
keep the chip in reset until the SoC pulls the device out of reset.
This series updates the device-tree binding for the tps23881 and then
adds support for the reset gpio handling in the tps23881 driver.

Signed-off-by: Kyle Swenson <kyle.swenson@est.tech>

v1 -> v2:
  - Changed the reset pulse duration to be between 5us and 10us, per the
    TPS23880 datasheet
  - Changed the delay after reset to be 50ms instead of 1-10ms in order
    to meet the minimum recommended time before SRAM programming.

v1: https://lore.kernel.org/netdev/20240819190151.93253-1-kyle.swenson@est.tech/

Kyle Swenson (2):
  dt-bindings: pse: tps23881: add reset-gpios
  net: pse-pd: tps23881: Support reset-gpios

 .../bindings/net/pse-pd/ti,tps23881.yaml      |  3 +++
 drivers/net/pse-pd/tps23881.c                 | 21 +++++++++++++++++++
 2 files changed, 24 insertions(+)

-- 
2.43.0

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

* [PATCH net-next v2 1/2] dt-bindings: pse: tps23881: add reset-gpios
  2024-08-22 22:01 [PATCH net-next v2 0/2] net: pse-pd: tps23881: Reset GPIO support Kyle Swenson
@ 2024-08-22 22:01 ` Kyle Swenson
  2024-08-23  5:04   ` Oleksij Rempel
  2024-08-23 21:35   ` Kory Maincent
  2024-08-22 22:01 ` [PATCH net-next v2 2/2] net: pse-pd: tps23881: Support reset-gpios Kyle Swenson
  2024-08-27 13:03 ` [PATCH net-next v2 0/2] net: pse-pd: tps23881: Reset GPIO support Paolo Abeni
  2 siblings, 2 replies; 8+ messages in thread
From: Kyle Swenson @ 2024-08-22 22:01 UTC (permalink / raw)
  To: o.rempel@pengutronix.de, kory.maincent@bootlin.com,
	davem@davemloft.net, edumazet@google.com, kuba@kernel.org,
	pabeni@redhat.com
  Cc: robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org,
	thomas.petazzoni@bootlin.com, Kyle Swenson,
	netdev@vger.kernel.org, devicetree@vger.kernel.org,
	Krzysztof Kozlowski

The TPS23881 has an active-low reset pin that can be connected to an
SoC.  Document this with the device-tree binding.

Signed-off-by: Kyle Swenson <kyle.swenson@est.tech>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
 Documentation/devicetree/bindings/net/pse-pd/ti,tps23881.yaml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/Documentation/devicetree/bindings/net/pse-pd/ti,tps23881.yaml b/Documentation/devicetree/bindings/net/pse-pd/ti,tps23881.yaml
index 6992d56832bf..d08abcb01211 100644
--- a/Documentation/devicetree/bindings/net/pse-pd/ti,tps23881.yaml
+++ b/Documentation/devicetree/bindings/net/pse-pd/ti,tps23881.yaml
@@ -21,10 +21,13 @@ properties:
     maxItems: 1
 
   '#pse-cells':
     const: 1
 
+  reset-gpios:
+    maxItems: 1
+
   channels:
     description: each set of 8 ports can be assigned to one physical
       channels or two for PoE4. This parameter describes the configuration
       of the ports conversion matrix that establishes relationship between
       the logical ports and the physical channels.
-- 
2.43.0

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

* [PATCH net-next v2 2/2] net: pse-pd: tps23881: Support reset-gpios
  2024-08-22 22:01 [PATCH net-next v2 0/2] net: pse-pd: tps23881: Reset GPIO support Kyle Swenson
  2024-08-22 22:01 ` [PATCH net-next v2 1/2] dt-bindings: pse: tps23881: add reset-gpios Kyle Swenson
@ 2024-08-22 22:01 ` Kyle Swenson
  2024-08-23  5:03   ` Oleksij Rempel
  2024-08-23 21:34   ` Kory Maincent
  2024-08-27 13:03 ` [PATCH net-next v2 0/2] net: pse-pd: tps23881: Reset GPIO support Paolo Abeni
  2 siblings, 2 replies; 8+ messages in thread
From: Kyle Swenson @ 2024-08-22 22:01 UTC (permalink / raw)
  To: o.rempel@pengutronix.de, kory.maincent@bootlin.com,
	davem@davemloft.net, edumazet@google.com, kuba@kernel.org,
	pabeni@redhat.com
  Cc: robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org,
	thomas.petazzoni@bootlin.com, Kyle Swenson,
	netdev@vger.kernel.org, devicetree@vger.kernel.org

The TPS23880/1 has an active-low reset pin that some boards connect to
the SoC to control when the TPS23880 is pulled out of reset.

Add support for this via a reset-gpios property in the DTS.

Signed-off-by: Kyle Swenson <kyle.swenson@est.tech>
---
 drivers/net/pse-pd/tps23881.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/drivers/net/pse-pd/tps23881.c b/drivers/net/pse-pd/tps23881.c
index 2ea75686a319..5c4e88be46ee 100644
--- a/drivers/net/pse-pd/tps23881.c
+++ b/drivers/net/pse-pd/tps23881.c
@@ -6,10 +6,11 @@
  */
 
 #include <linux/bitfield.h>
 #include <linux/delay.h>
 #include <linux/firmware.h>
+#include <linux/gpio/consumer.h>
 #include <linux/i2c.h>
 #include <linux/module.h>
 #include <linux/of.h>
 #include <linux/platform_device.h>
 #include <linux/pse-pd/pse.h>
@@ -735,10 +736,11 @@ static int tps23881_flash_sram_fw(struct i2c_client *client)
 
 static int tps23881_i2c_probe(struct i2c_client *client)
 {
 	struct device *dev = &client->dev;
 	struct tps23881_priv *priv;
+	struct gpio_desc *reset;
 	int ret;
 	u8 val;
 
 	if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
 		dev_err(dev, "i2c check functionality failed\n");
@@ -747,10 +749,29 @@ static int tps23881_i2c_probe(struct i2c_client *client)
 
 	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
 	if (!priv)
 		return -ENOMEM;
 
+	reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
+	if (IS_ERR(reset))
+		return dev_err_probe(&client->dev, PTR_ERR(reset), "Failed to get reset GPIO\n");
+
+	if (reset) {
+		/* TPS23880 datasheet (Rev G) indicates minimum reset pulse is 5us */
+		usleep_range(5, 10);
+		gpiod_set_value_cansleep(reset, 0); /* De-assert reset */
+
+		/* TPS23880 datasheet indicates the minimum time after power on reset
+		 * should be 20ms, but the document describing how to load SRAM ("How
+		 * to Load TPS2388x SRAM and Parity Code over I2C" (Rev E))
+		 * indicates we should delay that programming by at least 50ms. So
+		 * we'll wait the entire 50ms here to ensure we're safe to go to the
+		 * SRAM loading proceedure.
+		 */
+		msleep(50);
+	}
+
 	ret = i2c_smbus_read_byte_data(client, TPS23881_REG_DEVID);
 	if (ret < 0)
 		return ret;
 
 	if (FIELD_GET(TPS23881_REG_DEVID_MASK, ret) != TPS23881_DEVICE_ID) {
-- 
2.43.0

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

* Re: [PATCH net-next v2 2/2] net: pse-pd: tps23881: Support reset-gpios
  2024-08-22 22:01 ` [PATCH net-next v2 2/2] net: pse-pd: tps23881: Support reset-gpios Kyle Swenson
@ 2024-08-23  5:03   ` Oleksij Rempel
  2024-08-23 21:34   ` Kory Maincent
  1 sibling, 0 replies; 8+ messages in thread
From: Oleksij Rempel @ 2024-08-23  5:03 UTC (permalink / raw)
  To: Kyle Swenson
  Cc: kory.maincent@bootlin.com, davem@davemloft.net,
	edumazet@google.com, kuba@kernel.org, pabeni@redhat.com,
	robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org,
	thomas.petazzoni@bootlin.com, netdev@vger.kernel.org,
	devicetree@vger.kernel.org

On Thu, Aug 22, 2024 at 10:01:22PM +0000, Kyle Swenson wrote:
> The TPS23880/1 has an active-low reset pin that some boards connect to
> the SoC to control when the TPS23880 is pulled out of reset.
> 
> Add support for this via a reset-gpios property in the DTS.
> 
> Signed-off-by: Kyle Swenson <kyle.swenson@est.tech>

Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>

Thank you!
-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

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

* Re: [PATCH net-next v2 1/2] dt-bindings: pse: tps23881: add reset-gpios
  2024-08-22 22:01 ` [PATCH net-next v2 1/2] dt-bindings: pse: tps23881: add reset-gpios Kyle Swenson
@ 2024-08-23  5:04   ` Oleksij Rempel
  2024-08-23 21:35   ` Kory Maincent
  1 sibling, 0 replies; 8+ messages in thread
From: Oleksij Rempel @ 2024-08-23  5:04 UTC (permalink / raw)
  To: Kyle Swenson
  Cc: kory.maincent@bootlin.com, davem@davemloft.net,
	edumazet@google.com, kuba@kernel.org, pabeni@redhat.com,
	robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org,
	thomas.petazzoni@bootlin.com, netdev@vger.kernel.org,
	devicetree@vger.kernel.org, Krzysztof Kozlowski

On Thu, Aug 22, 2024 at 10:01:21PM +0000, Kyle Swenson wrote:
> The TPS23881 has an active-low reset pin that can be connected to an
> SoC.  Document this with the device-tree binding.
> 
> Signed-off-by: Kyle Swenson <kyle.swenson@est.tech>
> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

Reviewed-by: Oleksij Rempel <o.rempel@pengutronix.de>

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

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

* Re: [PATCH net-next v2 2/2] net: pse-pd: tps23881: Support reset-gpios
  2024-08-22 22:01 ` [PATCH net-next v2 2/2] net: pse-pd: tps23881: Support reset-gpios Kyle Swenson
  2024-08-23  5:03   ` Oleksij Rempel
@ 2024-08-23 21:34   ` Kory Maincent
  1 sibling, 0 replies; 8+ messages in thread
From: Kory Maincent @ 2024-08-23 21:34 UTC (permalink / raw)
  To: Kyle Swenson
  Cc: o.rempel@pengutronix.de, davem@davemloft.net, edumazet@google.com,
	kuba@kernel.org, pabeni@redhat.com, robh@kernel.org,
	krzk+dt@kernel.org, conor+dt@kernel.org,
	thomas.petazzoni@bootlin.com, netdev@vger.kernel.org,
	devicetree@vger.kernel.org

On Thu, 22 Aug 2024 22:01:22 +0000
Kyle Swenson <kyle.swenson@est.tech> wrote:

> The TPS23880/1 has an active-low reset pin that some boards connect to
> the SoC to control when the TPS23880 is pulled out of reset.
> 
> Add support for this via a reset-gpios property in the DTS.

Reviewed-by: Kory Maincent <kory.maincent@bootlin.com>

Thank you!

-- 
Köry Maincent, Bootlin
Embedded Linux and kernel engineering
https://bootlin.com

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

* Re: [PATCH net-next v2 1/2] dt-bindings: pse: tps23881: add reset-gpios
  2024-08-22 22:01 ` [PATCH net-next v2 1/2] dt-bindings: pse: tps23881: add reset-gpios Kyle Swenson
  2024-08-23  5:04   ` Oleksij Rempel
@ 2024-08-23 21:35   ` Kory Maincent
  1 sibling, 0 replies; 8+ messages in thread
From: Kory Maincent @ 2024-08-23 21:35 UTC (permalink / raw)
  To: Kyle Swenson
  Cc: o.rempel@pengutronix.de, davem@davemloft.net, edumazet@google.com,
	kuba@kernel.org, pabeni@redhat.com, robh@kernel.org,
	krzk+dt@kernel.org, conor+dt@kernel.org,
	thomas.petazzoni@bootlin.com, netdev@vger.kernel.org,
	devicetree@vger.kernel.org, Krzysztof Kozlowski

On Thu, 22 Aug 2024 22:01:21 +0000
Kyle Swenson <kyle.swenson@est.tech> wrote:

> The TPS23881 has an active-low reset pin that can be connected to an
> SoC.  Document this with the device-tree binding.

Reviewed-by: Kory Maincent <kory.maincent@bootlin.com>

Thank you!
-- 
Köry Maincent, Bootlin
Embedded Linux and kernel engineering
https://bootlin.com

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

* Re: [PATCH net-next v2 0/2] net: pse-pd: tps23881: Reset GPIO support
  2024-08-22 22:01 [PATCH net-next v2 0/2] net: pse-pd: tps23881: Reset GPIO support Kyle Swenson
  2024-08-22 22:01 ` [PATCH net-next v2 1/2] dt-bindings: pse: tps23881: add reset-gpios Kyle Swenson
  2024-08-22 22:01 ` [PATCH net-next v2 2/2] net: pse-pd: tps23881: Support reset-gpios Kyle Swenson
@ 2024-08-27 13:03 ` Paolo Abeni
  2 siblings, 0 replies; 8+ messages in thread
From: Paolo Abeni @ 2024-08-27 13:03 UTC (permalink / raw)
  To: Kyle Swenson, o.rempel@pengutronix.de, kory.maincent@bootlin.com,
	davem@davemloft.net, edumazet@google.com, kuba@kernel.org
  Cc: robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org,
	thomas.petazzoni@bootlin.com, netdev@vger.kernel.org,
	devicetree@vger.kernel.org

On 8/23/24 00:01, Kyle Swenson wrote:
> On some boards, the TPS2388x's reset line (active low) is pulled low to
> keep the chip in reset until the SoC pulls the device out of reset.
> This series updates the device-tree binding for the tps23881 and then
> adds support for the reset gpio handling in the tps23881 driver.
> 
> Signed-off-by: Kyle Swenson <kyle.swenson@est.tech>
> 
> v1 -> v2:
>    - Changed the reset pulse duration to be between 5us and 10us, per the
>      TPS23880 datasheet
>    - Changed the delay after reset to be 50ms instead of 1-10ms in order
>      to meet the minimum recommended time before SRAM programming.
> 
> v1: https://lore.kernel.org/netdev/20240819190151.93253-1-kyle.swenson@est.tech/
> 
> Kyle Swenson (2):
>    dt-bindings: pse: tps23881: add reset-gpios
>    net: pse-pd: tps23881: Support reset-gpios
> 
>   .../bindings/net/pse-pd/ti,tps23881.yaml      |  3 +++
>   drivers/net/pse-pd/tps23881.c                 | 21 +++++++++++++++++++
>   2 files changed, 24 insertions(+)

This has been applied by Jakub, but the bot failed to send the notification.

Thanks,

Paolo


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

end of thread, other threads:[~2024-08-27 13:03 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-22 22:01 [PATCH net-next v2 0/2] net: pse-pd: tps23881: Reset GPIO support Kyle Swenson
2024-08-22 22:01 ` [PATCH net-next v2 1/2] dt-bindings: pse: tps23881: add reset-gpios Kyle Swenson
2024-08-23  5:04   ` Oleksij Rempel
2024-08-23 21:35   ` Kory Maincent
2024-08-22 22:01 ` [PATCH net-next v2 2/2] net: pse-pd: tps23881: Support reset-gpios Kyle Swenson
2024-08-23  5:03   ` Oleksij Rempel
2024-08-23 21:34   ` Kory Maincent
2024-08-27 13:03 ` [PATCH net-next v2 0/2] net: pse-pd: tps23881: Reset GPIO support Paolo Abeni

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).