Merge remote-tracking branch 'regulator/topic/max8997' into regulator-next
This commit is contained in:
Коммит
6a244cadb0
|
@ -54,6 +54,13 @@ struct max8997_data {
|
|||
u8 saved_states[MAX8997_REG_MAX];
|
||||
};
|
||||
|
||||
static const unsigned int safeoutvolt[] = {
|
||||
4850000,
|
||||
4900000,
|
||||
4950000,
|
||||
3300000,
|
||||
};
|
||||
|
||||
static inline void max8997_set_gpio(struct max8997_data *max8997)
|
||||
{
|
||||
int set3 = (max8997->buck125_gpioindex) & 0x1;
|
||||
|
@ -130,29 +137,6 @@ static const struct voltage_map_desc *reg_voltage_map[] = {
|
|||
[MAX8997_CHARGER_TOPOFF] = &topoff_current_map_desc,
|
||||
};
|
||||
|
||||
static int max8997_list_voltage_safeout(struct regulator_dev *rdev,
|
||||
unsigned int selector)
|
||||
{
|
||||
int rid = rdev_get_id(rdev);
|
||||
|
||||
if (rid == MAX8997_ESAFEOUT1 || rid == MAX8997_ESAFEOUT2) {
|
||||
switch (selector) {
|
||||
case 0:
|
||||
return 4850000;
|
||||
case 1:
|
||||
return 4900000;
|
||||
case 2:
|
||||
return 4950000;
|
||||
case 3:
|
||||
return 3300000;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static int max8997_list_voltage_charger_cv(struct regulator_dev *rdev,
|
||||
unsigned int selector)
|
||||
{
|
||||
|
@ -522,7 +506,7 @@ static int max8997_set_voltage_ldobuck(struct regulator_dev *rdev,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int max8997_set_voltage_ldobuck_time_sel(struct regulator_dev *rdev,
|
||||
static int max8997_set_voltage_buck_time_sel(struct regulator_dev *rdev,
|
||||
unsigned int old_selector,
|
||||
unsigned int new_selector)
|
||||
{
|
||||
|
@ -720,49 +704,23 @@ out:
|
|||
return 0;
|
||||
}
|
||||
|
||||
static const int safeoutvolt[] = {
|
||||
3300000,
|
||||
4850000,
|
||||
4900000,
|
||||
4950000,
|
||||
};
|
||||
|
||||
/* For SAFEOUT1 and SAFEOUT2 */
|
||||
static int max8997_set_voltage_safeout(struct regulator_dev *rdev,
|
||||
int min_uV, int max_uV, unsigned *selector)
|
||||
static int max8997_set_voltage_safeout_sel(struct regulator_dev *rdev,
|
||||
unsigned selector)
|
||||
{
|
||||
struct max8997_data *max8997 = rdev_get_drvdata(rdev);
|
||||
struct i2c_client *i2c = max8997->iodev->i2c;
|
||||
int rid = rdev_get_id(rdev);
|
||||
int reg, shift = 0, mask, ret;
|
||||
int i = 0;
|
||||
u8 val;
|
||||
|
||||
if (rid != MAX8997_ESAFEOUT1 && rid != MAX8997_ESAFEOUT2)
|
||||
return -EINVAL;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(safeoutvolt); i++) {
|
||||
if (min_uV <= safeoutvolt[i] &&
|
||||
max_uV >= safeoutvolt[i])
|
||||
break;
|
||||
}
|
||||
|
||||
if (i >= ARRAY_SIZE(safeoutvolt))
|
||||
return -EINVAL;
|
||||
|
||||
if (i == 0)
|
||||
val = 0x3;
|
||||
else
|
||||
val = i - 1;
|
||||
|
||||
ret = max8997_get_voltage_register(rdev, ®, &shift, &mask);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = max8997_update_reg(i2c, reg, val << shift, mask << shift);
|
||||
*selector = val;
|
||||
|
||||
return ret;
|
||||
return max8997_update_reg(i2c, reg, selector << shift, mask << shift);
|
||||
}
|
||||
|
||||
static int max8997_reg_disable_suspend(struct regulator_dev *rdev)
|
||||
|
@ -799,7 +757,6 @@ static struct regulator_ops max8997_ldo_ops = {
|
|||
.disable = max8997_reg_disable,
|
||||
.get_voltage_sel = max8997_get_voltage_sel,
|
||||
.set_voltage = max8997_set_voltage_ldobuck,
|
||||
.set_voltage_time_sel = max8997_set_voltage_ldobuck_time_sel,
|
||||
.set_suspend_disable = max8997_reg_disable_suspend,
|
||||
};
|
||||
|
||||
|
@ -810,7 +767,7 @@ static struct regulator_ops max8997_buck_ops = {
|
|||
.disable = max8997_reg_disable,
|
||||
.get_voltage_sel = max8997_get_voltage_sel,
|
||||
.set_voltage = max8997_set_voltage_buck,
|
||||
.set_voltage_time_sel = max8997_set_voltage_ldobuck_time_sel,
|
||||
.set_voltage_time_sel = max8997_set_voltage_buck_time_sel,
|
||||
.set_suspend_disable = max8997_reg_disable_suspend,
|
||||
};
|
||||
|
||||
|
@ -823,12 +780,12 @@ static struct regulator_ops max8997_fixedvolt_ops = {
|
|||
};
|
||||
|
||||
static struct regulator_ops max8997_safeout_ops = {
|
||||
.list_voltage = max8997_list_voltage_safeout,
|
||||
.list_voltage = regulator_list_voltage_table,
|
||||
.is_enabled = max8997_reg_is_enabled,
|
||||
.enable = max8997_reg_enable,
|
||||
.disable = max8997_reg_disable,
|
||||
.get_voltage_sel = max8997_get_voltage_sel,
|
||||
.set_voltage = max8997_set_voltage_safeout,
|
||||
.set_voltage_sel = max8997_set_voltage_safeout_sel,
|
||||
.set_suspend_disable = max8997_reg_disable_suspend,
|
||||
};
|
||||
|
||||
|
@ -1233,13 +1190,15 @@ static int max8997_pmic_probe(struct platform_device *pdev)
|
|||
int id = pdata->regulators[i].id;
|
||||
|
||||
desc = reg_voltage_map[id];
|
||||
if (desc)
|
||||
if (desc) {
|
||||
regulators[id].n_voltages =
|
||||
(desc->max - desc->min) / desc->step + 1;
|
||||
else if (id == MAX8997_ESAFEOUT1 || id == MAX8997_ESAFEOUT2)
|
||||
regulators[id].n_voltages = 4;
|
||||
else if (id == MAX8997_CHARGER_CV)
|
||||
} else if (id == MAX8997_ESAFEOUT1 || id == MAX8997_ESAFEOUT2) {
|
||||
regulators[id].volt_table = safeoutvolt;
|
||||
regulators[id].n_voltages = ARRAY_SIZE(safeoutvolt);
|
||||
} else if (id == MAX8997_CHARGER_CV) {
|
||||
regulators[id].n_voltages = 16;
|
||||
}
|
||||
|
||||
config.dev = max8997->dev;
|
||||
config.init_data = pdata->regulators[i].initdata;
|
||||
|
|
Загрузка…
Ссылка в новой задаче