Commit 388008bb authored by Uwe Kleine-König's avatar Uwe Kleine-König Committed by Jonathan Cameron

iio: ssp_sensors: don't manually free devm managed resources

The charme of devm_* functions is that you don't need to care about them
in the error path. In this case it is valid to just return NULL which makes
the device fail to probe and then the two gpios and the allocated memory
are freed automatically by the driver core.
Signed-off-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent 1afacfb0
...@@ -462,43 +462,35 @@ static struct ssp_data *ssp_parse_dt(struct device *dev) ...@@ -462,43 +462,35 @@ static struct ssp_data *ssp_parse_dt(struct device *dev)
data->mcu_ap_gpio = of_get_named_gpio(node, "mcu-ap-gpios", 0); data->mcu_ap_gpio = of_get_named_gpio(node, "mcu-ap-gpios", 0);
if (data->mcu_ap_gpio < 0) if (data->mcu_ap_gpio < 0)
goto err_free_pd; return NULL;
data->ap_mcu_gpio = of_get_named_gpio(node, "ap-mcu-gpios", 0); data->ap_mcu_gpio = of_get_named_gpio(node, "ap-mcu-gpios", 0);
if (data->ap_mcu_gpio < 0) if (data->ap_mcu_gpio < 0)
goto err_free_pd; return NULL;
data->mcu_reset_gpio = of_get_named_gpio(node, "mcu-reset-gpios", 0); data->mcu_reset_gpio = of_get_named_gpio(node, "mcu-reset-gpios", 0);
if (data->mcu_reset_gpio < 0) if (data->mcu_reset_gpio < 0)
goto err_free_pd; return NULL;
ret = devm_gpio_request_one(dev, data->ap_mcu_gpio, GPIOF_OUT_INIT_HIGH, ret = devm_gpio_request_one(dev, data->ap_mcu_gpio, GPIOF_OUT_INIT_HIGH,
"ap-mcu-gpios"); "ap-mcu-gpios");
if (ret) if (ret)
goto err_free_pd; return NULL;
ret = devm_gpio_request_one(dev, data->mcu_reset_gpio, ret = devm_gpio_request_one(dev, data->mcu_reset_gpio,
GPIOF_OUT_INIT_HIGH, "mcu-reset-gpios"); GPIOF_OUT_INIT_HIGH, "mcu-reset-gpios");
if (ret) if (ret)
goto err_ap_mcu; return NULL;
match = of_match_node(ssp_of_match, node); match = of_match_node(ssp_of_match, node);
if (!match) if (!match)
goto err_mcu_reset_gpio; return NULL;
data->sensorhub_info = match->data; data->sensorhub_info = match->data;
dev_set_drvdata(dev, data); dev_set_drvdata(dev, data);
return data; return data;
err_mcu_reset_gpio:
devm_gpio_free(dev, data->mcu_reset_gpio);
err_ap_mcu:
devm_gpio_free(dev, data->ap_mcu_gpio);
err_free_pd:
devm_kfree(dev, data);
return NULL;
} }
#else #else
static struct ssp_data *ssp_parse_dt(struct device *pdev) static struct ssp_data *ssp_parse_dt(struct device *pdev)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment