forked from mirrors/linux
		
	regulator: Use regmap_read/write(), regmap_update_bits functions directly
Current driver had the regmapcalls within the bodies of the driver specific read/write fuctions. This patch removes the original read/write functions and makes the call sites use regmap directly. Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
		
							parent
							
								
									cfcfc9eca2
								
							
						
					
					
						commit
						43530b69d7
					
				
					 1 changed files with 32 additions and 55 deletions
				
			
		|  | @ -152,48 +152,21 @@ struct tps_driver_data { | ||||||
| 	u8 core_regulator; | 	u8 core_regulator; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| static int tps_65023_set_bits(struct tps_pmic *tps, u8 reg, u8 mask) |  | ||||||
| { |  | ||||||
| 	return regmap_update_bits(tps->regmap, reg, mask, mask); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| static int tps_65023_clear_bits(struct tps_pmic *tps, u8 reg, u8 mask) |  | ||||||
| { |  | ||||||
| 	return regmap_update_bits(tps->regmap, reg, mask, 0); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| static int tps_65023_reg_read(struct tps_pmic *tps, u8 reg) |  | ||||||
| { |  | ||||||
| 	unsigned int val; |  | ||||||
| 	int ret; |  | ||||||
| 
 |  | ||||||
| 	ret = regmap_read(tps->regmap, reg, &val); |  | ||||||
| 
 |  | ||||||
| 	if (ret != 0) |  | ||||||
| 		return ret; |  | ||||||
| 	else |  | ||||||
| 		return val; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| static int tps_65023_reg_write(struct tps_pmic *tps, u8 reg, u8 val) |  | ||||||
| { |  | ||||||
| 	return regmap_write(tps->regmap, reg, val); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| static int tps65023_dcdc_is_enabled(struct regulator_dev *dev) | static int tps65023_dcdc_is_enabled(struct regulator_dev *dev) | ||||||
| { | { | ||||||
| 	struct tps_pmic *tps = rdev_get_drvdata(dev); | 	struct tps_pmic *tps = rdev_get_drvdata(dev); | ||||||
| 	int data, dcdc = rdev_get_id(dev); | 	int data, dcdc = rdev_get_id(dev); | ||||||
|  | 	int ret; | ||||||
| 	u8 shift; | 	u8 shift; | ||||||
| 
 | 
 | ||||||
| 	if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3) | 	if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3) | ||||||
| 		return -EINVAL; | 		return -EINVAL; | ||||||
| 
 | 
 | ||||||
| 	shift = TPS65023_NUM_REGULATOR - dcdc; | 	shift = TPS65023_NUM_REGULATOR - dcdc; | ||||||
| 	data = tps_65023_reg_read(tps, TPS65023_REG_REG_CTRL); | 	ret = regmap_read(tps->regmap, TPS65023_REG_REG_CTRL, &data); | ||||||
| 
 | 
 | ||||||
| 	if (data < 0) | 	if (ret != 0) | ||||||
| 		return data; | 		return ret; | ||||||
| 	else | 	else | ||||||
| 		return (data & 1<<shift) ? 1 : 0; | 		return (data & 1<<shift) ? 1 : 0; | ||||||
| } | } | ||||||
|  | @ -202,16 +175,17 @@ static int tps65023_ldo_is_enabled(struct regulator_dev *dev) | ||||||
| { | { | ||||||
| 	struct tps_pmic *tps = rdev_get_drvdata(dev); | 	struct tps_pmic *tps = rdev_get_drvdata(dev); | ||||||
| 	int data, ldo = rdev_get_id(dev); | 	int data, ldo = rdev_get_id(dev); | ||||||
|  | 	int ret; | ||||||
| 	u8 shift; | 	u8 shift; | ||||||
| 
 | 
 | ||||||
| 	if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2) | 	if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2) | ||||||
| 		return -EINVAL; | 		return -EINVAL; | ||||||
| 
 | 
 | ||||||
| 	shift = (ldo == TPS65023_LDO_1 ? 1 : 2); | 	shift = (ldo == TPS65023_LDO_1 ? 1 : 2); | ||||||
| 	data = tps_65023_reg_read(tps, TPS65023_REG_REG_CTRL); | 	ret = regmap_read(tps->regmap, TPS65023_REG_REG_CTRL, &data); | ||||||
| 
 | 
 | ||||||
| 	if (data < 0) | 	if (ret != 0) | ||||||
| 		return data; | 		return ret; | ||||||
| 	else | 	else | ||||||
| 		return (data & 1<<shift) ? 1 : 0; | 		return (data & 1<<shift) ? 1 : 0; | ||||||
| } | } | ||||||
|  | @ -226,7 +200,7 @@ static int tps65023_dcdc_enable(struct regulator_dev *dev) | ||||||
| 		return -EINVAL; | 		return -EINVAL; | ||||||
| 
 | 
 | ||||||
| 	shift = TPS65023_NUM_REGULATOR - dcdc; | 	shift = TPS65023_NUM_REGULATOR - dcdc; | ||||||
| 	return tps_65023_set_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift); | 	return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 1 << shift); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static int tps65023_dcdc_disable(struct regulator_dev *dev) | static int tps65023_dcdc_disable(struct regulator_dev *dev) | ||||||
|  | @ -239,7 +213,7 @@ static int tps65023_dcdc_disable(struct regulator_dev *dev) | ||||||
| 		return -EINVAL; | 		return -EINVAL; | ||||||
| 
 | 
 | ||||||
