mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH 0/3] net: phy: dp83867: sync dp83867_phy_reset
@ 2024-05-23 14:40 Stefan Kerkmann
  2024-05-23 14:40 ` [PATCH 1/3] net: phy: allow PHY drivers to implement their own software reset Stefan Kerkmann
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Stefan Kerkmann @ 2024-05-23 14:40 UTC (permalink / raw)
  To: Sascha Hauer, BAREBOX; +Cc: Stefan Kerkmann

I ran into the same problem as Roland with this Phy driver and missed
the fix that landed in 095cd32961aab64cfe72941ce43d99876852e12b ("net:
phy: dp83867: reset PHY on probe"). I'm still submitting this series as
a refactoring of the fix - with the goal of being closer to the upstream
Linux implementation.

Signed-off-by: Stefan Kerkmann <s.kerkmann@pengutronix.de>
---
Stefan Kerkmann (3):
      net: phy: allow PHY drivers to implement their own software reset
      net: phy: document core PHY structures
      net: phy: dp83867: sync dp83867_phy_rest

 drivers/net/phy/dp83867.c | 28 ++++++++++++++++++++++------
 drivers/net/phy/phy.c     | 16 ++++++++++++++--
 include/linux/phy.h       | 25 ++++++++++++++++---------
 3 files changed, 52 insertions(+), 17 deletions(-)
---
base-commit: 8ad1b68cf755873866945f77e2e635a2c47e4c5e
change-id: 20240523-feature-dp83867-soft-reset-d9dc632017c4

Best regards,
-- 
Stefan Kerkmann <s.kerkmann@pengutronix.de>




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

* [PATCH 1/3] net: phy: allow PHY drivers to implement their own software reset
  2024-05-23 14:40 [PATCH 0/3] net: phy: dp83867: sync dp83867_phy_reset Stefan Kerkmann
@ 2024-05-23 14:40 ` Stefan Kerkmann
  2024-05-23 14:46   ` Ahmad Fatoum
  2024-05-23 14:40 ` [PATCH 2/3] net: phy: document core PHY structures Stefan Kerkmann
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 8+ messages in thread
From: Stefan Kerkmann @ 2024-05-23 14:40 UTC (permalink / raw)
  To: Sascha Hauer, BAREBOX; +Cc: Stefan Kerkmann

This is a port of linux commit 9df81dd7583d14862d0cfb673a941b261f3b2112
("net: phy: allow PHY drivers to implement their own software reset")
which implements the ability for phy drivers to implement the own
non-standard software reset sequence.

A side effect is that fixups will now applied always even if
.config_init is undefined. This shouldn't be possible to happen though,
because phy_driver_register will populate the member with
genphy_config_init in that case, so the member should never be NULL.

Signed-off-by: Stefan Kerkmann <s.kerkmann@pengutronix.de>
---
 drivers/net/phy/phy.c | 16 ++++++++++++++--
 include/linux/phy.h   |  5 +++++
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index abd78b2c80..a83f183302 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -1108,14 +1108,26 @@ int phy_init_hw(struct phy_device *phydev)
 	struct phy_driver *phydrv = to_phy_driver(phydev->dev.driver);
 	int ret;
 
-	if (!phydrv || !phydrv->config_init)
+	if (!phydrv)
 		return 0;
 
+	if (phydrv->soft_reset) {
+		ret = phydrv->soft_reset(phydev);
+		if (ret < 0)
+			return ret;
+	}
+
 	ret = phy_scan_fixups(phydev);
 	if (ret < 0)
 		return ret;
 
