> 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