ASoC: sh: rz-ssi: Make the data structures available before registering the handlers
authorLad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Mon, 10 Jan 2022 09:47:08 +0000 (09:47 +0000)
committerMark Brown <broonie@kernel.org>
Mon, 24 Jan 2022 13:31:29 +0000 (13:31 +0000)
Initialize the spinlock and make the data structures available before
registering the interrupt handlers.

Reported-by: Pavel Machek <pavel@denx.de>
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>
Link: https://lore.kernel.org/r/20220110094711.8574-3-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sh/rz-ssi.c

index 2ac2c9722b3b34df51f9db2a290f8bce13df6191..7379b1489e358b8decff64a17a8818331d4c31fb 100644 (file)
@@ -977,6 +977,9 @@ static int rz_ssi_probe(struct platform_device *pdev)
        ssi->playback.priv = ssi;
        ssi->capture.priv = ssi;
 
+       spin_lock_init(&ssi->lock);
+       dev_set_drvdata(&pdev->dev, ssi);
+
        /* Error Interrupt */
        ssi->irq_int = platform_get_irq_byname(pdev, "int_req");
        if (ssi->irq_int < 0)
@@ -1029,8 +1032,6 @@ static int rz_ssi_probe(struct platform_device *pdev)
                return dev_err_probe(ssi->dev, ret, "pm_runtime_resume_and_get failed\n");
        }
 
-       spin_lock_init(&ssi->lock);
-       dev_set_drvdata(&pdev->dev, ssi);
        ret = devm_snd_soc_register_component(&pdev->dev, &rz_ssi_soc_component,
                                              rz_ssi_soc_dai,
                                              ARRAY_SIZE(rz_ssi_soc_dai));