diff --git a/asoc/msm-audio-defs.h b/asoc/msm-audio-defs.h index e6bb7b5494..d9e94c37e8 100644 --- a/asoc/msm-audio-defs.h +++ b/asoc/msm-audio-defs.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2019-2022, The Linux Foundation. All rights reserved. - * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved. */ #ifndef _MSM_AUDIO_DEFS_H #define _MSM_AUDIO_DEFS_H @@ -79,7 +79,7 @@ #define LPASS_BE_USB_AUDIO_TX "USB_AUDIO-TX" #define LPASS_BE_WSA_CDC_DMA_RX_0 "CODEC_DMA-LPAIF_WSA-RX-0" -#define LPASS_BE_WSA_CDC_DMA_RX_0_VIRT "CODEC_DMA-LPAIF_WSA-RX-0-VIRT-2" +#define LPASS_BE_WSA_CDC_DMA_RX_0_VIRT "CODEC_DMA-LPAIF_WSA-RX-0-VT-2" #define LPASS_BE_WSA_CDC_DMA_TX_0 "CODEC_DMA-LPAIF_WSA-TX-0" #define LPASS_BE_WSA_CDC_DMA_RX_1 "CODEC_DMA-LPAIF_WSA-RX-1" #define LPASS_BE_WSA_CDC_DMA_TX_1 "CODEC_DMA-LPAIF_WSA-TX-1" @@ -97,6 +97,7 @@ #define LPASS_BE_RX_CDC_DMA_RX_0 "CODEC_DMA-LPAIF_RXTX-RX-0" #define LPASS_BE_RX_CDC_DMA_RX_1 "CODEC_DMA-LPAIF_RXTX-RX-1" +#define LPASS_BE_RX_CDC_DMA_RX_1_VIRT "CODEC_DMA-LPAIF_RXTX-RX-1-VT-2" #define LPASS_BE_RX_CDC_DMA_RX_2 "CODEC_DMA-LPAIF_RXTX-RX-2" #define LPASS_BE_RX_CDC_DMA_RX_3 "CODEC_DMA-LPAIF_RXTX-RX-3" #define LPASS_BE_RX_CDC_DMA_RX_4 "CODEC_DMA-LPAIF_RXTX-RX-4" diff --git a/asoc/pineapple.c b/asoc/pineapple.c index eb47bd79e0..56364ff258 100644 --- a/asoc/pineapple.c +++ b/asoc/pineapple.c @@ -994,6 +994,18 @@ static struct snd_soc_dai_link msm_rx_tx_cdc_dma_be_dai_links[] = { .ops = &msm_common_be_ops, SND_SOC_DAILINK_REG(tx_dma_tx4), }, + { + .name = LPASS_BE_RX_CDC_DMA_RX_1_VIRT, + .stream_name = LPASS_BE_RX_CDC_DMA_RX_1_VIRT, + .playback_only = 1, + .trigger = {SND_SOC_DPCM_TRIGGER_POST, + SND_SOC_DPCM_TRIGGER_POST}, + .ignore_pmdown_time = 1, + .ignore_suspend = 1, + .ops = &msm_common_be_ops, + SND_SOC_DAILINK_REG(rx_dma_rx1), + .init = &msm_rx_tx_codec_init, + }, }; static struct snd_soc_dai_link msm_va_cdc_dma_be_dai_links[] = { diff --git a/ipc/gpr-lite.c b/ipc/gpr-lite.c index b3c27a6347..05008e48c5 100644 --- a/ipc/gpr-lite.c +++ b/ipc/gpr-lite.c @@ -1,6 +1,6 @@ /* Copyright (c) 2011-2017, 2019-2021 The Linux Foundation. All rights reserved. * Copyright (c) 2018, Linaro Limited - * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -381,14 +381,15 @@ static void gpr_device_remove(struct device *dev) struct gpr_device *adev = to_gpr_device(dev); struct gpr_driver *adrv; struct gpr *gpr = dev_get_drvdata(adev->dev.parent); + unsigned long flags; if (dev->driver) { adrv = to_gpr_driver(dev->driver); if (adrv->remove) adrv->remove(adev); - spin_lock(&gpr->svcs_lock); + spin_lock_irqsave(&gpr->svcs_lock, flags); idr_remove(&gpr->svcs_idr, adev->svc_id); - spin_unlock(&gpr->svcs_lock); + spin_unlock_irqrestore(&gpr->svcs_lock, flags); } return; @@ -421,6 +422,7 @@ static int gpr_add_device(struct device *dev, struct device_node *np, struct gpr *gpr = dev_get_drvdata(dev); struct gpr_device *adev = NULL; int ret; + unsigned long flags; adev = kzalloc(sizeof(*adev), GFP_KERNEL); if (!adev) @@ -445,10 +447,10 @@ static int gpr_add_device(struct device *dev, struct device_node *np, adev->dev.release = gpr_dev_release; adev->dev.driver = NULL; - spin_lock(&gpr->svcs_lock); + spin_lock_irqsave(&gpr->svcs_lock, flags); idr_alloc(&gpr->svcs_idr, adev, id->svc_id, id->svc_id + 1, GFP_ATOMIC); - spin_unlock(&gpr->svcs_lock); + spin_unlock_irqrestore(&gpr->svcs_lock, flags); dev_info_ratelimited(dev, "Adding GPR dev: %s\n", dev_name(&adev->dev));