regulator: max8998: Use arrays for specifying voltages in platform data
authorTomasz Figa <t.figa@samsung.com>
Mon, 24 Jun 2013 12:39:53 +0000 (14:39 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
Sun, 30 Jun 2013 21:30:03 +0000 (23:30 +0200)
This patch modifies the platform data of max8998 to use arrays for
specifying predefined voltages of buck1 and buck2 instead of separate
field for each voltage.

This allows to simplify the code a bit and will help in adding support
for Device Tree, which will be introduced in further patch.

Signed-off-by: Tomasz Figa <t.figa@samsung.com>
Acked-by: Mark Brown <broonie@linaro.org>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
arch/arm/mach-exynos/mach-universal_c210.c
arch/arm/mach-s5pv210/mach-aquila.c
arch/arm/mach-s5pv210/mach-goni.c
drivers/regulator/max8998.c
include/linux/mfd/max8998.h

index 74ddb2b55614234b69ee26d69ff51f5ce8cb3540..f912444cae3342dbb254f8af60a6b22d1d929c77 100644 (file)
@@ -540,15 +540,11 @@ static struct max8998_regulator_data lp3974_regulators[] = {
 static struct max8998_platform_data universal_lp3974_pdata = {
        .num_regulators         = ARRAY_SIZE(lp3974_regulators),
        .regulators             = lp3974_regulators,
-       .buck1_voltage1         = 1100000,      /* INT */
-       .buck1_voltage2         = 1000000,
-       .buck1_voltage3         = 1100000,
-       .buck1_voltage4         = 1000000,
+       .buck1_voltage          = { 1100000, 1000000, 1100000, 1000000 },
        .buck1_set1             = EXYNOS4_GPX0(5),
        .buck1_set2             = EXYNOS4_GPX0(6),
-       .buck2_voltage1         = 1200000,      /* G3D */
-       .buck2_voltage2         = 1100000,
        .buck1_default_idx      = 0,
+       .buck2_voltage          = { 1200000, 1100000 },
        .buck2_set3             = EXYNOS4_GPE2(0),
        .buck2_default_idx      = 0,
        .wakeup                 = true,
index ed2b85485b9d95301ff228e2e209911807090922..ad40ab0f5dbd37625f2a2e769f871840f644866b 100644 (file)
@@ -377,12 +377,8 @@ static struct max8998_platform_data aquila_max8998_pdata = {
        .buck1_set1     = S5PV210_GPH0(3),
        .buck1_set2     = S5PV210_GPH0(4),
        .buck2_set3     = S5PV210_GPH0(5),
-       .buck1_voltage1 = 1200000,
-       .buck1_voltage2 = 1200000,
-       .buck1_voltage3 = 1200000,
-       .buck1_voltage4 = 1200000,
-       .buck2_voltage1 = 1200000,
-       .buck2_voltage2 = 1200000,
+       .buck1_voltage  = { 1200000, 1200000, 1200000, 1200000 },
+       .buck2_voltage  = { 1200000, 1200000 },
 };
 #endif
 
index 30b24ad84f496d383a2f71d0983926b51a239d1b..e5cd9fbf19e99663f8e3ec052e8add96bf7c24e8 100644 (file)
@@ -580,12 +580,8 @@ static struct max8998_platform_data goni_max8998_pdata = {
        .buck1_set1     = S5PV210_GPH0(3),
        .buck1_set2     = S5PV210_GPH0(4),
        .buck2_set3     = S5PV210_GPH0(5),
-       .buck1_voltage1 = 1200000,
-       .buck1_voltage2 = 1200000,
-       .buck1_voltage3 = 1200000,
-       .buck1_voltage4 = 1200000,
-       .buck2_voltage1 = 1200000,
-       .buck2_voltage2 = 1200000,
+       .buck1_voltage  = { 1200000, 1200000, 1200000, 1200000 },
+       .buck2_voltage  = { 1200000, 1200000 },
 };
 #endif
 
index a57a1b15cdbaf1eb2d4f85c8d39bbc72ece4c812..8c45b93b73349ec8c5a2cb15131c390b93e0e847 100644 (file)
@@ -630,6 +630,7 @@ static int max8998_pmic_probe(struct platform_device *pdev)
        struct max8998_data *max8998;
        struct i2c_client *i2c;
        int i, ret, size;
+       unsigned int v;
 
        if (!pdata) {
                dev_err(pdev->dev.parent, "No platform init data supplied\n");
@@ -688,53 +689,21 @@ static int max8998_pmic_probe(struct platform_device *pdev)
                gpio_request(pdata->buck1_set2, "MAX8998 BUCK1_SET2");
                gpio_direction_output(pdata->buck1_set2,
                                      (max8998->buck1_idx >> 1) & 0x1);
-               /* Set predefined value for BUCK1 register 1 */
-               i = 0;
-               while (buck12_voltage_map_desc.min +
-                      buck12_voltage_map_desc.step*i
-                      < pdata->buck1_voltage1)
-                       i++;
-               max8998->buck1_vol[0] = i;
-               ret = max8998_write_reg(i2c, MAX8998_REG_BUCK1_VOLTAGE1, i);
-               if (ret)
-                       goto err_out;
-
-               /* Set predefined value for BUCK1 register 2 */
-               i = 0;
-               while (buck12_voltage_map_desc.min +
-                      buck12_voltage_map_desc.step*i
-                      < pdata->buck1_voltage2)
-                       i++;
-
-               max8998->buck1_vol[1] = i;
-               ret = max8998_write_reg(i2c, MAX8998_REG_BUCK1_VOLTAGE2, i);
-               if (ret)
-                       goto err_out;
-
-               /* Set predefined value for BUCK1 register 3 */
-               i = 0;
-               while (buck12_voltage_map_desc.min +
-                      buck12_voltage_map_desc.step*i
-                      < pdata->buck1_voltage3)
-                       i++;
-
-               max8998->buck1_vol[2] = i;
-               ret = max8998_write_reg(i2c, MAX8998_REG_BUCK1_VOLTAGE3, i);
-               if (ret)
-                       goto err_out;
-
-               /* Set predefined value for BUCK1 register 4 */
-               i = 0;
-               while (buck12_voltage_map_desc.min +
-                      buck12_voltage_map_desc.step*i
-                      < pdata->buck1_voltage4)
-                       i++;
-
-               max8998->buck1_vol[3] = i;
-               ret = max8998_write_reg(i2c, MAX8998_REG_BUCK1_VOLTAGE4, i);
-               if (ret)
-                       goto err_out;
 
+               /* Set predefined values for BUCK1 registers */
+               for (v = 0; v < ARRAY_SIZE(pdata->buck1_voltage); ++v) {
+                       i = 0;
+                       while (buck12_voltage_map_desc.min +
+                              buck12_voltage_map_desc.step*i
+                              < pdata->buck1_voltage[v])
+                               i++;
+
+                       max8998->buck1_vol[v] = i;
+                       ret = max8998_write_reg(i2c,
+                                       MAX8998_REG_BUCK1_VOLTAGE1 + v, i);
+                       if (ret)
+                               goto err_out;
+               }
        }
 
        if (gpio_is_valid(pdata->buck2_set3)) {
@@ -750,27 +719,20 @@ static int max8998_pmic_probe(struct platform_device *pdev)
                gpio_direction_output(pdata->buck2_set3,
                                      max8998->buck2_idx & 0x1);
 
-               /* BUCK2 register 1 */
-               i = 0;
-               while (buck12_voltage_map_desc.min +
-                      buck12_voltage_map_desc.step*i
-                      < pdata->buck2_voltage1)
-                       i++;
-               max8998->buck2_vol[0] = i;
-               ret = max8998_write_reg(i2c, MAX8998_REG_BUCK2_VOLTAGE1, i);
-               if (ret)
-                       goto err_out;
-
-               /* BUCK2 register 2 */
-               i = 0;
-               while (buck12_voltage_map_desc.min +
-                      buck12_voltage_map_desc.step*i
-                      < pdata->buck2_voltage2)
-                       i++;
-               max8998->buck2_vol[1] = i;
-               ret = max8998_write_reg(i2c, MAX8998_REG_BUCK2_VOLTAGE2, i);
-               if (ret)
-                       goto err_out;
+               /* Set predefined values for BUCK2 registers */
+               for (v = 0; v < ARRAY_SIZE(pdata->buck2_voltage); ++v) {
+                       i = 0;
+                       while (buck12_voltage_map_desc.min +
+                              buck12_voltage_map_desc.step*i
+                              < pdata->buck2_voltage[v])
+                               i++;
+
+                       max8998->buck2_vol[v] = i;
+                       ret = max8998_write_reg(i2c,
+                                       MAX8998_REG_BUCK2_VOLTAGE1 + v, i);
+                       if (ret)
+                               goto err_out;
+               }
        }
 
        for (i = 0; i < pdata->num_regulators; i++) {
index 75471183b87a93464cd4537053ed4d7878940705..ca56bb03bc699284aa2b38957c2f96e3a01bf157 100644 (file)
@@ -73,12 +73,8 @@ struct max8998_regulator_data {
  * @buck_voltage_lock: Do NOT change the values of the following six
  *   registers set by buck?_voltage?. The voltage of BUCK1/2 cannot
  *   be other than the preset values.
- * @buck1_voltage1: BUCK1 DVS mode 1 voltage register
- * @buck1_voltage2: BUCK1 DVS mode 2 voltage register
- * @buck1_voltage3: BUCK1 DVS mode 3 voltage register
- * @buck1_voltage4: BUCK1 DVS mode 4 voltage register
- * @buck2_voltage1: BUCK2 DVS mode 1 voltage register
- * @buck2_voltage2: BUCK2 DVS mode 2 voltage register
+ * @buck1_voltage: BUCK1 DVS mode 1 voltage registers
+ * @buck2_voltage: BUCK2 DVS mode 2 voltage registers
  * @buck1_set1: BUCK1 gpio pin 1 to set output voltage
  * @buck1_set2: BUCK1 gpio pin 2 to set output voltage
  * @buck1_default_idx: Default for BUCK1 gpio pin 1, 2
@@ -103,12 +99,8 @@ struct max8998_platform_data {
        unsigned int                    irq_base;
        int                             ono;
        bool                            buck_voltage_lock;
-       int                             buck1_voltage1;
-       int                             buck1_voltage2;
-       int                             buck1_voltage3;
-       int                             buck1_voltage4;
-       int                             buck2_voltage1;
-       int                             buck2_voltage2;
+       int                             buck1_voltage[4];
+       int                             buck2_voltage[2];
        int                             buck1_set1;
        int                             buck1_set2;
        int                             buck1_default_idx;