Re: [PATCH v2 1/8] reset: imx8mp-audiomix: Fix bad mask values

Laurentiu Mihalcea
2025-10-20T10:57:52Z

On 10/17/2025 7:28 AM, Frank Li wrote:
> On Fri, Oct 17, 2025 at 04:20:18AM -0700, Laurentiu Mihalcea wrote:
>> From: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
>>
>> As per the i.MX8MP TRM, section 14.2 "AUDIO_BLK_CTRL", table 14.2.3.1.1
>> "memory map", the definition of the EARC control register shows that the
>> EARC controller software reset is controlled via bit 0, while the EARC PHY
>> software reset is controlled via bit 1.
>>
>> This means that the current definitions of IMX8MP_AUDIOMIX_EARC_RESET_MASK
>> and IMX8MP_AUDIOMIX_EARC_PHY_RESET_MASK are wrong since their values would
>> imply that the EARC controller software reset is controlled via bit 1 and
>> the EARC PHY software reset is controlled via bit 2. Fix them.
>>
>> Fixes: a83bc87cd30a ("reset: imx8mp-audiomix: Prepare the code for more reset bits")
>> Cc: stable@vger.kernel.org
>> Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
> Just curious, why previous version can work?

good question. I assume this was never tested so I don't think the question

of this working in previous versions or not is applicable here. I also looked for

the usages of these macros in the DTS and there seems to be no consumer.

I discovered the issue while testing the patches from this series. As for testing,

I used a dummy consumer driver/node and manually checked the register values

after each reset assert/de-assert operation.

>
> Reviewed-by: Frank Li <Frank.Li@nxp.com>
>> ---
>> drivers/reset/reset-imx8mp-audiomix.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/reset/reset-imx8mp-audiomix.c b/drivers/reset/reset-imx8mp-audiomix.c
>> index 6b357adfe646..eceb37ff5dc5 100644
>> --- a/drivers/reset/reset-imx8mp-audiomix.c
>> +++ b/drivers/reset/reset-imx8mp-audiomix.c
>> @@ -14,8 +14,8 @@
>> #include <linux/reset-controller.h>
>>
>> #define IMX8MP_AUDIOMIX_EARC_RESET_OFFSET 0x200
>> -#define IMX8MP_AUDIOMIX_EARC_RESET_MASK BIT(1)
>> -#define IMX8MP_AUDIOMIX_EARC_PHY_RESET_MASK BIT(2)
>> +#define IMX8MP_AUDIOMIX_EARC_RESET_MASK BIT(0)
>> +#define IMX8MP_AUDIOMIX_EARC_PHY_RESET_MASK BIT(1)
>>
>> #define IMX8MP_AUDIOMIX_DSP_RUNSTALL_OFFSET 0x108
>> #define IMX8MP_AUDIOMIX_DSP_RUNSTALL_MASK BIT(5)
>> --
>> 2.43.0
>>