|
@@ -311,7 +311,7 @@ static int ab8500_fixed_get_voltage(struct regulator_dev *rdev)
|
|
return info->fixed_uV;
|
|
return info->fixed_uV;
|
|
}
|
|
}
|
|
|
|
|
|
-static struct regulator_ops ab8500_ldo_fixed_ops = {
|
|
|
|
|
|
+static struct regulator_ops ab8500_regulator_fixed_ops = {
|
|
.enable = ab8500_regulator_enable,
|
|
.enable = ab8500_regulator_enable,
|
|
.disable = ab8500_regulator_disable,
|
|
.disable = ab8500_regulator_disable,
|
|
.is_enabled = ab8500_regulator_is_enabled,
|
|
.is_enabled = ab8500_regulator_is_enabled,
|
|
@@ -319,79 +319,196 @@ static struct regulator_ops ab8500_ldo_fixed_ops = {
|
|
.list_voltage = ab8500_list_voltage,
|
|
.list_voltage = ab8500_list_voltage,
|
|
};
|
|
};
|
|
|
|
|
|
-#define AB8500_LDO(_id, _min_mV, _max_mV, \
|
|
|
|
- _u_bank, _u_reg, _u_mask, _u_val_enable, \
|
|
|
|
- _v_bank, _v_reg, _v_mask, _v_table, _v_table_len) \
|
|
|
|
-[AB8500_LDO_##_id] = { \
|
|
|
|
- .desc = { \
|
|
|
|
- .name = "LDO-" #_id, \
|
|
|
|
- .ops = &ab8500_regulator_ops, \
|
|
|
|
- .type = REGULATOR_VOLTAGE, \
|
|
|
|
- .id = AB8500_LDO_##_id, \
|
|
|
|
- .owner = THIS_MODULE, \
|
|
|
|
- }, \
|
|
|
|
- .min_uV = (_min_mV) * 1000, \
|
|
|
|
- .max_uV = (_max_mV) * 1000, \
|
|
|
|
- .update_bank = _u_bank, \
|
|
|
|
- .update_reg = _u_reg, \
|
|
|
|
- .update_mask = _u_mask, \
|
|
|
|
- .update_val_enable = _u_val_enable, \
|
|
|
|
- .voltage_bank = _v_bank, \
|
|
|
|
- .voltage_reg = _v_reg, \
|
|
|
|
- .voltage_mask = _v_mask, \
|
|
|
|
- .voltages = _v_table, \
|
|
|
|
- .voltages_len = _v_table_len, \
|
|
|
|
- .fixed_uV = 0, \
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-#define AB8500_FIXED_LDO(_id, _fixed_mV, \
|
|
|
|
- _u_bank, _u_reg, _u_mask, _u_val_enable) \
|
|
|
|
-[AB8500_LDO_##_id] = { \
|
|
|
|
- .desc = { \
|
|
|
|
- .name = "LDO-" #_id, \
|
|
|
|
- .ops = &ab8500_ldo_fixed_ops, \
|
|
|
|
- .type = REGULATOR_VOLTAGE, \
|
|
|
|
- .id = AB8500_LDO_##_id, \
|
|
|
|
- .owner = THIS_MODULE, \
|
|
|
|
- }, \
|
|
|
|
- .fixed_uV = (_fixed_mV) * 1000, \
|
|
|
|
- .update_bank = _u_bank, \
|
|
|
|
- .update_reg = _u_reg, \
|
|
|
|
- .update_mask = _u_mask, \
|
|
|
|
- .update_val_enable = _u_val_enable, \
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static struct ab8500_regulator_info ab8500_regulator_info[] = {
|
|
|
|
|
|
+static struct ab8500_regulator_info
|
|
|
|
+ ab8500_regulator_info[AB8500_NUM_REGULATORS] = {
|
|
/*
|
|
/*
|
|
* Variable Voltage Regulators
|
|
* Variable Voltage Regulators
|
|
* name, min mV, max mV,
|
|
* name, min mV, max mV,
|
|
* update bank, reg, mask, enable val
|
|
* update bank, reg, mask, enable val
|
|
* volt bank, reg, mask, table, table length
|
|
* volt bank, reg, mask, table, table length
|
|
*/
|
|
*/
|
|
- AB8500_LDO(AUX1, 1100, 3300,
|
|
|
|
- 0x04, 0x09, 0x03, 0x01, 0x04, 0x1f, 0x0f,
|
|
|
|
- ldo_vauxn_voltages, ARRAY_SIZE(ldo_vauxn_voltages)),
|
|
|
|
- AB8500_LDO(AUX2, 1100, 3300,
|
|
|
|
- 0x04, 0x09, 0x0c, 0x04, 0x04, 0x20, 0x0f,
|
|
|
|
- ldo_vauxn_voltages, ARRAY_SIZE(ldo_vauxn_voltages)),
|
|
|
|
- AB8500_LDO(AUX3, 1100, 3300,
|
|
|
|
- 0x04, 0x0a, 0x03, 0x01, 0x04, 0x21, 0x07,
|
|
|
|
- ldo_vaux3_voltages, ARRAY_SIZE(ldo_vaux3_voltages)),
|
|
|
|
- AB8500_LDO(INTCORE, 1100, 3300,
|
|
|
|
- 0x03, 0x80, 0x44, 0x04, 0x03, 0x80, 0x38,
|
|
|
|
- ldo_vintcore_voltages, ARRAY_SIZE(ldo_vintcore_voltages)),
|
|
|
|
|
|
+ [AB8500_LDO_AUX1] = {
|
|
|
|
+ .desc = {
|
|
|
|
+ .name = "LDO-AUX1",
|
|
|
|
+ .ops = &ab8500_regulator_ops,
|
|
|
|
+ .type = REGULATOR_VOLTAGE,
|
|
|
|
+ .id = AB8500_LDO_AUX1,
|
|
|
|
+ .owner = THIS_MODULE,
|
|
|
|
+ .n_voltages = ARRAY_SIZE(ldo_vauxn_voltages),
|
|
|
|
+ },
|
|
|
|
+ .min_uV = 1100000,
|
|
|
|
+ .max_uV = 3300000,
|
|
|
|
+ .update_bank = 0x04,
|
|
|
|
+ .update_reg = 0x09,
|
|
|
|
+ .update_mask = 0x03,
|
|
|
|
+ .update_val_enable = 0x01,
|
|
|
|
+ .voltage_bank = 0x04,
|
|
|
|
+ .voltage_reg = 0x1f,
|
|
|
|
+ .voltage_mask = 0x0f,
|
|
|
|
+ .voltages = ldo_vauxn_voltages,
|
|
|
|
+ .voltages_len = ARRAY_SIZE(ldo_vauxn_voltages),
|
|
|
|
+ },
|
|
|
|
+ [AB8500_LDO_AUX2] = {
|
|
|
|
+ .desc = {
|
|
|
|
+ .name = "LDO-AUX2",
|
|
|
|
+ .ops = &ab8500_regulator_ops,
|
|
|
|
+ .type = REGULATOR_VOLTAGE,
|
|
|
|
+ .id = AB8500_LDO_AUX2,
|
|
|
|
+ .owner = THIS_MODULE,
|
|
|
|
+ .n_voltages = ARRAY_SIZE(ldo_vauxn_voltages),
|
|
|
|
+ },
|
|
|
|
+ .min_uV = 1100000,
|
|
|
|
+ .max_uV = 3300000,
|
|
|
|
+ .update_bank = 0x04,
|
|
|
|
+ .update_reg = 0x09,
|
|
|
|
+ .update_mask = 0x0c,
|
|
|
|
+ .update_val_enable = 0x04,
|
|
|
|
+ .voltage_bank = 0x04,
|
|
|
|
+ .voltage_reg = 0x20,
|
|
|
|
+ .voltage_mask = 0x0f,
|
|
|
|
+ .voltages = ldo_vauxn_voltages,
|
|
|
|
+ .voltages_len = ARRAY_SIZE(ldo_vauxn_voltages),
|
|
|
|
+ },
|
|
|
|
+ [AB8500_LDO_AUX3] = {
|
|
|
|
+ .desc = {
|
|
|
|
+ .name = "LDO-AUX3",
|
|
|
|
+ .ops = &ab8500_regulator_ops,
|
|
|
|
+ .type = REGULATOR_VOLTAGE,
|
|
|
|
+ .id = AB8500_LDO_AUX3,
|
|
|
|
+ .owner = THIS_MODULE,
|
|
|
|
+ .n_voltages = ARRAY_SIZE(ldo_vaux3_voltages),
|
|
|
|
+ },
|
|
|
|
+ .min_uV = 1100000,
|
|
|
|
+ .max_uV = 3300000,
|
|
|
|
+ .update_bank = 0x04,
|
|
|
|
+ .update_reg = 0x0a,
|
|
|
|
+ .update_mask = 0x03,
|
|
|
|
+ .update_val_enable = 0x01,
|
|
|
|
+ .voltage_bank = 0x04,
|
|
|
|
+ .voltage_reg = 0x21,
|
|
|
|
+ .voltage_mask = 0x07,
|
|
|
|
+ .voltages = ldo_vaux3_voltages,
|
|
|
|
+ .voltages_len = ARRAY_SIZE(ldo_vaux3_voltages),
|
|
|
|
+ },
|
|
|
|
+ [AB8500_LDO_INTCORE] = {
|
|
|
|
+ .desc = {
|
|
|
|
+ .name = "LDO-INTCORE",
|
|
|
|
+ .ops = &ab8500_regulator_ops,
|
|
|
|
+ .type = REGULATOR_VOLTAGE,
|
|
|
|
+ .id = AB8500_LDO_INTCORE,
|
|
|
|
+ .owner = THIS_MODULE,
|
|
|
|
+ .n_voltages = ARRAY_SIZE(ldo_vintcore_voltages),
|
|
|
|
+ },
|
|
|
|
+ .min_uV = 1100000,
|
|
|
|
+ .max_uV = 3300000,
|
|
|
|
+ .update_bank = 0x03,
|
|
|
|
+ .update_reg = 0x80,
|
|
|
|
+ .update_mask = 0x44,
|
|
|
|
+ .update_val_enable = 0x04,
|
|
|
|
+ .voltage_bank = 0x03,
|
|
|
|
+ .voltage_reg = 0x80,
|
|
|
|
+ .voltage_mask = 0x38,
|
|
|
|
+ .voltages = ldo_vintcore_voltages,
|
|
|
|
+ .voltages_len = ARRAY_SIZE(ldo_vintcore_voltages),
|
|
|
|
+ },
|
|
|
|
|
|
/*
|
|
/*
|
|
* Fixed Voltage Regulators
|
|
* Fixed Voltage Regulators
|
|
* name, fixed mV,
|
|
* name, fixed mV,
|
|
* update bank, reg, mask, enable val
|
|
* update bank, reg, mask, enable val
|
|
*/
|
|
*/
|
|
- AB8500_FIXED_LDO(TVOUT, 2000, 0x03, 0x80, 0x82, 0x02),
|
|
|
|
- AB8500_FIXED_LDO(AUDIO, 2000, 0x03, 0x83, 0x02, 0x02),
|
|
|
|
- AB8500_FIXED_LDO(ANAMIC1, 2050, 0x03, 0x83, 0x08, 0x08),
|
|
|
|
- AB8500_FIXED_LDO(ANAMIC2, 2050, 0x03, 0x83, 0x10, 0x10),
|
|
|
|
- AB8500_FIXED_LDO(DMIC, 1800, 0x03, 0x83, 0x04, 0x04),
|
|
|
|
- AB8500_FIXED_LDO(ANA, 1200, 0x04, 0x06, 0x0c, 0x04),
|
|
|
|
|
|
+ [AB8500_LDO_TVOUT] = {
|
|
|
|
+ .desc = {
|
|
|
|
+ .name = "LDO-TVOUT",
|
|
|
|
+ .ops = &ab8500_regulator_fixed_ops,
|
|
|
|
+ .type = REGULATOR_VOLTAGE,
|
|
|
|
+ .id = AB8500_LDO_TVOUT,
|
|
|
|
+ .owner = THIS_MODULE,
|
|
|
|
+ .n_voltages = 1,
|
|
|
|
+ },
|
|
|
|
+ .fixed_uV = 2000000,
|
|
|
|
+ .update_bank = 0x03,
|
|
|
|
+ .update_reg = 0x80,
|
|
|
|
+ .update_mask = 0x82,
|
|
|
|
+ .update_val_enable = 0x02,
|
|
|
|
+ },
|
|
|
|
+ [AB8500_LDO_AUDIO] = {
|
|
|
|
+ .desc = {
|
|
|
|
+ .name = "LDO-AUDIO",
|
|
|
|
+ .ops = &ab8500_regulator_fixed_ops,
|
|
|
|
+ .type = REGULATOR_VOLTAGE,
|
|
|
|
+ .id = AB8500_LDO_AUDIO,
|
|
|
|
+ .owner = THIS_MODULE,
|
|
|
|
+ .n_voltages = 1,
|
|
|
|
+ },
|
|
|
|
+ .fixed_uV = 2000000,
|
|
|
|
+ .update_bank = 0x03,
|
|
|
|
+ .update_reg = 0x83,
|
|
|
|
+ .update_mask = 0x02,
|
|
|
|
+ .update_val_enable = 0x02,
|
|
|
|
+ },
|
|
|
|
+ [AB8500_LDO_ANAMIC1] = {
|
|
|
|
+ .desc = {
|
|
|
|
+ .name = "LDO-ANAMIC1",
|
|
|
|
+ .ops = &ab8500_regulator_fixed_ops,
|
|
|
|
+ .type = REGULATOR_VOLTAGE,
|
|
|
|
+ .id = AB8500_LDO_ANAMIC1,
|
|
|
|
+ .owner = THIS_MODULE,
|
|
|
|
+ .n_voltages = 1,
|
|
|
|
+ },
|
|
|
|
+ .fixed_uV = 2050000,
|
|
|
|
+ .update_bank = 0x03,
|
|
|
|
+ .update_reg = 0x83,
|
|
|
|
+ .update_mask = 0x08,
|
|
|
|
+ .update_val_enable = 0x08,
|
|
|
|
+ },
|
|
|
|
+ [AB8500_LDO_ANAMIC2] = {
|
|
|
|
+ .desc = {
|
|
|
|
+ .name = "LDO-ANAMIC2",
|
|
|
|
+ .ops = &ab8500_regulator_fixed_ops,
|
|
|
|
+ .type = REGULATOR_VOLTAGE,
|
|
|
|
+ .id = AB8500_LDO_ANAMIC2,
|
|
|
|
+ .owner = THIS_MODULE,
|
|
|
|
+ .n_voltages = 1,
|
|
|
|
+ },
|
|
|
|
+ .fixed_uV = 2050000,
|
|
|
|
+ .update_bank = 0x03,
|
|
|
|
+ .update_reg = 0x83,
|
|
|
|
+ .update_mask = 0x10,
|
|
|
|
+ .update_val_enable = 0x10,
|
|
|
|
+ },
|
|
|
|
+ [AB8500_LDO_DMIC] = {
|
|
|
|
+ .desc = {
|
|
|
|
+ .name = "LDO-DMIC",
|
|
|
|
+ .ops = &ab8500_regulator_fixed_ops,
|
|
|
|
+ .type = REGULATOR_VOLTAGE,
|
|
|
|
+ .id = AB8500_LDO_DMIC,
|
|
|
|
+ .owner = THIS_MODULE,
|
|
|
|
+ .n_voltages = 1,
|
|
|
|
+ },
|
|
|
|
+ .fixed_uV = 1800000,
|
|
|
|
+ .update_bank = 0x03,
|
|
|
|
+ .update_reg = 0x83,
|
|
|
|
+ .update_mask = 0x04,
|
|
|
|
+ .update_val_enable = 0x04,
|
|
|
|
+ },
|
|
|
|
+ [AB8500_LDO_ANA] = {
|
|
|
|
+ .desc = {
|
|
|
|
+ .name = "LDO-ANA",
|
|
|
|
+ .ops = &ab8500_regulator_fixed_ops,
|
|
|
|
+ .type = REGULATOR_VOLTAGE,
|
|
|
|
+ .id = AB8500_LDO_ANA,
|
|
|
|
+ .owner = THIS_MODULE,
|
|
|
|
+ .n_voltages = 1,
|
|
|
|
+ },
|
|
|
|
+ .fixed_uV = 1200000,
|
|
|
|
+ .update_bank = 0x04,
|
|
|
|
+ .update_reg = 0x06,
|
|
|
|
+ .update_mask = 0x0c,
|
|
|
|
+ .update_val_enable = 0x04,
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+
|
|
};
|
|
};
|
|
|
|
|
|
static __devinit int ab8500_regulator_probe(struct platform_device *pdev)
|
|
static __devinit int ab8500_regulator_probe(struct platform_device *pdev)
|