Ejemplo n.º 1
0
static int pil_msa_pbl_make_proxy_votes(struct pil_desc *pil)
{
    int ret;
    struct q6v5_data *drv = container_of(pil, struct q6v5_data, desc);

    ret = regulator_set_voltage(drv->vreg_mx, VDD_MSS_UV, MAX_VDD_MX_UV);
    if (ret) {
        dev_err(pil->dev, "Failed to request vreg_mx voltage\n");
        return ret;
    }

    ret = regulator_enable(drv->vreg_mx);
    if (ret) {
        dev_err(pil->dev, "Failed to enable vreg_mx\n");
        regulator_set_voltage(drv->vreg_mx, 0, MAX_VDD_MX_UV);
        return ret;
    }

    ret = pil_q6v5_make_proxy_votes(pil);
    if (ret) {
        regulator_disable(drv->vreg_mx);
        regulator_set_voltage(drv->vreg_mx, 0, MAX_VDD_MX_UV);
    }

    return ret;
}
int pil_mss_make_proxy_votes(struct pil_desc *pil)
{
	int ret;
	struct q6v5_data *drv = container_of(pil, struct q6v5_data, desc);
	int uv = 0;

	ret = of_property_read_u32(pil->dev->of_node, "vdd_mx-uV", &uv);
	if (ret) {
		dev_err(pil->dev, "missing vdd_mx-uV property\n");
		return ret;
	}

	ret = regulator_set_voltage(drv->vreg_mx, uv, INT_MAX);
	if (ret) {
		dev_err(pil->dev, "Failed to request vreg_mx voltage\n");
		return ret;
	}

	ret = regulator_enable(drv->vreg_mx);
	if (ret) {
		dev_err(pil->dev, "Failed to enable vreg_mx\n");
		regulator_set_voltage(drv->vreg_mx, 0, INT_MAX);
		return ret;
	}

	ret = pil_q6v5_make_proxy_votes(pil);
	if (ret) {
		regulator_disable(drv->vreg_mx);
		regulator_set_voltage(drv->vreg_mx, 0, INT_MAX);
	}

	return ret;
}