lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<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

Powered by Openwall GNU/*/Linux Powered by OpenVZ