static int bh6173_ldo_get_voltage(struct regulator_dev *rdev) { if (!rdev) return -EINVAL; //NAGSM_Android_SEL_Kernel_Aakash_20101021 struct bh6173_data *bh6173 = rdev_get_drvdata(rdev); int ldo = bh6173_get_ldo(rdev); int value, shift = 0, mask = 0xff, reg; DBG("func =%s called for regulator = %d\n",__func__,ldo); if (ldo == BH6173_LDO1) { reg = BH6173GUL_Register_LDOADJ1; //NAGSM_Android_SEL_Kernel_Aakash_20101019 } else if (ldo == BH6173_LDO2) { reg = BH6173GUL_Register_LDOADJ1; //NAGSM_Android_SEL_Kernel_Aakash_20101019 } else if (ldo == BH6173_LDO3) { reg = BH6173GUL_Register_LDOADJ2; //NAGSM_Android_SEL_Kernel_Aakash_20101019 } value = bh6173_read_reg(bh6173, reg); if (ldo == BH6173_LDO2) { value = value >> 4; }
static int bh6173_ldo_disable(struct regulator_dev *rdev) { if (!rdev) return -EINVAL; //NAGSM_Android_SEL_Kernel_Aakash_20101021 struct bh6173_data *bh6173 = rdev_get_drvdata(rdev); int ldo = bh6173_get_ldo(rdev); u8 value, shift; DBG("func =%s called for regulator = %d\n",__func__,ldo); if (ldo <= BH6173_LDO3) { /*LDO1~LDO3*/ value = bh6173_read_reg(bh6173, BH6173GUL_Register_REGCNT); shift = ldo; value &= ~(1 << shift); bh6173_write_reg(bh6173, value, BH6173GUL_Register_REGCNT); } else{ DBG("func =%s Invalid Param\n",__func__); return -EINVAL; } return 0; }
static int bh6173_ldo_enable(struct regulator_dev *rdev) { if (!rdev) return -EINVAL; //NAGSM_Android_SEL_Kernel_Aakash_20101021 struct bh6173_data *bh6173 = rdev_get_drvdata(rdev); int ldo = bh6173_get_ldo(rdev); u8 value; DBG("func =%s called for regulator = %d\n",__func__,ldo); //NAGSM_Android_SEL_Kernel_Aakash_20101019 if((ldo < BH6173_LDO1) || (ldo > BH6173_LDO3)) { printk("ERROR: Invalid argument passed\n"); return -EINVAL; } //NAGSM_Android_SEL_Kernel_Aakash_20101019 value = bh6173_read_reg(bh6173, BH6173GUL_Register_REGCNT); if (ldo == BH6173_LDO1) value |= BH6173GUL_REGCNT_LDO1; if (ldo == BH6173_LDO2) value |= BH6173GUL_REGCNT_LDO2; if (ldo == BH6173_LDO3) value |= BH6173GUL_REGCNT_LDO3; return bh6173_write_reg(bh6173, value, BH6173GUL_Register_REGCNT); }
int bh6173_ldo_is_enabled_status(int ldo) { u8 value, shift; if(ldo <= BH6173_LDO3) //SWREG = 0, LDO1~LDO3 (1-3) { value = bh6173_read_reg(bh6173_client, BH6173GUL_Register_REGCNT); shift = ldo; } else { printk("ERROR: Invalid argument passed\n"); return -EINVAL; } return (value >> shift) & 0x1; }
static int bh6173_ldo_is_enabled(struct regulator_dev *rdev) { if (!rdev) return -EINVAL; //NAGSM_Android_SEL_Kernel_Aakash_20101021 struct bh6173_data *bh6173 = rdev_get_drvdata(rdev); int ldo = bh6173_get_ldo(rdev); u8 value, shift; if ((ldo < BH6173_LDO1) || (ldo > BH6173_LDO3)) { printk("ERROR: Invalid argument passed\n"); return -EINVAL; } value = bh6173_read_reg(bh6173, BH6173GUL_Register_REGCNT); shift = ldo; //NAGSM_Android_SEL_Kernel_Aakash_20101019 return (value >> shift) & 0x1; }