From 0355d3cb7d7dbee809eeb50ab7d26c5992b9cc8f Mon Sep 17 00:00:00 2001 From: shiguangyuan1029 Date: Tue, 18 Feb 2025 22:20:37 +0800 Subject: [PATCH] dirver: i2s: implement ma1026 support for ACPI --- sound/soc/codecs/Kconfig | 8 ++++---- sound/soc/codecs/Makefile | 4 ++-- sound/soc/codecs/ma1026.c | 20 +++++++++++++------- sound/soc/phytium/Kconfig | 14 ++++++++------ sound/soc/phytium/Makefile | 6 +++--- sound/soc/phytium/pmdk_ma1026.c | 26 ++++++++++---------------- 6 files changed, 40 insertions(+), 38 deletions(-) mode change 100644 => 100755 sound/soc/codecs/Kconfig mode change 100644 => 100755 sound/soc/codecs/Makefile mode change 100644 => 100755 sound/soc/phytium/Makefile mode change 100644 => 100755 sound/soc/phytium/pmdk_ma1026.c diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig old mode 100644 new mode 100755 index 42f2bff4f1d..71d28219a0e --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig @@ -146,7 +146,6 @@ config SND_SOC_ALL_CODECS select SND_SOC_SI476X if MFD_SI476X_CORE select SND_SOC_SIMPLE_AMPLIFIER select SND_SOC_SIRF_AUDIO_CODEC - select SND_SOC_MA1026 if I2C select SND_SOC_SPDIF select SND_SOC_SSM2305 select SND_SOC_SSM2518 if I2C @@ -638,6 +637,10 @@ config SND_SOC_ISABELLE config SND_SOC_LM49453 tristate +config SND_SOC_MA1026 + tristate "Cubiclattice MA1026 CODEC" + depends on I2C + config SND_SOC_MAX98088 tristate @@ -915,9 +918,6 @@ config SND_SOC_SIRF_AUDIO_CODEC tristate "SiRF SoC internal audio codec" select REGMAP_MMIO -config SND_SOC_MA1026 - tristate "Cubiclattice MA1026 CODEC" - config SND_SOC_SPDIF tristate "S/PDIF CODEC" diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile old mode 100644 new mode 100755 index 56121cfd536..2e4e656f0be --- a/sound/soc/codecs/Makefile +++ b/sound/soc/codecs/Makefile @@ -87,6 +87,7 @@ snd-soc-jz4740-codec-objs := jz4740.o snd-soc-l3-objs := l3.o snd-soc-lm4857-objs := lm4857.o snd-soc-lm49453-objs := lm49453.o +snd-soc-ma1026-objs := ma1026.o snd-soc-max9759-objs := max9759.o snd-soc-max9768-objs := max9768.o snd-soc-max98088-objs := max98088.o @@ -158,7 +159,6 @@ snd-soc-sigmadsp-i2c-objs := sigmadsp-i2c.o snd-soc-sigmadsp-regmap-objs := sigmadsp-regmap.o snd-soc-si476x-objs := si476x.o snd-soc-sirf-audio-codec-objs := sirf-audio-codec.o -snd-soc-ma1026-objs := ma1026.o snd-soc-spdif-tx-objs := spdif_transmitter.o snd-soc-spdif-rx-objs := spdif_receiver.o snd-soc-ssm2305-objs := ssm2305.o @@ -350,6 +350,7 @@ obj-$(CONFIG_SND_SOC_JZ4740_CODEC) += snd-soc-jz4740-codec.o obj-$(CONFIG_SND_SOC_L3) += snd-soc-l3.o obj-$(CONFIG_SND_SOC_LM4857) += snd-soc-lm4857.o obj-$(CONFIG_SND_SOC_LM49453) += snd-soc-lm49453.o +obj-$(CONFIG_SND_SOC_MA1026) += snd-soc-ma1026.o obj-$(CONFIG_SND_SOC_MAX9759) += snd-soc-max9759.o obj-$(CONFIG_SND_SOC_MAX9768) += snd-soc-max9768.o obj-$(CONFIG_SND_SOC_MAX98088) += snd-soc-max98088.o @@ -421,7 +422,6 @@ obj-$(CONFIG_SND_SOC_SIGMADSP_REGMAP) += snd-soc-sigmadsp-regmap.o obj-$(CONFIG_SND_SOC_SI476X) += snd-soc-si476x.o obj-$(CONFIG_SND_SOC_SPDIF) += snd-soc-spdif-rx.o snd-soc-spdif-tx.o obj-$(CONFIG_SND_SOC_SIRF_AUDIO_CODEC) += sirf-audio-codec.o -obj-$(CONFIG_SND_SOC_MA1026) += snd-soc-ma1026.o obj-$(CONFIG_SND_SOC_SSM2305) += snd-soc-ssm2305.o obj-$(CONFIG_SND_SOC_SSM2518) += snd-soc-ssm2518.o obj-$(CONFIG_SND_SOC_SSM2602) += snd-soc-ssm2602.o diff --git a/sound/soc/codecs/ma1026.c b/sound/soc/codecs/ma1026.c index c3d6ad74f3d..a544d6c0885 100755 --- a/sound/soc/codecs/ma1026.c +++ b/sound/soc/codecs/ma1026.c @@ -43,7 +43,7 @@ snd_soc_component_write(codec, addr, value); #define snd_soc_update_ma1026(component, reg, mask, val) \ snd_soc_component_update_bits(component, reg, mask, val) -#elif (LINUX_VERSION_CODE < KERNEL_VERSION(6, 00, 0)) +#else #define snd_soc_write_ma1026(codec, addr, value) \ snd_soc_component_write(codec, addr, value); #define snd_soc_update_ma1026(component, reg, mask, val) \ @@ -56,7 +56,7 @@ #elif (LINUX_VERSION_CODE < KERNEL_VERSION(5, 00, 0)) #define snd_soc_read_ma1026(codec, addr) \ snd_soc_component_read32(codec, addr); -#elif (LINUX_VERSION_CODE < KERNEL_VERSION(6, 00, 0)) +#else #define snd_soc_read_ma1026(codec, addr) \ snd_soc_component_read(codec, addr); #endif @@ -185,7 +185,7 @@ static int ma1026_set_bias_level( struct snd_soc_codec *codec, #elif (LINUX_VERSION_CODE < KERNEL_VERSION(5, 00, 0)) struct snd_soc_component *codec, -#elif (LINUX_VERSION_CODE < KERNEL_VERSION(6, 00, 0)) +#else struct snd_soc_component *codec, #endif enum snd_soc_bias_level level) @@ -1017,6 +1017,11 @@ static void ma1026_i2c_shutdown(struct i2c_client *client) } } +static const struct i2c_device_id ma1026_id[] = { + {"ma1026", 0}, + {} +}; +MODULE_DEVICE_TABLE(i2c, ma1026_id); static const struct of_device_id ma1026_of_match[] = { {.compatible = "Phytium, ma1026", }, @@ -1025,16 +1030,17 @@ static const struct of_device_id ma1026_of_match[] = { MODULE_DEVICE_TABLE(of, ma1026_of_match); -static const struct i2c_device_id ma1026_id[] = { - {"ma1026", 0}, - {} +static const struct acpi_device_id ma1026_acpi_match[] = { + { "MAMA1026", 0}, + { } }; -MODULE_DEVICE_TABLE(i2c, ma1026_id); +MODULE_DEVICE_TABLE(acpi, ma1026_acpi_match); static struct i2c_driver ma1026_i2c_driver = { .driver = { .name = "ma1026", .of_match_table = ma1026_of_match, + .acpi_match_table = ma1026_acpi_match, }, .probe = ma1026_i2c_probe, .remove = ma1026_i2c_remove, diff --git a/sound/soc/phytium/Kconfig b/sound/soc/phytium/Kconfig index 191020f15b6..ee1a3d8331e 100755 --- a/sound/soc/phytium/Kconfig +++ b/sound/soc/phytium/Kconfig @@ -21,6 +21,14 @@ config SND_PMDK_ES8336 Say Y if you want to add Phytium machine support for ES8336 codecs. +config SND_PMDK_MA1026 + tristate "Phytium machine support with MA1026" + depends on I2C && SND_SOC_PHYTIUM_I2S + select SND_SOC_MA1026 + help + Say Y if you want to add Phytium machine support for + MA1026 codecs. + config SND_PMDK_DP tristate "Phytium machine support with DP" depends on I2C && SND_SOC_PHYTIUM_I2S @@ -29,9 +37,3 @@ config SND_PMDK_DP Say Y if you want to add Phytium machine support for Displayport on Px210. -config SND_PMDK_MA1026 - tristate "Phytium machine support with MA1026" - depends on I2C && SND_SOC_PHYTIUM_I2S - select SND_SOC_MA1026 - help - Say Y if you want to add Phytium machine support for MA1026 diff --git a/sound/soc/phytium/Makefile b/sound/soc/phytium/Makefile old mode 100644 new mode 100755 index 066ffc3116a..cc6d8d29619 --- a/sound/soc/phytium/Makefile +++ b/sound/soc/phytium/Makefile @@ -9,8 +9,8 @@ obj-$(CONFIG_SND_PMDK_ES8388) += snd-soc-pmdk-es8388.o snd-soc-pmdk-es8336-objs :=pmdk_es8336.o obj-$(CONFIG_SND_PMDK_ES8336) += snd-soc-pmdk-es8336.o -snd-soc-pmdk-dp-objs :=pmdk_dp.o -obj-$(CONFIG_SND_PMDK_DP) += snd-soc-pmdk-dp.o - snd-soc-pmdk-ma1026-objs :=pmdk_ma1026.o obj-$(CONFIG_SND_PMDK_MA1026) += snd-soc-pmdk-ma1026.o + +snd-soc-pmdk-dp-objs :=pmdk_dp.o +obj-$(CONFIG_SND_PMDK_DP) += snd-soc-pmdk-dp.o diff --git a/sound/soc/phytium/pmdk_ma1026.c b/sound/soc/phytium/pmdk_ma1026.c old mode 100644 new mode 100755 index 6cbb73fb4dc..315df420662 --- a/sound/soc/phytium/pmdk_ma1026.c +++ b/sound/soc/phytium/pmdk_ma1026.c @@ -9,7 +9,7 @@ #include #include -#define PMDK_ma1026_VERSION "1.0.0" +#define PMDK_MA1026_VERSION "1.0.0" /* PMDK widgets */ static const struct snd_soc_dapm_widget pmdk_ma1026_dapm_widgets[] = { @@ -40,12 +40,12 @@ static const struct snd_soc_dapm_route pmdk_ma1026_audio_map[] = { static struct snd_soc_dai_link pmdk_dai[] = { { - .name = "ma1026 HIFI", - .stream_name = "ma1026 HIFI", + .name = "MA1026 ASP", + .stream_name = "MA1026 ASP", .cpu_dai_name = "phytium-i2s-lsd", - .codec_dai_name = "ma1026-hifi", + .codec_dai_name = "ma1026-asp", .platform_name = "snd-soc-dummy", - .codec_name = "i2c-ma1026:00", + .codec_name = "i2c-MAMA1026:00", .dai_fmt = PMDK_DAI_FMT, }, }; @@ -55,19 +55,13 @@ static struct snd_soc_card pmdk = { .owner = THIS_MODULE, .dai_link = pmdk_dai, .num_links = ARRAY_SIZE(pmdk_dai), - - .dapm_widgets = pmdk_ma1026_dapm_widgets, - .num_dapm_widgets = ARRAY_SIZE(pmdk_ma1026_dapm_widgets), - .controls = pmdk_ma1026_controls, - .num_controls = ARRAY_SIZE(pmdk_ma1026_controls), - .dapm_routes = pmdk_ma1026_audio_map, - .num_dapm_routes = ARRAY_SIZE(pmdk_ma1026_audio_map), }; static int pmdk_sound_probe(struct platform_device *pdev) { struct snd_soc_card *card = &pmdk; struct device *dev = &pdev->dev; + card->dev = dev; return devm_snd_soc_register_card(&pdev->dev, card); } @@ -79,7 +73,7 @@ static const struct acpi_device_id pmdk_sound_acpi_match[] = { MODULE_DEVICE_TABLE(acpi, pmdk_sound_acpi_match); static const struct of_device_id phytium_ma1026_of_match[] = { - { .compatible = "phytium,audio-ma1026", }, + { .compatible = "phytium,audio-ma1026",}, {}, }; @@ -97,7 +91,7 @@ static struct platform_driver pmdk_sound_driver = { module_platform_driver(pmdk_sound_driver); -MODULE_AUTHOR("harry guo "); -MODULE_DESCRIPTION("ALSA SoC PMDK ma1026"); +MODULE_AUTHOR("Shi Guangyuan "); +MODULE_DESCRIPTION("ALSA SoC PMDK MA1026"); MODULE_LICENSE("GPL"); -MODULE_VERSION(PMDK_ma1026_VERSION); +MODULE_VERSION(PMDK_MA1026_VERSION); -- Gitee