Esempio n. 1
0
static int twl4030reg_disable(struct regulator_dev *rdev)
{
	struct twlreg_info	*info = rdev_get_drvdata(rdev);
	int			grp;

	grp = twl4030reg_read(info, VREG_GRP);
	if (grp < 0)
		return grp;

	grp &= ~P1_GRP;
	return twl4030reg_write(info, VREG_GRP, grp);
}
Esempio n. 2
0
static int twl4030reg_enable(struct regulator_dev *rdev)
{
	struct twlreg_info	*info = rdev_get_drvdata(rdev);
	int			grp, status;
	unsigned 		message;

	grp = twl4030reg_read(info, VREG_GRP);
	if (grp < 0)
		return grp;

	grp |= P1_GRP;
	status =  twl4030reg_write(info, VREG_GRP, grp);
	if (status < 0)
		return status;

	message = MSG_SINGULAR(DEV_GRP_P1, info->id, RES_STATE_ACTIVE);

	return twl4030_send_pb_msg(message);
}
Esempio n. 3
0
static int
twl4030ldo_set_voltage(struct regulator_dev *rdev, int min_uV, int max_uV)
{
	struct twlreg_info	*info = rdev_get_drvdata(rdev);
	int			vsel;

	for (vsel = 0; vsel < info->table_len; vsel++) {
		int mV = info->table[vsel];
		int uV;

		if (IS_UNSUP(mV))
			continue;
		uV = LDO_MV(mV) * 1000;

		/* use the first in-range value */
		if (min_uV <= uV && uV <= max_uV)
			return twl4030reg_write(info, VREG_DEDICATED, vsel);
	}

	return -EDOM;
}