ASoC: amd: ps: add mutex lock for accessing common registers
authorVijendar Mukunda <Vijendar.Mukunda@amd.com>
Wed, 4 Jan 2023 05:54:29 +0000 (11:24 +0530)
committerMark Brown <broonie@kernel.org>
Thu, 5 Jan 2023 11:15:32 +0000 (11:15 +0000)
Add mutex lock for accessing ACP common registers across different
modules.

Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Link: https://lore.kernel.org/r/20230104055435.321327-1-Vijendar.Mukunda@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/amd/ps/acp63.h
sound/soc/amd/ps/pci-ps.c

index 8f024cb..4785428 100644 (file)
@@ -106,6 +106,7 @@ struct acp63_dev_data {
        struct resource *res;
        bool acp63_audio_mode;
        struct platform_device *pdev[ACP63_DEVS];
+       struct mutex acp_lock; /* protect shared registers */
        u16 pdev_mask;
        u16 pdev_count;
        u16 pdm_dev_index;
index 401cfd0..6335595 100644 (file)
@@ -209,7 +209,8 @@ static int create_acp63_platform_devs(struct pci_dev *pci, struct acp63_dev_data
        case ACP63_PDM_DEV_MASK:
                adata->pdm_dev_index  = 0;
                acp63_fill_platform_dev_info(&pdevinfo[0], parent, NULL, "acp_ps_pdm_dma",
-                                            0, adata->res, 1, NULL, 0);
+                                            0, adata->res, 1, &adata->acp_lock,
+                                            sizeof(adata->acp_lock));
                acp63_fill_platform_dev_info(&pdevinfo[1], parent, NULL, "dmic-codec",
                                             0, NULL, 0, NULL, 0);
                acp63_fill_platform_dev_info(&pdevinfo[2], parent, NULL, "acp_ps_mach",
@@ -283,6 +284,7 @@ static int snd_acp63_probe(struct pci_dev *pci,
        }
        pci_set_master(pci);
        pci_set_drvdata(pci, adata);
+       mutex_init(&adata->acp_lock);
        ret = acp63_init(adata->acp63_base, &pci->dev);
        if (ret)
                goto release_regions;