i2c: mlxbf: support BlueField-3 SoC
authorAsmaa Mnebhi <asmaa@nvidia.com>
Tue, 27 Sep 2022 20:39:23 +0000 (16:39 -0400)
committerWolfram Sang <wsa@kernel.org>
Tue, 27 Sep 2022 20:45:08 +0000 (22:45 +0200)
commit19e13e1330c63506452eed80f473f344e6779b94
tree3960254f26fcf5f17db0cfa6ad53eba10ae901b5
parent58b924241d0a23eee8e86dd9e6f5dacd01c82e62
i2c: mlxbf: support BlueField-3 SoC

BlueField-3 SoC has the same I2C IP logic as previous
BlueField-1 and 2 SoCs but it has different registers' addresses.
This is an effort to keep this driver generic across all
BlueField generations.
This patch breaks down the "smbus" resource into 3 separate
resources to enable us to use common registers' offsets for all
BlueField SoCs:
struct mlxbf_i2c_resource *timer;
struct mlxbf_i2c_resource *mst;
struct mlxbf_i2c_resource *slv;

Of course, all offsets had to be adjusted accordingly, and we took
this chance to reorganize the macros depending on the register block
they target.

There are only 2 registers' offsets that do not fit within this
schema so their offsets are passed as SoC-specific parameters:
smbus_master_rs_bytes_off
smbus_master_fsm_off

Reviewed-by: Khalil Blaiech <kblaiech@nvidia.com>
Signed-off-by: Asmaa Mnebhi <asmaa@nvidia.com>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
MAINTAINERS
drivers/i2c/busses/i2c-mlxbf.c