| 	shift = TPS65023_NUM_REGULATOR - dcdc; | 	shift = TPS65023_NUM_REGULATOR - dcdc; | ||||||
| 	return tps_65023_clear_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift); | 	return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 0); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static int tps65023_ldo_enable(struct regulator_dev *dev) | static int tps65023_ldo_enable(struct regulator_dev *dev) | ||||||
|  | @ -252,7 +226,7 @@ static int tps65023_ldo_enable(struct regulator_dev *dev) | ||||||
| 		return -EINVAL; | 		return -EINVAL; | ||||||
| 
 | 
 | ||||||
| 	shift = (ldo == TPS65023_LDO_1 ? 1 : 2); | 	shift = (ldo == TPS65023_LDO_1 ? 1 : 2); | ||||||
| 	return tps_65023_set_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift); | 	return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 1 << shift); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static int tps65023_ldo_disable(struct regulator_dev *dev) | static int tps65023_ldo_disable(struct regulator_dev *dev) | ||||||
|  | @ -265,21 +239,22 @@ static int tps65023_ldo_disable(struct regulator_dev *dev) | ||||||
| 		return -EINVAL; | 		return -EINVAL; | ||||||
| 
 | 
 | ||||||
| 	shift = (ldo == TPS65023_LDO_1 ? 1 : 2); | 	shift = (ldo == TPS65023_LDO_1 ? 1 : 2); | ||||||
| 	return tps_65023_clear_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift); | 	return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 0); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static int tps65023_dcdc_get_voltage(struct regulator_dev *dev) | static int tps65023_dcdc_get_voltage(struct regulator_dev *dev) | ||||||
| { | { | ||||||
| 	struct tps_pmic *tps = rdev_get_drvdata(dev); | 	struct tps_pmic *tps = rdev_get_drvdata(dev); | ||||||
|  | 	int ret; | ||||||
| 	int data, dcdc = rdev_get_id(dev); | 	int data, dcdc = rdev_get_id(dev); | ||||||
| 
 | 
 | ||||||
| 	if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3) | 	if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3) | ||||||
| 		return -EINVAL; | 		return -EINVAL; | ||||||
| 
 | 
 | ||||||
