Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4caf20dc authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "input: qcom-hv-haptics: set Vmax before toggling HAPTICS_EN in FIFO play"

parents 1c39a318 810fcd9e
Loading
Loading
Loading
Loading
+20 −15
Original line number Diff line number Diff line
@@ -891,7 +891,12 @@ static int haptics_get_status_data(struct haptics_chip *chip,
	mod_sel_val[0] = sel & 0xff;
	mod_sel_val[1] = (sel >> 8) & 0xff;
	rc = haptics_write(chip, chip->cfg_addr_base,
			HAP_CFG_MOD_STATUS_SEL_REG, mod_sel_val, 2);
			HAP_CFG_MOD_STATUS_XT_V2_REG, &mod_sel_val[1], 1);
	if (rc < 0)
		return rc;

	rc = haptics_write(chip, chip->cfg_addr_base,
			HAP_CFG_MOD_STATUS_SEL_REG, mod_sel_val, 1);
	if (rc < 0)
		return rc;

@@ -2072,22 +2077,11 @@ static int haptics_load_predefined_effect(struct haptics_chip *chip,
		return -EINVAL;

	play->effect = effect;
	if (play->pattern_src == FIFO) {
		/* Toggle HAPTICS_EN for a clear start point of FIFO playing */
		rc = haptics_toggle_module_enable(chip);
		if (rc < 0)
			return rc;
	}

	/* Clamp VMAX for different vibration strength */
	rc = haptics_set_vmax_mv(chip, play->vmax_mv);
	if (rc < 0)
		return rc;

	rc = haptics_enable_autores(chip, !play->effect->auto_res_disable);
	if (rc < 0)
		return rc;

	play->pattern_src = play->effect->src;
	if (play->pattern_src != PATTERN1 &&
			play->pattern_src != PATTERN2 &&
@@ -2097,6 +2091,17 @@ static int haptics_load_predefined_effect(struct haptics_chip *chip,
		return -EINVAL;
	}

	if (play->pattern_src == FIFO) {
		/* Toggle HAPTICS_EN for a clear start point of FIFO playing */
		rc = haptics_toggle_module_enable(chip);
		if (rc < 0)
			return rc;
	}

	rc = haptics_enable_autores(chip, !play->effect->auto_res_disable);
	if (rc < 0)
		return rc;

	play->brake = play->effect->brake;
	/* Config brake settings if it's necessary */
	if (play->brake) {
@@ -2260,12 +2265,12 @@ static int haptics_load_custom_effect(struct haptics_chip *chip,
	play->effect = chip->custom_effect;
	play->brake = NULL;
	play->vmax_mv = (magnitude * chip->custom_effect->vmax_mv) / 0x7fff;
	/* Toggle HAPTICS_EN for a clear start point of FIFO playing */
	rc = haptics_toggle_module_enable(chip);
	rc = haptics_set_vmax_mv(chip, play->vmax_mv);
	if (rc < 0)
		goto cleanup;

	rc = haptics_set_vmax_mv(chip, play->vmax_mv);
	/* Toggle HAPTICS_EN for a clear start point of FIFO playing */
	rc = haptics_toggle_module_enable(chip);
	if (rc < 0)
		goto cleanup;