-	return phydrv->config_init(phydev);
+	if (phydrv->config_init) {
+		ret = phydrv->config_init(phydev);
+		if (ret < 0)
+			return ret;
+	}
+
+	return 0;
 }
 
 static struct phy_driver genphy_driver = {
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 7da4f94e0e..a6b96a5984 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -275,6 +275,11 @@ struct phy_driver {
 	const void *driver_data;
 	bool is_phy;
 
+	/**
+	 * @soft_reset: Called to issue a PHY software reset
+	 */
+	int (*soft_reset)(struct phy_device *phydev);
+
 	/*
 	 * Called to initialize the PHY,
 	 * including after a reset

-- 
2.39.2




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

* [PATCH 2/3] net: phy: document core PHY structures
  2024-05-23 14:40 [PATCH 0/3] net: phy: dp83867: sync dp83867_phy_reset Stefan Kerkmann
  2024-05-23 14:40 ` [PATCH 1/3] net: phy: allow PHY drivers to implement their own software reset Stefan Kerkmann
@ 2024-05-23 14:40 ` Stefan Kerkmann
  2024-05-23 14:47   ` Ahmad Fatoum
  2024-05-23 14:40 ` [PATCH 3/3] net: phy: dp83867: sync dp83867_phy_rest Stefan Kerkmann
  2024-05-24  9:15 ` [PATCH 0/3] net: phy: dp83867: sync dp83867_phy_reset Sascha Hauer
  3 siblings, 1 reply; 8+ messages in thread
From: Stefan Kerkmann @ 2024-05-23 14:40 UTC (permalink / raw)
  To: Sascha Hauer, BAREBOX; +Cc: Stefan Kerkmann

This is a port of linux commit 4069a572d423b73919ae40a500dfc4b10f8a6f32
("net: phy: Document core PHY structures"), that copies the Doxygen
comments for the PHY structure where applicable.

Signed-off-by: Stefan Kerkmann <s.kerkmann@pengutronix.de>
---
 include/linux/phy.h | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/include/linux/phy.h b/include/linux/phy.h
index a6b96a5984..ef25dec033 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -280,36 +280,38 @@ struct phy_driver {
 	 */
 	int (*soft_reset)(struct phy_device *phydev);
 
-	/*
-	 * Called to initialize the PHY,
+	/**
+	 * @config_init: Called to initialize the PHY,
 	 * including after a reset
 	 */
 	int (*config_init)(struct phy_device *phydev);
 
-	/*
-	 * Called during discovery.  Used to set
+	/**
+	 * @probe: Called during discovery.  Used to set
 	 * up device-specific structures, if any
 	 */
 	int (*probe)(struct phy_device *phydev);
 
-	/*
-	 * Configures the advertisement and resets
+	/**
+	 * @config_aneg: Configures the advertisement and resets
 	 * autonegotiation if phydev->autoneg is on,
 	 * forces the speed to the current settings in phydev
 	 * if phydev->autoneg is off
 	 */
 	int (*config_aneg)(struct phy_device *phydev);
 
-	/* Determines the auto negotiation result */
+	/** @aneg_done: Determines the auto negotiation result */
 	int (*aneg_done)(struct phy_device *phydev);
 
-	/* Determines the negotiated speed and duplex */
+	/** @read_status: Determines the negotiated speed and duplex */
 	int (*read_status)(struct phy_device *phydev);
 
-	/* Clears up any memory if needed */
+	/** @remove: Clears up any memory if needed */
 	void (*remove)(struct phy_device *phydev);
 
+	/** @read_page: Return the current PHY register page number */
 	int (*read_page)(struct phy_device *phydev);
+	/** @write_page: Set the current PHY register page number */
 	int (*write_page)(struct phy_device *phydev, int page);
 
 	struct driver	 drv;

-- 
2.39.2




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

* [PATCH 3/3] net: phy: dp83867: sync dp83867_phy_rest
  2024-05-23 14:40 [PATCH 0/3] net: phy: dp83867: sync dp83867_phy_reset Stefan Kerkmann
  2024-05-23 14:40 ` [PATCH 1/3] net: phy: allow PHY drivers to implement their own software reset Stefan Kerkmann
  2024-05-23 14:40 ` [PATCH 2/3] net: phy: document core PHY structures Stefan Kerkmann
@ 2024-05-23 14:40 ` Stefan Kerkmann
  2024-05-23 14:49   ` Ahmad Fatoum
  2024-05-24  9:15 ` [PATCH 0/3] net: phy: dp83867: sync dp83867_phy_reset Sascha Hauer
  3 siblings, 1 reply; 8+ messages in thread
From: Stefan Kerkmann @ 2024-05-23 14:40 UTC (permalink / raw)
  To: Sascha Hauer, BAREBOX; +Cc: Stefan Kerkmann

This is a port of the `dp83867_phy_reset` function at the state of linux
commit a129b41fe0a8b4da828c46b10f5244ca07a3fec3 ("Revert "net: phy:
dp83867: perform soft reset and retain established link"). Which
performs a reset before starting the initial configuration.

It is a refactoring of commit 095cd32961aab64cfe72941ce43d99876852e12b
("net: phy: dp83867: reset PHY on probe") which already ported parts of
the function, but diverted from the upstream implementation.

Signed-off-by: Stefan Kerkmann <s.kerkmann@pengutronix.de>
---
 drivers/net/phy/dp83867.c | 28 ++++++++++++++++++++++------
 1 file changed, 22 insertions(+), 6 deletions(-)

diff --git a/drivers/net/phy/dp83867.c b/drivers/net/phy/dp83867.c
index aefc651489..3c9a8e6355 100644
--- a/drivers/net/phy/dp83867.c
+++ b/drivers/net/phy/dp83867.c
@@ -362,8 +362,6 @@ static int dp83867_of_init(struct phy_device *phydev)
 	return 0;
 }
 
-static int dp83867_phy_reset(struct phy_device *phydev); /* see below */
-
 static int dp83867_probe(struct phy_device *phydev)
 {
 	struct dp83867_private *dp83867;
@@ -372,8 +370,6 @@ static int dp83867_probe(struct phy_device *phydev)
 
 	phydev->priv = dp83867;
 
-	dp83867_phy_reset(phydev);
-
 	return dp83867_of_init(phydev);
 }
 
@@ -571,14 +567,33 @@ static int dp83867_phy_reset(struct phy_device *phydev)
 {
 	int err;
 
+	err = phy_write(phydev, DP83867_CTRL, DP83867_SW_RESET);
+	if (err < 0)
+		return err;
+
+	udelay(20);
+
+	err = phy_modify(phydev, MII_DP83867_PHYCTRL,
+			 DP83867_PHYCR_FORCE_LINK_GOOD, 0);
+	if (err < 0)
+		return err;
+
+	/* Configure the DSP Feedforward Equalizer Configuration register to
+	 * improve short cable (< 1 meter) performance. This will not affect
+	 * long cable performance.
+	 */
+	err = phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_DSP_FFE_CFG,
+			    0x0e81);
+	if (err < 0)
+		return err;
+
 	err = phy_write(phydev, DP83867_CTRL, DP83867_SW_RESTART);
 	if (err < 0)
 		return err;
 
 	udelay(20);
 
-	return phy_modify(phydev, MII_DP83867_PHYCTRL,
-			 DP83867_PHYCR_FORCE_LINK_GOOD, 0);
+	return 0;
 }
 
 static struct phy_driver dp83867_driver[] = {
@@ -590,6 +605,7 @@ static struct phy_driver dp83867_driver[] = {
 
 		.probe          = dp83867_probe,
 		.config_init	= dp83867_config_init,
+		.soft_reset	= dp83867_phy_reset,
 
 		.read_status	= dp83867_read_status,
 	},

-- 
2.39.2




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

* Re: [PATCH 1/3] net: phy: allow PHY drivers to implement their own software reset
  2024-05-23 14:40 ` [PATCH 1/3] net: phy: allow PHY drivers to implement their own software reset Stefan Kerkmann
@ 2024-05-23 14:46   ` Ahmad Fatoum
  0 siblings, 0 replies; 8+ messages in thread
From: Ahmad Fatoum @ 2024-05-23 14:46 UTC (permalink / raw)
  To: Stefan Kerkmann, Sascha Hauer, BAREBOX

On 23.05.24 16:40, Stefan Kerkmann wrote:
> This is a port of linux commit 9df81dd7583d14862d0cfb673a941b261f3b2112
> ("net: phy: allow PHY drivers to implement their own software reset")
> which implements the ability for phy drivers to implement the own
> non-standard software reset sequence.
> 
> A side effect is that fixups will now applied always even if
> .config_init is undefined. This shouldn't be possible to happen though,
> because phy_driver_register will populate the member with
> genphy_config_init in that case, so the member should never be NULL.
> 
> Signed-off-by: Stefan Kerkmann <s.kerkmann@pengutronix.de>

Reviewed-by: Ahmad Fatoum <a.fatoum@pengutronix.de>

> ---
>  drivers/net/phy/phy.c | 16 ++++++++++++++--
>  include/linux/phy.h   |  5 +++++
>  2 files changed, 19 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
> index abd78b2c80..a83f183302 100644
> --- a/drivers/net/phy/phy.c
> +++ b/drivers/net/phy/phy.c
> @@ -1108,14 +1108,26 @@ int phy_init_hw(struct phy_device *phydev)
>  	struct phy_driver *phydrv = to_phy_driver(phydev->dev.driver);
>  	int ret;
>  
> -	if (!phydrv || !phydrv->config_init)
> +	if (!phydrv)
>  		return 0;
>  
> +	if (phydrv->soft_reset) {
> +		ret = phydrv->soft_reset(phydev);
> +		if (ret < 0)
> +			return ret;
> +	}
> +
>  	ret = phy_scan_fixups(phydev);
>  	if (ret < 0)
>  		return ret;
>  
> -	return phydrv->config_init(phydev);
> +	if (phydrv->config_init) {
> +		ret = phydrv->config_init(phydev);
> +		if (ret < 0)
> +			return ret;
> +	}
> +
> +	return 0;
>  }
>  
>  static struct phy_driver genphy_driver = {
> diff --git a/include/linux/phy.h b/include/linux/phy.h
> index 7da4f94e0e..a6b96a5984 100644
> --- a/include/linux/phy.h
> +++ b/include/linux/phy.h
> @@ -275,6 +275,11 @@ struct phy_driver {
>  	const void *driver_data;
>  	bool is_phy;
>  
> +	/**
> +	 * @soft_reset: Called to issue a PHY software reset
> +	 */
> +	int (*soft_reset)(struct phy_device *phydev);
> +
>  	/*
>  	 * Called to initialize the PHY,
>  	 * including after a reset
> 

-- 
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 2/3] net: phy: document core PHY structures
  2024-05-23 14:40 ` [PATCH 2/3] net: phy: document core PHY structures Stefan Kerkmann
@ 2024-05-23 14:47   ` Ahmad Fatoum
  0 siblings, 0 replies; 8+ messages in thread
From: Ahmad Fatoum @ 2024-05-23 14:47 UTC (permalink / raw)
  To: Stefan Kerkmann, Sascha Hauer, BAREBOX

On 23.05.24 16:40, Stefan Kerkmann wrote:
> This is a port of linux commit 4069a572d423b73919ae40a500dfc4b10f8a6f32
> ("net: phy: Document core PHY structures"), that copies the Doxygen
> comments for the PHY structure where applicable.
> 
> Signed-off-by: Stefan Kerkmann <s.kerkmann@pengutronix.de>

Reviewed-by: Ahmad Fatoum <a.fatoum@pengutronix.de>

> ---
>  include/linux/phy.h | 20 +++++++++++---------
>  1 file changed, 11 insertions(+), 9 deletions(-)
> 
> diff --git a/include/linux/phy.h b/include/linux/phy.h
> index a6b96a5984..ef25dec033 100644
> --- a/include/linux/phy.h
> +++ b/include/linux/phy.h
> @@ -280,36 +280,38 @@ struct phy_driver {
>  	 */
>  	int (*soft_reset)(struct phy_device *phydev);
>  
> -	/*
> -	 * Called to initialize the PHY,
> +	/**
> +	 * @config_init: Called to initialize the PHY,
>  	 * including after a reset
>  	 */
>  	int (*config_init)(struct phy_device *phydev);
>  
> -	/*
> -	 * Called during discovery.  Used to set
> +	/**
> +	 * @probe: Called during discovery.  Used to set
>  	 * up device-specific structures, if any
>  	 */
>  	int (*probe)(struct phy_device *phydev);
>  
> -	/*
> -	 * Configures the advertisement and resets
> +	/**
> +	 * @config_aneg: Configures the advertisement and resets
>  	 * autonegotiation if phydev->autoneg is on,
>  	 * forces the speed to the current settings in phydev
>  	 * if phydev->autoneg is off
>  	 */
>  	int (*config_aneg)(struct phy_device *phydev);
>  
> -	/* Determines the auto negotiation result */
> +	/** @aneg_done: Determines the auto negotiation result */
>  	int (*aneg_done)(struct phy_device *phydev);
>  
> -	/* Determines the negotiated speed and duplex */
> +	/** @read_status: Determines the negotiated speed and duplex */
>  	int (*read_status)(struct phy_device *phydev);
>  
> -	/* Clears up any memory if needed */
> +	/** @remove: Clears up any memory if needed */
>  	void (*remove)(struct phy_device *phydev);
>  
> +	/** @read_page: Return the current PHY register page number */
>  	int (*read_page)(struct phy_device *phydev);
> +	/** @write_page: Set the current PHY register page number */
>  	int (*write_page)(struct phy_device *phydev, int page);
>  
>  	struct driver	 drv;
> 

-- 
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 3/3] net: phy: dp83867: sync dp83867_phy_rest
  2024-05-23 14:40 ` [PATCH 3/3] net: phy: dp83867: sync dp83867_phy_rest Stefan Kerkmann
@ 2024-05-23 14:49   ` Ahmad Fatoum
  0 siblings, 0 replies; 8+ messages in thread
From: Ahmad Fatoum @ 2024-05-23 14:49 UTC (permalink / raw)
  To: Stefan Kerkmann, Sascha Hauer, BAREBOX

On 23.05.24 16:40, Stefan Kerkmann wrote:
> This is a port of the `dp83867_phy_reset` function at the state of linux
> commit a129b41fe0a8b4da828c46b10f5244ca07a3fec3 ("Revert "net: phy:
> dp83867: perform soft reset and retain established link"). Which
> performs a reset before starting the initial configuration.
> 
> It is a refactoring of commit 095cd32961aab64cfe72941ce43d99876852e12b
> ("net: phy: dp83867: reset PHY on probe") which already ported parts of
> the function, but diverted from the upstream implementation.

Even if it doesn't matter for your original issue, the DP83867_DSP_FFE_CFG
configuration you import looks like a good thing to have.

> Signed-off-by: Stefan Kerkmann <s.kerkmann@pengutronix.de>

Reviewed-by: Ahmad Fatoum <a.fatoum@pengutronix.de>

> ---
>  drivers/net/phy/dp83867.c | 28 ++++++++++++++++++++++------
>  1 file changed, 22 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/net/phy/dp83867.c b/drivers/net/phy/dp83867.c
> index aefc651489..3c9a8e6355 100644
> --- a/drivers/net/phy/dp83867.c
> +++ b/drivers/net/phy/dp83867.c
> @@ -362,8 +362,6 @@ static int dp83867_of_init(struct phy_device *phydev)
>  	return 0;
>  }
>  
> -static int dp83867_phy_reset(struct phy_device *phydev); /* see below */
> -
>  static int dp83867_probe(struct phy_device *phydev)
>  {
>  	struct dp83867_private *dp83867;
> @@ -372,8 +370,6 @@ static int dp83867_probe(struct phy_device *phydev)
>  
>  	phydev->priv = dp83867;
>  
> -	dp83867_phy_reset(phydev);
> -
>  	return dp83867_of_init(phydev);
>  }
>  
> @@ -571,14 +567,33 @@ static int dp83867_phy_reset(struct phy_device *phydev)
>  {
>  	int err;
>  
> +	err = phy_write(phydev, DP83867_CTRL, DP83867_SW_RESET);
> +	if (err < 0)
> +		return err;
> +
> +	udelay(20);
> +
> +	err = phy_modify(phydev, MII_DP83867_PHYCTRL,
> +			 DP83867_PHYCR_FORCE_LINK_GOOD, 0);
> +	if (err < 0)
> +		return err;
> +
> +	/* Configure the DSP Feedforward Equalizer Configuration register to
> +	 * improve short cable (< 1 meter) performance. This will not affect
> +	 * long cable performance.
> +	 */
> +	err = phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_DSP_FFE_CFG,
> +			    0x0e81);
> +	if (err < 0)
> +		return err;
> +
>  	err = phy_write(phydev, DP83867_CTRL, DP83867_SW_RESTART);
>  	if (err < 0)
>  		return err;
>  
>  	udelay(20);
>  
> -	return phy_modify(phydev, MII_DP83867_PHYCTRL,
> -			 DP83867_PHYCR_FORCE_LINK_GOOD, 0);
> +	return 0;
>  }
>  
>  static struct phy_driver dp83867_driver[] = {
> @@ -590,6 +605,7 @@ static struct phy_driver dp83867_driver[] = {
>  
>  		.probe          = dp83867_probe,
>  		.config_init	= dp83867_config_init,
> +		.soft_reset	= dp83867_phy_reset,
>  
>  		.read_status	= dp83867_read_status,
>  	},
> 

-- 
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 0/3] net: phy: dp83867: sync dp83867_phy_reset
  2024-05-23 14:40 [PATCH 0/3] net: phy: dp83867: sync dp83867_phy_reset Stefan Kerkmann
                   ` (2 preceding siblings ...)
  2024-05-23 14:40 ` [PATCH 3/3] net: phy: dp83867: sync dp83867_phy_rest Stefan Kerkmann
@ 2024-05-24  9:15 ` Sascha Hauer
  3 siblings, 0 replies; 8+ messages in thread
From: Sascha Hauer @ 2024-05-24  9:15 UTC (permalink / raw)
  To: BAREBOX, Stefan Kerkmann


On Thu, 23 May 2024 16:40:27 +0200, Stefan Kerkmann wrote:
> I ran into the same problem as Roland with this Phy driver and missed
> the fix that landed in 095cd32961aab64cfe72941ce43d99876852e12b ("net:
> phy: dp83867: reset PHY on probe"). I'm still submitting this series as
> a refactoring of the fix - with the goal of being closer to the upstream
> Linux implementation.
> 
> 
> [...]

Applied, thanks!

[1/3] net: phy: allow PHY drivers to implement their own software reset
      https://git.pengutronix.de/cgit/barebox/commit/?id=bca02a0f549f (link may not be stable)
[2/3] net: phy: document core PHY structures
      https://git.pengutronix.de/cgit/barebox/commit/?id=7fb2f20dc854 (link may not be stable)
[3/3] net: phy: dp83867: sync dp83867_phy_rest
      https://git.pengutronix.de/cgit/barebox/commit/?id=adde7a0344ac (link may not be stable)

Best regards,
-- 
Sascha Hauer <s.hauer@pengutronix.de>




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

end of thread, other threads:[~2024-05-24  9:16 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-05-23 14:40 [PATCH 0/3] net: phy: dp83867: sync dp83867_phy_reset Stefan Kerkmann
2024-05-23 14:40 ` [PATCH 1/3] net: phy: allow PHY drivers to implement their own software reset Stefan Kerkmann
2024-05-23 14:46   ` Ahmad Fatoum
2024-05-23 14:40 ` [PATCH 2/3] net: phy: document core PHY structures Stefan Kerkmann
2024-05-23 14:47   ` Ahmad Fatoum
2024-05-23 14:40 ` [PATCH 3/3] net: phy: dp83867: sync dp83867_phy_rest Stefan Kerkmann
2024-05-23 14:49   ` Ahmad Fatoum
2024-05-24  9:15 ` [PATCH 0/3] net: phy: dp83867: sync dp83867_phy_reset Sascha Hauer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox