[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20250918-audio-v1-1-e9d0df5c60d2@nxp.com>
Date: Thu, 18 Sep 2025 13:44:32 +0800
From: Peng Fan <peng.fan@....com>
To: Daniel Mack <daniel@...que.org>,
Haojian Zhuang <haojian.zhuang@...il.com>,
Robert Jarzmik <robert.jarzmik@...e.fr>, Jaroslav Kysela <perex@...ex.cz>,
Takashi Iwai <tiwai@...e.com>, Arnd Bergmann <arnd@...db.de>,
Mark Brown <broonie@...nel.org>
Cc: linux-kernel@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
linux-sound@...r.kernel.org, Peng Fan <peng.fan@....com>
Subject: [PATCH 1/2] ASoC: codec: Remove pxa2xx-ac97.c
With commit ce79f3a1ad5f ("ARM: pxa: prune unused device support") and
commit 2548e6c76ebf ("ARM: pxa: pxa2xx-ac97-lib: use IRQ resource"), there
is no 'pxa2xx-ac97' platform device created by machine level code, so this
driver could be removed.
Signed-off-by: Peng Fan <peng.fan@....com>
---
sound/arm/Kconfig | 10 --
sound/arm/Makefile | 3 -
sound/arm/pxa2xx-ac97.c | 286 ------------------------------------------------
3 files changed, 299 deletions(-)
diff --git a/sound/arm/Kconfig b/sound/arm/Kconfig
index dea2c661b3537309d8ba0ab044640f15205bf29c..e4d7288d1e1e3e7c5d081a7bf474319693d5bff6 100644
--- a/sound/arm/Kconfig
+++ b/sound/arm/Kconfig
@@ -18,16 +18,6 @@ config SND_ARMAACI
select SND_PCM
select SND_AC97_CODEC
-config SND_PXA2XX_AC97
- tristate "AC97 driver for the Intel PXA2xx chip"
- depends on ARCH_PXA
- select SND_AC97_CODEC
- select SND_PXA2XX_LIB
- select SND_PXA2XX_LIB_AC97
- help
- Say Y or M if you want to support any AC97 codec attached to
- the PXA2xx AC97 interface.
-
endif # SND_ARM
config SND_PXA2XX_LIB
diff --git a/sound/arm/Makefile b/sound/arm/Makefile
index 899edb4bb278dad0e7dd90fd11703f4dca6c3cb1..99325a66cf771ad7a22df18b340221fa13e69a2d 100644
--- a/sound/arm/Makefile
+++ b/sound/arm/Makefile
@@ -9,6 +9,3 @@ snd-aaci-y := aaci.o
obj-$(CONFIG_SND_PXA2XX_LIB) += snd-pxa2xx-lib.o
snd-pxa2xx-lib-y := pxa2xx-pcm-lib.o
snd-pxa2xx-lib-$(CONFIG_SND_PXA2XX_LIB_AC97) += pxa2xx-ac97-lib.o
-
-obj-$(CONFIG_SND_PXA2XX_AC97) += snd-pxa2xx-ac97.o
-snd-pxa2xx-ac97-y := pxa2xx-ac97.o
diff --git a/sound/arm/pxa2xx-ac97.c b/sound/arm/pxa2xx-ac97.c
deleted file mode 100644
index 77b11616a7ee05a45573d1b643f3192f35c0c38a..0000000000000000000000000000000000000000
--- a/sound/arm/pxa2xx-ac97.c
+++ /dev/null
@@ -1,286 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * linux/sound/pxa2xx-ac97.c -- AC97 support for the Intel PXA2xx chip.
- *
- * Author: Nicolas Pitre
- * Created: Dec 02, 2004
- * Copyright: MontaVista Software Inc.
- */
-
-#include <linux/init.h>
-#include <linux/io.h>
-#include <linux/module.h>
-#include <linux/platform_device.h>
-#include <linux/dmaengine.h>
-#include <linux/dma-mapping.h>
-
-#include <sound/core.h>
-#include <sound/pcm.h>
-#include <sound/ac97_codec.h>
-#include <sound/initval.h>
-#include <sound/pxa2xx-lib.h>
-#include <sound/dmaengine_pcm.h>
-
-#include <linux/platform_data/asoc-pxa.h>
-
-static void pxa2xx_ac97_legacy_reset(struct snd_ac97 *ac97)
-{
- if (!pxa2xx_ac97_try_cold_reset())
- pxa2xx_ac97_try_warm_reset();
-
- pxa2xx_ac97_finish_reset();
-}
-
-static unsigned short pxa2xx_ac97_legacy_read(struct snd_ac97 *ac97,
- unsigned short reg)
-{
- int ret;
-
- ret = pxa2xx_ac97_read(ac97->num, reg);
- if (ret < 0)
- return 0;
- else
- return (unsigned short)(ret & 0xffff);
-}
-
-static void pxa2xx_ac97_legacy_write(struct snd_ac97 *ac97,
- unsigned short reg, unsigned short val)
-{
- pxa2xx_ac97_write(ac97->num, reg, val);
-}
-
-static const struct snd_ac97_bus_ops pxa2xx_ac97_ops = {
- .read = pxa2xx_ac97_legacy_read,
- .write = pxa2xx_ac97_legacy_write,
- .reset = pxa2xx_ac97_legacy_reset,
-};
-
-static struct snd_pcm *pxa2xx_ac97_pcm;
-static struct snd_ac97 *pxa2xx_ac97_ac97;
-
-static int pxa2xx_ac97_pcm_open(struct snd_pcm_substream *substream)
-{
- struct snd_pcm_runtime *runtime = substream->runtime;
- pxa2xx_audio_ops_t *platform_ops;
- int ret, i;
-
- ret = pxa2xx_pcm_open(substream);
- if (ret)
- return ret;
-
- runtime->hw.channels_min = 2;
- runtime->hw.channels_max = 2;
-
- i = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) ?
- AC97_RATES_FRONT_DAC : AC97_RATES_ADC;
- runtime->hw.rates = pxa2xx_ac97_ac97->rates[i];
- snd_pcm_limit_hw_rates(runtime);
-
- platform_ops = substream->pcm->card->dev->platform_data;
- if (platform_ops && platform_ops->startup) {
- ret = platform_ops->startup(substream, platform_ops->priv);
- if (ret < 0)
- pxa2xx_pcm_close(substream);
- }
-
- return ret;
-}
-
-static int pxa2xx_ac97_pcm_close(struct snd_pcm_substream *substream)
-{
- pxa2xx_audio_ops_t *platform_ops;
-
- platform_ops = substream->pcm->card->dev->platform_data;
- if (platform_ops && platform_ops->shutdown)
- platform_ops->shutdown(substream, platform_ops->priv);
-
- return 0;
-}
-
-static int pxa2xx_ac97_pcm_prepare(struct snd_pcm_substream *substream)
-{
- struct snd_pcm_runtime *runtime = substream->runtime;
- int reg = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) ?
- AC97_PCM_FRONT_DAC_RATE : AC97_PCM_LR_ADC_RATE;
- int ret;
-
- ret = pxa2xx_pcm_prepare(substream);
- if (ret < 0)
- return ret;
-
- return snd_ac97_set_rate(pxa2xx_ac97_ac97, reg, runtime->rate);
-}
-
-static int pxa2xx_ac97_do_suspend(struct snd_card *card)
-{
- pxa2xx_audio_ops_t *platform_ops = card->dev->platform_data;
-
- snd_power_change_state(card, SNDRV_CTL_POWER_D3cold);
- snd_ac97_suspend(pxa2xx_ac97_ac97);
- if (platform_ops && platform_ops->suspend)
- platform_ops->suspend(platform_ops->priv);
-
- return pxa2xx_ac97_hw_suspend();
-}
-
-static int pxa2xx_ac97_do_resume(struct snd_card *card)
-{
- pxa2xx_audio_ops_t *platform_ops = card->dev->platform_data;
- int rc;
-
- rc = pxa2xx_ac97_hw_resume();
- if (rc)
- return rc;
-
- if (platform_ops && platform_ops->resume)
- platform_ops->resume(platform_ops->priv);
- snd_ac97_resume(pxa2xx_ac97_ac97);
- snd_power_change_state(card, SNDRV_CTL_POWER_D0);
-
- return 0;
-}
-
-static int pxa2xx_ac97_suspend(struct device *dev)
-{
- struct snd_card *card = dev_get_drvdata(dev);
- int ret = 0;
-
- if (card)
- ret = pxa2xx_ac97_do_suspend(card);
-
- return ret;
-}
-
-static int pxa2xx_ac97_resume(struct device *dev)
-{
- struct snd_card *card = dev_get_drvdata(dev);
- int ret = 0;
-
- if (card)
- ret = pxa2xx_ac97_do_resume(card);
-
- return ret;
-}
-
-static DEFINE_SIMPLE_DEV_PM_OPS(pxa2xx_ac97_pm_ops, pxa2xx_ac97_suspend, pxa2xx_ac97_resume);
-
-static const struct snd_pcm_ops pxa2xx_ac97_pcm_ops = {
- .open = pxa2xx_ac97_pcm_open,
- .close = pxa2xx_ac97_pcm_close,
- .hw_params = pxa2xx_pcm_hw_params,
- .prepare = pxa2xx_ac97_pcm_prepare,
- .trigger = pxa2xx_pcm_trigger,
- .pointer = pxa2xx_pcm_pointer,
-};
-
-
-static int pxa2xx_ac97_pcm_new(struct snd_card *card)
-{
- struct snd_pcm *pcm;
- int ret;
-
- ret = snd_pcm_new(card, "PXA2xx-PCM", 0, 1, 1, &pcm);
- if (ret)
- goto out;
-
- ret = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(32));
- if (ret)
- goto out;
-
- snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &pxa2xx_ac97_pcm_ops);
- snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &pxa2xx_ac97_pcm_ops);
- ret = pxa2xx_pcm_preallocate_dma_buffer(pcm);
- if (ret)
- goto out;
-
- pxa2xx_ac97_pcm = pcm;
- ret = 0;
-
- out:
- return ret;
-}
-
-static int pxa2xx_ac97_probe(struct platform_device *dev)
-{
- struct snd_card *card;
- struct snd_ac97_bus *ac97_bus;
- struct snd_ac97_template ac97_template;
- int ret;
- pxa2xx_audio_ops_t *pdata = dev->dev.platform_data;
-
- if (dev->id >= 0) {
- dev_err(&dev->dev, "PXA2xx has only one AC97 port.\n");
- ret = -ENXIO;
- goto err_dev;
- }
-
- ret = snd_card_new(&dev->dev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1,
- THIS_MODULE, 0, &card);
- if (ret < 0)
- goto err;
-
- strscpy(card->driver, dev->dev.driver->name, sizeof(card->driver));
-
- ret = pxa2xx_ac97_pcm_new(card);
- if (ret)
- goto err;
-
- ret = pxa2xx_ac97_hw_probe(dev);
- if (ret)
- goto err;
-
- ret = snd_ac97_bus(card, 0, &pxa2xx_ac97_ops, NULL, &ac97_bus);
- if (ret)
- goto err_remove;
- memset(&ac97_template, 0, sizeof(ac97_template));
- ret = snd_ac97_mixer(ac97_bus, &ac97_template, &pxa2xx_ac97_ac97);
- if (ret)
- goto err_remove;
-
- snprintf(card->shortname, sizeof(card->shortname),
- "%s", snd_ac97_get_short_name(pxa2xx_ac97_ac97));
- snprintf(card->longname, sizeof(card->longname),
- "%s (%s)", dev->dev.driver->name, card->mixername);
-
- if (pdata && pdata->codec_pdata[0])
- snd_ac97_dev_add_pdata(ac97_bus->codec[0], pdata->codec_pdata[0]);
- ret = snd_card_register(card);
- if (ret == 0) {
- platform_set_drvdata(dev, card);
- return 0;
- }
-
-err_remove:
- pxa2xx_ac97_hw_remove(dev);
-err:
- if (card)
- snd_card_free(card);
-err_dev:
- return ret;
-}
-
-static void pxa2xx_ac97_remove(struct platform_device *dev)
-{
- struct snd_card *card = platform_get_drvdata(dev);
-
- if (card) {
- snd_card_free(card);
- pxa2xx_ac97_hw_remove(dev);
- }
-}
-
-static struct platform_driver pxa2xx_ac97_driver = {
- .probe = pxa2xx_ac97_probe,
- .remove = pxa2xx_ac97_remove,
- .driver = {
- .name = "pxa2xx-ac97",
- .pm = &pxa2xx_ac97_pm_ops,
- },
-};
-
-module_platform_driver(pxa2xx_ac97_driver);
-
-MODULE_AUTHOR("Nicolas Pitre");
-MODULE_DESCRIPTION("AC97 driver for the Intel PXA2xx chip");
-MODULE_LICENSE("GPL");
-MODULE_ALIAS("platform:pxa2xx-ac97");
--
2.37.1
Powered by blists - more mailing lists