i2c: sh_mobile: require setup callback
authorWolfram Sang <wsa+renesas@sang-engineering.com>
Mon, 18 Dec 2017 21:57:58 +0000 (22:57 +0100)
committerWolfram Sang <wsa@the-dreams.de>
Mon, 15 Jan 2018 16:58:50 +0000 (17:58 +0100)
Require the setup callback and move the frequency calculation into it.
This is in preparation for supporting multiple formulas.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-sh_mobile.c

index a3a377a10fa7896922c0377fa0104be4d28f445c..88af45225003a5e6df5776a309295ffc446aa24c 100644 (file)
@@ -771,15 +771,17 @@ static int sh_mobile_i2c_r8a7740_workaround(struct sh_mobile_i2c_data *pd)
        iic_wr(pd, ICCR, ICCR_TRS);
        udelay(10);
 
-       return 0;
+       return sh_mobile_i2c_init(pd);
 }
 
 static const struct sh_mobile_dt_config default_dt_config = {
        .clks_per_count = 1,
+       .setup = sh_mobile_i2c_init,
 };
 
 static const struct sh_mobile_dt_config fast_clock_dt_config = {
        .clks_per_count = 2,
+       .setup = sh_mobile_i2c_init,
 };
 
 static const struct sh_mobile_dt_config r8a7740_dt_config = {
@@ -882,15 +884,10 @@ static int sh_mobile_i2c_probe(struct platform_device *dev)
        config = of_device_get_match_data(&dev->dev);
        if (config) {
                pd->clks_per_count = config->clks_per_count;
-
-               if (config->setup) {
-                       ret = config->setup(pd);
-                       if (ret)
-                               return ret;
-               }
+               ret = config->setup(pd);
+       } else {
+               ret = sh_mobile_i2c_init(pd);
        }
-
-       ret = sh_mobile_i2c_init(pd);
        if (ret)
                return ret;