Pull the complex condition in regulator_quirk_notify() into regulator_quirk_check(). Moreover, do not hard-code the I2C address, but rather use the one in da9xxx_msgs[]. Signed-off-by: Marek Vasut <marek.vasut+renesas@xxxxxxxxx> Cc: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> Cc: Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx> Cc: Simon Horman <horms+renesas@xxxxxxxxxxxx> Cc: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx> --- arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c b/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c index 27fb3a5ec73e..862f7757ef5d 100644 --- a/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c +++ b/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c @@ -66,6 +66,13 @@ static struct i2c_msg da9xxx_msgs[3] = { }, }; +static int regulator_quirk_check(struct i2c_client *client, u8 i2c_id, + char *compat_string) +{ + return client->addr == da9xxx_msgs[i2c_id].addr && + !strcmp(client->name, compat_string); +} + static int regulator_quirk_notify(struct notifier_block *nb, unsigned long action, void *data) { @@ -88,9 +95,9 @@ static int regulator_quirk_notify(struct notifier_block *nb, client = to_i2c_client(dev); dev_dbg(dev, "Detected %s\n", client->name); - if ((client->addr == 0x58 && !strcmp(client->name, "da9063")) || - (client->addr == 0x68 && !strcmp(client->name, "da9210")) || - (client->addr == 0x70 && !strcmp(client->name, "da9210"))) { + if (regulator_quirk_check(client, 0, "da9063") || + regulator_quirk_check(client, 1, "da9210") || + regulator_quirk_check(client, 2, "da9210")) { int ret, len; /* There are two DA9210 on Stout, one on the other boards. */ -- 2.15.1