From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Swathi K S <swathi.ks@samsung.com>
Cc: krzk+dt@kernel.org, andrew+netdev@lunn.ch, davem@davemloft.net,
edumazet@google.com, kuba@kernel.org, pabeni@redhat.com,
robh@kernel.org, conor+dt@kernel.org, richardcochran@gmail.com,
mcoquelin.stm32@gmail.com, alexandre.torgue@foss.st.com,
netdev@vger.kernel.org, devicetree@vger.kernel.org,
linux-stm32@st-md-mailman.stormreply.com,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, pankaj.dubey@samsung.com,
ravi.patel@samsung.com, gost.dev@samsung.com
Subject: Re: [PATCH v7 2/2] net: stmmac: dwc-qos: Add FSD EQoS support
Date: Thu, 20 Feb 2025 12:39:52 +0000 [thread overview]
Message-ID: <Z7cimPBdZ3W9GKmI@shell.armlinux.org.uk> (raw)
In-Reply-To: <20250220043712.31966-3-swathi.ks@samsung.com>
On Thu, Feb 20, 2025 at 10:07:12AM +0530, Swathi K S wrote:
> +static int fsd_eqos_probe(struct platform_device *pdev,
> + struct plat_stmmacenet_data *data,
> + struct stmmac_resources *res)
> +{
> + struct clk *clk_rx1 = NULL;
> + struct clk *clk_rx2 = NULL;
> +
> + for (int i = 0; i < data->num_clks; i++) {
> + if (strcmp(data->clks[i].id, "slave_bus") == 0)
> + data->stmmac_clk = data->clks[i].clk;
> + else if (strcmp(data->clks[i].id, "eqos_rxclk_mux") == 0)
> + clk_rx1 = data->clks[i].clk;
> + else if (strcmp(data->clks[i].id, "eqos_phyrxclk") == 0)
> + clk_rx2 = data->clks[i].clk;
> + }
> +
> + /* Eth0 RX clock doesn't support MUX */
> + if (clk_rx1)
> + clk_set_parent(clk_rx1, clk_rx2);
Isn't there support in DT for automatically setting the clock tree?
See
https://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/clock/clock.yaml#L24
Also, I think a cleanup like the below (sorry, it's on top of other
patches I'm working on at the moment but could be rebased) would
make sense.
With both of these, this should mean that your changes amount to:
1. making data->probe optional
2. providing a dwc_eth_dwmac_data structure that has .stmmac_clk_name
filled in
3. adding your compatible to the match data with a pointer to the
above structure.
In other words, support for your device becomes just a matter of adding
data structures rather than a chunk of extra code.
Thanks.
8<====
From: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>
Subject: [PATCH net-next] net: stmmac: clean up clock initialisation
Clean up the clock initialisation by providing a helper to find a
named clock in the bulk clocks, and provide the name of the stmmac
clock in match data so we can locate the stmmac clock in generic
code.
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
---
.../stmicro/stmmac/dwmac-dwc-qos-eth.c | 32 +++++++++++--------
1 file changed, 18 insertions(+), 14 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c
index 581c0b40db57..8e343ab7a7e2 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c
@@ -34,6 +34,16 @@ struct tegra_eqos {
struct gpio_desc *reset;
};
+static struct clk *dwc_eth_find_clk(struct plat_stmmacenet_data *plat_dat,
+ const char *name)
+{
+ for (int i = 0; i < plat_dat->num_clks; i++)
+ if (strcmp(plat_dat->clks[i].id, name) == 0)
+ return plat_dat->clks[i].clk;
+
+ return 0;
+}
+
static int dwc_eth_dwmac_config_dt(struct platform_device *pdev,
struct plat_stmmacenet_data *plat_dat)
{
@@ -120,12 +130,7 @@ static int dwc_qos_probe(struct platform_device *pdev,
struct plat_stmmacenet_data *plat_dat,
struct stmmac_resources *stmmac_res)
{
- for (int i = 0; i < plat_dat->num_clks; i++) {
- if (strcmp(plat_dat->clks[i].id, "apb_pclk") == 0)
- plat_dat->stmmac_clk = plat_dat->clks[i].clk;
- else if (strcmp(plat_dat->clks[i].id, "phy_ref_clk") == 0)
- plat_dat->pclk = plat_dat->clks[i].clk;
- }
+ plat_dat->pclk = dwc_eth_find_clk(plat_dat, "phy_ref_clk");
return 0;
}
@@ -230,18 +235,12 @@ static int tegra_eqos_probe(struct platform_device *pdev,
eqos->dev = &pdev->dev;
eqos->regs = res->addr;
+ eqos->clk_slave = data->stmmac_clk;
if (!is_of_node(dev->fwnode))
goto bypass_clk_reset_gpio;
- for (int i = 0; i < data->num_clks; i++) {
- if (strcmp(data->clks[i].id, "slave_bus") == 0) {
- eqos->clk_slave = data->clks[i].clk;
- data->stmmac_clk = eqos->clk_slave;
- } else if (strcmp(data->clks[i].id, "tx") == 0) {
- data->clk_tx_i = data->clks[i].clk;
- }
- }
+ data->clk_tx_i = dwc_eth_find_clk(data, "tx");
eqos->reset = devm_gpiod_get(&pdev->dev, "phy-reset", GPIOD_OUT_HIGH);
if (IS_ERR(eqos->reset)) {
@@ -306,15 +305,18 @@ struct dwc_eth_dwmac_data {
struct plat_stmmacenet_data *data,
struct stmmac_resources *res);
void (*remove)(struct platform_device *pdev);
+ const char *stmmac_clk_name;
};
static const struct dwc_eth_dwmac_data dwc_qos_data = {
.probe = dwc_qos_probe,
+ .stmmac_clk_name = "apb_pclk",
};
static const struct dwc_eth_dwmac_data tegra_eqos_data = {
.probe = tegra_eqos_probe,
.remove = tegra_eqos_remove,
+ .stmmac_clk_name = "slave_bus",
};
static int dwc_eth_dwmac_probe(struct platform_device *pdev)
@@ -354,6 +356,8 @@ static int dwc_eth_dwmac_probe(struct platform_device *pdev)
if (ret)
return dev_err_probe(&pdev->dev, ret, "Failed to enable clocks\n");
+ data->stmmac_clk = dwc_eth_find_clk(plat_dat, data->stmmac_clk_name);
+
ret = data->probe(pdev, plat_dat, &stmmac_res);
if (ret < 0) {
dev_err_probe(&pdev->dev, ret, "failed to probe subdriver\n");
--
2.30.2
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
next prev parent reply other threads:[~2025-02-20 12:40 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20250220044123epcas5p1eb9f906067a6e2585f9e4598653857fd@epcas5p1.samsung.com>
2025-02-20 4:37 ` [PATCH v7 0/2] net: stmmac: dwc-qos: Add FSD EQoS support Swathi K S
[not found] ` <CGME20250220044128epcas5p1484d81bea4377bef4cbe7bc7b9f03713@epcas5p1.samsung.com>
2025-02-20 4:37 ` [PATCH v7 1/2] dt-bindings: net: Add FSD EQoS device tree bindings Swathi K S
2025-02-20 8:21 ` Krzysztof Kozlowski
[not found] ` <CGME20250220044132epcas5p305e4ed7ed1c84f9800299c2091ea0790@epcas5p3.samsung.com>
2025-02-20 4:37 ` [PATCH v7 2/2] net: stmmac: dwc-qos: Add FSD EQoS support Swathi K S
2025-02-20 12:39 ` Russell King (Oracle) [this message]
2025-02-21 10:34 ` Swathi K S
2025-02-21 11:49 ` Russell King (Oracle)
2025-02-21 12:56 ` Swathi K S
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=Z7cimPBdZ3W9GKmI@shell.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=alexandre.torgue@foss.st.com \
--cc=andrew+netdev@lunn.ch \
--cc=conor+dt@kernel.org \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=edumazet@google.com \
--cc=gost.dev@samsung.com \
--cc=krzk+dt@kernel.org \
--cc=kuba@kernel.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=pabeni@redhat.com \
--cc=pankaj.dubey@samsung.com \
--cc=ravi.patel@samsung.com \
--cc=richardcochran@gmail.com \
--cc=robh@kernel.org \
--cc=swathi.ks@samsung.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).