diff options
Diffstat (limited to 'drivers/regulator/lp3972.c')
| -rw-r--r-- | drivers/regulator/lp3972.c | 102 | 
1 files changed, 36 insertions, 66 deletions
diff --git a/drivers/regulator/lp3972.c b/drivers/regulator/lp3972.c index de073df7d34..3cdc755d9b2 100644 --- a/drivers/regulator/lp3972.c +++ b/drivers/regulator/lp3972.c @@ -74,54 +74,40 @@ struct lp3972 {  #define LP3972_OVER2_LDO4_EN	BIT(4)  #define LP3972_OVER1_S_EN	BIT(2) -static const int ldo1_voltage_map[] = { -	1700, 1725, 1750, 1775, 1800, 1825, 1850, 1875, -	1900, 1925, 1950, 1975, 2000, +static const unsigned int ldo1_voltage_map[] = { +	1700000, 1725000, 1750000, 1775000, 1800000, 1825000, 1850000, 1875000, +	1900000, 1925000, 1950000, 1975000, 2000000,  }; -static const int ldo23_voltage_map[] = { -	1800, 1900, 2000, 2100, 2200, 2300, 2400, 2500, -	2600, 2700, 2800, 2900, 3000, 3100, 3200, 3300, +static const unsigned int ldo23_voltage_map[] = { +	1800000, 1900000, 2000000, 2100000, 2200000, 2300000, 2400000, 2500000, +	2600000, 2700000, 2800000, 2900000, 3000000, 3100000, 3200000, 3300000,  }; -static const int ldo4_voltage_map[] = { -	1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350, -	1400, 1500, 1800, 1900, 2500, 2800, 3000, 3300, +static const unsigned int ldo4_voltage_map[] = { +	1000000, 1050000, 1100000, 1150000, 1200000, 1250000, 1300000, 1350000, +	1400000, 1500000, 1800000, 1900000, 2500000, 2800000, 3000000, 3300000,  }; -static const int ldo5_voltage_map[] = { -	   0,    0,    0,    0,    0,  850,  875,  900, -	 925,  950,  975, 1000, 1025, 1050, 1075, 1100, -	1125, 1150, 1175, 1200, 1225, 1250, 1275, 1300, -	1325, 1350, 1375, 1400, 1425, 1450, 1475, 1500, +static const unsigned int ldo5_voltage_map[] = { +	      0,       0,       0,       0,       0,  850000,  875000,  900000, +	 925000,  950000,  975000, 1000000, 1025000, 1050000, 1075000, 1100000, +	1125000, 1150000, 1175000, 1200000, 1225000, 1250000, 1275000, 1300000, +	1325000, 1350000, 1375000, 1400000, 1425000, 1450000, 1475000, 1500000,  }; -static const int buck1_voltage_map[] = { -	 725,  750,  775,  800,  825,  850,  875,  900, -	 925,  950,  975, 1000, 1025, 1050, 1075, 1100, -	1125, 1150, 1175, 1200, 1225, 1250, 1275, 1300, -	1325, 1350, 1375, 1400, 1425, 1450, 1475, 1500, +static const unsigned int buck1_voltage_map[] = { +	 725000,  750000,  775000,  800000,  825000,  850000,  875000,  900000, +	 925000,  950000,  975000, 1000000, 1025000, 1050000, 1075000, 1100000, +	1125000, 1150000, 1175000, 1200000, 1225000, 1250000, 1275000, 1300000, +	1325000, 1350000, 1375000, 1400000, 1425000, 1450000, 1475000, 1500000,  }; -static const int buck23_voltage_map[] = { -	   0,  800,  850,  900,  950, 1000, 1050, 1100, -	1150, 1200, 1250, 1300, 1350, 1400, 1450, 1500, -	1550, 1600, 1650, 1700, 1800, 1900, 2500, 2800, -	3000, 3300, -}; - -static const int *ldo_voltage_map[] = { -	ldo1_voltage_map, -	ldo23_voltage_map, -	ldo23_voltage_map, -	ldo4_voltage_map, -	ldo5_voltage_map, -}; - -static const int *buck_voltage_map[] = { -	buck1_voltage_map, -	buck23_voltage_map, -	buck23_voltage_map, +static const unsigned int buck23_voltage_map[] = { +	      0,  800000,  850000,  900000,  950000, 1000000, 1050000, 1100000, +	1150000, 1200000, 1250000, 1300000, 1350000, 1400000, 1450000, 1500000, +	1550000, 1600000, 1650000, 1700000, 1800000, 1900000, 2500000, 2800000, +	3000000, 3300000,  };  static const int ldo_output_enable_mask[] = { @@ -160,7 +146,6 @@ static const int buck_base_addr[] = {  	LP3972_B3TV_REG,  }; -#define LP3972_LDO_VOL_VALUE_MAP(x) (ldo_voltage_map[x])  #define LP3972_LDO_OUTPUT_ENABLE_MASK(x) (ldo_output_enable_mask[x])  #define LP3972_LDO_OUTPUT_ENABLE_REG(x) (ldo_output_enable_addr[x]) @@ -177,7 +162,6 @@ static const int buck_base_addr[] = {  #define LP3972_LDO_VOL_MIN_IDX(x) (((x) == 4) ? 0x05 : 0x00)  #define LP3972_LDO_VOL_MAX_IDX(x) ((x) ? (((x) == 4) ? 0x1f : 0x0f) : 0x0c) -#define LP3972_BUCK_VOL_VALUE_MAP(x) (buck_voltage_map[x])  #define LP3972_BUCK_VOL_ENABLE_REG(x) (buck_vol_enable_addr[x])  #define LP3972_BUCK_VOL1_REG(x) (buck_base_addr[x])  #define LP3972_BUCK_VOL_MASK 0x1f @@ -242,17 +226,6 @@ static int lp3972_set_bits(struct lp3972 *lp3972, u8 reg, u16 mask, u16 val)  	return ret;  } -static int lp3972_ldo_list_voltage(struct regulator_dev *dev, unsigned index) -{ -	int ldo = rdev_get_id(dev) - LP3972_LDO1; - -	if (index < LP3972_LDO_VOL_MIN_IDX(ldo) || -	    index > LP3972_LDO_VOL_MAX_IDX(ldo)) -		return -EINVAL; - -	return 1000 * LP3972_LDO_VOL_VALUE_MAP(ldo)[index]; -} -  static int lp3972_ldo_is_enabled(struct regulator_dev *dev)  {  	struct lp3972 *lp3972 = rdev_get_drvdata(dev); @@ -294,7 +267,7 @@ static int lp3972_ldo_get_voltage(struct regulator_dev *dev)  	reg = lp3972_reg_read(lp3972, LP3972_LDO_VOL_CONTR_REG(ldo));  	val = (reg >> LP3972_LDO_VOL_CONTR_SHIFT(ldo)) & mask; -	return 1000 * LP3972_LDO_VOL_VALUE_MAP(ldo)[val]; +	return dev->desc->volt_table[val];  }  static int lp3972_ldo_set_voltage_sel(struct regulator_dev *dev, @@ -337,7 +310,7 @@ static int lp3972_ldo_set_voltage_sel(struct regulator_dev *dev,  }  static struct regulator_ops lp3972_ldo_ops = { -	.list_voltage = lp3972_ldo_list_voltage, +	.list_voltage = regulator_list_voltage_table,  	.is_enabled = lp3972_ldo_is_enabled,  	.enable = lp3972_ldo_enable,  	.disable = lp3972_ldo_disable, @@ -345,17 +318,6 @@ static struct regulator_ops lp3972_ldo_ops = {  	.set_voltage_sel = lp3972_ldo_set_voltage_sel,  }; -static int lp3972_dcdc_list_voltage(struct regulator_dev *dev, unsigned index) -{ -	int buck = rdev_get_id(dev) - LP3972_DCDC1; - -	if (index < LP3972_BUCK_VOL_MIN_IDX(buck) || -	    index > LP3972_BUCK_VOL_MAX_IDX(buck)) -		return -EINVAL; - -	return 1000 * buck_voltage_map[buck][index]; -} -  static int lp3972_dcdc_is_enabled(struct regulator_dev *dev)  {  	struct lp3972 *lp3972 = rdev_get_drvdata(dev); @@ -401,7 +363,7 @@ static int lp3972_dcdc_get_voltage(struct regulator_dev *dev)  	reg = lp3972_reg_read(lp3972, LP3972_BUCK_VOL1_REG(buck));  	reg &= LP3972_BUCK_VOL_MASK;  	if (reg <= LP3972_BUCK_VOL_MAX_IDX(buck)) -		val = 1000 * buck_voltage_map[buck][reg]; +		val = dev->desc->volt_table[reg];  	else {  		val = 0;  		dev_warn(&dev->dev, "chip reported incorrect voltage value." @@ -436,7 +398,7 @@ static int lp3972_dcdc_set_voltage_sel(struct regulator_dev *dev,  }  static struct regulator_ops lp3972_dcdc_ops = { -	.list_voltage = lp3972_dcdc_list_voltage, +	.list_voltage = regulator_list_voltage_table,  	.is_enabled = lp3972_dcdc_is_enabled,  	.enable = lp3972_dcdc_enable,  	.disable = lp3972_dcdc_disable, @@ -450,6 +412,7 @@ static const struct regulator_desc regulators[] = {  		.id = LP3972_LDO1,  		.ops = &lp3972_ldo_ops,  		.n_voltages = ARRAY_SIZE(ldo1_voltage_map), +		.volt_table = ldo1_voltage_map,  		.type = REGULATOR_VOLTAGE,  		.owner = THIS_MODULE,  	}, @@ -458,6 +421,7 @@ static const struct regulator_desc regulators[] = {  		.id = LP3972_LDO2,  		.ops = &lp3972_ldo_ops,  		.n_voltages = ARRAY_SIZE(ldo23_voltage_map), +		.volt_table = ldo23_voltage_map,  		.type = REGULATOR_VOLTAGE,  		.owner = THIS_MODULE,  	}, @@ -466,6 +430,7 @@ static const struct regulator_desc regulators[] = {  		.id = LP3972_LDO3,  		.ops = &lp3972_ldo_ops,  		.n_voltages = ARRAY_SIZE(ldo23_voltage_map), +		.volt_table = ldo23_voltage_map,  		.type = REGULATOR_VOLTAGE,  		.owner = THIS_MODULE,  	}, @@ -474,6 +439,7 @@ static const struct regulator_desc regulators[] = {  		.id = LP3972_LDO4,  		.ops = &lp3972_ldo_ops,  		.n_voltages = ARRAY_SIZE(ldo4_voltage_map), +		.volt_table = ldo4_voltage_map,  		.type = REGULATOR_VOLTAGE,  		.owner = THIS_MODULE,  	}, @@ -482,6 +448,7 @@ static const struct regulator_desc regulators[] = {  		.id = LP3972_LDO5,  		.ops = &lp3972_ldo_ops,  		.n_voltages = ARRAY_SIZE(ldo5_voltage_map), +		.volt_table = ldo5_voltage_map,  		.type = REGULATOR_VOLTAGE,  		.owner = THIS_MODULE,  	}, @@ -490,6 +457,7 @@ static const struct regulator_desc regulators[] = {  		.id = LP3972_DCDC1,  		.ops = &lp3972_dcdc_ops,  		.n_voltages = ARRAY_SIZE(buck1_voltage_map), +		.volt_table = buck1_voltage_map,  		.type = REGULATOR_VOLTAGE,  		.owner = THIS_MODULE,  	}, @@ -498,6 +466,7 @@ static const struct regulator_desc regulators[] = {  		.id = LP3972_DCDC2,  		.ops = &lp3972_dcdc_ops,  		.n_voltages = ARRAY_SIZE(buck23_voltage_map), +		.volt_table = buck23_voltage_map,  		.type = REGULATOR_VOLTAGE,  		.owner = THIS_MODULE,  	}, @@ -506,6 +475,7 @@ static const struct regulator_desc regulators[] = {  		.id = LP3972_DCDC3,  		.ops = &lp3972_dcdc_ops,  		.n_voltages = ARRAY_SIZE(buck23_voltage_map), +		.volt_table = buck23_voltage_map,  		.type = REGULATOR_VOLTAGE,  		.owner = THIS_MODULE,  	},  |