mbox series

[v3,0/4] ASoC: qcom: add support for sc8280xp machine

Message ID 20220908063448.27102-1-srinivas.kandagatla@linaro.org
Headers show
Series ASoC: qcom: add support for sc8280xp machine | expand

Message

Srinivas Kandagatla Sept. 8, 2022, 6:34 a.m. UTC
This patchset adds support for SC8280XP SoC machine driver.

First patch moves some of the commonly used code to common from sm8250 machine driver
and the follow on code adds minimal support for sc8280xp.

Currently this driver is only tested with SmartSpeakers and Headset
on Lenovo Thinkpad X13s.

Support for sm8450 is tested and I will post the patches soon.

Thanks,
Srini

Changes since v2:
 - put SoundWire specific symbols under IS_ENABLED check as not all
   Qcom plaforms need SoundWire that use common.c

Srinivas Kandagatla (4):
  ASoC: qcom: common: use EXPORT_SYMBOL_GPL instead of EXPORT_SYMBOL
  ASoC: dt-bindings: qcom,sm8250: add compatibles for sm8450 and sm8250
  ASoC: qcom: sm8250: move some code to common
  ASoC: qcom: add machine driver for sc8280xp

 .../bindings/sound/qcom,sm8250.yaml           |   2 +
 sound/soc/qcom/Kconfig                        |  11 ++
 sound/soc/qcom/Makefile                       |   2 +
 sound/soc/qcom/common.c                       | 173 +++++++++++++++++-
 sound/soc/qcom/common.h                       |  35 ++++
 sound/soc/qcom/sc8280xp.c                     | 157 ++++++++++++++++
 sound/soc/qcom/sm8250.c                       | 152 +--------------
 7 files changed, 386 insertions(+), 146 deletions(-)
 create mode 100644 sound/soc/qcom/sc8280xp.c

Comments

Krzysztof Kozlowski Sept. 8, 2022, 1:31 p.m. UTC | #1
On 08/09/2022 08:34, Srinivas Kandagatla wrote:
> qcom_snd_parse_of depends on ASoC EXPORT_SYMBOL_GPL functions,
> so make qcom_snd_parse_of and EXPORT_SYMBOL_GPL.
> 
> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> ---


Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>


Best regards,
Krzysztof
Krzysztof Kozlowski Sept. 8, 2022, 1:31 p.m. UTC | #2
On 08/09/2022 08:34, Srinivas Kandagatla wrote:
> SM8450 machine driver code can be reused across multiple Qualcomm SoCs,
> Atleast another 2 of them for now (SM8450 and SM8250XP).

s/Atleast/At least/

> 
> Move some of the common SoundWire stream specific code to common file
> so that other drivers can use it instead of duplicating.
> 
> This patch is to prepare the common driver to be able to add new SoCs support
> with less dupication.

s/dupication/duplication/


> 

Assuming there were no changes against v2:

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>


Best regards,
Krzysztof
Krzysztof Kozlowski Sept. 8, 2022, 1:33 p.m. UTC | #3
On 08/09/2022 08:34, Srinivas Kandagatla wrote:
> Add machine driver for sc8280xp SoC.
> 
> This intial supports only includes WSA883x Speakers and WCD938x based headset.
> 
> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> ---
>  sound/soc/qcom/Kconfig    |  11 +++
>  sound/soc/qcom/Makefile   |   2 +
>  sound/soc/qcom/sc8280xp.c | 157 ++++++++++++++++++++++++++++++++++++++
>  3 files changed, 170 insertions(+)
>  create mode 100644 sound/soc/qcom/sc8280xp.c
> 
> diff --git a/sound/soc/qcom/Kconfig b/sound/soc/qcom/Kconfig
> index 750653404ba3..d0e59e07b1fc 100644
> --- a/sound/soc/qcom/Kconfig
> +++ b/sound/soc/qcom/Kconfig
> @@ -173,6 +173,17 @@ config SND_SOC_SM8250
>  	  SM8250 SoC-based systems.
>  	  Say Y if you want to use audio device on this SoCs.
>  
> +config SND_SOC_SC8280XP
> +	tristate "SoC Machine driver for SC8280XP boards"
> +	depends on QCOM_APR && SOUNDWIRE

Comments from my v2 - compile test for APR.

