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

Unverified Commit b927c628 authored by Junwen YE's avatar Junwen YE Committed by Michael Bestas
Browse files

Revert "Revert "[ALM:10872982] [FP4]:solve tof driver crash""

This reverts commit f177a258.

Change-Id: Ic1c82e064b7b9ed3d8cb4cf8e353642c569614b4
parent 85736f2b
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -377,7 +377,7 @@ static int stmvl53l1_parse_tree(struct device *dev, struct i2c_data *i2c_data)
		i2c_data->intr_gpio = intr_gpio_nb;
	} else if (dev->of_node) {
		/* power : either vdd or pwren_gpio. try reulator first */
		i2c_data->vdd = devm_regulator_get(dev, "vl53_vdd");		
		i2c_data->vdd = regulator_get_optional(dev, "vdd");
		if (IS_ERR(i2c_data->vdd) || i2c_data->vdd == NULL) {
			i2c_data->vdd = NULL;
			/* try gpio */
@@ -389,9 +389,9 @@ static int stmvl53l1_parse_tree(struct device *dev, struct i2c_data *i2c_data)
			"no regulator, nor power gpio => power ctrl disabled");
			}
		}
		rc = regulator_enable(i2c_data->vdd);
		if (rc)
			pr_err("i2c_data->vdd failed to enable\n");
		//rc = regulator_enable(i2c_data->vdd);
		//if (rc)
		//	pr_err("i2c_data->vdd failed to enable\n");
		
		i2c_data->xsdn_gpio = of_get_named_gpio(dev->of_node, "xsdn-gpio",0);
		if (i2c_data->xsdn_gpio < 0)
+19 −6
Original line number Diff line number Diff line
@@ -394,12 +394,21 @@ static int reset_release(struct stmvl53l1_data *data)
{
	int rc;

	vl53l1_dbgmsg("turn on vdd\n");
	rc = stmvl53l1_module_func_tbl.power_up(data->client_object);
	if (rc) {
		vl53l1_errmsg("%d,error rc %d\n", __LINE__, rc);
		return rc;
	}

	if (!data->reset_state)
		return 0;

	rc = stmvl53l1_module_func_tbl.reset_release(data->client_object);
	if (rc)
	if (rc) {
		vl53l1_errmsg("reset release fail rc=%d\n", rc);
		stmvl53l1_module_func_tbl.power_down(data->client_object);
	}
	else
		data->reset_state = 0;

@@ -410,6 +419,9 @@ static int reset_hold(struct stmvl53l1_data *data)
{
	int rc;

	vl53l1_dbgmsg("turn off vdd data reset_state=%d\n", data->reset_state);
	rc = stmvl53l1_module_func_tbl.power_down(data->client_object);

	if (data->reset_state)
		return 0;

@@ -3979,11 +3991,12 @@ int stmvl53l1_setup(struct stmvl53l1_data *data)
	data->last_error = VL53L1_ERROR_NONE;
	data->is_device_remove = false;

	rc = stmvl53l1_module_func_tbl.power_up(data->client_object);
	if (rc) {
		vl53l1_errmsg("%d,error rc %d\n", __LINE__, rc);
		goto exit_ipp_cleanup;
	}
	/* vdd will be controlled in reset_release() */
	//rc = stmvl53l1_module_func_tbl.power_up(data->client_object);
	//if (rc) {
	//	vl53l1_errmsg("%d,error rc %d\n", __LINE__, rc);
	//	goto exit_ipp_cleanup;
	//}
	rc = reset_release(data);
	if (rc)
		goto exit_ipp_cleanup;