* [PATCH 0/2] sound/arm: Remove pxa2xx-ac97.c and the defconfig reference
@ 2025-09-18 5:44 Peng Fan
2025-09-18 5:44 ` [PATCH 1/2] ASoC: codec: Remove pxa2xx-ac97.c Peng Fan
2025-09-18 5:44 ` [PATCH 2/2] ARM: defconfig: remove CONFIG_SND_PXA2XX_AC97 references Peng Fan
0 siblings, 2 replies; 5+ messages in thread
From: Peng Fan @ 2025-09-18 5:44 UTC (permalink / raw)
To: Daniel Mack, Haojian Zhuang, Robert Jarzmik, Jaroslav Kysela,
Takashi Iwai, Arnd Bergmann, Mark Brown
Cc: linux-kernel, linux-arm-kernel, linux-sound, Peng Fan
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. And also remove the CONFIG reference in
defconfig.
DT platforms could use sound/soc/pxa/pxa2xx-ac97.c
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
Peng Fan (2):
ASoC: codec: Remove pxa2xx-ac97.c
ARM: defconfig: remove CONFIG_SND_PXA2XX_AC97 references
arch/arm/configs/am200epdkit_defconfig | 1 -
sound/arm/Kconfig | 10 --
sound/arm/Makefile | 3 -
sound/arm/pxa2xx-ac97.c | 286 ---------------------------------
4 files changed, 300 deletions(-)
---
base-commit: ae2d20002576d2893ecaff25db3d7ef9190ac0b6
change-id: 20250918-audio-8532a5344681
Best regards,
--
Peng Fan <peng.fan@nxp.com>
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] ASoC: codec: Remove pxa2xx-ac97.c
2025-09-18 5:44 [PATCH 0/2] sound/arm: Remove pxa2xx-ac97.c and the defconfig reference Peng Fan
@ 2025-09-18 5:44 ` Peng Fan
2025-09-18 7:15 ` Arnd Bergmann
2025-09-18 5:44 ` [PATCH 2/2] ARM: defconfig: remove CONFIG_SND_PXA2XX_AC97 references Peng Fan
1 sibling, 1 reply; 5+ messages in thread
From: Peng Fan @ 2025-09-18 5:44 UTC (permalink / raw)
To: Daniel Mack, Haojian Zhuang, Robert Jarzmik, Jaroslav Kysela,
Takashi Iwai, Arnd Bergmann, Mark Brown
Cc: linux-kernel, linux-arm-kernel, linux-sound, Peng Fan
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@nxp.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
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] ARM: defconfig: remove CONFIG_SND_PXA2XX_AC97 references
2025-09-18 5:44 [PATCH 0/2] sound/arm: Remove pxa2xx-ac97.c and the defconfig reference Peng Fan
2025-09-18 5:44 ` [PATCH 1/2] ASoC: codec: Remove pxa2xx-ac97.c Peng Fan
@ 2025-09-18 5:44 ` Peng Fan
1 sibling, 0 replies; 5+ messages in thread
From: Peng Fan @ 2025-09-18 5:44 UTC (permalink / raw)
To: Daniel Mack, Haojian Zhuang, Robert Jarzmik, Jaroslav Kysela,
Takashi Iwai, Arnd Bergmann, Mark Brown
Cc: linux-kernel, linux-arm-kernel, linux-sound, Peng Fan
The pxa2xx-ac97 non-DT supported driver was removed, so remove
the reference to the config.
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
arch/arm/configs/am200epdkit_defconfig | 1 -
1 file changed, 1 deletion(-)
diff --git a/arch/arm/configs/am200epdkit_defconfig b/arch/arm/configs/am200epdkit_defconfig
index 134a559aba3dd535782942b1aeef94631ba231f4..9305db0b48f2ace7ececd826d06fa22b8ad3f1ff 100644
--- a/arch/arm/configs/am200epdkit_defconfig
+++ b/arch/arm/configs/am200epdkit_defconfig
@@ -70,7 +70,6 @@ CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
# CONFIG_SND_SUPPORT_OLD_API is not set
# CONFIG_SND_VERBOSE_PROCFS is not set
-CONFIG_SND_PXA2XX_AC97=m
CONFIG_USB_GADGET=y
CONFIG_USB_ETH=m
CONFIG_MMC=y
--
2.37.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] ASoC: codec: Remove pxa2xx-ac97.c
2025-09-18 5:44 ` [PATCH 1/2] ASoC: codec: Remove pxa2xx-ac97.c Peng Fan
@ 2025-09-18 7:15 ` Arnd Bergmann
2025-10-25 9:13 ` Robert Jarzmik
0 siblings, 1 reply; 5+ messages in thread
From: Arnd Bergmann @ 2025-09-18 7:15 UTC (permalink / raw)
To: Peng Fan, Daniel Mack, Haojian Zhuang, Robert Jarzmik,
Jaroslav Kysela, Takashi Iwai, Mark Brown
Cc: linux-kernel, linux-arm-kernel, linux-sound
On Thu, Sep 18, 2025, at 07:44, Peng Fan wrote:
> 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@nxp.com>
> ---
> sound/arm/Kconfig | 10 --
> sound/arm/Makefile | 3 -
> sound/arm/pxa2xx-ac97.c | 286 ------------------------------------------------
> 3 files changed, 299 deletions(-)
I think you are right, I was sure there was still a way to use this
driver either as part of sound/soc/pxa/*, or as an alternative,
but now I don't see how.
If we do this, I think we should just merge pxa2xx-pcm-lib.c and
snd-pxa2xx-lib.c into the respective callers in the sound/soc/pxa/
driver.
Robert, can you confirm?
Arnd
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] ASoC: codec: Remove pxa2xx-ac97.c
2025-09-18 7:15 ` Arnd Bergmann
@ 2025-10-25 9:13 ` Robert Jarzmik
0 siblings, 0 replies; 5+ messages in thread
From: Robert Jarzmik @ 2025-10-25 9:13 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Peng Fan, Daniel Mack, Haojian Zhuang, Jaroslav Kysela,
Takashi Iwai, Mark Brown, linux-kernel, linux-arm-kernel,
linux-sound
"Arnd Bergmann" <arnd@arndb.de> writes:
> On Thu, Sep 18, 2025, at 07:44, Peng Fan wrote:
>> 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@nxp.com>
>> ---
>> sound/arm/Kconfig | 10 --
>> sound/arm/Makefile | 3 -
>> sound/arm/pxa2xx-ac97.c | 286 ------------------------------------------------
>> 3 files changed, 299 deletions(-)
>
> I think you are right, I was sure there was still a way to use this
> driver either as part of sound/soc/pxa/*, or as an alternative,
> but now I don't see how.
>
> If we do this, I think we should just merge pxa2xx-pcm-lib.c and
> snd-pxa2xx-lib.c into the respective callers in the sound/soc/pxa/
> driver.
>
> Robert, can you confirm?
Hi Arnd,
That'a a way of doing it, yet I would have chosen another path.
I would have taken all the code out of sound/arm/pxa2xx-pcm-lib.c, and
injected it into sound/soc/pxa2xx-pcm.c The reason is that the PCM code
is used across AC97, I2S and SSP. You would have to duplicate that if
you were to inject it to its callers.
I would also see with a keen eye the removal of sound/arm/*. Unless I'm
mistaken, this code only works in platform_data environments. And if you
want to leave only DT code, well ... the long term should be to remove
this part.
The code in sound/soc/pxa provides another access to the same
functionality (ie. sound on pxa platforms), and is DT compliant.
On a personal note, I only ever used sound/soc/pxa/* in all my boards,
and never arm/pxa/*. I'm not aware of any remaining users of sound/arm/*.
Cheers.
--
Robert
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2025-10-25 9:14 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-18 5:44 [PATCH 0/2] sound/arm: Remove pxa2xx-ac97.c and the defconfig reference Peng Fan
2025-09-18 5:44 ` [PATCH 1/2] ASoC: codec: Remove pxa2xx-ac97.c Peng Fan
2025-09-18 7:15 ` Arnd Bergmann
2025-10-25 9:13 ` Robert Jarzmik
2025-09-18 5:44 ` [PATCH 2/2] ARM: defconfig: remove CONFIG_SND_PXA2XX_AC97 references Peng Fan
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.