Re: [PATCH 08/12] ASoC: mediatek: mt8188: add platform driver

AngeloGioacchino Del Regno
2022-10-04T09:40:45Z

Il 30/09/22 16:56, Trevor Wu ha scritto:
> Add mt8188 platform driver.
>
> Signed-off-by: Trevor Wu <trevor.wu@mediatek.com>
> ---
> This patch depends on the following series that has not been accepted.
>
> [1] Add power domain support for MT8188
> https://patchwork.kernel.org/project/linux-mediatek/list/?series=681359
> (linux/soc/mediatek/infracfg.h is included)
> ---
> sound/soc/mediatek/Kconfig | 13 +
> sound/soc/mediatek/Makefile | 1 +
> sound/soc/mediatek/mt8188/Makefile | 12 +
> sound/soc/mediatek/mt8188/mt8188-afe-pcm.c | 2945 ++++++++++++++++++++
> 4 files changed, 2971 insertions(+)
> create mode 100644 sound/soc/mediatek/mt8188/Makefile
> create mode 100644 sound/soc/mediatek/mt8188/mt8188-afe-pcm.c
>
> diff --git a/sound/soc/mediatek/Kconfig b/sound/soc/mediatek/Kconfig
> index 363fa4d47680..cf0e4c6b61e7 100644
> --- a/sound/soc/mediatek/Kconfig
> +++ b/sound/soc/mediatek/Kconfig
> @@ -206,6 +206,19 @@ config SND_SOC_MTK_BTCVSD
> Select Y if you have such device.
> If unsure select "N".
>
> +config SND_SOC_MT8188
> + tristate "ASoC support for Mediatek MT8188 chip"
> + depends on ARCH_MEDIATEK || COMPILE_TEST
> + depends on COMMON_CLK
> + select SND_SOC_MEDIATEK
> + select SND_SOC_MT6359
> + select MFD_SYSCON if SND_SOC_MT6359
> + help
> + This adds ASoC platform driver support for Mediatek MT8188 chip
> + that can be used with other codecs.
> + Select Y if you have such device.
> + If unsure select "N".
> +
> config SND_SOC_MT8192
> tristate "ASoC support for Mediatek MT8192 chip"
> depends on ARCH_MEDIATEK
> diff --git a/sound/soc/mediatek/Makefile b/sound/soc/mediatek/Makefile
> index 5571c640a288..3de38cfc69e5 100644
> --- a/sound/soc/mediatek/Makefile
> +++ b/sound/soc/mediatek/Makefile
> @@ -5,5 +5,6 @@ obj-$(CONFIG_SND_SOC_MT6797) += mt6797/
> obj-$(CONFIG_SND_SOC_MT8173) += mt8173/
> obj-$(CONFIG_SND_SOC_MT8183) += mt8183/
> obj-$(CONFIG_SND_SOC_MT8186) += mt8186/
> +obj-$(CONFIG_SND_SOC_MT8188) += mt8188/
> obj-$(CONFIG_SND_SOC_MT8192) += mt8192/
> obj-$(CONFIG_SND_SOC_MT8195) += mt8195/
> diff --git a/sound/soc/mediatek/mt8188/Makefile b/sound/soc/mediatek/mt8188/Makefile
> new file mode 100644
> index 000000000000..fa5d383c5e47
> --- /dev/null
> +++ b/sound/soc/mediatek/mt8188/Makefile
> @@ -0,0 +1,12 @@
> +# SPDX-License-Identifier: GPL-2.0
> +
> +# platform driver
> +snd-soc-mt8188-afe-objs := \
> + mt8188-afe-clk.o \
> + mt8188-afe-pcm.o \
> + mt8188-audsys-clk.o \
> + mt8188-dai-adda.o \
> + mt8188-dai-etdm.o \
> + mt8188-dai-pcm.o
> +
> +obj-$(CONFIG_SND_SOC_MT8188) += snd-soc-mt8188-afe.o
> diff --git a/sound/soc/mediatek/mt8188/mt8188-afe-pcm.c b/sound/soc/mediatek/mt8188/mt8188-afe-pcm.c
> new file mode 100644
> index 000000000000..5d8e01c99714
> --- /dev/null
> +++ b/sound/soc/mediatek/mt8188/mt8188-afe-pcm.c
> @@ -0,0 +1,2945 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Mediatek ALSA SoC AFE platform driver for 8188
> + *
> + * Copyright (c) 2022 MediaTek Inc.
> + * Author: Bicycle Tsai <bicycle.tsai@mediatek.com>
> + * Trevor Wu <trevor.wu@mediatek.com>
> + * Chun-Chia Chiu <chun-chia.chiu@mediatek.com>
> + */
> +
> +#include <linux/arm-smccc.h>
> +#include <linux/delay.h>
> +#include <linux/dma-mapping.h>
> +#include <linux/module.h>
> +#include <linux/mfd/syscon.h>
> +#include <linux/of.h>
> +#include <linux/of_address.h>
> +#include <linux/of_platform.h>
> +#include <linux/pm_runtime.h>
> +#include <linux/reset.h>
> +#include <linux/soc/mediatek/infracfg.h>
> +#include <linux/soc/mediatek/mtk_sip_svc.h>
> +#include <sound/pcm_params.h>
> +#include "mt8188-afe-common.h"
> +#include "mt8188-afe-clk.h"
> +#include "mt8188-reg.h"
> +#include "../common/mtk-afe-platform-driver.h"
> +#include "../common/mtk-afe-fe-dai.h"
> +
> +#define MTK_SIP_AUDIO_CONTROL MTK_SIP_SMC_CMD(0x517)

This definition goes to include/linux/soc/mediatek/mtk_sip_svc.h

> +
> +#define MT8188_MEMIF_BUFFER_BYTES_ALIGN (0x40)
> +#define MT8188_MEMIF_DL7_MAX_PERIOD_SIZE (0x3fff)
> +
> +#define MEMIF_AXI_MINLEN 9 //register default value

...and please fix comments style.

> +
> +struct mtk_dai_memif_priv {
> + unsigned int asys_timing_sel;
> + unsigned int fs_timing;
> +};
> +

..snip..

> +
> +MODULE_DESCRIPTION("Mediatek ALSA SoC AFE platform driver for 8188");

MediaTek SoC AFE platform driver for ALSA MT8188

> +MODULE_AUTHOR("Chun-Chia.Chiu <chun-chia.chiu@mediatek.com>");
> +MODULE_LICENSE("GPL");