All of lore.kernel.org
 help / color / mirror / Atom feed
From: clabbe.montjoie@gmail.com (Corentin Labbe)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 10/10] net: stmmac: dwmac-sun8i: Handle integrated/external MDIOs
Date: Fri, 8 Sep 2017 15:26:32 +0200	[thread overview]
Message-ID: <20170908132632.GA3037@Red> (raw)
In-Reply-To: <20170908130520.GA11248@lunn.ch>

On Fri, Sep 08, 2017 at 03:05:20PM +0200, Andrew Lunn wrote:
> > +#define DWMAC_sUN8I_MDIO_MUX_INTERNAL_ID	0
> > +#define DWMAC_sUN8I_MDIO_MUX_EXTERNAL_ID	1
> >  
> >  /* H3/A64 specific bits */
> >  #define SYSCON_RMII_EN		BIT(13) /* 1: enable RMII (overrides EPIT) */
> > @@ -634,6 +639,76 @@ static int sun8i_dwmac_reset(struct stmmac_priv *priv)
> >  	return 0;
> >  }
> >  
> > +/* MDIO multiplexing switch function
> > + * This function is called by the mdio-mux layer when it thinks the mdio bus
> > + * multiplexer needs to switch.
> > + * 'current_child' is the current value of the mux register
> > + * 'desired_child' is the value of the 'reg' property of the target child MDIO
> > + * node.
> > + * The first time this function is called, current_child == -1.
> > + * If current_child == desired_child, then the mux is already set to the
> > + * correct bus.
> > + *
> > + * Note that we do not use reg/mask like mdio-mux-mmioreg because we need to
> > + * know easily which bus is used (reset must be done only for desired bus).
> > + */
> > +static int mdio_mux_syscon_switch_fn(int current_child, int desired_child,
> > +				     void *data)
> > +{
> > +	struct stmmac_priv *priv = data;
> > +	struct sunxi_priv_data *gmac = priv->plat->bsp_priv;
> > +	u32 reg, val;
> > +	int ret = 0;
> > +	bool need_reset = false;
> > +
> > +	if (current_child ^ desired_child) {
> > +		regmap_read(gmac->regmap, SYSCON_EMAC_REG, &reg);
> > +		switch (desired_child) {
> > +		case DWMAC_sUN8I_MDIO_MUX_INTERNAL_ID:
> > +			dev_info(priv->device, "Switch mux to internal PHY");
> > +			val = (reg & ~H3_EPHY_MUX_MASK) | H3_EPHY_SELECT;
> > +			if (gmac->use_internal_phy)
> > +				need_reset = true;
> > +			break;
> 
> This i don't get. Why do you need use_internal_phy? Isn't that
> implicit from DWMAC_sUN8I_MDIO_MUX_INTERNAL_ID? Is it even possible to
> use an external PHY on the internal MDIO bus?
> 

On my H3 box with external PHY, the MDIO mux library first select (for scan ?) the internal MDIO.
Without use_internal_phy usage, this board will launch a reset to use the internal MDIO... and this reset timeout/fail.
After the MDIO mux select the external MDIO.

> > +		case DWMAC_sUN8I_MDIO_MUX_EXTERNAL_ID:
> > +			dev_info(priv->device, "Switch mux to external PHY");
> > +			val = (reg & ~H3_EPHY_MUX_MASK) | H3_EPHY_SHUTDOWN;
> > +			if (!gmac->use_internal_phy)
> > +				need_reset = true;
> > +			break;
> 
> And is it possible to use the internal PHY on the external bus?
> 

I need to check that.

Regards

WARNING: multiple messages have this Message-ID (diff)
From: Corentin Labbe <clabbe.montjoie@gmail.com>
To: Andrew Lunn <andrew@lunn.ch>
Cc: robh+dt@kernel.org, mark.rutland@arm.com,
	maxime.ripard@free-electrons.com, wens@csie.org,
	linux@armlinux.org.uk, catalin.marinas@arm.com,
	will.deacon@arm.com, peppe.cavallaro@st.com,
	alexandre.torgue@st.com, f.fainelli@gmail.com,
	netdev@vger.kernel.org, devicetree@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v5 10/10] net: stmmac: dwmac-sun8i: Handle integrated/external MDIOs
Date: Fri, 8 Sep 2017 15:26:32 +0200	[thread overview]
Message-ID: <20170908132632.GA3037@Red> (raw)
In-Reply-To: <20170908130520.GA11248@lunn.ch>

On Fri, Sep 08, 2017 at 03:05:20PM +0200, Andrew Lunn wrote:
> > +#define DWMAC_sUN8I_MDIO_MUX_INTERNAL_ID	0
> > +#define DWMAC_sUN8I_MDIO_MUX_EXTERNAL_ID	1
> >  
> >  /* H3/A64 specific bits */
> >  #define SYSCON_RMII_EN		BIT(13) /* 1: enable RMII (overrides EPIT) */
> > @@ -634,6 +639,76 @@ static int sun8i_dwmac_reset(struct stmmac_priv *priv)
> >  	return 0;
> >  }
> >  
> > +/* MDIO multiplexing switch function
> > + * This function is called by the mdio-mux layer when it thinks the mdio bus
> > + * multiplexer needs to switch.
> > + * 'current_child' is the current value of the mux register
> > + * 'desired_child' is the value of the 'reg' property of the target child MDIO
> > + * node.
> > + * The first time this function is called, current_child == -1.
> > + * If current_child == desired_child, then the mux is already set to the
> > + * correct bus.
> > + *
> > + * Note that we do not use reg/mask like mdio-mux-mmioreg because we need to
> > + * know easily which bus is used (reset must be done only for desired bus).
> > + */
> > +static int mdio_mux_syscon_switch_fn(int current_child, int desired_child,
> > +				     void *data)
> > +{
> > +	struct stmmac_priv *priv = data;
> > +	struct sunxi_priv_data *gmac = priv->plat->bsp_priv;
> > +	u32 reg, val;
> > +	int ret = 0;
> > +	bool need_reset = false;
> > +
> > +	if (current_child ^ desired_child) {
> > +		regmap_read(gmac->regmap, SYSCON_EMAC_REG, &reg);
> > +		switch (desired_child) {
> > +		case DWMAC_sUN8I_MDIO_MUX_INTERNAL_ID:
> > +			dev_info(priv->device, "Switch mux to internal PHY");
> > +			val = (reg & ~H3_EPHY_MUX_MASK) | H3_EPHY_SELECT;
> > +			if (gmac->use_internal_phy)
> > +				need_reset = true;
> > +			break;
> 
> This i don't get. Why do you need use_internal_phy? Isn't that
> implicit from DWMAC_sUN8I_MDIO_MUX_INTERNAL_ID? Is it even possible to
> use an external PHY on the internal MDIO bus?
> 

On my H3 box with external PHY, the MDIO mux library first select (for scan ?) the internal MDIO.
Without use_internal_phy usage, this board will launch a reset to use the internal MDIO... and this reset timeout/fail.
After the MDIO mux select the external MDIO.

> > +		case DWMAC_sUN8I_MDIO_MUX_EXTERNAL_ID:
> > +			dev_info(priv->device, "Switch mux to external PHY");
> > +			val = (reg & ~H3_EPHY_MUX_MASK) | H3_EPHY_SHUTDOWN;
> > +			if (!gmac->use_internal_phy)
> > +				need_reset = true;
> > +			break;
> 
> And is it possible to use the internal PHY on the external bus?
> 

I need to check that.

Regards

  reply	other threads:[~2017-09-08 13:26 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-08  7:11 [PATCH v5 00/10] net: stmmac: dwmac-sun8i: Handle integrated PHY Corentin Labbe
2017-09-08  7:11 ` Corentin Labbe
2017-09-08  7:11 ` Corentin Labbe
2017-09-08  7:11 ` [PATCH v5 01/10] arm64: dts: allwinner: Restore EMAC changes Corentin Labbe
2017-09-08  7:11   ` Corentin Labbe
2017-09-08  7:11   ` Corentin Labbe
2017-09-08  7:19   ` Maxime Ripard
2017-09-08  7:19     ` Maxime Ripard
2017-09-08  7:36     ` Corentin Labbe
2017-09-08  7:36       ` Corentin Labbe
2017-09-08  7:36       ` Corentin Labbe
2017-09-08  7:39       ` Chen-Yu Tsai
2017-09-08  7:39         ` Chen-Yu Tsai
2017-09-10 18:56         ` Corentin Labbe
2017-09-10 18:56           ` Corentin Labbe
2017-09-10 18:56           ` Corentin Labbe
2017-09-08  7:11 ` [PATCH v5 02/10] dt-bindings: net: Restore sun8i dwmac binding Corentin Labbe
2017-09-08  7:11   ` Corentin Labbe
2017-09-13 18:07   ` Rob Herring
2017-09-13 18:07     ` Rob Herring
2017-09-14 18:31     ` Corentin Labbe
2017-09-14 18:31       ` Corentin Labbe
2017-09-08  7:11 ` [PATCH v5 03/10] arm: dts: sunxi: Restore EMAC changes Corentin Labbe
2017-09-08  7:11   ` Corentin Labbe
2017-09-08  7:11 ` [PATCH v5 04/10] net: stmmac: sun8i: Restore the compatibles Corentin Labbe
2017-09-08  7:11   ` Corentin Labbe
2017-09-08  7:11   ` Corentin Labbe
2017-09-08  7:11 ` [PATCH v5 05/10] dt-bindings: net: dwmac-sun8i: update documentation about integrated PHY Corentin Labbe
2017-09-08  7:11   ` Corentin Labbe
2017-09-08  7:25   ` Maxime Ripard
2017-09-08  7:25     ` Maxime Ripard
2017-09-08  7:25     ` Maxime Ripard
2017-09-08  7:43     ` Corentin Labbe
2017-09-08  7:43       ` Corentin Labbe
2017-09-08  7:43       ` Corentin Labbe
2017-09-13 18:20       ` Rob Herring
2017-09-13 18:20         ` Rob Herring
2017-09-13 18:20         ` Rob Herring
2017-09-14 18:53         ` Corentin Labbe
2017-09-14 18:53           ` Corentin Labbe
2017-09-14 18:53           ` Corentin Labbe
2017-09-14 19:19           ` Andrew Lunn
2017-09-14 19:19             ` Andrew Lunn
2017-09-19  5:31             ` Corentin Labbe
2017-09-19  5:31               ` Corentin Labbe
2017-09-19  5:31               ` Corentin Labbe
2017-09-19  5:31               ` Corentin Labbe
2017-09-20  2:49             ` Rob Herring
2017-09-20  2:49               ` Rob Herring
2017-09-20  2:49               ` Rob Herring
2017-09-20 18:23               ` Corentin Labbe
2017-09-20 18:23                 ` Corentin Labbe
2017-09-08  7:11 ` [PATCH v5 06/10] ARM: dts: sunxi: h3/h5: represent the mdio switch used by sun8i-h3-emac Corentin Labbe
2017-09-08  7:11   ` Corentin Labbe
2017-09-08  7:11 ` [PATCH v5 07/10] arm64: dts: allwinner: add snps, dwmac-mdio compatible to emac/mdio Corentin Labbe
2017-09-08  7:11   ` [PATCH v5 07/10] arm64: dts: allwinner: add snps,dwmac-mdio " Corentin Labbe
2017-09-08  7:11 ` [PATCH v5 08/10] net: stmmac: dwmac-sun8i: choose internal PHY via phy-is-integrated Corentin Labbe
2017-09-08  7:11   ` Corentin Labbe
2017-09-08  7:11 ` [PATCH v5 09/10] net: stmmac: snps, dwmac-mdio MDIOs are automatically registered Corentin Labbe
2017-09-08  7:11   ` [PATCH v5 09/10] net: stmmac: snps,dwmac-mdio " Corentin Labbe
2017-09-08  7:11 ` [PATCH v5 10/10] net: stmmac: dwmac-sun8i: Handle integrated/external MDIOs Corentin Labbe
2017-09-08  7:11   ` Corentin Labbe
2017-09-08 13:05   ` Andrew Lunn
2017-09-08 13:05     ` Andrew Lunn
2017-09-08 13:26     ` Corentin Labbe [this message]
2017-09-08 13:26       ` Corentin Labbe
2017-09-08 14:00       ` Andrew Lunn
2017-09-08 14:00         ` Andrew Lunn
2017-09-08 14:00         ` Andrew Lunn
2017-09-08 14:08         ` Corentin Labbe
2017-09-08 14:08           ` Corentin Labbe
2017-09-08 14:08           ` Corentin Labbe
2017-09-08 14:17           ` Andrew Lunn
2017-09-08 14:17             ` Andrew Lunn
2017-09-08 14:28             ` Corentin Labbe
2017-09-08 14:28               ` Corentin Labbe
2017-09-11 16:11               ` Andrew Lunn
2017-09-11 16:11                 ` Andrew Lunn
2017-09-11 19:08                 ` Corentin Labbe
2017-09-11 19:08                   ` Corentin Labbe
2017-09-11 20:19                   ` Andrew Lunn
2017-09-11 20:19                     ` Andrew Lunn
2017-09-11 20:19                     ` Andrew Lunn
2017-09-12  7:54                     ` Corentin Labbe
2017-09-12  7:54                       ` Corentin Labbe

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=20170908132632.GA3037@Red \
    --to=clabbe.montjoie@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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.