Exemplo n.º 1
0
static int max77686_do_volsetting(enum max77686_regnum reg, unsigned int volt,
				  int enable, int volt_units)
{
	struct max77686_para *pmic;
	unsigned char read_data;
	int vol_level = 0;
	int ret;

	pmic = &max77686_param[reg];

	if (pmic->vol_addr == 0) {
		debug("not a voltage register.\n");
		return -1;
	}

	ret = max77686_i2c_read(MAX77686_I2C_ADDR, pmic->vol_addr, &read_data);
	if (ret != 0) {
		debug("max77686 i2c read failed.\n");
		return -1;
	}

	if (volt_units == MAX77686_UV)
		vol_level = volt - pmic->vol_min * 1000;
	else
		vol_level = (volt - pmic->vol_min) * 1000;

	if (vol_level < 0) {
		debug("Not a valid voltage level to set\n");
		return -1;
	}
	vol_level /= pmic->vol_div;

	clrsetbits_8(&read_data, pmic->vol_bitmask << pmic->vol_bitpos,
			vol_level << pmic->vol_bitpos);

	ret = max77686_i2c_write(MAX77686_I2C_ADDR, pmic->vol_addr, read_data);
	if (ret != 0) {
		debug("max77686 i2c write failed.\n");
		return -1;
	}

	ret = max77686_enablereg(reg, enable);
	if (ret != 0) {
		debug("Failed to enable buck/ldo.\n");
		return -1;
	}

	return 0;
}
Exemplo n.º 2
0
int max77686_enable_32khz_cp(unsigned int bus)
{
	return max77686_enablereg(bus, PMIC_EN32KHZ_CP, REG_ENABLE);
}
Exemplo n.º 3
0
int max77686_enable_32khz_cp(void)
{
	i2c_set_bus_num(0);
	return max77686_enablereg(PMIC_EN32KHZ_CP, REG_ENABLE);
}