|
@@ -23,6 +23,7 @@
|
|
#include <linux/mfd/samsung/core.h>
|
|
#include <linux/mfd/samsung/core.h>
|
|
#include <linux/mfd/samsung/s5m8767.h>
|
|
#include <linux/mfd/samsung/s5m8767.h>
|
|
#include <linux/regulator/of_regulator.h>
|
|
#include <linux/regulator/of_regulator.h>
|
|
|
|
+#include <linux/regmap.h>
|
|
|
|
|
|
#define S5M8767_OPMODE_NORMAL_MODE 0x1
|
|
#define S5M8767_OPMODE_NORMAL_MODE 0x1
|
|
|
|
|
|
@@ -226,7 +227,7 @@ static int s5m8767_reg_is_enabled(struct regulator_dev *rdev)
|
|
else if (ret)
|
|
else if (ret)
|
|
return ret;
|
|
return ret;
|
|
|
|
|
|
- ret = sec_reg_read(s5m8767->iodev, reg, &val);
|
|
|
|
|
|
+ ret = regmap_read(s5m8767->iodev->regmap_pmic, reg, &val);
|
|
if (ret)
|
|
if (ret)
|
|
return ret;
|
|
return ret;
|
|
|
|
|
|
@@ -243,21 +244,21 @@ static int s5m8767_reg_enable(struct regulator_dev *rdev)
|
|
if (ret)
|
|
if (ret)
|
|
return ret;
|
|
return ret;
|
|
|
|
|
|
- return sec_reg_update(s5m8767->iodev, reg, enable_ctrl,
|
|
|
|
- S5M8767_ENCTRL_MASK);
|
|
|
|
|
|
+ return regmap_update_bits(s5m8767->iodev->regmap_pmic, reg,
|
|
|
|
+ S5M8767_ENCTRL_MASK, enable_ctrl);
|
|
}
|
|
}
|
|
|
|
|
|
static int s5m8767_reg_disable(struct regulator_dev *rdev)
|
|
static int s5m8767_reg_disable(struct regulator_dev *rdev)
|
|
{
|
|
{
|
|
struct s5m8767_info *s5m8767 = rdev_get_drvdata(rdev);
|
|
struct s5m8767_info *s5m8767 = rdev_get_drvdata(rdev);
|
|
- int ret, reg;
|
|
|
|
- int mask = S5M8767_ENCTRL_MASK, enable_ctrl;
|
|
|
|
|
|
+ int ret, reg, enable_ctrl;
|
|
|
|
|
|
ret = s5m8767_get_register(rdev, ®, &enable_ctrl);
|
|
ret = s5m8767_get_register(rdev, ®, &enable_ctrl);
|
|
if (ret)
|
|
if (ret)
|
|
return ret;
|
|
return ret;
|
|
|
|
|
|
- return sec_reg_update(s5m8767->iodev, reg, ~mask, mask);
|
|
|
|
|
|
+ return regmap_update_bits(s5m8767->iodev->regmap_pmic, reg,
|
|
|
|
+ S5M8767_ENCTRL_MASK, ~S5M8767_ENCTRL_MASK);
|
|
}
|
|
}
|
|
|
|
|
|
static int s5m8767_get_vsel_reg(int reg_id, struct s5m8767_info *s5m8767)
|
|
static int s5m8767_get_vsel_reg(int reg_id, struct s5m8767_info *s5m8767)
|
|
@@ -749,17 +750,20 @@ static int s5m8767_pmic_probe(struct platform_device *pdev)
|
|
buck_init = s5m8767_convert_voltage_to_sel(&buck_voltage_val2,
|
|
buck_init = s5m8767_convert_voltage_to_sel(&buck_voltage_val2,
|
|
pdata->buck2_init);
|
|
pdata->buck2_init);
|
|
|
|
|
|
- sec_reg_write(s5m8767->iodev, S5M8767_REG_BUCK2DVS2, buck_init);
|
|
|
|
|
|
+ regmap_write(s5m8767->iodev->regmap_pmic, S5M8767_REG_BUCK2DVS2,
|
|
|
|
+ buck_init);
|
|
|
|
|
|
buck_init = s5m8767_convert_voltage_to_sel(&buck_voltage_val2,
|
|
buck_init = s5m8767_convert_voltage_to_sel(&buck_voltage_val2,
|
|
pdata->buck3_init);
|
|
pdata->buck3_init);
|
|
|
|
|
|
- sec_reg_write(s5m8767->iodev, S5M8767_REG_BUCK3DVS2, buck_init);
|
|
|
|
|
|
+ regmap_write(s5m8767->iodev->regmap_pmic, S5M8767_REG_BUCK3DVS2,
|
|
|
|
+ buck_init);
|
|
|
|
|
|
buck_init = s5m8767_convert_voltage_to_sel(&buck_voltage_val2,
|
|
buck_init = s5m8767_convert_voltage_to_sel(&buck_voltage_val2,
|
|
pdata->buck4_init);
|
|
pdata->buck4_init);
|
|
|
|
|
|
- sec_reg_write(s5m8767->iodev, S5M8767_REG_BUCK4DVS2, buck_init);
|
|
|
|
|
|
+ regmap_write(s5m8767->iodev->regmap_pmic, S5M8767_REG_BUCK4DVS2,
|
|
|
|
+ buck_init);
|
|
|
|
|
|
for (i = 0; i < 8; i++) {
|
|
for (i = 0; i < 8; i++) {
|
|
if (s5m8767->buck2_gpiodvs) {
|
|
if (s5m8767->buck2_gpiodvs) {
|
|
@@ -841,43 +845,49 @@ static int s5m8767_pmic_probe(struct platform_device *pdev)
|
|
|
|
|
|
if (pdata->buck2_gpiodvs || pdata->buck3_gpiodvs ||
|
|
if (pdata->buck2_gpiodvs || pdata->buck3_gpiodvs ||
|
|
pdata->buck4_gpiodvs) {
|
|
pdata->buck4_gpiodvs) {
|
|
- sec_reg_update(s5m8767->iodev, S5M8767_REG_BUCK2CTRL,
|
|
|
|
- (pdata->buck2_gpiodvs) ? (1 << 1) : (0 << 1),
|
|
|
|
- 1 << 1);
|
|
|
|
- sec_reg_update(s5m8767->iodev, S5M8767_REG_BUCK3CTRL,
|
|
|
|
- (pdata->buck3_gpiodvs) ? (1 << 1) : (0 << 1),
|
|
|
|
- 1 << 1);
|
|
|
|
- sec_reg_update(s5m8767->iodev, S5M8767_REG_BUCK4CTRL,
|
|
|
|
- (pdata->buck4_gpiodvs) ? (1 << 1) : (0 << 1),
|
|
|
|
- 1 << 1);
|
|
|
|
|
|
+ regmap_update_bits(s5m8767->iodev->regmap_pmic,
|
|
|
|
+ S5M8767_REG_BUCK2CTRL, 1 << 1,
|
|
|
|
+ (pdata->buck2_gpiodvs) ? (1 << 1) : (0 << 1));
|
|
|
|
+ regmap_update_bits(s5m8767->iodev->regmap_pmic,
|
|
|
|
+ S5M8767_REG_BUCK3CTRL, 1 << 1,
|
|
|
|
+ (pdata->buck3_gpiodvs) ? (1 << 1) : (0 << 1));
|
|
|
|
+ regmap_update_bits(s5m8767->iodev->regmap_pmic,
|
|
|
|
+ S5M8767_REG_BUCK4CTRL, 1 << 1,
|
|
|
|
+ (pdata->buck4_gpiodvs) ? (1 << 1) : (0 << 1));
|
|
}
|
|
}
|
|
|
|
|
|
/* Initialize GPIO DVS registers */
|
|
/* Initialize GPIO DVS registers */
|
|
for (i = 0; i < 8; i++) {
|
|
for (i = 0; i < 8; i++) {
|
|
if (s5m8767->buck2_gpiodvs) {
|
|
if (s5m8767->buck2_gpiodvs) {
|
|
- sec_reg_write(s5m8767->iodev, S5M8767_REG_BUCK2DVS1 + i,
|
|
|
|
- s5m8767->buck2_vol[i]);
|
|
|
|
|
|
+ regmap_write(s5m8767->iodev->regmap_pmic,
|
|
|
|
+ S5M8767_REG_BUCK2DVS1 + i,
|
|
|
|
+ s5m8767->buck2_vol[i]);
|
|
}
|
|
}
|
|
|
|
|
|
if (s5m8767->buck3_gpiodvs) {
|
|
if (s5m8767->buck3_gpiodvs) {
|
|
- sec_reg_write(s5m8767->iodev, S5M8767_REG_BUCK3DVS1 + i,
|
|
|
|
- s5m8767->buck3_vol[i]);
|
|
|
|
|
|
+ regmap_write(s5m8767->iodev->regmap_pmic,
|
|
|
|
+ S5M8767_REG_BUCK3DVS1 + i,
|
|
|
|
+ s5m8767->buck3_vol[i]);
|
|
}
|
|
}
|
|
|
|
|
|
if (s5m8767->buck4_gpiodvs) {
|
|
if (s5m8767->buck4_gpiodvs) {
|
|
- sec_reg_write(s5m8767->iodev, S5M8767_REG_BUCK4DVS1 + i,
|
|
|
|
- s5m8767->buck4_vol[i]);
|
|
|
|
|
|
+ regmap_write(s5m8767->iodev->regmap_pmic,
|
|
|
|
+ S5M8767_REG_BUCK4DVS1 + i,
|
|
|
|
+ s5m8767->buck4_vol[i]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if (s5m8767->buck2_ramp)
|
|
if (s5m8767->buck2_ramp)
|
|
- sec_reg_update(s5m8767->iodev, S5M8767_REG_DVSRAMP, 0x08, 0x08);
|
|
|
|
|
|
+ regmap_update_bits(s5m8767->iodev->regmap_pmic,
|
|
|
|
+ S5M8767_REG_DVSRAMP, 0x08, 0x08);
|
|
|
|
|
|
if (s5m8767->buck3_ramp)
|
|
if (s5m8767->buck3_ramp)
|
|
- sec_reg_update(s5m8767->iodev, S5M8767_REG_DVSRAMP, 0x04, 0x04);
|
|
|
|
|
|
+ regmap_update_bits(s5m8767->iodev->regmap_pmic,
|
|
|
|
+ S5M8767_REG_DVSRAMP, 0x04, 0x04);
|
|
|
|
|
|
if (s5m8767->buck4_ramp)
|
|
if (s5m8767->buck4_ramp)
|
|
- sec_reg_update(s5m8767->iodev, S5M8767_REG_DVSRAMP, 0x02, 0x02);
|
|
|
|
|
|
+ regmap_update_bits(s5m8767->iodev->regmap_pmic,
|
|
|
|
+ S5M8767_REG_DVSRAMP, 0x02, 0x02);
|
|
|
|
|
|
if (s5m8767->buck2_ramp || s5m8767->buck3_ramp
|
|
if (s5m8767->buck2_ramp || s5m8767->buck3_ramp
|
|
|| s5m8767->buck4_ramp) {
|
|
|| s5m8767->buck4_ramp) {
|
|
@@ -901,9 +911,10 @@ static int s5m8767_pmic_probe(struct platform_device *pdev)
|
|
default:
|
|
default:
|
|
val = S5M8767_DVS_BUCK_RAMP_10;
|
|
val = S5M8767_DVS_BUCK_RAMP_10;
|
|
}
|
|
}
|
|
- sec_reg_update(s5m8767->iodev, S5M8767_REG_DVSRAMP,
|
|
|
|
- val << S5M8767_DVS_BUCK_RAMP_SHIFT,
|
|
|
|
- S5M8767_DVS_BUCK_RAMP_MASK);
|
|
|
|
|
|
+ regmap_update_bits(s5m8767->iodev->regmap_pmic,
|
|
|
|
+ S5M8767_REG_DVSRAMP,
|
|
|
|
+ S5M8767_DVS_BUCK_RAMP_MASK,
|
|
|
|
+ val << S5M8767_DVS_BUCK_RAMP_SHIFT);
|
|
}
|
|
}
|
|
|
|
|
|
for (i = 0; i < pdata->num_regulators; i++) {
|
|
for (i = 0; i < pdata->num_regulators; i++) {
|