mfd: da9063: Fix revision handling to correctly select reg tables
authorAdam Thomson <Adam.Thomson.Opensource@diasemi.com>
Mon, 13 Jul 2020 09:38:57 +0000 (10:38 +0100)
committerLee Jones <lee.jones@linaro.org>
Thu, 13 Aug 2020 06:49:47 +0000 (07:49 +0100)
commit091c6110862bce4e2380e353cb062dcb6a56bcb6
treee398d14aed0f3ab58dbb0601cdcf3817a4167d1d
parenta3f673d0092cee167b2a6e3d61454405d0a06b25
mfd: da9063: Fix revision handling to correctly select reg tables

The current implementation performs checking in the i2c_probe()
function of the variant_code but does this immediately after the
containing struct has been initialised as all zero. This means the
check for variant code will always default to using the BB tables
and will never select AD. The variant code is subsequently set
by device_init() and later used by the RTC so really it's a little
fortunate this mismatch works.

This update adds raw I2C read access functionality to read the chip
and variant/revision information (common to all revisions) so that
it can subsequently correctly choose the proper regmap tables for
real initialisation.

Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/da9063-core.c
drivers/mfd/da9063-i2c.c
include/linux/mfd/da9063/registers.h