RE: [PATCH v2] Revert "pinctrl: freescale: imx: Use 'devm_of_iomap()' to avoid a resource leak in case of error in 'imx_pinctrl_probe()'"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> Subject: RE: [PATCH v2] Revert "pinctrl: freescale: imx: Use
> 'devm_of_iomap()' to avoid a resource leak in case of error in
> 'imx_pinctrl_probe()'"
> 
> > From: Peng Fan <peng.fan@xxxxxxx>
> > Sent: Wednesday, June 17, 2020 9:15 AM
> >
> > > Subject: Re: [PATCH v2] Revert "pinctrl: freescale: imx: Use
> 'devm_of_iomap()'
> > > to avoid a resource leak in case of error in 'imx_pinctrl_probe()'"
> > >
> > > On Tue, Jun 16, 2020 at 5:54 AM Aisheng Dong <aisheng.dong@xxxxxxx>
> > > wrote:
> > >
> > > > Could you help apply this patch as it blocked MX7D booting for a while?
> > >
> > > > > This reverts commit ba403242615c2c99e27af7984b1650771a2cc2c9.
> > > > >
> > > > > After commit 26d8cde5260b ("pinctrl: freescale: imx: add shared
> > > > > input select reg support"). i.MX7D has two iomux controllers
> > > > > iomuxc and iomuxc-lpsr which share select_input register for
> > > > > daisy chain
> > settings.
> > > > > If use 'devm_of_iomap()', when probe the iomuxc-lpsr, will call
> > > > > devm_request_mem_region() for the region <0x30330000-0x3033ffff>
> > > > > for the first time. Then, next time when probe the iomuxc, API
> > > > > devm_platform_ioremap_resource() will also use the API
> > > > > devm_request_mem_region() for the share region
> > > > > <0x30330000-0x3033ffff> again, then cause issue, log like below:
> > > > >
> > > > > [    0.179561] imx7d-pinctrl 302c0000.iomuxc-lpsr: initialized IMX
> > > pinctrl
> > > > > driver
> > > > > [    0.191742] imx7d-pinctrl 30330000.pinctrl: can't request region
> for
> > > > > resource [mem 0x30330000-0x3033ffff]
> > > > > [    0.191842] imx7d-pinctrl: probe of 30330000.pinctrl failed with
> error
> > > -16
> > >
> > > It means that shared support took a wrong approach. If something has
> > > shared resources, another schema should be used, something like MFD
> > > (parent device which keeps only shared resources). Easiest way is to
> > > switch to the regmap API.
> >
> > Actually not MFD, it is the dts use wrong address region.
> >
> >                         iomuxc_lpsr: iomuxc-lpsr@302c0000 {
> >                                 compatible =
> "fsl,imx7d-iomuxc-lpsr";
> >                                 reg = <0x302c0000 0x10000>;
> >                                 fsl,input-sel = <&iomuxc>;
> >                         };
> >                         iomuxc: pinctrl@30330000 {
> >                                 compatible = "fsl,imx7d-iomuxc";
> >                                 reg = <0x30330000 0x10000>;
> >                         };
> >
> > There is overlap between the two.
> >
> > The iomuxc_lpsr using 0x10000 as size is wrong. It not have such large area.
> >
> > With the size fix, devm_of_ioremap could be used I think.
> >
> 
> Really overlapped?

Oops.
> 
> I think the real issue is LPSR Sel Input part using the same memory region as
> iomux.

Indeed. Then mfd might be better to be used here.

Regards,
Peng.

> 
> Regards
> Aisheng
> 
> > Regards,
> > Peng.
> >
> > >
> > > P.S. The revert is okay as a quick fix but... see above.
> > >
> > > --
> > > With Best Regards,
> > > Andy Shevchenko




[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux