[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20210928121954.GA1845@LAPTOP-UKSR4ENP.internal.baidu.com>
Date: Tue, 28 Sep 2021 20:19:54 +0800
From: Cai Huoqing <caihuoqing@...du.com>
To: Horatiu Vultur <horatiu.vultur@...rochip.com>
CC: <andrew@...n.ch>, <hkallweit1@...il.com>, <linux@...linux.org.uk>,
<davem@...emloft.net>, <kuba@...nel.org>, <netdev@...r.kernel.org>,
<linux-kernel@...r.kernel.org>
Subject: Re: [PATCH net] net: mdio: mscc-miim: Fix the mdio controller
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@...rochip.com>
Reviewed-by: Cai Huoqing <caihuoqing@...du.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
>
Powered by blists - more mailing lists