i2c: mlxbf: support lock mechanism
authorAsmaa Mnebhi <asmaa@nvidia.com>
Mon, 26 Sep 2022 19:45:04 +0000 (15:45 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 26 Oct 2022 11:25:22 +0000 (13:25 +0200)
commit129f01116b8c71c632b3b6e0dc9982e887ca2e91
treeb8e5154ea3895f46f2c2cf2898ee3e064b65d19a
parent534909fe3c9253dc929158f89c081bce4cfaa5f7
i2c: mlxbf: support lock mechanism

[ Upstream commit 86067ccfa1424a26491542d6f6d7546d40b61a10 ]

Linux is not the only entity using the BlueField I2C busses so
support a lock mechanism provided by hardware to avoid issues
when multiple entities are trying to access the same bus.

The lock is acquired whenever written explicitely or the lock
register is read. So make sure it is always released at the end
of a successful or failed transaction.

Fixes: b5b5b32081cd206b (i2c: mlxbf: I2C SMBus driver for Mellanox BlueField SoC)
Reviewed-by: Khalil Blaiech <kblaiech@nvidia.com>
Signed-off-by: Asmaa Mnebhi <asmaa@nvidia.com>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/i2c/busses/i2c-mlxbf.c