mirror of
https://github.com/torvalds/linux.git
synced 2026-09-13 15:40:03 +02:00
ASoC: ux500: Deassert the MSP reset during probe
The devicetree has described each MSP reset line since the PRCC reset
controller was added, but the driver never acquires or deasserts it. The
block can consequently remain inaccessible when firmware has left it in
reset.
Acquire the reset exclusively and keep it deasserted for the lifetime of
the bound device.
Fixes: 95f0404832 ("ARM: dts: ux500: Add reset lines to IP blocks")
Assisted-by: LLM
Signed-off-by: Linus Walleij <linusw@kernel.org>
Link: https://patch.msgid.link/20260902-ux500-msp-fixes-v2-5-4b60b002d55a@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
9ccbacf5a0
commit
66ec63e7a9
|
|
@ -14,6 +14,7 @@
|
|||
#include <linux/clk.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/regulator/consumer.h>
|
||||
#include <linux/reset.h>
|
||||
#include <linux/mfd/db8500-prcmu.h>
|
||||
|
||||
#include <sound/soc.h>
|
||||
|
|
@ -686,6 +687,7 @@ static const struct snd_soc_component_driver ux500_msp_component = {
|
|||
static int ux500_msp_drv_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct ux500_msp_i2s_drvdata *drvdata;
|
||||
struct reset_control *reset;
|
||||
int ret = 0;
|
||||
|
||||
drvdata = devm_kzalloc(&pdev->dev,
|
||||
|
|
@ -733,6 +735,11 @@ static int ux500_msp_drv_probe(struct platform_device *pdev)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
reset = devm_reset_control_get_exclusive_deasserted(&pdev->dev, NULL);
|
||||
if (IS_ERR(reset))
|
||||
return dev_err_probe(&pdev->dev, PTR_ERR(reset),
|
||||
"Failed to deassert MSP reset\n");
|
||||
|
||||
ret = ux500_msp_i2s_init_msp(pdev, &drvdata->msp);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user