| 	if (dcdc == tps->core_regulator) { | 	if (dcdc == tps->core_regulator) { | ||||||
| 		data = tps_65023_reg_read(tps, TPS65023_REG_DEF_CORE); | 		ret = regmap_read(tps->regmap, TPS65023_REG_DEF_CORE, &data); | ||||||
| 		if (data < 0) | 		if (ret != 0) | ||||||
| 			return data; | 			return ret; | ||||||
| 		data &= (tps->info[dcdc]->table_len - 1); | 		data &= (tps->info[dcdc]->table_len - 1); | ||||||
| 		return tps->info[dcdc]->table[data] * 1000; | 		return tps->info[dcdc]->table[data] * 1000; | ||||||
| 	} else | 	} else | ||||||
|  | @ -318,13 +293,13 @@ static int tps65023_dcdc_set_voltage(struct regulator_dev *dev, | ||||||
| 	if (vsel == tps->info[dcdc]->table_len) | 	if (vsel == tps->info[dcdc]->table_len) | ||||||
| 		goto failed; | 		goto failed; | ||||||
| 
 | 
 | ||||||
| 	ret = tps_65023_reg_write(tps, TPS65023_REG_DEF_CORE, vsel); | 	ret = regmap_write(tps->regmap, TPS65023_REG_DEF_CORE, vsel); | ||||||
| 
 | 
 | ||||||
| 	/* Tell the chip that we have changed the value in DEFCORE
 | 	/* Tell the chip that we have changed the value in DEFCORE
 | ||||||
| 	 * and its time to update the core voltage | 	 * and its time to update the core voltage | ||||||
| 	 */ | 	 */ | ||||||
| 	tps_65023_set_bits(tps, TPS65023_REG_CON_CTRL2, | 	regmap_update_bits(tps->regmap, TPS65023_REG_CON_CTRL2, | ||||||
| 						TPS65023_REG_CTRL2_GO); | 			TPS65023_REG_CTRL2_GO, TPS65023_REG_CTRL2_GO); | ||||||
| 
 | 
 | ||||||
| 	return ret; | 	return ret; | ||||||
| 
 | 
 | ||||||
|  | @ -336,13 +311,14 @@ static int tps65023_ldo_get_voltage(struct regulator_dev *dev) | ||||||
| { | { | ||||||
| 	struct tps_pmic *tps = rdev_get_drvdata(dev); | 	struct tps_pmic *tps = rdev_get_drvdata(dev); | ||||||
| 	int data, ldo = rdev_get_id(dev); | 	int data, ldo = rdev_get_id(dev); | ||||||
|  | 	int ret; | ||||||
| 
 | 
 | ||||||
| 	if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2) | 	if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2) | ||||||
| 		return -EINVAL; | 		return -EINVAL; | ||||||
| 
 | 
 | ||||||
| 	data = tps_65023_reg_read(tps, TPS65023_REG_LDO_CTRL); | 	ret = regmap_read(tps->regmap, TPS65023_REG_LDO_CTRL, &data); | ||||||
| 	if (data < 0) | 	if (ret != 0) | ||||||
| 		return data; | 		return ret; | ||||||
| 
 | 
 | ||||||
| 	data >>= (TPS65023_LDO_CTRL_LDOx_SHIFT(ldo - TPS65023_LDO_1)); | 	data >>= (TPS65023_LDO_CTRL_LDOx_SHIFT(ldo - TPS65023_LDO_1)); | ||||||
| 	data &= (tps->info[ldo]->table_len - 1); | 	data &= (tps->info[ldo]->table_len - 1); | ||||||
|  | @ -354,6 +330,7 @@ static int tps65023_ldo_set_voltage(struct regulator_dev *dev, | ||||||
| { | { | ||||||
| 	struct tps_pmic *tps = rdev_get_drvdata(dev); | 	struct tps_pmic *tps = rdev_get_drvdata(dev); | ||||||
| 	int data, vsel, ldo = rdev_get_id(dev); | 	int data, vsel, ldo = rdev_get_id(dev); | ||||||
|  | 	int ret; | ||||||
| 
 | 
 | ||||||
| 	if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2) | 	if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2) | ||||||
| 		return -EINVAL; | 		return -EINVAL; | ||||||
|  | @ -377,13 +354,13 @@ static int tps65023_ldo_set_voltage(struct regulator_dev *dev, | ||||||
| 
 | 
 | ||||||
| 	*selector = vsel; | 	*selector = vsel; | ||||||
| 
 | 
 | ||||||
| 	data = tps_65023_reg_read(tps, TPS65023_REG_LDO_CTRL); | 	ret = regmap_read(tps->regmap, TPS65023_REG_LDO_CTRL, &data); | ||||||
| 	if (data < 0) | 	if (ret != 0) | ||||||
| 		return data; | 		return ret; | ||||||
| 
 | 
 | ||||||
| 	data &= TPS65023_LDO_CTRL_LDOx_MASK(ldo - TPS65023_LDO_1); | 	data &= TPS65023_LDO_CTRL_LDOx_MASK(ldo - TPS65023_LDO_1); | ||||||
| 	data |= (vsel << (TPS65023_LDO_CTRL_LDOx_SHIFT(ldo - TPS65023_LDO_1))); | 	data |= (vsel << (TPS65023_LDO_CTRL_LDOx_SHIFT(ldo - TPS65023_LDO_1))); | ||||||
| 	return tps_65023_reg_write(tps, TPS65023_REG_LDO_CTRL, data); | 	return regmap_write(tps->regmap, TPS65023_REG_LDO_CTRL, data); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static int tps65023_dcdc_list_voltage(struct regulator_dev *dev, | static int tps65023_dcdc_list_voltage(struct regulator_dev *dev, | ||||||
|  | @ -511,12 +488,12 @@ static int __devinit tps_65023_probe(struct i2c_client *client, | ||||||
| 	i2c_set_clientdata(client, tps); | 	i2c_set_clientdata(client, tps); | ||||||
| 
 | 
 | ||||||
| 	/* Enable setting output voltage by I2C */ | 	/* Enable setting output voltage by I2C */ | ||||||
| 	tps_65023_clear_bits(tps, TPS65023_REG_CON_CTRL2, | 	regmap_update_bits(tps->regmap, TPS65023_REG_CON_CTRL2, | ||||||
| 						TPS65023_REG_CTRL2_CORE_ADJ); | 			TPS65023_REG_CTRL2_CORE_ADJ, TPS65023_REG_CTRL2_CORE_ADJ); | ||||||
| 
 | 
 | ||||||
| 	/* Enable setting output voltage by I2C */ | 	/* Enable setting output voltage by I2C */ | ||||||
| 	tps_65023_clear_bits(tps, TPS65023_REG_CON_CTRL2, | 	regmap_update_bits(tps->regmap, TPS65023_REG_CON_CTRL2, | ||||||
| 						TPS65023_REG_CTRL2_CORE_ADJ); | 			TPS65023_REG_CTRL2_CORE_ADJ, TPS65023_REG_CTRL2_CORE_ADJ); | ||||||
| 
 | 
 | ||||||
| 	return 0; | 	return 0; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Jonghwan Choi
						Jonghwan Choi