Re: [PATCH AUTOSEL 5.12 42/43] powerpc/fsl: set fsl,i2c-erratum-a004447 flag for P2041 i2c controllers

From: Chris Packham
Date: Thu Jun 03 2021 - 20:59:02 EST



On 4/06/21 12:42 pm, Michael Ellerman wrote:
> Sasha Levin <sashal@xxxxxxxxxx> writes:
>> From: Chris Packham <chris.packham@xxxxxxxxxxxxxxxxxxx>
>>
>> [ Upstream commit 7adc7b225cddcfd0f346d10144fd7a3d3d9f9ea7 ]
>>
>> The i2c controllers on the P2040/P2041 have an erratum where the
>> documented scheme for i2c bus recovery will not work (A-004447). A
>> different mechanism is needed which is documented in the P2040 Chip
>> Errata Rev Q (latest available at the time of writing).
>>
>> Signed-off-by: Chris Packham <chris.packham@xxxxxxxxxxxxxxxxxxx>
>> Acked-by: Michael Ellerman <mpe@xxxxxxxxxxxxxx>
>> Signed-off-by: Wolfram Sang <wsa@xxxxxxxxxx>
>> Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>
>> ---
>> arch/powerpc/boot/dts/fsl/p2041si-post.dtsi | 16 ++++++++++++++++
>> 1 file changed, 16 insertions(+)
> This patch (and the subsequent one), just set a flag in the device tree.
>
> They have no effect unless you also backport the code change that looks
> for that flag, which was upstream commit:
>
> 8f0cdec8b5fd ("i2c: mpc: implement erratum A-004447 workaround")

That change itself isn't cherry-pick able without

65171b2df15e ("i2c: mpc: Make use of i2c_recover_bus()")

and in between 65171b2df15e and 8f0cdec8b5fd are a bunch of cleanups and
a fairly major rewrite which may also affect the cherry-pick ability.

> AFAICS you haven't picked that one up for any of the stable trees.
>
> I'll defer to Chris & Wolfram on whether it's a good idea to take the
> code change for stable.

We have been doing some extra QA on our end for the "i2c: mpc: Refactor
to improve responsiveness" and "P2040/P2041 i2c recovery erratum" series
which hasn't thrown up any issues. But it's still a lot of new code and
at some point we're going to run into API changes.

Given the fact that it's starting to snowball one might err on the side
of caution.

> I guess it's harmless to pick these two patches, but it's also
> pointless. So I think you either want to take all three, or drop these
> two.

At a minimum you need

65171b2df15e ("i2c: mpc: Make use of i2c_recover_bus()")
8f0cdec8b5fd ("i2c: mpc: implement erratum A-004447 workaround")
7adc7b225cdd ("powerpc/fsl: set fsl,i2c-erratum-a004447 flag for P2041
i2c controllers")
19ae697a1e4e ("powerpc/fsl: set fsl,i2c-erratum-a004447 flag for P1010
i2c controllers")

> cheers
>
>> diff --git a/arch/powerpc/boot/dts/fsl/p2041si-post.dtsi b/arch/powerpc/boot/dts/fsl/p2041si-post.dtsi
>> index 872e4485dc3f..ddc018d42252 100644
>> --- a/arch/powerpc/boot/dts/fsl/p2041si-post.dtsi
>> +++ b/arch/powerpc/boot/dts/fsl/p2041si-post.dtsi
>> @@ -371,7 +371,23 @@ sdhc@114000 {
>> };
>>
>> /include/ "qoriq-i2c-0.dtsi"
>> + i2c@118000 {
>> + fsl,i2c-erratum-a004447;
>> + };
>> +
>> + i2c@118100 {
>> + fsl,i2c-erratum-a004447;
>> + };
>> +
>> /include/ "qoriq-i2c-1.dtsi"
>> + i2c@119000 {
>> + fsl,i2c-erratum-a004447;
>> + };
>> +
>> + i2c@119100 {
>> + fsl,i2c-erratum-a004447;
>> + };
>> +
>> /include/ "qoriq-duart-0.dtsi"
>> /include/ "qoriq-duart-1.dtsi"
>> /include/ "qoriq-gpio-0.dtsi"
>> --
>> 2.30.2