diff mbox series

[net] net: mdio: mscc-miim: Fix the mdio controller

Message ID 20210928071720.2084666-1-horatiu.vultur@microchip.com (mailing list archive)
State Accepted
Commit c6995117b60ef3f7afca8fb41f906e9f459d869a
Delegated to: Netdev Maintainers
Headers show
Series [net] net: mdio: mscc-miim: Fix the mdio controller | expand

Checks

Context Check Description
netdev/cover_letter success Link
netdev/fixes_present success Link
netdev/patch_count success Link
netdev/tree_selection success Clearly marked for net
netdev/subject_prefix success Link
netdev/cc_maintainers success CCed 7 of 7 maintainers
netdev/source_inline success Was 0 now: 0
netdev/verify_signedoff success Link
netdev/module_param success Was 0 now: 0
netdev/build_32bit success Errors and warnings before: 0 this patch: 0
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/verify_fixes success Link
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 28 lines checked
netdev/build_allmodconfig_warn success Errors and warnings before: 0 this patch: 0
netdev/header_inline success Link

Commit Message

Horatiu Vultur Sept. 28, 2021, 7:17 a.m. UTC
According to the documentation the second resource is optional. But the
blamed commit ignores that and if the resource is not there it just
fails.

This patch reverts that to still allow the second resource to be
optional because other SoC have the some MDIO controller and doesn't
need to second resource.

Fixes: 672a1c394950 ("net: mdio: mscc-miim: Make use of the helper function devm_platform_ioremap_resource()")
Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
---
 drivers/net/mdio/mdio-mscc-miim.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

Comments

Cai,Huoqing Sept. 28, 2021, 8:54 a.m. UTC | #1
On 28 9月 21 09:17:20, Horatiu Vultur wrote:
Hi Horatiu,

Thank for your feedback.

I'm sorry for this commit, my mistake.

After I have checked my recent submission history

the commit-
commit fa14d03e014a130839f9dc1b97ea61fe598d873d
drivers/net/mdio/mdio-ipq4019.c 225 line

has the same issue, an optional phy-regs
Are you willing to fix it at the same time:)

Many thanks.

> According to the documentation the second resource is optional. But the
> blamed commit ignores that and if the resource is not there it just
> fails.
> 
> This patch reverts that to still allow the second resource to be
> optional because other SoC have the some MDIO controller and doesn't
> need to second resource.
> 
> Fixes: 672a1c394950 ("net: mdio: mscc-miim: Make use of the helper function devm_platform_ioremap_resource()")
> Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
> ---
>  drivers/net/mdio/mdio-mscc-miim.c | 15 ++++++++++-----
>  1 file changed, 10 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/net/mdio/mdio-mscc-miim.c b/drivers/net/mdio/mdio-mscc-miim.c
> index 1ee592d3eae4..17f98f609ec8 100644
> --- a/drivers/net/mdio/mdio-mscc-miim.c
> +++ b/drivers/net/mdio/mdio-mscc-miim.c
> @@ -134,8 +134,9 @@ static int mscc_miim_reset(struct mii_bus *bus)
>  
>  static int mscc_miim_probe(struct platform_device *pdev)
>  {
> -	struct mii_bus *bus;
>  	struct mscc_miim_dev *dev;
> +	struct resource *res;
> +	struct mii_bus *bus;
>  	int ret;
>  
>  	bus = devm_mdiobus_alloc_size(&pdev->dev, sizeof(*dev));
> @@ -156,10 +157,14 @@ static int mscc_miim_probe(struct platform_device *pdev)
>  		return PTR_ERR(dev->regs);
>  	}
>  
> -	dev->phy_regs = devm_platform_ioremap_resource(pdev, 1);
> -	if (IS_ERR(dev->phy_regs)) {
> -		dev_err(&pdev->dev, "Unable to map internal phy registers\n");
> -		return PTR_ERR(dev->phy_regs);
> +	/* This resource is optional */
> +	res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
> +	if (res) {
> +		dev->phy_regs = devm_ioremap_resource(&pdev->dev, res);
> +		if (IS_ERR(dev->phy_regs)) {
> +			dev_err(&pdev->dev, "Unable to map internal phy registers\n");
> +			return PTR_ERR(dev->phy_regs);
> +		}
>  	}
>  
>  	ret = of_mdiobus_register(bus, pdev->dev.of_node);
> -- 
> 2.33.0
>
Andrew Lunn Sept. 28, 2021, noon UTC | #2
On Tue, Sep 28, 2021 at 04:54:14PM +0800, Cai Huoqing wrote:
> On 28 9月 21 09:17:20, Horatiu Vultur wrote:
> Hi Horatiu,
> 
> Thank for your feedback.
> 
> I'm sorry for this commit, my mistake.
> 
> After I have checked my recent submission history
> 
> the commit-
> commit fa14d03e014a130839f9dc1b97ea61fe598d873d
> drivers/net/mdio/mdio-ipq4019.c 225 line
> 
> has the same issue, an optional phy-regs
> Are you willing to fix it at the same time:)

Hi

