Re: [PATCH] clk: imx: imx8qxp-lpcg: use devm_platform_ioremap_resource

From: Leonard Crestez
Date: Thu Dec 05 2019 - 03:59:44 EST


On 2019-12-05 3:38 AM, Peng Fan wrote:
>> Subject: Re: [PATCH] clk: imx: imx8qxp-lpcg: use
>> devm_platform_ioremap_resource
>>
>> On 2019-12-04 12:14 PM, Peng Fan wrote:
>>> From: Peng Fan <peng.fan@xxxxxxx>
>>>
>>> devm_platform_ioremap_resource() wraps platform_get_resource() and
>>> devm_ioremap_resource(), we could use this API to simplify the code.
>>>
>>> Signed-off-by: Peng Fan <peng.fan@xxxxxxx>
>>
>> This patch has been posted before and it breaks uart on imx8qxp-mek and
>> possibly other things.
>>
>> The old and new paths are not equivalent: devm_platform_ioremap_resource
>> calls devm_ioremap_resource differs from devm_ioremap by also calling
>> devm_request_mem_region.
>>
>> This prevents other mappings in the area; this is not an issue for most drivers
>> but imx8qxp-lpcg maps whole subsystems. For example:
>>
>> adma_lpcg: clock-controller@59000000 {
>> compatible = "fsl,imx8qxp-lpcg-adma";
>> reg = <0x59000000 0x2000000>;
>> #clock-cells = <1>;
>> };
>>
>> adma_lpuart0: serial@5a060000 {
>> reg = <0x5a060000 0x1000>;
>> ...
>> };
>>
>> Previously: https://patchwork.kernel.org/patch/10908807/
>
> Thanks. I think at least need to provide some comments in code.

Yes, comments would help. I think it's actually the 3rd time this
incorrect cleanup was posted.

But mapping entire subsystems (32mb at a time) for LPCG is deeply
flawed: the LPCG areas are each 64k and they're interspersed among the
peripherals. The correct solution is to have many small clock providers.

This is done by a series of patches from Aisheng, I think this is the
latest one:

https://patchwork.kernel.org/patch/11248235/

If some aspects of that series are dubious perhaps they could be
discussed and maybe the series could be split into smaller chunks?

That series does brings many essential improvements to imx8 clk support.

--
Regards,
Leonard