> +	depends on COMMON_CLK
> +	select SND_SOC_QDSP6
> +	select SND_SOC_QCOM_COMMON
> +	help
> +	  To add support for audio on Qualcomm Technologies Inc.
> +	  SC8280XP SoC-based systems.
> +	  Say Y if you want to use audio device on this SoCs.
> +
>  config SND_SOC_SC7180
>  	tristate "SoC Machine driver for SC7180 boards"
>  	depends on I2C && GPIOLIB
> diff --git a/sound/soc/qcom/Makefile b/sound/soc/qcom/Makefile
> index 8b7b876899a8..8b97172cf990 100644
> --- a/sound/soc/qcom/Makefile
> +++ b/sound/soc/qcom/Makefile
> @@ -26,6 +26,7 @@ snd-soc-sc7180-objs := sc7180.o
>  snd-soc-sc7280-objs := sc7280.o
>  snd-soc-sdm845-objs := sdm845.o
>  snd-soc-sm8250-objs := sm8250.o
> +snd-soc-sc8280xp-objs := sc8280xp.o
>  snd-soc-qcom-common-objs := common.o
>  
>  obj-$(CONFIG_SND_SOC_STORM) += snd-soc-storm.o
> @@ -33,6 +34,7 @@ obj-$(CONFIG_SND_SOC_APQ8016_SBC) += snd-soc-apq8016-sbc.o
>  obj-$(CONFIG_SND_SOC_MSM8996) += snd-soc-apq8096.o
>  obj-$(CONFIG_SND_SOC_SC7180) += snd-soc-sc7180.o
>  obj-$(CONFIG_SND_SOC_SC7280) += snd-soc-sc7280.o
> +obj-$(CONFIG_SND_SOC_SC8280XP) += snd-soc-sc8280xp.o
>  obj-$(CONFIG_SND_SOC_SDM845) += snd-soc-sdm845.o
>  obj-$(CONFIG_SND_SOC_SM8250) += snd-soc-sm8250.o
>  obj-$(CONFIG_SND_SOC_QCOM_COMMON) += snd-soc-qcom-common.o
> diff --git a/sound/soc/qcom/sc8280xp.c b/sound/soc/qcom/sc8280xp.c
> new file mode 100644
> index 000000000000..ade44ad7c585
> --- /dev/null
> +++ b/sound/soc/qcom/sc8280xp.c
> @@ -0,0 +1,157 @@
> +// SPDX-License-Identifier: GPL-2.0
> +// Copyright (c) 2022, Linaro Limited
> +
> +#include <linux/module.h>
> +#include <linux/platform_device.h>
> +#include <linux/of_device.h>
> +#include <sound/soc.h>
> +#include <sound/soc-dapm.h>
> +#include <sound/pcm.h>
> +#include <linux/soundwire/sdw.h>
> +#include <sound/jack.h>
> +#include <linux/input-event-codes.h>
> +#include "qdsp6/q6afe.h"
> +#include "common.h"
> +
> +#define DRIVER_NAME		"sc8280xp"
> +
> +struct sc8280xp_snd_data {
> +	bool stream_prepared[AFE_PORT_MAX];
> +	struct snd_soc_card *card;
> +	struct sdw_stream_runtime *sruntime[AFE_PORT_MAX];
> +	struct snd_soc_jack jack;
> +	bool jack_setup;
> +};
> +
> +static int sc8280xp_snd_init(struct snd_soc_pcm_runtime *rtd)
> +{
> +	struct sc8280xp_snd_data *data = snd_soc_card_get_drvdata(rtd->card);
> +
> +	return qcom_snd_wcd_jack_setup(rtd, &data->jack, &data->jack_setup);
> +}
> +
> +static int sc8280xp_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd,
> +				     struct snd_pcm_hw_params *params)
> +{
> +	struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
> +	struct snd_interval *rate = hw_param_interval(params,
> +					SNDRV_PCM_HW_PARAM_RATE);
> +	struct snd_interval *channels = hw_param_interval(params,
> +					SNDRV_PCM_HW_PARAM_CHANNELS);
> +
> +	rate->min = rate->max = 48000;
> +	channels->min = 2;
> +	channels->max = 2;
> +	switch (cpu_dai->id) {
> +	case TX_CODEC_DMA_TX_0:
> +	case TX_CODEC_DMA_TX_1:
> +	case TX_CODEC_DMA_TX_2:
> +	case TX_CODEC_DMA_TX_3:
> +		channels->min = 1;
> +		break;
> +	default:
> +		break;
> +	}
> +
> +

Just one blank line.


Best regards,
Krzysztof
Krzysztof Kozlowski Sept. 8, 2022, 1:33 p.m. UTC | #4
On 08/09/2022 15:31, Krzysztof Kozlowski wrote:
> On 08/09/2022 08:34, Srinivas Kandagatla wrote:
>> SM8450 machine driver code can be reused across multiple Qualcomm SoCs,
>> Atleast another 2 of them for now (SM8450 and SM8250XP).
> 
> s/Atleast/At least/
> 
>>
>> Move some of the common SoundWire stream specific code to common file
>> so that other drivers can use it instead of duplicating.
>>
>> This patch is to prepare the common driver to be able to add new SoCs support
>> with less dupication.
> 
> s/dupication/duplication/
> 
> 
>>
> 
> Assuming there were no changes against v2:
> 
> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

I see now ifdefs. Seems ok, so only the typos above.

Best regards,
Krzysztof