|
@@ -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++) {
|