Re: [PATCH 1/3] net: stmmac: explicitly deassert GMAC_AHB_RESET
From: Matthew Hagan <hidden>
Date: 2021-06-06 09:37:40
Also in:
linux-arm-msm, linux-devicetree, lkml, netdev
On 06/06/2021 04:24, Bjorn Andersson wrote:
On Sat 05 Jun 12:35 CDT 2021, Matthew Hagan wrote:quoted
We are currently assuming that GMAC_AHB_RESET will already be deasserted by the bootloader. However if this has not been done, probing of the GMAC will fail. To remedy this we must ensure GMAC_AHB_RESET has been deasserted prior to probing.Sounds good, just some small style comments below.quoted
Signed-off-by: Matthew Hagan <redacted> --- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 7 +++++++ drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 7 +++++++ include/linux/stmmac.h | 1 + 3 files changed, 15 insertions(+)diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 6d41dd6f9f7a..1e28058b65a8 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c@@ -6840,6 +6840,13 @@ int stmmac_dvr_probe(struct device *device, reset_control_reset(priv->plat->stmmac_rst); } + if (priv->plat->stmmac_ahb_rst) {You don't need this conditional, stmmac_ahb_rst will be NULL if not specified and you can reset_control_deassert(NULL) without any problems.quoted
+ ret = reset_control_deassert(priv->plat->stmmac_ahb_rst); + if (ret == -ENOTSUPP) + dev_err(priv->device, + "unable to bring out of ahb reset\n");No need to wrap this line.quoted
+ } + /* Init MAC and get the capabilities */ ret = stmmac_hw_init(priv); if (ret)diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c index 97a1fedcc9ac..d8ae58bdbbe3 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c@@ -600,6 +600,13 @@ stmmac_probe_config_dt(struct platform_device *pdev, u8 *mac) goto error_hw_init; } + plat->stmmac_ahb_rst = devm_reset_control_get_optional_shared( + &pdev->dev, "ahb"); + if (IS_ERR(plat->stmmac_ahb_rst)) { + ret = plat->stmmac_ahb_rst;You need a PTR_ERR() around the plat->stmmac_ahb_rst. Regards, Bjornquoted
+ goto error_hw_init; + } + return plat; error_hw_init:diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h index e55a4807e3ea..9b6a64f3e3dc 100644 --- a/include/linux/stmmac.h +++ b/include/linux/stmmac.h@@ -239,6 +239,7 @@ struct plat_stmmacenet_data { unsigned int mult_fact_100ns; s32 ptp_max_adj; struct reset_control *stmmac_rst; + struct reset_control *stmmac_ahb_rst; struct stmmac_axi *axi; int has_gmac4; bool has_sun8i;-- 2.26.3
Thanks for the review. Will submit a v2 shortly. Matthew _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel