mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
ASoC: sun4i-spdif: Make reset control non-optional and check for all errors
The logic around the reset control is weird. The driver already has quirks describing which compatible strings require a reset control, but the reset control is acquired using the "optional" API. Then any errors other than deferred probe are ignored. Instead, switch to the non-optional variant. Also use the deassered variant to simplify the code. This also fixes a missing reset assert upon removal. Last, clean up the error message printing with dev_err_probe(). Signed-off-by: Chen-Yu Tsai <wens@csie.org> Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com> Link: https://patch.msgid.link/20260323172450.1259111-1-wens@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
@@ -712,15 +712,10 @@ static int sun4i_spdif_probe(struct platform_device *pdev)
|
||||
platform_set_drvdata(pdev, host);
|
||||
|
||||
if (quirks->has_reset) {
|
||||
host->rst = devm_reset_control_get_optional_exclusive(&pdev->dev,
|
||||
NULL);
|
||||
if (PTR_ERR(host->rst) == -EPROBE_DEFER) {
|
||||
ret = -EPROBE_DEFER;
|
||||
dev_err(&pdev->dev, "Failed to get reset: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
if (!IS_ERR(host->rst))
|
||||
reset_control_deassert(host->rst);
|
||||
host->rst = devm_reset_control_get_exclusive_deasserted(&pdev->dev, NULL);
|
||||
if (IS_ERR(host->rst))
|
||||
return dev_err_probe(&pdev->dev, PTR_ERR(host->rst),
|
||||
"Failed to get reset\n");
|
||||
}
|
||||
|
||||
ret = devm_snd_soc_register_component(&pdev->dev,
|
||||
|
||||
Reference in New Issue
Block a user