Exemplo n.º 1
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];
	
}
Exemplo n.º 2
0
static int max8893_ldo_set_voltage(struct regulator_dev *rdev,
				int min_uV, int max_uV)
{
	struct max8893_data *max8893 = rdev_get_drvdata(rdev);
	int ldo = max8893_get_ldo(rdev);
	int value, shift = 0, mask = 0xff, reg;
	int min_vol = min_uV / 1000, max_vol = max_uV / 1000;
	const int *vol_map = ldo_8893_voltage_map[ldo];
	int i = 0;
 
	DBG("func =%s called for regulator = %d, min_v=%d, max_v=%d\n",__func__,ldo,min_uV,max_uV);

	if (min_vol < 800 ||
	    max_vol > 3300)
		return -EINVAL;

	while (vol_map[i]) {
		if (vol_map[i] >= min_vol)
			break;
		i++;
	}

 value = i;
	
	DBG("Found voltage=%d, i = %x\n",vol_map[i], i);

	if (!vol_map[i])
		return -EINVAL;

	if (vol_map[i] > max_vol)
		return -EINVAL;

	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 &= ~mask;
//	value |= (i << shift);
	max8893_write_reg(max8893, value, reg);

	return 0;
}
Exemplo n.º 3
0
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;
}
Exemplo n.º 4
0
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;
}
Exemplo n.º 5
0
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;
}
Exemplo n.º 6
0
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;
}