All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michal Kubiak <michal.kubiak@intel.com>
To: Oleksij Rempel <o.rempel@pengutronix.de>
Cc: "David S. Miller" <davem@davemloft.net>,
	Andrew Lunn <andrew@lunn.ch>, Eric Dumazet <edumazet@google.com>,
	Florian Fainelli <f.fainelli@gmail.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	"Woojung Huh" <woojung.huh@microchip.com>,
	Arun Ramadoss <arun.ramadoss@microchip.com>,
	Heiner Kallweit <hkallweit1@gmail.com>,
	Russell King <linux@armlinux.org.uk>,
	Yuiko Oshino <yuiko.oshino@microchip.com>,
	<kernel@pengutronix.de>, <linux-kernel@vger.kernel.org>,
	<netdev@vger.kernel.org>, <UNGLinuxDriver@microchip.com>
Subject: Re: [PATCH net-next v1 1/1] net: phy: microchip: lan937x: add support for 100BaseTX PHY
Date: Thu, 4 Jul 2024 17:37:02 +0200	[thread overview]
Message-ID: <ZobBnuU0EtcpxQjH@localhost.localdomain> (raw)
In-Reply-To: <20240704135850.3939342-1-o.rempel@pengutronix.de>

On Thu, Jul 04, 2024 at 03:58:50PM +0200, Oleksij Rempel wrote:
> Add support of 100BaseTX PHY build in to LAN9371 and LAN9372 switches.
> 
> Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
> ---
>  drivers/net/phy/microchip_t1.c | 74 ++++++++++++++++++++++++++++++++++
>  1 file changed, 74 insertions(+)
> 
> diff --git a/drivers/net/phy/microchip_t1.c b/drivers/net/phy/microchip_t1.c
> index a35528497a576..c7ca0d04b9e1b 100644
> --- a/drivers/net/phy/microchip_t1.c
> +++ b/drivers/net/phy/microchip_t1.c
> @@ -12,6 +12,7 @@
>  
>  #define PHY_ID_LAN87XX				0x0007c150
>  #define PHY_ID_LAN937X				0x0007c180
> +#define PHY_ID_LAN937X_TX			0x0007c190
>  
>  /* External Register Control Register */
>  #define LAN87XX_EXT_REG_CTL                     (0x14)
> @@ -94,6 +95,10 @@
>  /* SQI defines */
>  #define LAN87XX_MAX_SQI			0x07
>  
> +#define LAN937X_MODE_CTRL_STATUS_REG	0x11
> +#define LAN937X_AUTOMDIX_EN		BIT(7)
> +#define LAN937X_MDI_MODE		BIT(6)
> +
>  #define DRIVER_AUTHOR	"Nisar Sayed <nisar.sayed@microchip.com>"
>  #define DRIVER_DESC	"Microchip LAN87XX/LAN937x T1 PHY driver"
>  
> @@ -860,6 +865,66 @@ static int lan87xx_get_sqi_max(struct phy_device *phydev)
>  	return LAN87XX_MAX_SQI;
>  }
>  
> +static int lan937x_tx_read_status(struct phy_device *phydev)
> +{
> +	int ret;
> +
> +	ret = genphy_read_status(phydev);
> +	if (ret < 0)
> +		return ret;
> +
> +	ret = phy_read(phydev, LAN937X_MODE_CTRL_STATUS_REG);
> +	if (ret < 0)
> +		return ret;
> +
> +	if (ret & LAN937X_AUTOMDIX_EN) {
> +		phydev->mdix_ctrl = ETH_TP_MDI_AUTO;
> +		/* MDI/MDIX status is unknown */
> +		phydev->mdix = ETH_TP_MDI_INVALID;
> +	} else if (ret & LAN937X_MDI_MODE) {
> +		phydev->mdix_ctrl = ETH_TP_MDI_X;
> +		phydev->mdix = ETH_TP_MDI_X;
> +	} else {
> +		phydev->mdix_ctrl = ETH_TP_MDI;
> +		phydev->mdix = ETH_TP_MDI;
> +	}
> +
> +	return 0;
> +}
> +
> +static int lan937x_tx_config_mdix(struct phy_device *phydev, u8 ctrl)
> +{
> +	u16 val;
> +
> +	switch (ctrl) {
> +	case ETH_TP_MDI:
> +		val = 0;
> +		break;
> +	case ETH_TP_MDI_X:
> +		val = LAN937X_MDI_MODE;
> +		break;
> +	case ETH_TP_MDI_AUTO:
> +		val = LAN937X_AUTOMDIX_EN;
> +		break;
> +	default:
> +		return 0;
> +	}
> +
> +	return phy_modify(phydev, LAN937X_MODE_CTRL_STATUS_REG,
> +			  LAN937X_AUTOMDIX_EN | LAN937X_MDI_MODE, val);
> +}
> +
> +static int lan937x_tx_config_aneg(struct phy_device *phydev)
> +{
> +	int ret;
> +
> +	ret = genphy_config_aneg(phydev);
> +	if (ret)
> +		return ret;
> +
> +	return lan937x_tx_config_mdix(phydev, phydev->mdix_ctrl);
> +}
> +
>  static struct phy_driver microchip_t1_phy_driver[] = {
>  	{
>  		PHY_ID_MATCH_MODEL(PHY_ID_LAN87XX),
> @@ -894,6 +959,14 @@ static struct phy_driver microchip_t1_phy_driver[] = {
>  		.get_sqi_max	= lan87xx_get_sqi_max,
>  		.cable_test_start = lan87xx_cable_test_start,
>  		.cable_test_get_status = lan87xx_cable_test_get_status,
> +	},
> +	{
> +		PHY_ID_MATCH_MODEL(PHY_ID_LAN937X_TX),
> +		.name		= "Microchip LAN937x TX",
> +		.suspend	= genphy_suspend,
> +		.resume		= genphy_resume,
> +		.config_aneg	= lan937x_tx_config_aneg,
> +		.read_status	= lan937x_tx_read_status,
>  	}
>  };
>  
> @@ -902,6 +975,7 @@ module_phy_driver(microchip_t1_phy_driver);
>  static struct mdio_device_id __maybe_unused microchip_t1_tbl[] = {
>  	{ PHY_ID_MATCH_MODEL(PHY_ID_LAN87XX) },
>  	{ PHY_ID_MATCH_MODEL(PHY_ID_LAN937X) },
> +	{ PHY_ID_MATCH_MODEL(PHY_ID_LAN937X_TX) },
>  	{ }
>  };
>  
> -- 
> 2.39.2
> 
> 

The patch looks OK.

Thanks,
Reviewed-by: Michal Kubiak <michal.kubiak@intel.com>

  parent reply	other threads:[~2024-07-04 15:37 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-04 13:58 [PATCH net-next v1 1/1] net: phy: microchip: lan937x: add support for 100BaseTX PHY Oleksij Rempel
2024-07-04 14:21 ` Florian Fainelli
2024-07-04 15:37 ` Michal Kubiak [this message]
     [not found] ` <BL0PR11MB29132F1C667E478728BCE4ECE7DE2@BL0PR11MB2913.namprd11.prod.outlook.com>
2024-07-04 19:04   ` Oleksij Rempel
2024-07-04 20:02     ` Woojung.Huh
2024-07-05  6:29       ` Oleksij Rempel
2024-07-08 18:33         ` Woojung.Huh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZobBnuU0EtcpxQjH@localhost.localdomain \
    --to=michal.kubiak@intel.com \
    --cc=UNGLinuxDriver@microchip.com \
    --cc=andrew@lunn.ch \
    --cc=arun.ramadoss@microchip.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=f.fainelli@gmail.com \
    --cc=hkallweit1@gmail.com \
    --cc=kernel@pengutronix.de \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=netdev@vger.kernel.org \
    --cc=o.rempel@pengutronix.de \
    --cc=pabeni@redhat.com \
    --cc=woojung.huh@microchip.com \
    --cc=yuiko.oshino@microchip.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.