All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Tomer Maimon <tmaimon77@gmail.com>
Cc: alexandre.torgue@foss.st.com, tali.perry1@gmail.com,
	edumazet@google.com, krzysztof.kozlowski+dt@linaro.org,
	linux-stm32@st-md-mailman.stormreply.com,
	benjaminfair@google.com, openbmc@lists.ozlabs.org,
	joabreu@synopsys.com, joel@jms.id.au, devicetree@vger.kernel.org,
	j.neuschaefer@gmx.net, robh+dt@kernel.org,
	peppe.cavallaro@st.com, linux-arm-kernel@lists.infradead.org,
	avifishman70@gmail.com, venture@google.com,
	linux-kernel@vger.kernel.org, mcoquelin.stm32@gmail.com,
	netdev@vger.kernel.org, davem@davemloft.net
Subject: Re: [PATCH v1 2/2] net: stmmac: Add NPCM support
Date: Tue, 21 Nov 2023 15:45:11 +0000	[thread overview]
Message-ID: <ZVzQh9ykusyknGgP@shell.armlinux.org.uk> (raw)
In-Reply-To: <20231121151733.2015384-3-tmaimon77@gmail.com>

On Tue, Nov 21, 2023 at 05:17:33PM +0200, Tomer Maimon wrote:
> Add Nuvoton NPCM BMC SoCs support to STMMAC dwmac driver.
> 
> And modify MAINTAINERS to add a new F: entry for this driver.
> 
> Signed-off-by: Tomer Maimon <tmaimon77@gmail.com>

A few comments on this...

> +#define IND_AC_BA_REG		0x1FE
> +#define SR_MII_CTRL		0x3E0000
> +
> +#define PCS_SR_MII_CTRL_REG	0x0
> +#define PCS_SPEED_SELECT6	BIT(6)
> +#define PCS_AN_ENABLE		BIT(12)
> +#define PCS_SPEED_SELECT13	BIT(13)
> +#define PCS_RST			BIT(15)

include/uapi/linux/mii.h:

#define BMCR_SPEED1000          0x0040  /* MSB of Speed (1000)         */
#define BMCR_ANENABLE           0x1000  /* Enable auto negotiation     */
#define BMCR_SPEED100           0x2000  /* Select 100Mbps              */
#define BMCR_RESET              0x8000  /* Reset to default state      */

Look familiar? Maybe use the standard definitions for a standardised
register?

> +void npcm_dwmac_pcs_init(struct npcm_dwmac *dwmac, struct device *dev,
> +			 struct plat_stmmacenet_data *plat_dat)
> +{
> +	u16 val;
> +
> +	iowrite16((u16)(SR_MII_CTRL >> 9), dwmac->reg + IND_AC_BA_REG);
> +	val = ioread16(dwmac->reg + PCS_SR_MII_CTRL_REG);
> +	val |= PCS_RST;
> +	iowrite16(val, dwmac->reg + PCS_SR_MII_CTRL_REG);
> +
> +	while (val & PCS_RST)
> +		val = ioread16(dwmac->reg + PCS_SR_MII_CTRL_REG);

What if the PCS never clears its reset bit? Maybe use
read_poll_timeout() ?

> +
> +	val &= ~(PCS_AN_ENABLE);
> +	iowrite16(val, dwmac->reg + PCS_SR_MII_CTRL_REG);
> +}

Also, maybe it's time to require new stmmac platform support to start
making use of the phylink PCS support rather than continuing to code its
own?

I notice, however, that you always disable inband signalling - please
explain why. Also, what protocol does the PCS use when communicating
with the PHY?

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!

WARNING: multiple messages have this Message-ID (diff)
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Tomer Maimon <tmaimon77@gmail.com>
Cc: davem@davemloft.net, edumazet@google.com, robh+dt@kernel.org,
	krzysztof.kozlowski+dt@linaro.org, alexandre.torgue@foss.st.com,
	peppe.cavallaro@st.com, joabreu@synopsys.com,
	mcoquelin.stm32@gmail.com, avifishman70@gmail.com,
	tali.perry1@gmail.com, joel@jms.id.au,
	andrew@codeconstruct.com.au, venture@google.com,
	yuenn@google.com, benjaminfair@google.com, j.neuschaefer@gmx.net,
	openbmc@lists.ozlabs.org, netdev@vger.kernel.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-stm32@st-md-mailman.stormreply.com,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v1 2/2] net: stmmac: Add NPCM support
Date: Tue, 21 Nov 2023 15:45:11 +0000	[thread overview]
Message-ID: <ZVzQh9ykusyknGgP@shell.armlinux.org.uk> (raw)
In-Reply-To: <20231121151733.2015384-3-tmaimon77@gmail.com>

On Tue, Nov 21, 2023 at 05:17:33PM +0200, Tomer Maimon wrote:
> Add Nuvoton NPCM BMC SoCs support to STMMAC dwmac driver.
> 
> And modify MAINTAINERS to add a new F: entry for this driver.
> 
> Signed-off-by: Tomer Maimon <tmaimon77@gmail.com>

A few comments on this...

