static int act8931_ldo_enable(struct regulator_dev *dev) { struct act8931 *act8931 = rdev_get_drvdata(dev); int ldo = rdev_get_id(dev) - ACT8931_LDO1; u16 mask = 0x80; return act8931_set_bits(act8931, act8931_LDO_CONTR_REG(ldo), mask, 0x80); }
static int act8931_ldo_set_mode(struct regulator_dev *dev, unsigned int mode) { struct act8931 *act8931 = rdev_get_drvdata(dev); int ldo = rdev_get_id(dev) -ACT8931_LDO1 ; u16 mask = 0x20; switch(mode) { case REGULATOR_MODE_NORMAL: return act8931_set_bits(act8931, act8931_LDO_CONTR_REG(ldo), mask, 0); case REGULATOR_MODE_STANDBY: return act8931_set_bits(act8931, act8931_LDO_CONTR_REG(ldo), mask, mask); default: printk("error:pmu_act8931 only lowpower and nomal mode\n"); return -EINVAL; } }
static unsigned int act8931_ldo_get_mode(struct regulator_dev *dev) { struct act8931 *act8931 = rdev_get_drvdata(dev); int ldo = rdev_get_id(dev) -ACT8931_LDO1 ; u16 mask = 0xcf; u16 val; val = act8931_reg_read(act8931, act8931_LDO_CONTR_REG(ldo)); val=val|mask; if (val== mask) return REGULATOR_MODE_NORMAL; else return REGULATOR_MODE_STANDBY; }
static int act8931_ldo_is_enabled(struct regulator_dev *dev) { struct act8931 *act8931 = rdev_get_drvdata(dev); int ldo = rdev_get_id(dev) -ACT8931_LDO1; u16 val; u16 mask=0x80; val = act8931_reg_read(act8931, act8931_LDO_CONTR_REG(ldo)); if (val < 0) return val; val=val&~0x7f; if (val & mask) return 1; else return 0; }