All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Heiko Stübner" <heiko@sntech.de>
To: Ezequiel Garcia <ezequiel@collabora.com>,
	Chen-Yu Tsai <wens213@gmail.com>
Cc: Peter Geis <pgwipeout@gmail.com>,
	Linux Kernel Network Developers <netdev@vger.kernel.org>,
	"open list:ARM/Rockchip SoC..."
	<linux-rockchip@lists.infradead.org>,
	Jose Abreu <joabreu@synopsys.com>,
	"David S . Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>,
	David Wu <david.wu@rock-chips.com>,
	kernel@collabora.com
Subject: Re: [PATCH net-next 3/3] net: stmmac: Add RK3566/RK3568 SoC support
Date: Wed, 14 Apr 2021 18:35:41 +0200	[thread overview]
Message-ID: <11053800.MucGe3eQFb@diego> (raw)
In-Reply-To: <CAGb2v67ZBR=XDFPeXQc429HNu_dbY__-KN50tvBW44fXMs78_w@mail.gmail.com>

Am Mittwoch, 14. April 2021, 18:33:12 CEST schrieb Chen-Yu Tsai:
> On Thu, Apr 15, 2021 at 12:14 AM Ezequiel Garcia <ezequiel@collabora.com> wrote:
> >
> > Hi Peter, Heiko,
> >
> > On Wed, 2021-04-14 at 13:15 +0200, Heiko Stübner wrote:
> > > Am Mittwoch, 14. April 2021, 13:03:25 CEST schrieb Peter Geis:
> > > > On Tue, Apr 13, 2021 at 7:37 PM Ezequiel Garcia <ezequiel@collabora.com> wrote:
> > > > > > > +static void rk3566_set_to_rmii(struct rk_priv_data *bsp_priv)
> > > > > > > +{
> > > > > > > +       struct device *dev = &bsp_priv->pdev->dev;
> > > > > > > +
> > > > > > > +       if (IS_ERR(bsp_priv->grf)) {
> > > > > > > +               dev_err(dev, "%s: Missing rockchip,grf property\n", __func__);
> > > > > > > +               return;
> > > > > > > +       }
> > > > > > > +
> > > > > > > +       regmap_write(bsp_priv->grf, RK3568_GRF_GMAC1_CON1,
> > > > > > > +                    RK3568_GMAC_PHY_INTF_SEL_RMII);
> > > > > > > +}
> > > > > > > +
> > > > > > > +static void rk3568_set_to_rgmii(struct rk_priv_data *bsp_priv,
> > > > > > > +                               int tx_delay, int rx_delay)
> > > > > > > +{
> > > > > > > +       struct device *dev = &bsp_priv->pdev->dev;
> > > > > > > +
> > > > > > > +       if (IS_ERR(bsp_priv->grf)) {
> > > > > > > +               dev_err(dev, "Missing rockchip,grf property\n");
> > > > > > > +               return;
> > > > > > > +       }
> > > > > > > +
> > > > > > > +       regmap_write(bsp_priv->grf, RK3568_GRF_GMAC0_CON1,
> > > > > > > +                    RK3568_GMAC_PHY_INTF_SEL_RGMII |
> > > > > > > +                    RK3568_GMAC_RXCLK_DLY_ENABLE |
> > > > > > > +                    RK3568_GMAC_TXCLK_DLY_ENABLE);
> > > > > > > +
> > > > > > > +       regmap_write(bsp_priv->grf, RK3568_GRF_GMAC0_CON0,
> > > > > > > +                    RK3568_GMAC_CLK_RX_DL_CFG(rx_delay) |
> > > > > > > +                    RK3568_GMAC_CLK_TX_DL_CFG(tx_delay));
> > > > > > > +
> > > > > > > +       regmap_write(bsp_priv->grf, RK3568_GRF_GMAC1_CON1,
> > > > > > > +                    RK3568_GMAC_PHY_INTF_SEL_RGMII |
> > > > > > > +                    RK3568_GMAC_RXCLK_DLY_ENABLE |
> > > > > > > +                    RK3568_GMAC_TXCLK_DLY_ENABLE);
> > > > > > > +
> > > > > > > +       regmap_write(bsp_priv->grf, RK3568_GRF_GMAC1_CON0,
> > > > > > > +                    RK3568_GMAC_CLK_RX_DL_CFG(rx_delay) |
> > > > > > > +                    RK3568_GMAC_CLK_TX_DL_CFG(tx_delay));
> > > > > >
> > > > > > Since there are two GMACs on the rk3568, and either, or, or both may
> > > > > > be enabled in various configurations, we should only configure the
> > > > > > controller we are currently operating.
> > > >
> > > > Perhaps we should have match data (such as reg = <0>, or against the
> > > > address) to identify the individual controllers.
> > >
> > > Hmm, "reg" will be used by the actual mmio address of the controller,
> > > so matching against that should be the way I guess.
> > >
> > > We're already doing something similar for dsi:
> > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c#n1170
> > >
> >
> > I have to admit, I'm not a fan of hardcoding the registers in the kernel.
> >
> > David Wu solved this in the downstream kernel by using bus_id,
> > which parses the devicetree "ethernet@0" node, i.e.:
> >
> >   plat->bus_id = of_alias_get_id(np, "ethernet");
> 
> What happens when one adds another ethernet controller (USB or PCIe) to
> the board and wants to change the numbering order?
> 
> Or maybe only the second ethernet controller is routed on some board
> and the submitter / vendor wants that one to be ethernet0, because
> it's the only usable controller?

Which matches a discussion I had with Arnd about the mmc numbering.
I.e. there the first mmc device is supposed to be mmc0 and so on,
without gaps - for probably the same reasons.


> 
> This seems even more fragile than hardcoding the registers.
> 
> Regards
> ChenYu
> 





WARNING: multiple messages have this Message-ID (diff)
From: "Heiko Stübner" <heiko@sntech.de>
To: Ezequiel Garcia <ezequiel@collabora.com>,
	Chen-Yu Tsai <wens213@gmail.com>
Cc: Peter Geis <pgwipeout@gmail.com>,
	Linux Kernel Network Developers <netdev@vger.kernel.org>,
	"open list:ARM/Rockchip SoC..."
	<linux-rockchip@lists.infradead.org>,
	Jose Abreu <joabreu@synopsys.com>,
	"David S . Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>,
	David Wu <david.wu@rock-chips.com>,
	kernel@collabora.com
Subject: Re: [PATCH net-next 3/3] net: stmmac: Add RK3566/RK3568 SoC support
Date: Wed, 14 Apr 2021 18:35:41 +0200	[thread overview]
Message-ID: <11053800.MucGe3eQFb@diego> (raw)
In-Reply-To: <CAGb2v67ZBR=XDFPeXQc429HNu_dbY__-KN50tvBW44fXMs78_w@mail.gmail.com>

Am Mittwoch, 14. April 2021, 18:33:12 CEST schrieb Chen-Yu Tsai:
> On Thu, Apr 15, 2021 at 12:14 AM Ezequiel Garcia <ezequiel@collabora.com> wrote:
> >
> > Hi Peter, Heiko,
> >
> > On Wed, 2021-04-14 at 13:15 +0200, Heiko Stübner wrote:
> > > Am Mittwoch, 14. April 2021, 13:03:25 CEST schrieb Peter Geis:
> > > > On Tue, Apr 13, 2021 at 7:37 PM Ezequiel Garcia <ezequiel@collabora.com> wrote:
> > > > > > > +static void rk3566_set_to_rmii(struct rk_priv_data *bsp_priv)
> > > > > > > +{
> > > > > > > +       struct device *dev = &bsp_priv->pdev->dev;
> > > > > > > +
> > > > > > > +       if (IS_ERR(bsp_priv->grf)) {
> > > > > > > +               dev_err(dev, "%s: Missing rockchip,grf property\n", __func__);
> > > > > > > +               return;
> > > > > > > +       }
> > > > > > > +
> > > > > > > +       regmap_write(bsp_priv->grf, RK3568_GRF_GMAC1_CON1,
> > > > > > > +                    RK3568_GMAC_PHY_INTF_SEL_RMII);
> > > > > > > +}
> > > > > > > +
> > > > > > > +static void rk3568_set_to_rgmii(struct rk_priv_data *bsp_priv,
> > > > > > > +                               int tx_delay, int rx_delay)
> > > > > > > +{
> > > > > > > +       struct device *dev = &bsp_priv->pdev->dev;
> > > > > > > +
> > > > > > > +       if (IS_ERR(bsp_priv->grf)) {
> > > > > > > +               dev_err(dev, "Missing rockchip,grf property\n");
> > > > > > > +               return;
> > > > > > > +       }
> > > > > > > +
> > > > > > > +       regmap_write(bsp_priv->grf, RK3568_GRF_GMAC0_CON1,
> > > > > > > +                    RK3568_GMAC_PHY_INTF_SEL_RGMII |
> > > > > > > +                    RK3568_GMAC_RXCLK_DLY_ENABLE |
> > > > > > > +                    RK3568_GMAC_TXCLK_DLY_ENABLE);
> > > > > > > +
> > > > > > > +       regmap_write(bsp_priv->grf, RK3568_GRF_GMAC0_CON0,
> > > > > > > +                    RK3568_GMAC_CLK_RX_DL_CFG(rx_delay) |
> > > > > > > +                    RK3568_GMAC_CLK_TX_DL_CFG(tx_delay));
> > > > > > > +
> > > > > > > +       regmap_write(bsp_priv->grf, RK3568_GRF_GMAC1_CON1,
> > > > > > > +                    RK3568_GMAC_PHY_INTF_SEL_RGMII |
> > > > > > > +                    RK3568_GMAC_RXCLK_DLY_ENABLE |
> > > > > > > +                    RK3568_GMAC_TXCLK_DLY_ENABLE);
> > > > > > > +
> > > > > > > +       regmap_write(bsp_priv->grf, RK3568_GRF_GMAC1_CON0,
> > > > > > > +                    RK3568_GMAC_CLK_RX_DL_CFG(rx_delay) |
> > > > > > > +                    RK3568_GMAC_CLK_TX_DL_CFG(tx_delay));
> > > > > >
> > > > > > Since there are two GMACs on the rk3568, and either, or, or both may
> > > > > > be enabled in various configurations, we should only configure the
> > > > > > controller we are currently operating.
> > > >
> > > > Perhaps we should have match data (such as reg = <0>, or against the
> > > > address) to identify the individual controllers.
> > >
> > > Hmm, "reg" will be used by the actual mmio address of the controller,
> > > so matching against that should be the way I guess.
> > >
> > > We're already doing something similar for dsi:
> > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c#n1170
> > >
> >
> > I have to admit, I'm not a fan of hardcoding the registers in the kernel.
> >
> > David Wu solved this in the downstream kernel by using bus_id,
> > which parses the devicetree "ethernet@0" node, i.e.:
> >
> >   plat->bus_id = of_alias_get_id(np, "ethernet");
> 
> What happens when one adds another ethernet controller (USB or PCIe) to
> the board and wants to change the numbering order?
> 
> Or maybe only the second ethernet controller is routed on some board
> and the submitter / vendor wants that one to be ethernet0, because
> it's the only usable controller?

Which matches a discussion I had with Arnd about the mmc numbering.
I.e. there the first mmc device is supposed to be mmc0 and so on,
without gaps - for probably the same reasons.


> 
> This seems even more fragile than hardcoding the registers.
> 
> Regards
> ChenYu
> 





_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip

  reply	other threads:[~2021-04-14 16:35 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-13 21:02 [PATCH net-next 0/3] net: stmmac: RK3566/RK3568 Ezequiel Garcia
2021-04-13 21:02 ` Ezequiel Garcia
2021-04-13 21:02 ` [PATCH net-next 1/3] net: stmmac: Don't set has_gmac if has_gmac4 is set Ezequiel Garcia
2021-04-13 21:02   ` Ezequiel Garcia
2021-04-13 21:02 ` [PATCH net-next 2/3] net: stmmac: dwmac-rk: Check platform-specific ops Ezequiel Garcia
2021-04-13 21:02   ` Ezequiel Garcia
2021-04-13 21:02 ` [PATCH net-next 3/3] net: stmmac: Add RK3566/RK3568 SoC support Ezequiel Garcia
2021-04-13 21:02   ` Ezequiel Garcia
2021-04-13 22:51   ` Peter Geis
2021-04-13 22:51     ` Peter Geis
2021-04-13 23:37     ` Ezequiel Garcia
2021-04-14 11:03       ` Peter Geis
2021-04-14 11:03         ` Peter Geis
2021-04-14 11:15         ` Heiko Stübner
2021-04-14 11:15           ` Heiko Stübner
2021-04-14 13:48           ` Ezequiel Garcia
2021-04-14 13:48             ` Ezequiel Garcia
2021-04-14 16:33             ` Chen-Yu Tsai
2021-04-14 16:33               ` Chen-Yu Tsai
2021-04-14 16:35               ` Heiko Stübner [this message]
2021-04-14 16:35                 ` Heiko Stübner
2021-04-14 16:44                 ` Ezequiel Garcia
2021-04-14 16:44                   ` Ezequiel Garcia
2021-04-14 13:48         ` Ezequiel Garcia
2021-04-14 13:48           ` Ezequiel Garcia

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=11053800.MucGe3eQFb@diego \
    --to=heiko@sntech.de \
    --cc=davem@davemloft.net \
    --cc=david.wu@rock-chips.com \
    --cc=ezequiel@collabora.com \
    --cc=joabreu@synopsys.com \
    --cc=kernel@collabora.com \
    --cc=kuba@kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=netdev@vger.kernel.org \
    --cc=pgwipeout@gmail.com \
    --cc=wens213@gmail.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.