* [PATCH net-next v2 0/2] net: ethernet: oa_tc6: add reset-gpios support
@ 2026-09-16 7:53 Alessandro Zini
2026-09-16 7:53 ` [PATCH net-next v2 1/2] dt-bindings: net: microchip,lan8650: add reset-gpios property Alessandro Zini
2026-09-16 7:53 ` [PATCH net-next v2 2/2] net: ethernet: oa_tc6: add reset-gpios support Alessandro Zini
0 siblings, 2 replies; 4+ messages in thread
From: Alessandro Zini @ 2026-09-16 7:53 UTC (permalink / raw)
To: Parthiban Veerasooran, Andrew Lunn, David S . Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, netdev,
devicetree, linux-kernel, Alessandro Zini
This patch series adds optional reset GPIO support for OPEN Alliance
10BASE-T1x MAC-PHY devices using the OA TC6 framework, and documents the
property for the Microchip LAN8650/1.
Patch 1 updates the Device Tree binding schema for the Microchip LAN8650/1
to document the optional reset-gpios property connected to the active-low
RESET_N pin.
Patch 2 implements optional reset GPIO handling in the common oa_tc6
library. If specified, the hardware reset line is asserted for 10 us
(datasheet specifies min 5 us) and allowed 1 ms settle time for crystal
oscillator startup before starting OPEN Alliance TC6 communication.
Changes in v2:
- Moved reset-gpios handling from the lan865x driver into the common oa_tc6
library (drivers/net/ethernet/oa_tc6.c), so all MAC-PHY devices can make
use of it, as suggested by Parthiban Veerasooran.
Alessandro Zini (2):
dt-bindings: net: microchip,lan8650: add reset-gpios property
net: ethernet: oa_tc6: add reset-gpios support
.../bindings/net/microchip,lan8650.yaml | 5 +++++
drivers/net/ethernet/oa_tc6.c | 21 +++++++++++++++++++
2 files changed, 26 insertions(+)
--
2.55.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH net-next v2 1/2] dt-bindings: net: microchip,lan8650: add reset-gpios property
2026-09-16 7:53 [PATCH net-next v2 0/2] net: ethernet: oa_tc6: add reset-gpios support Alessandro Zini
@ 2026-09-16 7:53 ` Alessandro Zini
2026-09-16 7:53 ` [PATCH net-next v2 2/2] net: ethernet: oa_tc6: add reset-gpios support Alessandro Zini
1 sibling, 0 replies; 4+ messages in thread
From: Alessandro Zini @ 2026-09-16 7:53 UTC (permalink / raw)
To: Parthiban Veerasooran, Andrew Lunn, David S . Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, netdev,
devicetree, linux-kernel, Alessandro Zini
Add optional reset-gpios property to describe the connection to the
hardware RESET_N pin of the LAN8650/1 MAC-PHY.
Signed-off-by: Alessandro Zini <alessandro.zini@siemens.com>
---
Changes in v2:
- None
Documentation/devicetree/bindings/net/microchip,lan8650.yaml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/Documentation/devicetree/bindings/net/microchip,lan8650.yaml b/Documentation/devicetree/bindings/net/microchip,lan8650.yaml
index 766ff58147ae3..1b543ce307632 100644
--- a/Documentation/devicetree/bindings/net/microchip,lan8650.yaml
+++ b/Documentation/devicetree/bindings/net/microchip,lan8650.yaml
@@ -40,6 +40,11 @@ properties:
Event.
maxItems: 1
+ reset-gpios:
+ description:
+ GPIO connected to the active-low RESET_N pin of the MAC-PHY.
+ maxItems: 1
+
spi-max-frequency:
minimum: 15000000
maximum: 25000000
--
2.55.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH net-next v2 2/2] net: ethernet: oa_tc6: add reset-gpios support
2026-09-16 7:53 [PATCH net-next v2 0/2] net: ethernet: oa_tc6: add reset-gpios support Alessandro Zini
2026-09-16 7:53 ` [PATCH net-next v2 1/2] dt-bindings: net: microchip,lan8650: add reset-gpios property Alessandro Zini
@ 2026-09-16 7:53 ` Alessandro Zini
2026-09-16 8:40 ` Qingfang Deng
1 sibling, 1 reply; 4+ messages in thread
From: Alessandro Zini @ 2026-09-16 7:53 UTC (permalink / raw)
To: Parthiban Veerasooran, Andrew Lunn, David S . Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, netdev,
devicetree, linux-kernel, Alessandro Zini
OPEN Alliance 10BASE-T1x MAC-PHY Serial Interface specification
(v1.1, Section 8.2) defines an external RESET pin as an optional reset
source for the MAC-PHY.
Add support for an optional reset GPIO in oa_tc6_init(). If specified in
the device tree, assert the hardware reset line for 10 us and allow 1 ms
settle time for crystal oscillator startup before performing the initial
TC6 control protection check and software reset.
Suggested-by: Parthiban Veerasooran <parthiban.veerasooran@microchip.com>
Signed-off-by: Alessandro Zini <alessandro.zini@siemens.com>
---
Changes in v2:
- Moved reset GPIO handling from lan865x.c to common oa_tc6.c as suggested
by Parthiban Veerasooran.
drivers/net/ethernet/oa_tc6.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/drivers/net/ethernet/oa_tc6.c b/drivers/net/ethernet/oa_tc6.c
index 6fcc5f561d560..a697e2cb99cd8 100644
--- a/drivers/net/ethernet/oa_tc6.c
+++ b/drivers/net/ethernet/oa_tc6.c
@@ -11,6 +11,8 @@
#include <linux/mdio.h>
#include <linux/phy.h>
#include <linux/oa_tc6.h>
+#include <linux/gpio/consumer.h>
+#include <linux/delay.h>
/* Control command header */
#define OA_TC6_CTRL_HEADER_DATA_NOT_CTRL BIT(31)
@@ -88,6 +90,7 @@ struct oa_tc6 {
bool disable_traffic;
bool prot_ctrl;
enum oa_tc6_quirk_flag quirk_flags;
+ struct gpio_desc *reset_gpio;
};
enum oa_tc6_header_type {
@@ -1503,6 +1506,24 @@ struct oa_tc6 *oa_tc6_init(struct spi_device *spi, struct net_device *netdev,
if (!tc6->spi_data_rx_buf)
return NULL;
+ tc6->reset_gpio = devm_gpiod_get_optional(&spi->dev, "reset",
+ GPIOD_OUT_LOW);
+ if (IS_ERR(tc6->reset_gpio)) {
+ dev_err_probe(&spi->dev, PTR_ERR(tc6->reset_gpio),
+ "Failed to get reset GPIO\n");
+ return NULL;
+ }
+
+ if (tc6->reset_gpio) {
+ /* Assert hardware reset for 10 us (datasheet specifies min 5 us)
+ * and allow 1 ms settle time for crystal oscillator startup.
+ */
+ gpiod_set_value_cansleep(tc6->reset_gpio, 1);
+ fsleep(10);
+ gpiod_set_value_cansleep(tc6->reset_gpio, 0);
+ fsleep(1000);
+ }
+
/* Check the PROTE bit status so that we can reset the device */
ret = oa_tc6_check_ctrl_protection(tc6);
if (ret) {
--
2.55.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH net-next v2 2/2] net: ethernet: oa_tc6: add reset-gpios support
2026-09-16 7:53 ` [PATCH net-next v2 2/2] net: ethernet: oa_tc6: add reset-gpios support Alessandro Zini
@ 2026-09-16 8:40 ` Qingfang Deng
0 siblings, 0 replies; 4+ messages in thread
From: Qingfang Deng @ 2026-09-16 8:40 UTC (permalink / raw)
To: Alessandro Zini
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, netdev,
devicetree, linux-kernel, Parthiban Veerasooran, Andrew Lunn,
David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni
Hi,
On 2026/9/16 15:53, Alessandro Zini wrote:
> OPEN Alliance 10BASE-T1x MAC-PHY Serial Interface specification
> (v1.1, Section 8.2) defines an external RESET pin as an optional reset
> source for the MAC-PHY.
>
> Add support for an optional reset GPIO in oa_tc6_init(). If specified in
> the device tree, assert the hardware reset line for 10 us and allow 1 ms
> settle time for crystal oscillator startup before performing the initial
> TC6 control protection check and software reset.
>
> Suggested-by: Parthiban Veerasooran <parthiban.veerasooran@microchip.com>
> Signed-off-by: Alessandro Zini <alessandro.zini@siemens.com>
> ---
> Changes in v2:
> - Moved reset GPIO handling from lan865x.c to common oa_tc6.c as suggested
> by Parthiban Veerasooran.
>
> drivers/net/ethernet/oa_tc6.c | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/drivers/net/ethernet/oa_tc6.c b/drivers/net/ethernet/oa_tc6.c
> index 6fcc5f561d560..a697e2cb99cd8 100644
> --- a/drivers/net/ethernet/oa_tc6.c
> +++ b/drivers/net/ethernet/oa_tc6.c
> @@ -11,6 +11,8 @@
> #include <linux/mdio.h>
> #include <linux/phy.h>
> #include <linux/oa_tc6.h>
> +#include <linux/gpio/consumer.h>
> +#include <linux/delay.h>
>
> /* Control command header */
> #define OA_TC6_CTRL_HEADER_DATA_NOT_CTRL BIT(31)
> @@ -88,6 +90,7 @@ struct oa_tc6 {
> bool disable_traffic;
> bool prot_ctrl;
> enum oa_tc6_quirk_flag quirk_flags;
> + struct gpio_desc *reset_gpio;
> };
>
> enum oa_tc6_header_type {
> @@ -1503,6 +1506,24 @@ struct oa_tc6 *oa_tc6_init(struct spi_device *spi, struct net_device *netdev,
> if (!tc6->spi_data_rx_buf)
> return NULL;
>
> + tc6->reset_gpio = devm_gpiod_get_optional(&spi->dev, "reset",
> + GPIOD_OUT_LOW);
Please use GPIOD_OUT_HIGH here, so the reset pin is initially asserted,
and the first gpiod_set_value_cansleep below can be removed. See
function __mdiobus_register as an example.
> + if (IS_ERR(tc6->reset_gpio)) {
> + dev_err_probe(&spi->dev, PTR_ERR(tc6->reset_gpio),
> + "Failed to get reset GPIO\n");
> + return NULL;
> + }
> +
> + if (tc6->reset_gpio) {
> + /* Assert hardware reset for 10 us (datasheet specifies min 5 us)
> + * and allow 1 ms settle time for crystal oscillator startup.
> + */
> + gpiod_set_value_cansleep(tc6->reset_gpio, 1);
> + fsleep(10);
> + gpiod_set_value_cansleep(tc6->reset_gpio, 0);
> + fsleep(1000);
> + }
> +
> /* Check the PROTE bit status so that we can reset the device */
> ret = oa_tc6_check_ctrl_protection(tc6);
> if (ret) {
Kind regards,
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-09-16 8:40 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-16 7:53 [PATCH net-next v2 0/2] net: ethernet: oa_tc6: add reset-gpios support Alessandro Zini
2026-09-16 7:53 ` [PATCH net-next v2 1/2] dt-bindings: net: microchip,lan8650: add reset-gpios property Alessandro Zini
2026-09-16 7:53 ` [PATCH net-next v2 2/2] net: ethernet: oa_tc6: add reset-gpios support Alessandro Zini
2026-09-16 8:40 ` Qingfang Deng
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®