[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <030766c0-a6b9-401d-9e9a-fe5d11c5d381@feathertop.org>
Date: Mon, 29 Jan 2024 10:19:35 +1100
From: Tim Lunn <tim@...thertop.org>
To: Sasha Levin <sashal@...nel.org>, linux-kernel@...r.kernel.org,
stable@...r.kernel.org
Cc: Heiko Stuebner <heiko@...ech.de>, Andi Shyti <andi.shyti@...nel.org>,
Wolfram Sang <wsa@...nel.org>, linux-arm-kernel@...ts.infradead.org,
linux-rockchip@...ts.infradead.org, linux-i2c@...r.kernel.org
Subject: Re: [PATCH AUTOSEL 6.1 27/27] i2c: rk3x: Adjust mask/value offset for
i2c2 on rv1126
Hi Sasha,
Support for the rv1126 SoC was only added around linux 6.2 and 6.3,
thus doesnt make sense to pick this patch up in 6.1
Regards
Tim
On 1/29/24 03:14, Sasha Levin wrote:
> From: Tim Lunn <tim@...thertop.org>
>
> [ Upstream commit 92a85b7c6262f19c65a1c115cf15f411ba65a57c ]
>
> Rockchip RV1126 is using old style i2c controller, the i2c2
> bus uses a non-sequential offset in the grf register for the
> mask/value bits for this bus.
>
> This patch fixes i2c2 bus on rv1126 SoCs.
>
> Signed-off-by: Tim Lunn <tim@...thertop.org>
> Acked-by: Heiko Stuebner <heiko@...ech.de>
> Reviewed-by: Andi Shyti <andi.shyti@...nel.org>
> Signed-off-by: Wolfram Sang <wsa@...nel.org>
> Signed-off-by: Sasha Levin <sashal@...nel.org>
> ---
> drivers/i2c/busses/i2c-rk3x.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-rk3x.c b/drivers/i2c/busses/i2c-rk3x.c
> index 6aa4f1f06240..c8cd5cadcf56 100644
> --- a/drivers/i2c/busses/i2c-rk3x.c
> +++ b/drivers/i2c/busses/i2c-rk3x.c
> @@ -1295,8 +1295,12 @@ static int rk3x_i2c_probe(struct platform_device *pdev)
> return -EINVAL;
> }
>
> - /* 27+i: write mask, 11+i: value */
> - value = BIT(27 + bus_nr) | BIT(11 + bus_nr);
> + /* rv1126 i2c2 uses non-sequential write mask 20, value 4 */
> + if (i2c->soc_data == &rv1126_soc_data && bus_nr == 2)
> + value = BIT(20) | BIT(4);
> + else
> + /* 27+i: write mask, 11+i: value */
> + value = BIT(27 + bus_nr) | BIT(11 + bus_nr);
>
> ret = regmap_write(grf, i2c->soc_data->grf_offset, value);
> if (ret != 0) {
Powered by blists - more mailing lists