コード例 #1
0
ファイル: max8893.c プロジェクト: AproSamurai/Arcturus
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;
}
コード例 #2
0
ファイル: max8893.c プロジェクト: AustinBleax/Bali_SK4G
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;
}
コード例 #3
0
ファイル: max8893.c プロジェクト: AproSamurai/Arcturus
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;
}
コード例 #4
0
ファイル: max8893.c プロジェクト: AproSamurai/Arcturus
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];
	
}
コード例 #5
0
ファイル: max8893.c プロジェクト: AproSamurai/Arcturus
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;
}
コード例 #6
0
ファイル: max8893.c プロジェクト: AproSamurai/Arcturus
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;
}
コード例 #7
0
ファイル: max8893.c プロジェクト: AproSamurai/Arcturus
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;
}
コード例 #8
0
ファイル: max8893.c プロジェクト: AproSamurai/Arcturus
///////////////////////////////////////////////////////////////////////////////////////
//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;
}
コード例 #9
0
ファイル: max8893.c プロジェクト: AustinBleax/Bali_SK4G
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;
}