i2c: designware_i2c: Tidy up use of NULL priv
authorSimon Glass <sjg@chromium.org>
Wed, 22 Apr 2020 16:13:53 +0000 (10:13 -0600)
committerHeiko Schocher <hs@denx.de>
Thu, 28 May 2020 03:50:00 +0000 (05:50 +0200)
commitbcf08503f571553074a4e9563977225446c183fa
tree08e36d1417a4c0797e60a65a56dc81389be5247c
parentab80137cc436e977ef91a154372ae5aeae3f4fb0
i2c: designware_i2c: Tidy up use of NULL priv

At present we still have pre-driver-model code in this driver and it makes
things a bit confusing. In particular calc_bus_speed() is called with priv
as NULL if not using driver model.

This results in spk_cnt and comp_param1 being read from an invalid address
if not using driver model. For comp_param1 this may not cause problems if
reading from addresses close to 0 happens to be allowed, as high speed is
only supported by DM code. But spk_cnt is subsequently used to calculate
the bus periods and so this may cause problems (e.g. on spear600 board
which has not been migrated yet).

Add a new parameter regs parameter to calc_bus_speed() and add more
comments to this function and to _dw_i2c_set_bus_speed(), which calls it.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reported-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
drivers/i2c/designware_i2c.c