Beispiel #1
0
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;
	}
Beispiel #2
0
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;
}
Beispiel #3
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);
 
}
Beispiel #4
0
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;
}
Beispiel #5
0
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;
}