Loading drivers/leds/leds-qpnp-vibrator-ldo.c +25 −14 Original line number Diff line number Diff line Loading @@ -65,9 +65,29 @@ struct vib_ldo_chip { bool disable_overdrive; }; static int qpnp_vib_ldo_set_voltage(struct vib_ldo_chip *chip, int new_uV) static inline int qpnp_vib_ldo_poll_status(struct vib_ldo_chip *chip) { unsigned int val; int ret; ret = regmap_read_poll_timeout(chip->regmap, chip->base + QPNP_VIB_LDO_REG_STATUS1, val, val & QPNP_VIB_LDO_VREG_READY, 100, 1000); if (ret < 0) { pr_err("Vibrator LDO vreg_ready timeout, status=0x%02x, ret=%d\n", val, ret); /* Keep VIB_LDO disabled */ regmap_update_bits(chip->regmap, chip->base + QPNP_VIB_LDO_REG_EN_CTL, QPNP_VIB_LDO_EN, 0); } return ret; } static int qpnp_vib_ldo_set_voltage(struct vib_ldo_chip *chip, int new_uV) { u32 vlevel; u8 reg[2]; int ret; Loading @@ -86,13 +106,9 @@ static int qpnp_vib_ldo_set_voltage(struct vib_ldo_chip *chip, int new_uV) } if (chip->vib_enabled) { ret = regmap_read_poll_timeout(chip->regmap, chip->base + QPNP_VIB_LDO_REG_STATUS1, val, val & QPNP_VIB_LDO_VREG_READY, 100, 1000); ret = qpnp_vib_ldo_poll_status(chip); if (ret < 0) { pr_err("Vibrator LDO vreg_ready timeout, status=0x%02x, ret=%d\n", val, ret); pr_err("Vibrator LDO status polling timedout\n"); return ret; } } Loading @@ -103,7 +119,6 @@ static int qpnp_vib_ldo_set_voltage(struct vib_ldo_chip *chip, int new_uV) static inline int qpnp_vib_ldo_enable(struct vib_ldo_chip *chip, bool enable) { unsigned int val; int ret; if (chip->vib_enabled == enable) Loading @@ -120,13 +135,9 @@ static inline int qpnp_vib_ldo_enable(struct vib_ldo_chip *chip, bool enable) } if (enable) { ret = regmap_read_poll_timeout(chip->regmap, chip->base + QPNP_VIB_LDO_REG_STATUS1, val, val & QPNP_VIB_LDO_VREG_READY, 100, 1000); ret = qpnp_vib_ldo_poll_status(chip); if (ret < 0) { pr_err("Vibrator LDO vreg_ready timeout, status=0x%02x, ret=%d\n", val, ret); pr_err("Vibrator LDO status polling timedout\n"); return ret; } } Loading Loading
drivers/leds/leds-qpnp-vibrator-ldo.c +25 −14 Original line number Diff line number Diff line Loading @@ -65,9 +65,29 @@ struct vib_ldo_chip { bool disable_overdrive; }; static int qpnp_vib_ldo_set_voltage(struct vib_ldo_chip *chip, int new_uV) static inline int qpnp_vib_ldo_poll_status(struct vib_ldo_chip *chip) { unsigned int val; int ret; ret = regmap_read_poll_timeout(chip->regmap, chip->base + QPNP_VIB_LDO_REG_STATUS1, val, val & QPNP_VIB_LDO_VREG_READY, 100, 1000); if (ret < 0) { pr_err("Vibrator LDO vreg_ready timeout, status=0x%02x, ret=%d\n", val, ret); /* Keep VIB_LDO disabled */ regmap_update_bits(chip->regmap, chip->base + QPNP_VIB_LDO_REG_EN_CTL, QPNP_VIB_LDO_EN, 0); } return ret; } static int qpnp_vib_ldo_set_voltage(struct vib_ldo_chip *chip, int new_uV) { u32 vlevel; u8 reg[2]; int ret; Loading @@ -86,13 +106,9 @@ static int qpnp_vib_ldo_set_voltage(struct vib_ldo_chip *chip, int new_uV) } if (chip->vib_enabled) { ret = regmap_read_poll_timeout(chip->regmap, chip->base + QPNP_VIB_LDO_REG_STATUS1, val, val & QPNP_VIB_LDO_VREG_READY, 100, 1000); ret = qpnp_vib_ldo_poll_status(chip); if (ret < 0) { pr_err("Vibrator LDO vreg_ready timeout, status=0x%02x, ret=%d\n", val, ret); pr_err("Vibrator LDO status polling timedout\n"); return ret; } } Loading @@ -103,7 +119,6 @@ static int qpnp_vib_ldo_set_voltage(struct vib_ldo_chip *chip, int new_uV) static inline int qpnp_vib_ldo_enable(struct vib_ldo_chip *chip, bool enable) { unsigned int val; int ret; if (chip->vib_enabled == enable) Loading @@ -120,13 +135,9 @@ static inline int qpnp_vib_ldo_enable(struct vib_ldo_chip *chip, bool enable) } if (enable) { ret = regmap_read_poll_timeout(chip->regmap, chip->base + QPNP_VIB_LDO_REG_STATUS1, val, val & QPNP_VIB_LDO_VREG_READY, 100, 1000); ret = qpnp_vib_ldo_poll_status(chip); if (ret < 0) { pr_err("Vibrator LDO vreg_ready timeout, status=0x%02x, ret=%d\n", val, ret); pr_err("Vibrator LDO status polling timedout\n"); return ret; } } Loading