summaryrefslogtreecommitdiff
path: root/drivers/regulator
diff options
context:
space:
mode:
authorZhou Jingyu <b02241@freescale.com>2010-09-19 13:52:12 +0800
committerAlan Tull <r80115@freescale.com>2010-09-25 09:52:56 -0500
commit3263afb720bede2e490ddb3ac4f7c73fce8a251b (patch)
treea37f1ae8d1df086c0bfbf05d91390055ac8e9a5f /drivers/regulator
parentb079999b6590ac18308ef47ecee2c4d66fb54e11 (diff)
ENGR00131707-2 upgrade mc13892 regulator driver to 2.6.35
upgrade mc13892 regulator driver to 2.6.35 mc13892 regulator driver code Signed-off-by: Zhou Jingyu <Jingyu.Zhou@freescale.com>
Diffstat (limited to 'drivers/regulator')
-rw-r--r--drivers/regulator/reg-mc13892.c106
1 files changed, 106 insertions, 0 deletions
diff --git a/drivers/regulator/reg-mc13892.c b/drivers/regulator/reg-mc13892.c
index f6803f8ba837..e3c6ab36426d 100644
--- a/drivers/regulator/reg-mc13892.c
+++ b/drivers/regulator/reg-mc13892.c
@@ -1468,6 +1468,97 @@ static int mc13892_power_gating_disable(struct regulator_dev *reg)
return pmic_write_reg(register1, register_val, register_mask);
}
+static int mc13892_regulator_is_enabled(struct regulator_dev *rdev)
+{
+ unsigned int register1;
+ unsigned int register_mask;
+ int id = rdev_get_id(rdev);
+ unsigned int register_val = 0;
+
+ switch (id) {
+ case MC13892_SWBST:
+ register_mask = BITFMASK(SWBST_EN);
+ register1 = REG_SW_5;
+ break;
+ case MC13892_VIOHI:
+ register_mask = BITFMASK(VIOHI_EN);
+ register1 = REG_MODE_0;
+ break;
+ case MC13892_VPLL:
+ register_mask = BITFMASK(VPLL_EN);
+ register1 = REG_MODE_0;
+ break;
+ case MC13892_VDIG:
+ register_mask = BITFMASK(VDIG_EN);
+ register1 = REG_MODE_0;
+ break;
+ case MC13892_VSD:
+ register_mask = BITFMASK(VSD_EN);
+ register1 = REG_MODE_1;
+ break;
+ case MC13892_VUSB2:
+ register_mask = BITFMASK(VUSB2_EN);
+ register1 = REG_MODE_0;
+ break;
+ case MC13892_VVIDEO:
+ register_mask = BITFMASK(VVIDEO_EN);
+ register1 = REG_MODE_1;
+ break;
+ case MC13892_VAUDIO:
+ register_mask = BITFMASK(VAUDIO_EN);
+ register1 = REG_MODE_1;
+ break;
+ case MC13892_VCAM:
+ register_mask = BITFMASK(VCAM_EN);
+ register1 = REG_MODE_1;
+ break;
+ case MC13892_VGEN1:
+ register_mask = BITFMASK(VGEN1_EN);
+ register1 = REG_MODE_0;
+ break;
+ case MC13892_VGEN2:
+ register_mask = BITFMASK(VGEN2_EN);
+ register1 = REG_MODE_0;
+ break;
+ case MC13892_VGEN3:
+ register_mask = BITFMASK(VGEN3_EN);
+ register1 = REG_MODE_1;
+ break;
+ case MC13892_VUSB:
+ register_mask = BITFMASK(VUSB_EN);
+ register1 = REG_USB1;
+ break;
+ case MC13892_GPO1:
+ register_mask = BITFMASK(GPO1_EN);
+ register1 = REG_POWER_MISC;
+ break;
+ case MC13892_GPO2:
+ register_mask = BITFMASK(GPO2_EN);
+ register1 = REG_POWER_MISC;
+ break;
+ case MC13892_GPO3:
+ register_mask = BITFMASK(GPO3_EN);
+ register1 = REG_POWER_MISC;
+ break;
+ case MC13892_GPO4:
+ register_mask = BITFMASK(GPO4_EN);
+ register1 = REG_POWER_MISC;
+ break;
+ case MC13892_PWGT1:
+ register_mask = BITFMASK(PWGT1SPI_EN);
+ register1 = REG_POWER_MISC;
+ break;
+ case MC13892_PWGT2:
+ register_mask = BITFMASK(PWGT2SPI_EN);
+ register1 = REG_POWER_MISC;
+ break;
+ default:
+ return 1;
+ }
+ CHECK_ERROR(pmic_read_reg(register1, &register_val, register_mask));
+ return (register_val != 0);
+}
+
static struct regulator_ops mc13892_sw_ops = {
.enable = mc13892_sw_stby_enable,
.disable = mc13892_sw_stby_disable,
@@ -1482,16 +1573,19 @@ static struct regulator_ops mc13892_sw_ops = {
static struct regulator_ops mc13892_swbst_ops = {
.enable = mc13892_swbst_enable,
.disable = mc13892_swbst_disable,
+ .is_enabled = mc13892_regulator_is_enabled,
};
static struct regulator_ops mc13892_viohi_ops = {
.enable = mc13892_viohi_enable,
.disable = mc13892_viohi_disable,
+ .is_enabled = mc13892_regulator_is_enabled,
};
static struct regulator_ops mc13892_vusb_ops = {
.enable = mc13892_vusb_enable,
.disable = mc13892_vusb_disable,
+ .is_enabled = mc13892_regulator_is_enabled,
};
static struct regulator_ops mc13892_vdig_ops = {
@@ -1499,6 +1593,7 @@ static struct regulator_ops mc13892_vdig_ops = {
.get_voltage = mc13892_vdig_get_voltage,
.enable = mc13892_vdig_enable,
.disable = mc13892_vdig_disable,
+ .is_enabled = mc13892_regulator_is_enabled,
};
static struct regulator_ops mc13892_vpll_ops = {
@@ -1506,6 +1601,7 @@ static struct regulator_ops mc13892_vpll_ops = {
.get_voltage = mc13892_vpll_get_voltage,
.enable = mc13892_vpll_enable,
.disable = mc13892_vpll_disable,
+ .is_enabled = mc13892_regulator_is_enabled,
};
static struct regulator_ops mc13892_vusb2_ops = {
@@ -1513,6 +1609,7 @@ static struct regulator_ops mc13892_vusb2_ops = {
.get_voltage = mc13892_vusb2_get_voltage,
.enable = mc13892_vusb2_enable,
.disable = mc13892_vusb2_disable,
+ .is_enabled = mc13892_regulator_is_enabled,
};
static struct regulator_ops mc13892_vvideo_ops = {
@@ -1520,6 +1617,7 @@ static struct regulator_ops mc13892_vvideo_ops = {
.get_voltage = mc13892_vvideo_get_voltage,
.enable = mc13892_vvideo_enable,
.disable = mc13892_vvideo_disable,
+ .is_enabled = mc13892_regulator_is_enabled,
};
static struct regulator_ops mc13892_vaudio_ops = {
@@ -1527,6 +1625,7 @@ static struct regulator_ops mc13892_vaudio_ops = {
.get_voltage = mc13892_vaudio_get_voltage,
.enable = mc13892_vaudio_enable,
.disable = mc13892_vaudio_disable,
+ .is_enabled = mc13892_regulator_is_enabled,
};
static struct regulator_ops mc13892_vsd_ops = {
@@ -1534,6 +1633,7 @@ static struct regulator_ops mc13892_vsd_ops = {
.get_voltage = mc13892_vsd_get_voltage,
.enable = mc13892_vsd_enable,
.disable = mc13892_vsd_disable,
+ .is_enabled = mc13892_regulator_is_enabled,
};
static struct regulator_ops mc13892_vcam_ops = {
@@ -1541,6 +1641,7 @@ static struct regulator_ops mc13892_vcam_ops = {
.get_voltage = mc13892_vcam_get_voltage,
.enable = mc13892_vcam_enable,
.disable = mc13892_vcam_disable,
+ .is_enabled = mc13892_regulator_is_enabled,
.set_mode = mc13892_vcam_set_mode,
.get_mode = mc13892_vcam_get_mode,
};
@@ -1550,6 +1651,7 @@ static struct regulator_ops mc13892_vgen1_ops = {
.get_voltage = mc13892_vgen1_get_voltage,
.enable = mc13892_vgen1_enable,
.disable = mc13892_vgen1_disable,
+ .is_enabled = mc13892_regulator_is_enabled,
};
static struct regulator_ops mc13892_vgen2_ops = {
@@ -1557,6 +1659,7 @@ static struct regulator_ops mc13892_vgen2_ops = {
.get_voltage = mc13892_vgen2_get_voltage,
.enable = mc13892_vgen2_enable,
.disable = mc13892_vgen2_disable,
+ .is_enabled = mc13892_regulator_is_enabled,
};
static struct regulator_ops mc13892_vgen3_ops = {
@@ -1564,16 +1667,19 @@ static struct regulator_ops mc13892_vgen3_ops = {
.get_voltage = mc13892_vgen3_get_voltage,
.enable = mc13892_vgen3_enable,
.disable = mc13892_vgen3_disable,
+ .is_enabled = mc13892_regulator_is_enabled,
};
static struct regulator_ops mc13892_gpo_ops = {
.enable = mc13892_gpo_enable,
.disable = mc13892_gpo_disable,
+ .is_enabled = mc13892_regulator_is_enabled,
};
static struct regulator_ops mc13892_power_gating_ops = {
.enable = mc13892_power_gating_enable,
.disable = mc13892_power_gating_disable,
+ .is_enabled = mc13892_regulator_is_enabled,
};