static int max8893_ldo_is_enabled(struct regulator_dev *rdev) { struct max8893_data *max8893 = rdev_get_drvdata(rdev); int ldo = max8893_get_ldo(rdev); int value, shift; if (ldo <= MAX8893_LDO5) { /*LDO1~LDO5*/ value = max8893_read_reg(max8893, MAX8893_REG_ONOFF); shift = 6 - ldo; } else { /*BUCK*/ value = max8893_read_reg(max8893, MAX8893_REG_ONOFF); shift = 7; } return (value >> shift) & 0x1; }
static int max8893_ldo_is_enabled(struct regulator_dev *rdev) { struct max8893_data *max8893 = rdev_get_drvdata(rdev); int ldo = max8893_get_ldo(rdev); u8 value, shift; //NAGSM_Android_SEL_Kernel_Aakash_20101005 if (ldo <= MAX8893_LDO5) { /*LDO1~LDO5*/ value = max8893_read_reg(max8893, MAX8893_REG_ONOFF); shift = 6 - ldo; } else { /*BUCK*/ value = max8893_read_reg(max8893, MAX8893_REG_ONOFF); shift = 7; } return (value >> shift) & 0x1; }
int max8893_ldo_disable_direct(int ldo) { struct max8893_data *max8893 = client_8893data_p; int value, shift; if((ldo < MAX8893_LDO1) || (ldo > MAX8893_BUCK)) { printk("ERROR: Invalid argument passed\n"); return -EINVAL; } DBG("func =%s called for regulator = %d\n",__func__,ldo); //Thomas Ryu 20100409 //(MSB)EBUK:1, ELS:X,ELDO1:0,ELDO2:0,ELDO3:X,ELDO4:0,ELDO5:0,EUSB:X(LSB) if(ldo == MAX8893_BUCK) { shift = 7; } else { shift = 6 - ldo; } value = max8893_read_reg(max8893, MAX8893_REG_ONOFF); value &= ~(1 << shift); max8893_write_reg(max8893, value, MAX8893_REG_ONOFF); return 0; }
static int max8893_ldo_get_voltage(struct regulator_dev *rdev) { struct max8893_data *max8893 = rdev_get_drvdata(rdev); int ldo = max8893_get_ldo(rdev); int value, shift = 0, mask = 0xff, reg; DBG("func =%s called for regulator = %d\n",__func__,ldo); if (ldo == MAX8893_LDO1) { reg = MAX8893_REG_LDO1; } else if (ldo == MAX8893_LDO2) { reg = MAX8893_REG_LDO2; } else if (ldo == MAX8893_LDO3) { reg = MAX8893_REG_LDO3; } else if (ldo == MAX8893_LDO4) { reg = MAX8893_REG_LDO4; } else if (ldo == MAX8893_LDO5) { reg = MAX8893_REG_LDO5; } else if (ldo == MAX8893_BUCK) { reg = MAX8893_REG_BUCK; } value = max8893_read_reg(max8893, reg); // value >>= shift; // value &= mask; return 1000 * ldo_8893_voltage_map[ldo][value]; }
int max8893_onoff_get_direct(void) { struct max8893_data *max8893 = client_8893data_p; int value; //(MSB)EBUK:1, ELS:X,ELDO1:0,ELDO2:0,ELDO3:X,ELDO4:0,ELDO5:0,EUSB:X(LSB) value = max8893_read_reg(max8893, MAX8893_REG_ONOFF); DBG("func =%s called value = 0x%x\n",__func__,value); return value; }
static int max8893_ldo_disable(struct regulator_dev *rdev) { struct max8893_data *max8893 = rdev_get_drvdata(rdev); int ldo = max8893_get_ldo(rdev); int value, shift; DBG("func =%s called for regulator = %d\n",__func__,ldo); if (ldo <= MAX8893_LDO5) { /*LDO1~LDO5*/ value = max8893_read_reg(max8893, MAX8893_REG_ONOFF); shift = 6 - ldo; value &= ~(1 << shift); max8893_write_reg(max8893, value, MAX8893_REG_ONOFF); } else { /*BUCK*/ value = max8893_read_reg(max8893, MAX8893_REG_ONOFF); shift = 7; value &= ~(1 << shift); max8893_write_reg(max8893, value, MAX8893_REG_ONOFF); } return 0; }
int max8893_onoff_enable_direct(int bit_position) { struct max8893_data *max8893 = client_8893data_p; int value; DBG("func =%s called bit position = %d\n",__func__,bit_position); //(MSB)EBUK:1, ELS:X,ELDO1:0,ELDO2:0,ELDO3:X,ELDO4:0,ELDO5:0,EUSB:X(LSB) value = max8893_read_reg(max8893, MAX8893_REG_ONOFF); value |= (1 << bit_position); max8893_write_reg(max8893, value, MAX8893_REG_ONOFF); return 0; }
/////////////////////////////////////////////////////////////////////////////////////// //DIRECT APIS int max8893_ldo_is_enabled_direct(int ldo) { struct max8893_data *max8893 = client_8893data_p; int value, shift; if((ldo < MAX8893_LDO1) || (ldo > MAX8893_BUCK)) { printk("ERROR: Invalid argument passed\n"); return -EINVAL; } DBG("func =%s called for regulator = %d\n",__func__,ldo); if (ldo <= MAX8893_LDO5) { /*LDO1~LDO5*/ value = max8893_read_reg(max8893, MAX8893_REG_ONOFF); shift = 6 - ldo; } else { /*BUCK*/ value = max8893_read_reg(max8893, MAX8893_REG_ONOFF); shift = 7; } return (value >> shift) & 0x1; }
static int max8893_ldo_enable(struct regulator_dev *rdev) { struct max8893_data *max8893 = rdev_get_drvdata(rdev); int ldo = max8893_get_ldo(rdev); u8 value, shift; //NAGSM_Android_SEL_Kernel_Aakash_20101005 DBG("func =%s called for regulator = %d\n",__func__,ldo); if (ldo <= MAX8893_LDO5) { /*LDO1~LDO5*/ value = max8893_read_reg(max8893, MAX8893_REG_ONOFF); shift = 6 - ldo; value |= (1 << shift); max8893_write_reg(max8893, value, MAX8893_REG_ONOFF); } else { /*BUCK*/ value = max8893_read_reg(max8893, MAX8893_REG_ONOFF); shift = 7; value |= (1 << shift); max8893_write_reg(max8893, value, MAX8893_REG_ONOFF); } return 0; }