Since it was a separate patch which broken it, it should be a separate
patch which fixes it.  Please send a fix.

You can also give a Reviewed-by: to Horatiu patch, if you think it is
correct.

Andrew
Cai,Huoqing Sept. 28, 2021, 12:19 p.m. UTC | #3
On 28 9月 21 09:17:20, Horatiu Vultur wrote:
> According to the documentation the second resource is optional. But the
> blamed commit ignores that and if the resource is not there it just
> fails.
> 
> This patch reverts that to still allow the second resource to be
> optional because other SoC have the some MDIO controller and doesn't
> need to second resource.
> 
> Fixes: 672a1c394950 ("net: mdio: mscc-miim: Make use of the helper function devm_platform_ioremap_resource()")
> Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>

Reviewed-by: Cai Huoqing <caihuoqing@baidu.com>

> ---
>  drivers/net/mdio/mdio-mscc-miim.c | 15 ++++++++++-----
>  1 file changed, 10 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/net/mdio/mdio-mscc-miim.c b/drivers/net/mdio/mdio-mscc-miim.c
> index 1ee592d3eae4..17f98f609ec8 100644
> --- a/drivers/net/mdio/mdio-mscc-miim.c
> +++ b/drivers/net/mdio/mdio-mscc-miim.c
> @@ -134,8 +134,9 @@ static int mscc_miim_reset(struct mii_bus *bus)
>  
>  static int mscc_miim_probe(struct platform_device *pdev)
>  {
> -	struct mii_bus *bus;
>  	struct mscc_miim_dev *dev;
> +	struct resource *res;
> +	struct mii_bus *bus;
>  	int ret;
>  
>  	bus = devm_mdiobus_alloc_size(&pdev->dev, sizeof(*dev));
> @@ -156,10 +157,14 @@ static int mscc_miim_probe(struct platform_device *pdev)
>  		return PTR_ERR(dev->regs);
>  	}
>  
> -	dev->phy_regs = devm_platform_ioremap_resource(pdev, 1);
> -	if (IS_ERR(dev->phy_regs)) {
> -		dev_err(&pdev->dev, "Unable to map internal phy registers\n");
> -		return PTR_ERR(dev->phy_regs);
> +	/* This resource is optional */
Looks good to me,

Thanks,
Cai
> +	res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
> +	if (res) {
> +		dev->phy_regs = devm_ioremap_resource(&pdev->dev, res);
> +		if (IS_ERR(dev->phy_regs)) {
> +			dev_err(&pdev->dev, "Unable to map internal phy registers\n");
> +			return PTR_ERR(dev->phy_regs);
> +		}
>  	}
>  
>  	ret = of_mdiobus_register(bus, pdev->dev.of_node);
> -- 
> 2.33.0
>
patchwork-bot+netdevbpf@kernel.org Sept. 28, 2021, 12:30 p.m. UTC | #4
Hello:

This patch was applied to netdev/net.git (refs/heads/master):

On Tue, 28 Sep 2021 09:17:20 +0200 you wrote:
> According to the documentation the second resource is optional. But the
> blamed commit ignores that and if the resource is not there it just
> fails.
> 
> This patch reverts that to still allow the second resource to be
> optional because other SoC have the some MDIO controller and doesn't
> need to second resource.
> 
> [...]

Here is the summary with links:
  - [net] net: mdio: mscc-miim: Fix the mdio controller
    https://git.kernel.org/netdev/net/c/c6995117b60e

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
diff mbox series

Patch

diff --git a/drivers/net/mdio/mdio-mscc-miim.c b/drivers/net/mdio/mdio-mscc-miim.c
index 1ee592d3eae4..17f98f609ec8 100644
--- a/drivers/net/mdio/mdio-mscc-miim.c
+++ b/drivers/net/mdio/mdio-mscc-miim.c
@@ -134,8 +134,9 @@  static int mscc_miim_reset(struct mii_bus *bus)
 
 static int mscc_miim_probe(struct platform_device *pdev)
 {
-	struct mii_bus *bus;
 	struct mscc_miim_dev *dev;
+	struct resource *res;
+	struct mii_bus *bus;
 	int ret;
 
 	bus = devm_mdiobus_alloc_size(&pdev->dev, sizeof(*dev));
@@ -156,10 +157,14 @@  static int mscc_miim_probe(struct platform_device *pdev)
 		return PTR_ERR(dev->regs);
 	}
 
-	dev->phy_regs = devm_platform_ioremap_resource(pdev, 1);
-	if (IS_ERR(dev->phy_regs)) {
-		dev_err(&pdev->dev, "Unable to map internal phy registers\n");
-		return PTR_ERR(dev->phy_regs);
+	/* This resource is optional */
+	res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
+	if (res) {
+		dev->phy_regs = devm_ioremap_resource(&pdev->dev, res);
+		if (IS_ERR(dev->phy_regs)) {
+			dev_err(&pdev->dev, "Unable to map internal phy registers\n");
+			return PTR_ERR(dev->phy_regs);
+		}
 	}
 
 	ret = of_mdiobus_register(bus, pdev->dev.of_node);