> +#define IND_AC_BA_REG		0x1FE
> +#define SR_MII_CTRL		0x3E0000
> +
> +#define PCS_SR_MII_CTRL_REG	0x0
> +#define PCS_SPEED_SELECT6	BIT(6)
> +#define PCS_AN_ENABLE		BIT(12)
> +#define PCS_SPEED_SELECT13	BIT(13)
> +#define PCS_RST			BIT(15)

include/uapi/linux/mii.h:

#define BMCR_SPEED1000          0x0040  /* MSB of Speed (1000)         */
#define BMCR_ANENABLE           0x1000  /* Enable auto negotiation     */
#define BMCR_SPEED100           0x2000  /* Select 100Mbps              */
#define BMCR_RESET              0x8000  /* Reset to default state      */

Look familiar? Maybe use the standard definitions for a standardised
register?

> +void npcm_dwmac_pcs_init(struct npcm_dwmac *dwmac, struct device *dev,
> +			 struct plat_stmmacenet_data *plat_dat)
> +{
> +	u16 val;
> +
> +	iowrite16((u16)(SR_MII_CTRL >> 9), dwmac->reg + IND_AC_BA_REG);
> +	val = ioread16(dwmac->reg + PCS_SR_MII_CTRL_REG);
> +	val |= PCS_RST;
> +	iowrite16(val, dwmac->reg + PCS_SR_MII_CTRL_REG);
> +
> +	while (val & PCS_RST)
> +		val = ioread16(dwmac->reg + PCS_SR_MII_CTRL_REG);

What if the PCS never clears its reset bit? Maybe use
read_poll_timeout() ?

> +
> +	val &= ~(PCS_AN_ENABLE);
> +	iowrite16(val, dwmac->reg + PCS_SR_MII_CTRL_REG);
> +}

Also, maybe it's time to require new stmmac platform support to start
making use of the phylink PCS support rather than continuing to code its
own?

I notice, however, that you always disable inband signalling - please
explain why. Also, what protocol does the PCS use when communicating
with the PHY?

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Tomer Maimon <tmaimon77@gmail.com>
Cc: davem@davemloft.net, edumazet@google.com, robh+dt@kernel.org,
	krzysztof.kozlowski+dt@linaro.org, alexandre.torgue@foss.st.com,
	peppe.cavallaro@st.com, joabreu@synopsys.com,
	mcoquelin.stm32@gmail.com, avifishman70@gmail.com,
	tali.perry1@gmail.com, joel@jms.id.au,
	andrew@codeconstruct.com.au, venture@google.com,
	yuenn@google.com, benjaminfair@google.com, j.neuschaefer@gmx.net,
	openbmc@lists.ozlabs.org, netdev@vger.kernel.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-stm32@st-md-mailman.stormreply.com,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v1 2/2] net: stmmac: Add NPCM support
Date: Tue, 21 Nov 2023 15:45:11 +0000	[thread overview]
Message-ID: <ZVzQh9ykusyknGgP@shell.armlinux.org.uk> (raw)
In-Reply-To: <20231121151733.2015384-3-tmaimon77@gmail.com>

On Tue, Nov 21, 2023 at 05:17:33PM +0200, Tomer Maimon wrote:
> Add Nuvoton NPCM BMC SoCs support to STMMAC dwmac driver.
> 
> And modify MAINTAINERS to add a new F: entry for this driver.
> 
> Signed-off-by: Tomer Maimon <tmaimon77@gmail.com>

A few comments on this...

> +#define IND_AC_BA_REG		0x1FE
> +#define SR_MII_CTRL		0x3E0000
> +
> +#define PCS_SR_MII_CTRL_REG	0x0
> +#define PCS_SPEED_SELECT6	BIT(6)
> +#define PCS_AN_ENABLE		BIT(12)
> +#define PCS_SPEED_SELECT13	BIT(13)
> +#define PCS_RST			BIT(15)

include/uapi/linux/mii.h:

#define BMCR_SPEED1000          0x0040  /* MSB of Speed (1000)         */
#define BMCR_ANENABLE           0x1000  /* Enable auto negotiation     */
#define BMCR_SPEED100           0x2000  /* Select 100Mbps              */
#define BMCR_RESET              0x8000  /* Reset to default state      */

Look familiar? Maybe use the standard definitions for a standardised
register?

> +void npcm_dwmac_pcs_init(struct npcm_dwmac *dwmac, struct device *dev,
> +			 struct plat_stmmacenet_data *plat_dat)
> +{
> +	u16 val;
> +
> +	iowrite16((u16)(SR_MII_CTRL >> 9), dwmac->reg + IND_AC_BA_REG);
> +	val = ioread16(dwmac->reg + PCS_SR_MII_CTRL_REG);
> +	val |= PCS_RST;
> +	iowrite16(val, dwmac->reg + PCS_SR_MII_CTRL_REG);
> +
> +	while (val & PCS_RST)
> +		val = ioread16(dwmac->reg + PCS_SR_MII_CTRL_REG);

What if the PCS never clears its reset bit? Maybe use
read_poll_timeout() ?

> +
> +	val &= ~(PCS_AN_ENABLE);
> +	iowrite16(val, dwmac->reg + PCS_SR_MII_CTRL_REG);
> +}

Also, maybe it's time to require new stmmac platform support to start
making use of the phylink PCS support rather than continuing to code its
own?

I notice, however, that you always disable inband signalling - please
explain why. Also, what protocol does the PCS use when communicating
with the PHY?

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!

  reply	other threads:[~2023-11-21 15:53 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-21 15:17 [PATCH v1 0/2] net: stmmac: add NPCM dwmac support Tomer Maimon
2023-11-21 15:17 ` Tomer Maimon
2023-11-21 15:17 ` Tomer Maimon
2023-11-21 15:17 ` [PATCH v1 1/2] dt-bindings: net: Add support NPCM dwmac Tomer Maimon
2023-11-21 15:17   ` Tomer Maimon
2023-11-21 15:17   ` Tomer Maimon
2023-11-21 17:21   ` Krzysztof Kozlowski
2023-11-21 17:21     ` Krzysztof Kozlowski
2023-11-21 15:17 ` [PATCH v1 2/2] net: stmmac: Add NPCM support Tomer Maimon
2023-11-21 15:17   ` Tomer Maimon
2023-11-21 15:17   ` Tomer Maimon
2023-11-21 15:45   ` Russell King (Oracle) [this message]
2023-11-21 15:45     ` Russell King (Oracle)
2023-11-21 15:45     ` Russell King (Oracle)
2023-11-22 17:23     ` Tomer Maimon
2023-11-22 17:23       ` Tomer Maimon
2023-11-22 17:23       ` Tomer Maimon
2023-11-27 15:58       ` Russell King (Oracle)
2023-11-27 15:58         ` Russell King (Oracle)
2023-11-27 15:58         ` Russell King (Oracle)
2023-11-30 17:15         ` Tomer Maimon
2023-11-30 17:15           ` Tomer Maimon
2023-11-30 17:15           ` Tomer Maimon
2023-11-21 16:00   ` Andrew Lunn
2023-11-21 16:00     ` Andrew Lunn
2023-11-21 16:00     ` Andrew Lunn
2023-11-22 17:50     ` Tomer Maimon
2023-11-22 17:50       ` Tomer Maimon
2023-11-22 17:50       ` Tomer Maimon
2023-11-22 18:45       ` Andrew Lunn
2023-11-22 18:45         ` Andrew Lunn
2023-11-22 18:45         ` Andrew Lunn
2023-11-23 13:50         ` Tomer Maimon
2023-11-23 13:50           ` Tomer Maimon
2023-11-23 13:50           ` Tomer Maimon
2023-11-27 15:19           ` Tomer Maimon
2023-11-27 15:19             ` Tomer Maimon
2023-11-27 15:19             ` Tomer Maimon
2023-11-28 23:31             ` Andrew Lunn
2023-11-28 23:31               ` Andrew Lunn
2023-11-28 23:31               ` Andrew Lunn
2023-11-30 17:17               ` Tomer Maimon
2023-11-30 17:17                 ` Tomer Maimon
2023-11-30 17:17                 ` Tomer Maimon
2023-11-30 17:26                 ` Andrew Lunn
2023-11-30 17:26                   ` Andrew Lunn
2023-11-30 17:26                   ` Andrew Lunn
2023-11-30 18:25                   ` Tomer Maimon
2023-11-30 18:25                     ` Tomer Maimon
2023-11-30 18:25                     ` Tomer Maimon
2023-11-30 19:59                   ` Serge Semin
2023-11-30 19:59                     ` Serge Semin
2023-11-30 19:59                     ` Serge Semin
2023-11-30 20:34                     ` [Linux-stm32] " Maxime Chevallier
2023-11-30 20:34                       ` Maxime Chevallier
2023-11-30 20:34                       ` Maxime Chevallier
2023-12-01 16:25                       ` Serge Semin
2023-12-01 16:25                         ` Serge Semin
2023-12-01 16:25                         ` Serge Semin
2023-11-22  2:11   ` kernel test robot
2023-11-22  2:11     ` kernel test robot
2023-11-22  2:11     ` kernel test robot
2023-11-22  4:45   ` kernel test robot
2023-11-22  4:45     ` kernel test robot
2023-11-22  4:45     ` kernel test robot

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=ZVzQh9ykusyknGgP@shell.armlinux.org.uk \
    --to=linux@armlinux.org.uk \
    --cc=alexandre.torgue@foss.st.com \
    --cc=avifishman70@gmail.com \
    --cc=benjaminfair@google.com \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=edumazet@google.com \
    --cc=j.neuschaefer@gmx.net \
    --cc=joabreu@synopsys.com \
    --cc=joel@jms.id.au \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-stm32@st-md-mailman.stormreply.com \
    --cc=mcoquelin.stm32@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=openbmc@lists.ozlabs.org \
    --cc=peppe.cavallaro@st.com \
    --cc=robh+dt@kernel.org \
    --cc=tali.perry1@gmail.com \
    --cc=tmaimon77@gmail.com \
    --cc=venture@google.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.