Alsa-devel
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
November 2022
- 183 participants
- 375 discussions
[RFC][PATCH v3 00/33] timers: Use timer_shutdown*() before freeing timers
by Steven Rostedt 05 Nov '22
by Steven Rostedt 05 Nov '22
05 Nov '22
Back in April, I posted an RFC patch set to help mitigate a common issue
where a timer gets armed just before it is freed, and when the timer
goes off, it crashes in the timer code without any evidence of who the
culprit was. I got side tracked and never finished up on that patch set.
Since this type of crash is still our #1 crash we are seeing in the field,
it has become a priority again to finish it.
This is v3 of that patch set. Thomas Gleixner posted an untested version
that makes timer->function NULL as the flag that it is shutdown. I took that
code, tested it (fixed it up), added more comments, and changed the
name to timer_shutdown_sync(). I also converted it to use WARN_ON_ONCE()
instead of just WARN_ON() as Linus asked for.
I then created a trivial coccinelle script to find where del_timer*()
is called before being freed, and converted them all to timer_shutdown*()
(There was a couple that still used del_timer() instead of del_timer_sync()).
I also updated DEBUG_OBJECTS_TIMERS to check from where the timer is ever
armed, to calling of timer_shutdown_sync(), and it will trigger if a timer
is freed in between. The current way is to only check if the timer is armed,
but that means it only triggers if the race condition is hit, and with
experience, it's not run on enough machines to catch all of them. By triggering
it from the time the timer is armed to the time it is shutdown, it catches
all potential cases even if the race condition is not hit.
I went though the result of the cocinelle script, and updated the locations.
Some locations were caught by DEBUG_OBJECTS_TIMERS as the coccinelle script
only checked for timers being freed in the same function as the del_timer*().
Ideally, I would have the first patch go into this rc cycle, which is mostly
non functional as it will allow the other patches to come in via the respective
subsystems in the next merge window.
Changes since v2: https://lore.kernel.org/all/20221027150525.753064657@goodmis.org/
- Talking with Thomas Gleixner, he wanted a better name space and to remove
the "del_" portion of the API.
- Since there's now a shutdown interface that does not synchronize, to keep
it closer to del_timer() and del_timer_sync(), the API is now:
timer_shutdown() - same as del_timer() but deactivates the timer.
timer_shutdown_sync() - same as del_timer_sync() but deactivates the timer.
- Added a few more locations that got converted.
git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace.git
trace/timers
Head SHA1: 25106f0bb7968b3e8c746a7853f44b51840746c3
Steven Rostedt (Google) (33):
timers: Add timer_shutdown_sync() and timer_shutdown() to be called before freeing timers
timers: s390/cmm: Use timer_shutdown_sync() before freeing timer
timers: sh: Use timer_shutdown_sync() before freeing timer
timers: block: Use timer_shutdown_sync() before freeing timer
timers: ACPI: Use timer_shutdown_sync() before freeing timer
timers: atm: Use timer_shutdown_sync() before freeing timer
timers: PM: Use timer_shutdown_sync()
timers: Bluetooth: Use timer_shutdown_sync() before freeing timer
timers: hangcheck: Use timer_shutdown_sync() before freeing timer
timers: ipmi: Use timer_shutdown_sync() before freeing timer
random: use timer_shutdown_sync() before freeing timer
timers: dma-buf: Use timer_shutdown_sync() before freeing timer
timers: drm: Use timer_shutdown_sync() before freeing timer
timers: HID: Use timer_shutdown_sync() before freeing timer
timers: Input: Use timer_shutdown_sync() before freeing timer
timers: mISDN: Use timer_shutdown_sync() before freeing timer
timers: leds: Use timer_shutdown_sync() before freeing timer
timers: media: Use timer_shutdown_sync() before freeing timer
timers: net: Use timer_shutdown_sync() before freeing timer
timers: usb: Use timer_shutdown_sync() before freeing timer
timers: cgroup: Use timer_shutdown_sync() before freeing timer
timers: workqueue: Use timer_shutdown_sync() before freeing timer
timers: nfc: pn533: Use timer_shutdown_sync() before freeing timer
timers: pcmcia: Use timer_shutdown_sync() before freeing timer
timers: scsi: Use timer_shutdown_sync() and timer_shutdown() before freeing timer
timers: tty: Use timer_shutdown_sync() before freeing timer
timers: ext4: Use timer_shutdown_sync() before freeing timer
timers: fs/nilfs2: Use timer_shutdown_sync() before freeing timer
timers: ALSA: Use timer_shutdown_sync() before freeing timer
timers: jbd2: Use timer_shutdown() before freeing timer
timers: sched/psi: Use timer_shutdown_sync() before freeing timer
timers: x86/mce: Use __init_timer() for resetting timers
timers: Expand DEBUG_OBJECTS_TIMER to check if it ever was used
----
.../RCU/Design/Requirements/Requirements.rst | 2 +-
Documentation/core-api/local_ops.rst | 2 +-
Documentation/kernel-hacking/locking.rst | 5 +
arch/s390/mm/cmm.c | 4 +-
arch/sh/drivers/push-switch.c | 2 +-
arch/x86/kernel/cpu/mce/core.c | 14 ++-
block/blk-iocost.c | 2 +-
block/blk-iolatency.c | 2 +-
block/blk-stat.c | 2 +-
block/blk-throttle.c | 2 +-
block/kyber-iosched.c | 2 +-
drivers/acpi/apei/ghes.c | 2 +-
drivers/atm/idt77105.c | 4 +-
drivers/atm/idt77252.c | 4 +-
drivers/atm/iphase.c | 2 +-
drivers/base/power/wakeup.c | 7 +-
drivers/block/drbd/drbd_main.c | 2 +-
drivers/block/loop.c | 2 +-
drivers/block/sunvdc.c | 2 +-
drivers/bluetooth/hci_bcsp.c | 2 +-
drivers/bluetooth/hci_h5.c | 2 +-
drivers/bluetooth/hci_qca.c | 4 +-
drivers/char/hangcheck-timer.c | 4 +-
drivers/char/ipmi/ipmi_msghandler.c | 2 +-
drivers/char/ipmi/ipmi_ssif.c | 4 +-
drivers/char/random.c | 2 +-
drivers/dma-buf/st-dma-fence.c | 2 +-
drivers/gpu/drm/gud/gud_pipe.c | 2 +-
drivers/gpu/drm/i915/i915_sw_fence.c | 2 +-
drivers/hid/hid-wiimote-core.c | 2 +-
drivers/input/keyboard/locomokbd.c | 2 +-
drivers/input/keyboard/omap-keypad.c | 2 +-
drivers/input/mouse/alps.c | 2 +-
drivers/input/serio/hil_mlc.c | 2 +-
drivers/input/serio/hp_sdc.c | 2 +-
drivers/isdn/hardware/mISDN/hfcmulti.c | 6 +-
drivers/isdn/mISDN/l1oip_core.c | 4 +-
drivers/isdn/mISDN/timerdev.c | 4 +-
drivers/leds/trigger/ledtrig-activity.c | 2 +-
drivers/leds/trigger/ledtrig-heartbeat.c | 2 +-
drivers/leds/trigger/ledtrig-pattern.c | 2 +-
drivers/leds/trigger/ledtrig-transient.c | 2 +-
drivers/media/pci/ivtv/ivtv-driver.c | 2 +-
drivers/media/usb/pvrusb2/pvrusb2-hdw.c | 18 ++--
drivers/media/usb/s2255/s2255drv.c | 4 +-
drivers/net/ethernet/intel/i40e/i40e_main.c | 6 +-
drivers/net/ethernet/marvell/sky2.c | 2 +-
drivers/net/ethernet/sun/sunvnet.c | 2 +-
drivers/net/usb/sierra_net.c | 2 +-
drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c | 2 +-
drivers/net/wireless/intersil/hostap/hostap_ap.c | 2 +-
drivers/net/wireless/marvell/mwifiex/main.c | 2 +-
drivers/net/wireless/microchip/wilc1000/hif.c | 8 +-
drivers/nfc/pn533/pn533.c | 2 +-
drivers/nfc/pn533/uart.c | 2 +-
drivers/pcmcia/bcm63xx_pcmcia.c | 2 +-
drivers/pcmcia/electra_cf.c | 2 +-
drivers/pcmcia/omap_cf.c | 2 +-
drivers/pcmcia/pd6729.c | 4 +-
drivers/pcmcia/yenta_socket.c | 4 +-
drivers/scsi/qla2xxx/qla_edif.c | 4 +-
drivers/scsi/scsi_lib.c | 1 +
drivers/staging/media/atomisp/i2c/atomisp-lm3554.c | 2 +-
drivers/tty/n_gsm.c | 2 +-
drivers/tty/sysrq.c | 2 +-
drivers/usb/gadget/udc/m66592-udc.c | 2 +-
drivers/usb/serial/garmin_gps.c | 2 +-
drivers/usb/serial/mos7840.c | 2 +-
fs/ext4/super.c | 2 +-
fs/jbd2/journal.c | 2 +
fs/nilfs2/segment.c | 2 +-
include/linux/timer.h | 100 +++++++++++++++++--
include/linux/workqueue.h | 4 +-
kernel/cgroup/cgroup.c | 2 +-
kernel/sched/psi.c | 1 +
kernel/time/timer.c | 106 ++++++++++++++-------
kernel/workqueue.c | 4 +-
net/802/garp.c | 2 +-
net/802/mrp.c | 2 +-
net/bridge/br_multicast.c | 6 +-
net/bridge/br_multicast_eht.c | 4 +-
net/core/gen_estimator.c | 2 +-
net/core/neighbour.c | 2 +
net/ipv4/inet_connection_sock.c | 2 +-
net/ipv4/inet_timewait_sock.c | 3 +-
net/ipv4/ipmr.c | 2 +-
net/ipv6/ip6mr.c | 2 +-
net/mac80211/mesh_pathtbl.c | 2 +-
net/netfilter/ipset/ip_set_list_set.c | 2 +-
net/netfilter/ipvs/ip_vs_lblc.c | 2 +-
net/netfilter/ipvs/ip_vs_lblcr.c | 2 +-
net/netfilter/xt_LED.c | 2 +-
net/rxrpc/conn_object.c | 2 +-
net/sched/cls_flow.c | 2 +-
net/sunrpc/svc.c | 2 +-
net/sunrpc/xprt.c | 2 +-
net/tipc/discover.c | 2 +-
net/tipc/monitor.c | 2 +-
sound/i2c/other/ak4117.c | 2 +-
sound/synth/emux/emux.c | 2 +-
100 files changed, 310 insertions(+), 175 deletions(-)
4
10
I see that the USB Gadget has an explicit feedback node. It seems to
deliver a constant (00 00 30 00) for a sample rate of 48kHz. I see that
the value is initialized to a combination of the sample rate and the
"pitch", which appears to be a control of the driver. Is the pitch plumbed
up to the user-level through alsa somehow (if so how)? If not, is there
some ALSA layer that servos the pitch to keep the host clock and the
embedded clock synchronized?
1
1
alsa-project/alsa-lib issue #279 was opened from Xenorio:
Hi there!
Recently, I received a JBL Quantum 810 headset as a replacement for my Quantum 800 (which worked totally fine until a hardware issue). When I connected my new headset via the provided 2.4Ghz dongle, all I got was microphone input, but no sound output. Taking a look at pavucontrol (I use PipeWire on Fedora), it only has 2 configuration options (other than "off"), which are "Pro Audio" and "Mono Input". With the old one I had a lot more, including "Analog Stereo Duplex", which is what I always used. With "Pro Audio" selected, it registers one input device and 2 output devices (from what I could gather, there are 2 because of the hardware slider used for mixing game and voice chat audio). No matter which of the output devices I use, no sound is coming out, and they don't even have a volume slider.
After some research, my suspicion is that all that needs to be done is assigning an already existing quirk for JBL headsets like what has been done [here](https://lore.kernel.org/alsa-devel/s5h4kb4m3ht.wl-tiwai@suse.de/T/). Although I'm in no way an expert in kernel or driver related matters, so take this with a grain of salt. I have tried tinkering with aliases in ``/etc/modprobe.d/alsa-base.conf`` but I seem to be too inexperienced to get it to do anything at all.
I am able to connect the headset via bluetooth, which works fine, but this results in noticeable quality loss and missing features (for example, the hardware volume slider can't be used on bluetooth connections). For now, I'm connecting it via bluetooth **and** the dongle, setting the bluetooth connection to output only via blueman, then assigning input streams to the mic from the dongle connection and output streams to the bluetooth connection (this way, I'm at least getting full audio quality on the mic). This is definitely not a viable long-term solution though.
And now, all the data:
**Relevant output from lsusb**
```
Bus 001 Device 007: ID 0ecb:2069 Harman International Inc JBL Quantum810 Wireless
```
**uname -r**
```
6.0.5-200.fc36.x86_64
```
**alsa-info.sh** (headset only connected via dongle here)
http://alsa-project.org/db/?f=db549be4f37c3c8617f567b1aaf26fd77c25e030
P.S.: I have done a full system update, tons of reboots, and the firmware on the headset is on the most recent version (installed Windows on a separate machine to get into the Quantum Engine software). In my desperation, I have even installed "alsa-*" via dnf.
Issue URL : https://github.com/alsa-project/alsa-lib/issues/279
Repository URL: https://github.com/alsa-project/alsa-lib
1
0
From: syed saba kareem <syed.sabakareem(a)amd.com>
Pink Sardine is based on ACP6.3 architecture.
This patch fixes the typo mistake acp6.2 -> acp6.3
Signed-off-by: syed saba kareem <syed.sabakareem(a)amd.com>
---
...offset_byte.h => acp63_chip_offset_byte.h} | 2 +-
sound/soc/amd/Kconfig | 4 +-
sound/soc/amd/ps/{acp62.h => acp63.h} | 10 +-
sound/soc/amd/ps/pci-ps.c | 132 ++++++------
sound/soc/amd/ps/ps-mach.c | 30 +--
sound/soc/amd/ps/ps-pdm-dma.c | 188 +++++++++---------
6 files changed, 183 insertions(+), 183 deletions(-)
rename include/sound/{acp62_chip_offset_byte.h => acp63_chip_offset_byte.h} (99%)
rename sound/soc/amd/ps/{acp62.h => acp63.h} (90%)
diff --git a/include/sound/acp62_chip_offset_byte.h b/include/sound/acp63_chip_offset_byte.h
similarity index 99%
rename from include/sound/acp62_chip_offset_byte.h
rename to include/sound/acp63_chip_offset_byte.h
index ca38f8a0966e..c9260e1640ae 100644
--- a/include/sound/acp62_chip_offset_byte.h
+++ b/include/sound/acp63_chip_offset_byte.h
@@ -1,6 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0+ */
/*
- * AMD ACP 6.2 Register Documentation
+ * AMD ACP 6.3 Register Documentation
*
* Copyright 2022 Advanced Micro Devices, Inc.
*/
diff --git a/sound/soc/amd/Kconfig b/sound/soc/amd/Kconfig
index 150786279257..c88ebd84bdd5 100644
--- a/sound/soc/amd/Kconfig
+++ b/sound/soc/amd/Kconfig
@@ -129,10 +129,10 @@ config SND_SOC_AMD_RPL_ACP6x
If unsure select "N".
config SND_SOC_AMD_PS
- tristate "AMD Audio Coprocessor-v6.2 Pink Sardine support"
+ tristate "AMD Audio Coprocessor-v6.3 Pink Sardine support"
depends on X86 && PCI && ACPI
help
- This option enables Audio Coprocessor i.e ACP v6.2 support on
+ This option enables Audio Coprocessor i.e ACP v6.3 support on
AMD Pink sardine platform. By enabling this flag build will be
triggered for ACP PCI driver, ACP PDM DMA driver.
Say m if you have such a device.
diff --git a/sound/soc/amd/ps/acp62.h b/sound/soc/amd/ps/acp63.h
similarity index 90%
rename from sound/soc/amd/ps/acp62.h
rename to sound/soc/amd/ps/acp63.h
index 8b30aefa4cd0..85f869c2229f 100644
--- a/sound/soc/amd/ps/acp62.h
+++ b/sound/soc/amd/ps/acp63.h
@@ -5,7 +5,7 @@
* Copyright (C) 2022 Advanced Micro Devices, Inc. All rights reserved.
*/
-#include <sound/acp62_chip_offset_byte.h>
+#include <sound/acp63_chip_offset_byte.h>
#define ACP_DEVICE_ID 0x15E2
#define ACP6x_REG_START 0x1240000
@@ -78,21 +78,21 @@ struct pdm_stream_instance {
u16 channels;
dma_addr_t dma_addr;
u64 bytescount;
- void __iomem *acp62_base;
+ void __iomem *acp63_base;
};
struct pdm_dev_data {
u32 pdm_irq;
- void __iomem *acp62_base;
+ void __iomem *acp63_base;
struct snd_pcm_substream *capture_stream;
};
-static inline u32 acp62_readl(void __iomem *base_addr)
+static inline u32 acp63_readl(void __iomem *base_addr)
{
return readl(base_addr);
}
-static inline void acp62_writel(u32 val, void __iomem *base_addr)
+static inline void acp63_writel(u32 val, void __iomem *base_addr)
{
writel(val, base_addr);
}
diff --git a/sound/soc/amd/ps/pci-ps.c b/sound/soc/amd/ps/pci-ps.c
index dff2e2376bbf..08c4b9bef055 100644
--- a/sound/soc/amd/ps/pci-ps.c
+++ b/sound/soc/amd/ps/pci-ps.c
@@ -15,30 +15,30 @@
#include <sound/pcm_params.h>
#include <linux/pm_runtime.h>
-#include "acp62.h"
+#include "acp63.h"
-struct acp62_dev_data {
- void __iomem *acp62_base;
+struct acp63_dev_data {
+ void __iomem *acp63_base;
struct resource *res;
- bool acp62_audio_mode;
+ bool acp63_audio_mode;
struct platform_device *pdev[ACP6x_DEVS];
};
-static int acp62_power_on(void __iomem *acp_base)
+static int acp63_power_on(void __iomem *acp_base)
{
u32 val;
int timeout;
- val = acp62_readl(acp_base + ACP_PGFSM_STATUS);
+ val = acp63_readl(acp_base + ACP_PGFSM_STATUS);
if (!val)
return val;
if ((val & ACP_PGFSM_STATUS_MASK) != ACP_POWER_ON_IN_PROGRESS)
- acp62_writel(ACP_PGFSM_CNTL_POWER_ON_MASK, acp_base + ACP_PGFSM_CONTROL);
+ acp63_writel(ACP_PGFSM_CNTL_POWER_ON_MASK, acp_base + ACP_PGFSM_CONTROL);
timeout = 0;
while (++timeout < 500) {
- val = acp62_readl(acp_base + ACP_PGFSM_STATUS);
+ val = acp63_readl(acp_base + ACP_PGFSM_STATUS);
if (!val)
return 0;
udelay(1);
@@ -46,23 +46,23 @@ static int acp62_power_on(void __iomem *acp_base)
return -ETIMEDOUT;
}
-static int acp62_reset(void __iomem *acp_base)
+static int acp63_reset(void __iomem *acp_base)
{
u32 val;
int timeout;
- acp62_writel(1, acp_base + ACP_SOFT_RESET);
+ acp63_writel(1, acp_base + ACP_SOFT_RESET);
timeout = 0;
while (++timeout < 500) {
- val = acp62_readl(acp_base + ACP_SOFT_RESET);
+ val = acp63_readl(acp_base + ACP_SOFT_RESET);
if (val & ACP_SOFT_RESET_SOFTRESET_AUDDONE_MASK)
break;
cpu_relax();
}
- acp62_writel(0, acp_base + ACP_SOFT_RESET);
+ acp63_writel(0, acp_base + ACP_SOFT_RESET);
timeout = 0;
while (++timeout < 500) {
- val = acp62_readl(acp_base + ACP_SOFT_RESET);
+ val = acp63_readl(acp_base + ACP_SOFT_RESET);
if (!val)
return 0;
cpu_relax();
@@ -70,57 +70,57 @@ static int acp62_reset(void __iomem *acp_base)
return -ETIMEDOUT;
}
-static void acp62_enable_interrupts(void __iomem *acp_base)
+static void acp63_enable_interrupts(void __iomem *acp_base)
{
- acp62_writel(1, acp_base + ACP_EXTERNAL_INTR_ENB);
+ acp63_writel(1, acp_base + ACP_EXTERNAL_INTR_ENB);
}
-static void acp62_disable_interrupts(void __iomem *acp_base)
+static void acp63_disable_interrupts(void __iomem *acp_base)
{
- acp62_writel(ACP_EXT_INTR_STAT_CLEAR_MASK, acp_base +
+ acp63_writel(ACP_EXT_INTR_STAT_CLEAR_MASK, acp_base +
ACP_EXTERNAL_INTR_STAT);
- acp62_writel(0, acp_base + ACP_EXTERNAL_INTR_CNTL);
- acp62_writel(0, acp_base + ACP_EXTERNAL_INTR_ENB);
+ acp63_writel(0, acp_base + ACP_EXTERNAL_INTR_CNTL);
+ acp63_writel(0, acp_base + ACP_EXTERNAL_INTR_ENB);
}
-static int acp62_init(void __iomem *acp_base, struct device *dev)
+static int acp63_init(void __iomem *acp_base, struct device *dev)
{
int ret;
- ret = acp62_power_on(acp_base);
+ ret = acp63_power_on(acp_base);
if (ret) {
dev_err(dev, "ACP power on failed\n");
return ret;
}
- acp62_writel(0x01, acp_base + ACP_CONTROL);
- ret = acp62_reset(acp_base);
+ acp63_writel(0x01, acp_base + ACP_CONTROL);
+ ret = acp63_reset(acp_base);
if (ret) {
dev_err(dev, "ACP reset failed\n");
return ret;
}
- acp62_writel(0x03, acp_base + ACP_CLKMUX_SEL);
- acp62_enable_interrupts(acp_base);
+ acp63_writel(0x03, acp_base + ACP_CLKMUX_SEL);
+ acp63_enable_interrupts(acp_base);
return 0;
}
-static int acp62_deinit(void __iomem *acp_base, struct device *dev)
+static int acp63_deinit(void __iomem *acp_base, struct device *dev)
{
int ret;
- acp62_disable_interrupts(acp_base);
- ret = acp62_reset(acp_base);
+ acp63_disable_interrupts(acp_base);
+ ret = acp63_reset(acp_base);
if (ret) {
dev_err(dev, "ACP reset failed\n");
return ret;
}
- acp62_writel(0, acp_base + ACP_CLKMUX_SEL);
- acp62_writel(0, acp_base + ACP_CONTROL);
+ acp63_writel(0, acp_base + ACP_CLKMUX_SEL);
+ acp63_writel(0, acp_base + ACP_CONTROL);
return 0;
}
-static irqreturn_t acp62_irq_handler(int irq, void *dev_id)
+static irqreturn_t acp63_irq_handler(int irq, void *dev_id)
{
- struct acp62_dev_data *adata;
+ struct acp63_dev_data *adata;
struct pdm_dev_data *ps_pdm_data;
u32 val;
@@ -128,10 +128,10 @@ static irqreturn_t acp62_irq_handler(int irq, void *dev_id)
if (!adata)
return IRQ_NONE;
- val = acp62_readl(adata->acp62_base + ACP_EXTERNAL_INTR_STAT);
+ val = acp63_readl(adata->acp63_base + ACP_EXTERNAL_INTR_STAT);
if (val & BIT(PDM_DMA_STAT)) {
ps_pdm_data = dev_get_drvdata(&adata->pdev[0]->dev);
- acp62_writel(BIT(PDM_DMA_STAT), adata->acp62_base + ACP_EXTERNAL_INTR_STAT);
+ acp63_writel(BIT(PDM_DMA_STAT), adata->acp63_base + ACP_EXTERNAL_INTR_STAT);
if (ps_pdm_data->capture_stream)
snd_pcm_period_elapsed(ps_pdm_data->capture_stream);
return IRQ_HANDLED;
@@ -139,10 +139,10 @@ static irqreturn_t acp62_irq_handler(int irq, void *dev_id)
return IRQ_NONE;
}
-static int snd_acp62_probe(struct pci_dev *pci,
+static int snd_acp63_probe(struct pci_dev *pci,
const struct pci_device_id *pci_id)
{
- struct acp62_dev_data *adata;
+ struct acp63_dev_data *adata;
struct platform_device_info pdevinfo[ACP6x_DEVS];
int index, ret;
int val = 0x00;
@@ -157,7 +157,7 @@ static int snd_acp62_probe(struct pci_dev *pci,
case 0x63:
break;
default:
- dev_dbg(&pci->dev, "acp62 pci device not found\n");
+ dev_dbg(&pci->dev, "acp63 pci device not found\n");
return -ENODEV;
}
if (pci_enable_device(pci)) {
@@ -170,7 +170,7 @@ static int snd_acp62_probe(struct pci_dev *pci,
dev_err(&pci->dev, "pci_request_regions failed\n");
goto disable_pci;
}
- adata = devm_kzalloc(&pci->dev, sizeof(struct acp62_dev_data),
+ adata = devm_kzalloc(&pci->dev, sizeof(struct acp63_dev_data),
GFP_KERNEL);
if (!adata) {
ret = -ENOMEM;
@@ -178,18 +178,18 @@ static int snd_acp62_probe(struct pci_dev *pci,
}
addr = pci_resource_start(pci, 0);
- adata->acp62_base = devm_ioremap(&pci->dev, addr,
+ adata->acp63_base = devm_ioremap(&pci->dev, addr,
pci_resource_len(pci, 0));
- if (!adata->acp62_base) {
+ if (!adata->acp63_base) {
ret = -ENOMEM;
goto release_regions;
}
pci_set_master(pci);
pci_set_drvdata(pci, adata);
- ret = acp62_init(adata->acp62_base, &pci->dev);
+ ret = acp63_init(adata->acp63_base, &pci->dev);
if (ret)
goto release_regions;
- val = acp62_readl(adata->acp62_base + ACP_PIN_CONFIG);
+ val = acp63_readl(adata->acp63_base + ACP_PIN_CONFIG);
switch (val) {
case ACP_CONFIG_0:
case ACP_CONFIG_1:
@@ -220,7 +220,7 @@ static int snd_acp62_probe(struct pci_dev *pci,
adata->res->flags = IORESOURCE_MEM;
adata->res->start = addr;
adata->res->end = addr + (ACP6x_REG_END - ACP6x_REG_START);
- adata->acp62_audio_mode = ACP6x_PDM_MODE;
+ adata->acp63_audio_mode = ACP6x_PDM_MODE;
memset(&pdevinfo, 0, sizeof(pdevinfo));
pdevinfo[0].name = "acp_ps_pdm_dma";
@@ -248,7 +248,7 @@ static int snd_acp62_probe(struct pci_dev *pci,
ret = PTR_ERR(adata->pdev[index]);
goto unregister_devs;
}
- ret = devm_request_irq(&pci->dev, pci->irq, acp62_irq_handler,
+ ret = devm_request_irq(&pci->dev, pci->irq, acp63_irq_handler,
irqflags, "ACP_PCI_IRQ", adata);
if (ret) {
dev_err(&pci->dev, "ACP PCI IRQ request failed\n");
@@ -267,7 +267,7 @@ static int snd_acp62_probe(struct pci_dev *pci,
for (--index; index >= 0; index--)
platform_device_unregister(adata->pdev[index]);
de_init:
- if (acp62_deinit(adata->acp62_base, &pci->dev))
+ if (acp63_deinit(adata->acp63_base, &pci->dev))
dev_err(&pci->dev, "ACP de-init failed\n");
release_regions:
pci_release_regions(pci);
@@ -277,46 +277,46 @@ static int snd_acp62_probe(struct pci_dev *pci,
return ret;
}
-static int __maybe_unused snd_acp62_suspend(struct device *dev)
+static int __maybe_unused snd_acp63_suspend(struct device *dev)
{
- struct acp62_dev_data *adata;
+ struct acp63_dev_data *adata;
int ret;
adata = dev_get_drvdata(dev);
- ret = acp62_deinit(adata->acp62_base, dev);
+ ret = acp63_deinit(adata->acp63_base, dev);
if (ret)
dev_err(dev, "ACP de-init failed\n");
return ret;
}
-static int __maybe_unused snd_acp62_resume(struct device *dev)
+static int __maybe_unused snd_acp63_resume(struct device *dev)
{
- struct acp62_dev_data *adata;
+ struct acp63_dev_data *adata;
int ret;
adata = dev_get_drvdata(dev);
- ret = acp62_init(adata->acp62_base, dev);
+ ret = acp63_init(adata->acp63_base, dev);
if (ret)
dev_err(dev, "ACP init failed\n");
return ret;
}
-static const struct dev_pm_ops acp62_pm_ops = {
- SET_RUNTIME_PM_OPS(snd_acp62_suspend, snd_acp62_resume, NULL)
- SET_SYSTEM_SLEEP_PM_OPS(snd_acp62_suspend, snd_acp62_resume)
+static const struct dev_pm_ops acp63_pm_ops = {
+ SET_RUNTIME_PM_OPS(snd_acp63_suspend, snd_acp63_resume, NULL)
+ SET_SYSTEM_SLEEP_PM_OPS(snd_acp63_suspend, snd_acp63_resume)
};
-static void snd_acp62_remove(struct pci_dev *pci)
+static void snd_acp63_remove(struct pci_dev *pci)
{
- struct acp62_dev_data *adata;
+ struct acp63_dev_data *adata;
int ret, index;
adata = pci_get_drvdata(pci);
- if (adata->acp62_audio_mode == ACP6x_PDM_MODE) {
+ if (adata->acp63_audio_mode == ACP6x_PDM_MODE) {
for (index = 0; index < ACP6x_DEVS; index++)
platform_device_unregister(adata->pdev[index]);
}
- ret = acp62_deinit(adata->acp62_base, &pci->dev);
+ ret = acp63_deinit(adata->acp63_base, &pci->dev);
if (ret)
dev_err(&pci->dev, "ACP de-init failed\n");
pm_runtime_forbid(&pci->dev);
@@ -325,25 +325,25 @@ static void snd_acp62_remove(struct pci_dev *pci)
pci_disable_device(pci);
}
-static const struct pci_device_id snd_acp62_ids[] = {
+static const struct pci_device_id snd_acp63_ids[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, ACP_DEVICE_ID),
.class = PCI_CLASS_MULTIMEDIA_OTHER << 8,
.class_mask = 0xffffff },
{ 0, },
};
-MODULE_DEVICE_TABLE(pci, snd_acp62_ids);
+MODULE_DEVICE_TABLE(pci, snd_acp63_ids);
-static struct pci_driver ps_acp62_driver = {
+static struct pci_driver ps_acp63_driver = {
.name = KBUILD_MODNAME,
- .id_table = snd_acp62_ids,
- .probe = snd_acp62_probe,
- .remove = snd_acp62_remove,
+ .id_table = snd_acp63_ids,
+ .probe = snd_acp63_probe,
+ .remove = snd_acp63_remove,
.driver = {
- .pm = &acp62_pm_ops,
+ .pm = &acp63_pm_ops,
}
};
-module_pci_driver(ps_acp62_driver);
+module_pci_driver(ps_acp63_driver);
MODULE_AUTHOR("Vijendar.Mukunda(a)amd.com");
MODULE_AUTHOR("Syed.SabaKareem(a)amd.com");
diff --git a/sound/soc/amd/ps/ps-mach.c b/sound/soc/amd/ps/ps-mach.c
index b3e97093481d..3ffbe4fdafdf 100644
--- a/sound/soc/amd/ps/ps-mach.c
+++ b/sound/soc/amd/ps/ps-mach.c
@@ -13,11 +13,11 @@
#include <linux/io.h>
#include <linux/dmi.h>
-#include "acp62.h"
+#include "acp63.h"
#define DRV_NAME "acp_ps_mach"
-SND_SOC_DAILINK_DEF(acp62_pdm,
+SND_SOC_DAILINK_DEF(acp63_pdm,
DAILINK_COMP_ARRAY(COMP_CPU("acp_ps_pdm_dma.0")));
SND_SOC_DAILINK_DEF(dmic_codec,
@@ -27,31 +27,31 @@ SND_SOC_DAILINK_DEF(dmic_codec,
SND_SOC_DAILINK_DEF(pdm_platform,
DAILINK_COMP_ARRAY(COMP_PLATFORM("acp_ps_pdm_dma.0")));
-static struct snd_soc_dai_link acp62_dai_pdm[] = {
+static struct snd_soc_dai_link acp63_dai_pdm[] = {
{
- .name = "acp62-dmic-capture",
+ .name = "acp63-dmic-capture",
.stream_name = "DMIC capture",
.capture_only = 1,
- SND_SOC_DAILINK_REG(acp62_pdm, dmic_codec, pdm_platform),
+ SND_SOC_DAILINK_REG(acp63_pdm, dmic_codec, pdm_platform),
},
};
-static struct snd_soc_card acp62_card = {
- .name = "acp62",
+static struct snd_soc_card acp63_card = {
+ .name = "acp63",
.owner = THIS_MODULE,
- .dai_link = acp62_dai_pdm,
+ .dai_link = acp63_dai_pdm,
.num_links = 1,
};
-static int acp62_probe(struct platform_device *pdev)
+static int acp63_probe(struct platform_device *pdev)
{
- struct acp62_pdm *machine = NULL;
+ struct acp63_pdm *machine = NULL;
struct snd_soc_card *card;
int ret;
- platform_set_drvdata(pdev, &acp62_card);
+ platform_set_drvdata(pdev, &acp63_card);
card = platform_get_drvdata(pdev);
- acp62_card.dev = &pdev->dev;
+ acp63_card.dev = &pdev->dev;
snd_soc_card_set_drvdata(card, machine);
ret = devm_snd_soc_register_card(&pdev->dev, card);
@@ -64,15 +64,15 @@ static int acp62_probe(struct platform_device *pdev)
return 0;
}
-static struct platform_driver acp62_mach_driver = {
+static struct platform_driver acp63_mach_driver = {
.driver = {
.name = "acp_ps_mach",
.pm = &snd_soc_pm_ops,
},
- .probe = acp62_probe,
+ .probe = acp63_probe,
};
-module_platform_driver(acp62_mach_driver);
+module_platform_driver(acp63_mach_driver);
MODULE_AUTHOR("Syed.SabaKareem(a)amd.com");
MODULE_LICENSE("GPL v2");
diff --git a/sound/soc/amd/ps/ps-pdm-dma.c b/sound/soc/amd/ps/ps-pdm-dma.c
index b207b726cd82..eea71a9d2ef1 100644
--- a/sound/soc/amd/ps/ps-pdm-dma.c
+++ b/sound/soc/amd/ps/ps-pdm-dma.c
@@ -14,11 +14,11 @@
#include <sound/soc-dai.h>
#include <linux/pm_runtime.h>
-#include "acp62.h"
+#include "acp63.h"
#define DRV_NAME "acp_ps_pdm_dma"
-static const struct snd_pcm_hardware acp62_pdm_hardware_capture = {
+static const struct snd_pcm_hardware acp63_pdm_hardware_capture = {
.info = SNDRV_PCM_INFO_INTERLEAVED |
SNDRV_PCM_INFO_BLOCK_TRANSFER |
SNDRV_PCM_INFO_MMAP |
@@ -37,61 +37,61 @@ static const struct snd_pcm_hardware acp62_pdm_hardware_capture = {
.periods_max = CAPTURE_MAX_NUM_PERIODS,
};
-static void acp62_init_pdm_ring_buffer(u32 physical_addr, u32 buffer_size,
+static void acp63_init_pdm_ring_buffer(u32 physical_addr, u32 buffer_size,
u32 watermark_size, void __iomem *acp_base)
{
- acp62_writel(physical_addr, acp_base + ACP_WOV_RX_RINGBUFADDR);
- acp62_writel(buffer_size, acp_base + ACP_WOV_RX_RINGBUFSIZE);
- acp62_writel(watermark_size, acp_base + ACP_WOV_RX_INTR_WATERMARK_SIZE);
- acp62_writel(0x01, acp_base + ACPAXI2AXI_ATU_CTRL);
+ acp63_writel(physical_addr, acp_base + ACP_WOV_RX_RINGBUFADDR);
+ acp63_writel(buffer_size, acp_base + ACP_WOV_RX_RINGBUFSIZE);
+ acp63_writel(watermark_size, acp_base + ACP_WOV_RX_INTR_WATERMARK_SIZE);
+ acp63_writel(0x01, acp_base + ACPAXI2AXI_ATU_CTRL);
}
-static void acp62_enable_pdm_clock(void __iomem *acp_base)
+static void acp63_enable_pdm_clock(void __iomem *acp_base)
{
u32 pdm_clk_enable, pdm_ctrl;
pdm_clk_enable = ACP_PDM_CLK_FREQ_MASK;
pdm_ctrl = 0x00;
- acp62_writel(pdm_clk_enable, acp_base + ACP_WOV_CLK_CTRL);
- pdm_ctrl = acp62_readl(acp_base + ACP_WOV_MISC_CTRL);
+ acp63_writel(pdm_clk_enable, acp_base + ACP_WOV_CLK_CTRL);
+ pdm_ctrl = acp63_readl(acp_base + ACP_WOV_MISC_CTRL);
pdm_ctrl |= ACP_WOV_MISC_CTRL_MASK;
- acp62_writel(pdm_ctrl, acp_base + ACP_WOV_MISC_CTRL);
+ acp63_writel(pdm_ctrl, acp_base + ACP_WOV_MISC_CTRL);
}
-static void acp62_enable_pdm_interrupts(void __iomem *acp_base)
+static void acp63_enable_pdm_interrupts(void __iomem *acp_base)
{
u32 ext_int_ctrl;
- ext_int_ctrl = acp62_readl(acp_base + ACP_EXTERNAL_INTR_CNTL);
+ ext_int_ctrl = acp63_readl(acp_base + ACP_EXTERNAL_INTR_CNTL);
ext_int_ctrl |= PDM_DMA_INTR_MASK;
- acp62_writel(ext_int_ctrl, acp_base + ACP_EXTERNAL_INTR_CNTL);
+ acp63_writel(ext_int_ctrl, acp_base + ACP_EXTERNAL_INTR_CNTL);
}
-static void acp62_disable_pdm_interrupts(void __iomem *acp_base)
+static void acp63_disable_pdm_interrupts(void __iomem *acp_base)
{
u32 ext_int_ctrl;
- ext_int_ctrl = acp62_readl(acp_base + ACP_EXTERNAL_INTR_CNTL);
+ ext_int_ctrl = acp63_readl(acp_base + ACP_EXTERNAL_INTR_CNTL);
ext_int_ctrl &= ~PDM_DMA_INTR_MASK;
- acp62_writel(ext_int_ctrl, acp_base + ACP_EXTERNAL_INTR_CNTL);
+ acp63_writel(ext_int_ctrl, acp_base + ACP_EXTERNAL_INTR_CNTL);
}
-static bool acp62_check_pdm_dma_status(void __iomem *acp_base)
+static bool acp63_check_pdm_dma_status(void __iomem *acp_base)
{
bool pdm_dma_status;
u32 pdm_enable, pdm_dma_enable;
pdm_dma_status = false;
- pdm_enable = acp62_readl(acp_base + ACP_WOV_PDM_ENABLE);
- pdm_dma_enable = acp62_readl(acp_base + ACP_WOV_PDM_DMA_ENABLE);
+ pdm_enable = acp63_readl(acp_base + ACP_WOV_PDM_ENABLE);
+ pdm_dma_enable = acp63_readl(acp_base + ACP_WOV_PDM_DMA_ENABLE);
if ((pdm_enable & ACP_PDM_ENABLE) && (pdm_dma_enable & ACP_PDM_DMA_EN_STATUS))
pdm_dma_status = true;
return pdm_dma_status;
}
-static int acp62_start_pdm_dma(void __iomem *acp_base)
+static int acp63_start_pdm_dma(void __iomem *acp_base)
{
u32 pdm_enable;
u32 pdm_dma_enable;
@@ -100,12 +100,12 @@ static int acp62_start_pdm_dma(void __iomem *acp_base)
pdm_enable = 0x01;
pdm_dma_enable = 0x01;
- acp62_enable_pdm_clock(acp_base);
- acp62_writel(pdm_enable, acp_base + ACP_WOV_PDM_ENABLE);
- acp62_writel(pdm_dma_enable, acp_base + ACP_WOV_PDM_DMA_ENABLE);
+ acp63_enable_pdm_clock(acp_base);
+ acp63_writel(pdm_enable, acp_base + ACP_WOV_PDM_ENABLE);
+ acp63_writel(pdm_dma_enable, acp_base + ACP_WOV_PDM_DMA_ENABLE);
timeout = 0;
while (++timeout < ACP_COUNTER) {
- pdm_dma_enable = acp62_readl(acp_base + ACP_WOV_PDM_DMA_ENABLE);
+ pdm_dma_enable = acp63_readl(acp_base + ACP_WOV_PDM_DMA_ENABLE);
if ((pdm_dma_enable & 0x02) == ACP_PDM_DMA_EN_STATUS)
return 0;
udelay(DELAY_US);
@@ -113,7 +113,7 @@ static int acp62_start_pdm_dma(void __iomem *acp_base)
return -ETIMEDOUT;
}
-static int acp62_stop_pdm_dma(void __iomem *acp_base)
+static int acp63_stop_pdm_dma(void __iomem *acp_base)
{
u32 pdm_enable, pdm_dma_enable;
int timeout;
@@ -121,14 +121,14 @@ static int acp62_stop_pdm_dma(void __iomem *acp_base)
pdm_enable = 0x00;
pdm_dma_enable = 0x00;
- pdm_enable = acp62_readl(acp_base + ACP_WOV_PDM_ENABLE);
- pdm_dma_enable = acp62_readl(acp_base + ACP_WOV_PDM_DMA_ENABLE);
+ pdm_enable = acp63_readl(acp_base + ACP_WOV_PDM_ENABLE);
+ pdm_dma_enable = acp63_readl(acp_base + ACP_WOV_PDM_DMA_ENABLE);
if (pdm_dma_enable & 0x01) {
pdm_dma_enable = 0x02;
- acp62_writel(pdm_dma_enable, acp_base + ACP_WOV_PDM_DMA_ENABLE);
+ acp63_writel(pdm_dma_enable, acp_base + ACP_WOV_PDM_DMA_ENABLE);
timeout = 0;
while (++timeout < ACP_COUNTER) {
- pdm_dma_enable = acp62_readl(acp_base + ACP_WOV_PDM_DMA_ENABLE);
+ pdm_dma_enable = acp63_readl(acp_base + ACP_WOV_PDM_DMA_ENABLE);
if ((pdm_dma_enable & 0x02) == 0x00)
break;
udelay(DELAY_US);
@@ -138,13 +138,13 @@ static int acp62_stop_pdm_dma(void __iomem *acp_base)
}
if (pdm_enable == ACP_PDM_ENABLE) {
pdm_enable = ACP_PDM_DISABLE;
- acp62_writel(pdm_enable, acp_base + ACP_WOV_PDM_ENABLE);
+ acp63_writel(pdm_enable, acp_base + ACP_WOV_PDM_ENABLE);
}
- acp62_writel(0x01, acp_base + ACP_WOV_PDM_FIFO_FLUSH);
+ acp63_writel(0x01, acp_base + ACP_WOV_PDM_FIFO_FLUSH);
return 0;
}
-static void acp62_config_dma(struct pdm_stream_instance *rtd, int direction)
+static void acp63_config_dma(struct pdm_stream_instance *rtd, int direction)
{
u16 page_idx;
u32 low, high, val;
@@ -154,24 +154,24 @@ static void acp62_config_dma(struct pdm_stream_instance *rtd, int direction)
val = PDM_PTE_OFFSET;
/* Group Enable */
- acp62_writel(ACP_SRAM_PTE_OFFSET | BIT(31), rtd->acp62_base +
+ acp63_writel(ACP_SRAM_PTE_OFFSET | BIT(31), rtd->acp63_base +
ACPAXI2AXI_ATU_BASE_ADDR_GRP_1);
- acp62_writel(PAGE_SIZE_4K_ENABLE, rtd->acp62_base +
+ acp63_writel(PAGE_SIZE_4K_ENABLE, rtd->acp63_base +
ACPAXI2AXI_ATU_PAGE_SIZE_GRP_1);
for (page_idx = 0; page_idx < rtd->num_pages; page_idx++) {
/* Load the low address of page int ACP SRAM through SRBM */
low = lower_32_bits(addr);
high = upper_32_bits(addr);
- acp62_writel(low, rtd->acp62_base + ACP_SCRATCH_REG_0 + val);
+ acp63_writel(low, rtd->acp63_base + ACP_SCRATCH_REG_0 + val);
high |= BIT(31);
- acp62_writel(high, rtd->acp62_base + ACP_SCRATCH_REG_0 + val + 4);
+ acp63_writel(high, rtd->acp63_base + ACP_SCRATCH_REG_0 + val + 4);
val += 8;
addr += PAGE_SIZE;
}
}
-static int acp62_pdm_dma_open(struct snd_soc_component *component,
+static int acp63_pdm_dma_open(struct snd_soc_component *component,
struct snd_pcm_substream *substream)
{
struct snd_pcm_runtime *runtime;
@@ -186,7 +186,7 @@ static int acp62_pdm_dma_open(struct snd_soc_component *component,
return -EINVAL;
if (substream->stream == SNDRV_PCM_STREAM_CAPTURE)
- runtime->hw = acp62_pdm_hardware_capture;
+ runtime->hw = acp63_pdm_hardware_capture;
ret = snd_pcm_hw_constraint_integer(runtime,
SNDRV_PCM_HW_PARAM_PERIODS);
@@ -196,17 +196,17 @@ static int acp62_pdm_dma_open(struct snd_soc_component *component,
return ret;
}
- acp62_enable_pdm_interrupts(adata->acp62_base);
+ acp63_enable_pdm_interrupts(adata->acp63_base);
if (substream->stream == SNDRV_PCM_STREAM_CAPTURE)
adata->capture_stream = substream;
- pdm_data->acp62_base = adata->acp62_base;
+ pdm_data->acp63_base = adata->acp63_base;
runtime->private_data = pdm_data;
return ret;
}
-static int acp62_pdm_dma_hw_params(struct snd_soc_component *component,
+static int acp63_pdm_dma_hw_params(struct snd_soc_component *component,
struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params)
{
@@ -220,26 +220,26 @@ static int acp62_pdm_dma_hw_params(struct snd_soc_component *component,
period_bytes = params_period_bytes(params);
rtd->dma_addr = substream->runtime->dma_addr;
rtd->num_pages = (PAGE_ALIGN(size) >> PAGE_SHIFT);
- acp62_config_dma(rtd, substream->stream);
- acp62_init_pdm_ring_buffer(PDM_MEM_WINDOW_START, size,
- period_bytes, rtd->acp62_base);
+ acp63_config_dma(rtd, substream->stream);
+ acp63_init_pdm_ring_buffer(PDM_MEM_WINDOW_START, size,
+ period_bytes, rtd->acp63_base);
return 0;
}
-static u64 acp62_pdm_get_byte_count(struct pdm_stream_instance *rtd,
+static u64 acp63_pdm_get_byte_count(struct pdm_stream_instance *rtd,
int direction)
{
u32 high, low;
u64 byte_count;
- high = acp62_readl(rtd->acp62_base + ACP_WOV_RX_LINEARPOSITIONCNTR_HIGH);
+ high = acp63_readl(rtd->acp63_base + ACP_WOV_RX_LINEARPOSITIONCNTR_HIGH);
byte_count = high;
- low = acp62_readl(rtd->acp62_base + ACP_WOV_RX_LINEARPOSITIONCNTR_LOW);
+ low = acp63_readl(rtd->acp63_base + ACP_WOV_RX_LINEARPOSITIONCNTR_LOW);
byte_count = (byte_count << 32) | low;
return byte_count;
}
-static snd_pcm_uframes_t acp62_pdm_dma_pointer(struct snd_soc_component *comp,
+static snd_pcm_uframes_t acp63_pdm_dma_pointer(struct snd_soc_component *comp,
struct snd_pcm_substream *stream)
{
struct pdm_stream_instance *rtd;
@@ -249,14 +249,14 @@ static snd_pcm_uframes_t acp62_pdm_dma_pointer(struct snd_soc_component *comp,
rtd = stream->runtime->private_data;
buffersize = frames_to_bytes(stream->runtime,
stream->runtime->buffer_size);
- bytescount = acp62_pdm_get_byte_count(rtd, stream->stream);
+ bytescount = acp63_pdm_get_byte_count(rtd, stream->stream);
if (bytescount > rtd->bytescount)
bytescount -= rtd->bytescount;
pos = do_div(bytescount, buffersize);
return bytes_to_frames(stream->runtime, pos);
}
-static int acp62_pdm_dma_new(struct snd_soc_component *component,
+static int acp63_pdm_dma_new(struct snd_soc_component *component,
struct snd_soc_pcm_runtime *rtd)
{
struct device *parent = component->dev->parent;
@@ -266,19 +266,19 @@ static int acp62_pdm_dma_new(struct snd_soc_component *component,
return 0;
}
-static int acp62_pdm_dma_close(struct snd_soc_component *component,
+static int acp63_pdm_dma_close(struct snd_soc_component *component,
struct snd_pcm_substream *substream)
{
struct pdm_dev_data *adata = dev_get_drvdata(component->dev);
struct snd_pcm_runtime *runtime = substream->runtime;
- acp62_disable_pdm_interrupts(adata->acp62_base);
+ acp63_disable_pdm_interrupts(adata->acp63_base);
adata->capture_stream = NULL;
kfree(runtime->private_data);
return 0;
}
-static int acp62_pdm_dai_trigger(struct snd_pcm_substream *substream,
+static int acp63_pdm_dai_trigger(struct snd_pcm_substream *substream,
int cmd, struct snd_soc_dai *dai)
{
struct pdm_stream_instance *rtd;
@@ -299,20 +299,20 @@ static int acp62_pdm_dai_trigger(struct snd_pcm_substream *substream,
case SNDRV_PCM_TRIGGER_START:
case SNDRV_PCM_TRIGGER_RESUME:
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
- acp62_writel(ch_mask, rtd->acp62_base + ACP_WOV_PDM_NO_OF_CHANNELS);
- acp62_writel(PDM_DECIMATION_FACTOR, rtd->acp62_base +
+ acp63_writel(ch_mask, rtd->acp63_base + ACP_WOV_PDM_NO_OF_CHANNELS);
+ acp63_writel(PDM_DECIMATION_FACTOR, rtd->acp63_base +
ACP_WOV_PDM_DECIMATION_FACTOR);
- rtd->bytescount = acp62_pdm_get_byte_count(rtd, substream->stream);
- pdm_status = acp62_check_pdm_dma_status(rtd->acp62_base);
+ rtd->bytescount = acp63_pdm_get_byte_count(rtd, substream->stream);
+ pdm_status = acp63_check_pdm_dma_status(rtd->acp63_base);
if (!pdm_status)
- ret = acp62_start_pdm_dma(rtd->acp62_base);
+ ret = acp63_start_pdm_dma(rtd->acp63_base);
break;
case SNDRV_PCM_TRIGGER_STOP:
case SNDRV_PCM_TRIGGER_SUSPEND:
case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
- pdm_status = acp62_check_pdm_dma_status(rtd->acp62_base);
+ pdm_status = acp63_check_pdm_dma_status(rtd->acp63_base);
if (pdm_status)
- ret = acp62_stop_pdm_dma(rtd->acp62_base);
+ ret = acp63_stop_pdm_dma(rtd->acp63_base);
break;
default:
ret = -EINVAL;
@@ -321,11 +321,11 @@ static int acp62_pdm_dai_trigger(struct snd_pcm_substream *substream,
return ret;
}
-static const struct snd_soc_dai_ops acp62_pdm_dai_ops = {
- .trigger = acp62_pdm_dai_trigger,
+static const struct snd_soc_dai_ops acp63_pdm_dai_ops = {
+ .trigger = acp63_pdm_dai_trigger,
};
-static struct snd_soc_dai_driver acp62_pdm_dai_driver = {
+static struct snd_soc_dai_driver acp63_pdm_dai_driver = {
.name = "acp_ps_pdm_dma.0",
.capture = {
.rates = SNDRV_PCM_RATE_48000,
@@ -335,19 +335,19 @@ static struct snd_soc_dai_driver acp62_pdm_dai_driver = {
.rate_min = 48000,
.rate_max = 48000,
},
- .ops = &acp62_pdm_dai_ops,
+ .ops = &acp63_pdm_dai_ops,
};
-static const struct snd_soc_component_driver acp62_pdm_component = {
+static const struct snd_soc_component_driver acp63_pdm_component = {
.name = DRV_NAME,
- .open = acp62_pdm_dma_open,
- .close = acp62_pdm_dma_close,
- .hw_params = acp62_pdm_dma_hw_params,
- .pointer = acp62_pdm_dma_pointer,
- .pcm_construct = acp62_pdm_dma_new,
+ .open = acp63_pdm_dma_open,
+ .close = acp63_pdm_dma_close,
+ .hw_params = acp63_pdm_dma_hw_params,
+ .pointer = acp63_pdm_dma_pointer,
+ .pcm_construct = acp63_pdm_dma_new,
};
-static int acp62_pdm_audio_probe(struct platform_device *pdev)
+static int acp63_pdm_audio_probe(struct platform_device *pdev)
{
struct resource *res;
struct pdm_dev_data *adata;
@@ -363,16 +363,16 @@ static int acp62_pdm_audio_probe(struct platform_device *pdev)
if (!adata)
return -ENOMEM;
- adata->acp62_base = devm_ioremap(&pdev->dev, res->start, resource_size(res));
- if (!adata->acp62_base)
+ adata->acp63_base = devm_ioremap(&pdev->dev, res->start, resource_size(res));
+ if (!adata->acp63_base)
return -ENOMEM;
adata->capture_stream = NULL;
dev_set_drvdata(&pdev->dev, adata);
status = devm_snd_soc_register_component(&pdev->dev,
- &acp62_pdm_component,
- &acp62_pdm_dai_driver, 1);
+ &acp63_pdm_component,
+ &acp63_pdm_dai_driver, 1);
if (status) {
dev_err(&pdev->dev, "Fail to register acp pdm dai\n");
@@ -385,13 +385,13 @@ static int acp62_pdm_audio_probe(struct platform_device *pdev)
return 0;
}
-static int acp62_pdm_audio_remove(struct platform_device *pdev)
+static int acp63_pdm_audio_remove(struct platform_device *pdev)
{
pm_runtime_disable(&pdev->dev);
return 0;
}
-static int __maybe_unused acp62_pdm_resume(struct device *dev)
+static int __maybe_unused acp63_pdm_resume(struct device *dev)
{
struct pdm_dev_data *adata;
struct snd_pcm_runtime *runtime;
@@ -404,47 +404,47 @@ static int __maybe_unused acp62_pdm_resume(struct device *dev)
rtd = runtime->private_data;
period_bytes = frames_to_bytes(runtime, runtime->period_size);
buffer_len = frames_to_bytes(runtime, runtime->buffer_size);
- acp62_config_dma(rtd, SNDRV_PCM_STREAM_CAPTURE);
- acp62_init_pdm_ring_buffer(PDM_MEM_WINDOW_START, buffer_len,
- period_bytes, adata->acp62_base);
+ acp63_config_dma(rtd, SNDRV_PCM_STREAM_CAPTURE);
+ acp63_init_pdm_ring_buffer(PDM_MEM_WINDOW_START, buffer_len,
+ period_bytes, adata->acp63_base);
}
- acp62_enable_pdm_interrupts(adata->acp62_base);
+ acp63_enable_pdm_interrupts(adata->acp63_base);
return 0;
}
-static int __maybe_unused acp62_pdm_suspend(struct device *dev)
+static int __maybe_unused acp63_pdm_suspend(struct device *dev)
{
struct pdm_dev_data *adata;
adata = dev_get_drvdata(dev);
- acp62_disable_pdm_interrupts(adata->acp62_base);
+ acp63_disable_pdm_interrupts(adata->acp63_base);
return 0;
}
-static int __maybe_unused acp62_pdm_runtime_resume(struct device *dev)
+static int __maybe_unused acp63_pdm_runtime_resume(struct device *dev)
{
struct pdm_dev_data *adata;
adata = dev_get_drvdata(dev);
- acp62_enable_pdm_interrupts(adata->acp62_base);
+ acp63_enable_pdm_interrupts(adata->acp63_base);
return 0;
}
-static const struct dev_pm_ops acp62_pdm_pm_ops = {
- SET_RUNTIME_PM_OPS(acp62_pdm_suspend, acp62_pdm_runtime_resume, NULL)
- SET_SYSTEM_SLEEP_PM_OPS(acp62_pdm_suspend, acp62_pdm_resume)
+static const struct dev_pm_ops acp63_pdm_pm_ops = {
+ SET_RUNTIME_PM_OPS(acp63_pdm_suspend, acp63_pdm_runtime_resume, NULL)
+ SET_SYSTEM_SLEEP_PM_OPS(acp63_pdm_suspend, acp63_pdm_resume)
};
-static struct platform_driver acp62_pdm_dma_driver = {
- .probe = acp62_pdm_audio_probe,
- .remove = acp62_pdm_audio_remove,
+static struct platform_driver acp63_pdm_dma_driver = {
+ .probe = acp63_pdm_audio_probe,
+ .remove = acp63_pdm_audio_remove,
.driver = {
.name = "acp_ps_pdm_dma",
- .pm = &acp62_pdm_pm_ops,
+ .pm = &acp63_pdm_pm_ops,
},
};
-module_platform_driver(acp62_pdm_dma_driver);
+module_platform_driver(acp63_pdm_dma_driver);
MODULE_AUTHOR("Syed.SabaKareem(a)amd.com");
MODULE_DESCRIPTION("AMD PINK SARDINE PDM Driver");
--
2.25.1
3
2
04 Nov '22
Hi Takashi and list,
I've been debugging a SOF DSP load fail on VT-D/IOMMU systems [1] and
that brought me to these two commits from you:
"ALSA: memalloc: Add fallback SG-buffer allocations for x86"
and
"ALSA: memalloc: Revive x86-specific WC page allocations again"
We have an allocation with:
snd_dma_alloc_pages(SNDRV_DMA_TYPE_DEV_SG, &pci->dev, size, dmab);
.. but in rare low-memory cases, the dma_alloc_noncontiguous()
call will fail in core/memalloc.c and we go to the fallback path.
So we go to snd_dma_sg_fallback_alloc(), but here it seems something is
missing. The pages are not allocated with DMA mapping API anymore, so
IOMMU won't know about the memory and in our case the DSP load will fail
to a IOMMU fault.
Looking at 5.15 code, the fallback looks very different, but
in fallback we still use the DMA mapping API via snd_dma_dev_alloc()
so even if we go to fallback path, mapping is still ok.
Any ideas which way this should be fixed? Given the many changes
I thought it's better to ask early on the list about this.
[1] https://github.com/thesofproject/linux/issues/3915
Br, Kai
1
0
According to data sheet SPI_SPD7 should be set to 7.
Signed-off-by: Vitaly Rodionov <vitalyr(a)opensource.cirrus.com>
---
drivers/spi/spi-amd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/spi/spi-amd.c b/drivers/spi/spi-amd.c
index e23121456c70..bfc3ab5f39ea 100644
--- a/drivers/spi/spi-amd.c
+++ b/drivers/spi/spi-amd.c
@@ -65,7 +65,7 @@ enum amd_spi_speed {
F_16_66MHz,
F_100MHz,
F_800KHz,
- SPI_SPD7,
+ SPI_SPD7 = 0x7,
F_50MHz = 0x4,
F_4MHz = 0x32,
F_3_17MHz = 0x3F
--
2.34.1
2
1
Starting with 6.0-rc1 these messages are logged and the sound card
is unavailable. Adding legacy_dai_naming to the rt5514-spi causes
it to function properly again.
[ 16.928454] kbl_r5514_5663_max kbl_r5514_5663_max: ASoC: CPU DAI
spi-PRP0001:00 not registered
[ 16.928561] platform kbl_r5514_5663_max: deferred probe pending
Fixes: fc34ece41f71 ("ASoC: Refactor non_legacy_dai_naming flag")
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=216641
Signed-off-by: Jason Montleon <jmontleo(a)redhat.com>
---
sound/soc/codecs/rt5514-spi.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/sound/soc/codecs/rt5514-spi.c b/sound/soc/codecs/rt5514-spi.c
index 1a25a3787935..362663abcb89 100644
--- a/sound/soc/codecs/rt5514-spi.c
+++ b/sound/soc/codecs/rt5514-spi.c
@@ -298,13 +298,14 @@ static int rt5514_spi_pcm_new(struct snd_soc_component *component,
}
static const struct snd_soc_component_driver rt5514_spi_component = {
- .name = DRV_NAME,
- .probe = rt5514_spi_pcm_probe,
- .open = rt5514_spi_pcm_open,
- .hw_params = rt5514_spi_hw_params,
- .hw_free = rt5514_spi_hw_free,
- .pointer = rt5514_spi_pcm_pointer,
- .pcm_construct = rt5514_spi_pcm_new,
+ .name = DRV_NAME,
+ .probe = rt5514_spi_pcm_probe,
+ .open = rt5514_spi_pcm_open,
+ .hw_params = rt5514_spi_hw_params,
+ .hw_free = rt5514_spi_hw_free,
+ .pointer = rt5514_spi_pcm_pointer,
+ .pcm_construct = rt5514_spi_pcm_new,
+ .legacy_dai_naming = 1,
};
/**
--
2.37.3
3
4
Convert the SAI bindings to YAML DT schema to permit validation.
Add Shengjiu as maintainer, derived from sound/soc/fsl/fsl_sai.c
get_maintainer result.
Describe existing used combinations of compatible strings, add the
missing imx7d-sai compatible string which is used on i.MX7 .
Properties lsb-first, fsl,sai-synchronous-rx, fsl,sai-asynchronous,
fsl,dataline are no longer listed as required, since those are clearly
optional, even the description says so, so does their usage.
Fix the undefined edma channel macro per arch/arm/boot/dts/vfxxx.dtsi ,
use the value itself just like in the vfxxx.dtsi .
Document interrupts property, which was previously undocumented, but
it is required property of this IP.
Document #sound-sai-cells, which should be zero for this IP.
Document fsl,imx6ul-iomuxc-gpr and its dependency on MX6UL and
fsl,sai-mclk-direction-output .
Signed-off-by: Marek Vasut <marex(a)denx.de>
---
Cc: Fabio Estevam <festevam(a)gmail.com>
Cc: Jaroslav Kysela <perex(a)perex.cz>
Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt(a)linaro.org>
Cc: Liam Girdwood <lgirdwood(a)gmail.com>
Cc: Mark Brown <broonie(a)kernel.org>
Cc: Nicolin Chen <nicoleotsuka(a)gmail.com>
Cc: Rob Herring <robh+dt(a)kernel.org>
Cc: Shengjiu Wang <shengjiu.wang(a)gmail.com>
Cc: Takashi Iwai <tiwai(a)suse.com>
Cc: Xiubo Li <Xiubo.Lee(a)gmail.com>
Cc: alsa-devel(a)alsa-project.org
To: devicetree(a)vger.kernel.org
---
.../devicetree/bindings/sound/fsl-sai.yaml | 188 ++++++++++++++++++
1 file changed, 188 insertions(+)
create mode 100644 Documentation/devicetree/bindings/sound/fsl-sai.yaml
diff --git a/Documentation/devicetree/bindings/sound/fsl-sai.yaml b/Documentation/devicetree/bindings/sound/fsl-sai.yaml
new file mode 100644
index 0000000000000..e6620a127f419
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/fsl-sai.yaml
@@ -0,0 +1,188 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/fsl-sai.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale Synchronous Audio Interface (SAI).
+
+maintainers:
+ - Shengjiu Wang <shengjiu.wang(a)gmail.com>
+
+description:
+ The SAI is based on I2S module that used communicating with audio
+ codecs, which provides a synchronous audio interface that supports
+ fullduplex serial interfaces with frame synchronization such as I2S,
+ AC97, TDM, and codec/DSP interfaces.
+
+properties:
+ compatible:
+ oneOf:
+ - items:
+ - enum:
+ - fsl,imx6ul-sai
+ - fsl,imx7d-sai
+ - const: fsl,imx6sx-sai
+
+ - items:
+ - enum:
+ - fsl,imx8mm-sai
+ - fsl,imx8mn-sai
+ - fsl,imx8mp-sai
+ - const: fsl,imx8mq-sai
+
+ - items:
+ - enum:
+ - fsl,imx6sx-sai
+ - fsl,imx7ulp-sai
+ - fsl,imx8mq-sai
+ - fsl,imx8qm-sai
+ - fsl,imx8ulp-sai
+ - fsl,vf610-sai
+
+ reg:
+ maxItems: 1
+
+ clocks:
+ minItems: 4
+ maxItems: 6
+
+ clock-names:
+ minItems: 4
+ items:
+ - const: bus
+ - const: mclk1
+ - const: mclk2
+ - const: mclk3
+ - const: pll8k
+ - const: pll11k
+
+ dmas:
+ maxItems: 2
+
+ dma-names:
+ items:
+ - const: tx
+ - const: rx
+
+ interrupts:
+ maxItems: 1
+
+ lsb-first:
+ $ref: /schemas/types.yaml#/definitions/flag
+ description: |
+ Configures whether the LSB or the MSB is transmitted first for the
+ fifo data. If this property is absent, the MSB is transmitted first
+ as default, or the LSB is transmitted first.
+
+ fsl,sai-synchronous-rx:
+ $ref: /schemas/types.yaml#/definitions/flag
+ description: |
+ This is a boolean property. If present, indicating that SAI will
+ work in the synchronous mode (sync Tx with Rx) which means both
+ the transmitter and the receiver will send and receive data by
+ following receiver's bit clocks and frame sync clocks.
+ If both fsl,sai-asynchronous and fsl,sai-synchronous-rx are
+ absent, the default synchronous mode (sync Rx with Tx) will
+ be used, which means both transmitter and receiver will send
+ and receive data by following clocks of transmitter.
+ fsl,sai-asynchronous and fsl,sai-synchronous-rx are exclusive.
+
+ fsl,sai-asynchronous:
+ $ref: /schemas/types.yaml#/definitions/flag
+ description: |
+ If present, indicating that SAI will work in the asynchronous
+ mode, which means both transmitter and receiver will send and
+ receive data by following their own bit clocks and frame sync
+ clocks separately.
+ If both fsl,sai-asynchronous and fsl,sai-synchronous-rx are
+ absent, the default synchronous mode (sync Rx with Tx) will
+ be used, which means both transmitter and receiver will send
+ and receive data by following clocks of transmitter.
+ fsl,sai-asynchronous and fsl,sai-synchronous-rx are exclusive.
+
+ fsl,dataline:
+ $ref: /schemas/types.yaml#/definitions/uint8-array
+ description: |
+ Configure the dataline. It has 3 values for each configuration:
+ first one means the type: I2S(1) or PDM(2)
+ second one is dataline mask for 'rx'
+ third one is dataline mask for 'tx'.
+ for example: fsl,dataline = <1 0xff 0xff 2 0xff 0x11>;
+ means I2S type rx mask is 0xff, tx mask is 0xff, PDM type
+ rx mask is 0xff, tx mask is 0x11 (dataline 1 and 4 enabled).
+
+ fsl,sai-mclk-direction-output:
+ $ref: /schemas/types.yaml#/definitions/flag
+ description: |
+ If present, indicates that SAI will output the SAI MCLK clock.
+
+ fsl,imx6ul-iomuxc-gpr:
+ $ref: /schemas/types.yaml#/definitions/phandle
+ description: Phandle to MX6UL IOMUXC GPR shared register file.
+
+ big-endian:
+ $ref: /schemas/types.yaml#/definitions/flag
+ description: |
+ Required if all the SAI registers are big-endian rather
+ than little-endian.
+
+ "#sound-dai-cells":
+ const: 0
+
+required:
+ - compatible
+ - reg
+ - clocks
+ - clock-names
+ - dmas
+ - dma-names
+ - interrupts
+
+unevaluatedProperties: false
+
+allOf:
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - fsl,imx6ul-sai
+ then:
+ dependencies:
+ fsl,imx6ul-iomuxc-gpr: [ "fsl,sai-mclk-direction-output" ]
+
+ - if:
+ not:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - fsl,imx6ul-sai
+ - fsl,imx8mm-sai
+ - fsl,imx8mn-sai
+ - fsl,imx8mp-sai
+ - fsl,imx8mq-sai
+ then:
+ properties:
+ fsl,sai-mclk-direction-output: false
+
+examples:
+ - |
+ #include <dt-bindings/clock/vf610-clock.h>
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+ sai@40031000 {
+ compatible = "fsl,vf610-sai";
+ reg = <0x40031000 0x1000>;
+ interrupts = <86 IRQ_TYPE_LEVEL_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_sai2_1>;
+ clocks = <&clks VF610_CLK_PLATFORM_BUS>, <&clks VF610_CLK_SAI2>,
+ <&clks 0>, <&clks 0>;
+ clock-names = "bus", "mclk1", "mclk2", "mclk3";
+ dma-names = "tx", "rx";
+ dmas = <&edma0 0 21>, <&edma0 0 20>;
+ big-endian;
+ lsb-first;
+ };
--
2.35.1
3
3
From: Arnd Bergmann <arnd(a)arndb.de>
Most of the legacy PXA board files were marked as unused in linux-5.19 and
can get removed in linux-6.2. There is support for pxa250/pxa270/pxa300
using devicetree already, which supports a number of boards, but progress
on converting the remaining ones has stalled over the past few years.
The two boards that are left in the tree for now are the three 'sharpsl'
variants (spitz/akita/borzoi) and the 'gumstix' family of machines.
Both of these are supported by qemu, which can be helpful for completing
the DT conversion.
Only PXA25x and PXA27x are left with full boardfile support, so PXA300
can get a lot simpler while still working with DT, and PXA310/320/93x
can be removed entirely.
A good number of drivers become impossible to select after this, so
each of these also get dropped. I'm including the driver patches in the
series here and can either merge them through the soc tree, or they
can get picked up by the individual subsystem maintainers. Since both
the platform and the drivers get removed, the order should not matter.
Note that the patches here are generated with 'git format-patch -D'
and don't contain the contents of removed files because of the
significant size (the first patch is close to a megabyte).
Arnd Bergmann (30):
ARM: pxa: remove unused board files
ARM: pxa: remove irda leftover
ARM: pxa: remove unused pxa3xx-ulpi
ARM: pxa: drop pxa310/pxa320/pxa93x support
ARM: pxa: prune unused device support
power: remove z2_battery driver
power: remove tosa_battery driver
ata: remove palmld pata driver
backlight: remove pxa tosa support
input: remove pxa930_trkball driver
input: remove pxa930_rotary keyboard driver
input: remove zylonite touchscreen driver
pcmcia: remove unused pxa/sa1100 drivers
ASoC: pxa: remove unused board support
ALSA: remove ac97 bus support
mfd: remove wm97xx driver
input: remove wm97xx support
parport: remove ax88796 driver
power: remove pda_power supply driver
rtc: remove v3020 driver
mfd: remove toshiba tmio drivers
mfd: remove ucb1400 support
mtd: remove tmio_nand driver
mmc: remove tmio_mmc driver
fbdev: remove tmiofb driver
fbdev: remove w100fb driver
leds: remove asic3 driver
usb: remove ohci-tmio driver
w1: remove ds1wm driver
mfd: remove htc-pasic3 driver
Cc: stern(a)rowland.harvard.edu
Cc: alexandre.belloni(a)bootlin.com
Cc: brgl(a)bgdev.pl
Cc: damien.lemoal(a)opensource.wdc.com
Cc: daniel(a)zonque.org
Cc: dmitry.torokhov(a)gmail.com
Cc: linux(a)dominikbrodowski.net
Cc: balbi(a)kernel.org
Cc: gregkh(a)linuxfoundation.org
Cc: haojian.zhuang(a)gmail.com
Cc: deller(a)gmx.de
Cc: perex(a)perex.cz
Cc: jingoohan1(a)gmail.com
Cc: lee(a)kernel.org
Cc: kernel(a)wantstofly.org
Cc: lgirdwood(a)gmail.com
Cc: linus.walleij(a)linaro.org
Cc: marek.vasut(a)gmail.com
Cc: broonie(a)kernel.org
Cc: mkpetch(a)internode.on.net
Cc: miquel.raynal(a)bootlin.com
Cc: lost.distance(a)yahoo.com
Cc: philipp.zabel(a)gmail.com
Cc: robert.jarzmik(a)free.fr
Cc: linux(a)armlinux.org.uk
Cc: sre(a)kernel.org
Cc: slapin(a)ossfans.org
Cc: s.shtylyov(a)omp.ru
Cc: sudipm.mukherjee(a)gmail.com
Cc: tiwai(a)suse.com
Cc: ulf.hansson(a)linaro.org
Cc: vigneshr(a)ti.com
Cc: viresh.kumar(a)linaro.org
Cc: wsa+renesas(a)sang-engineering.com
Cc: linux-pm(a)vger.kernel.org
Cc: linux-kernel(a)vger.kernel.org
Cc: linux-arm-kernel(a)lists.infradead.org
Cc: linux-ide(a)vger.kernel.org
Cc: linux-gpio(a)vger.kernel.org
Cc: linux-input(a)vger.kernel.org
Cc: patches(a)opensource.cirrus.com
Cc: linux-leds(a)vger.kernel.org
Cc: linux-mmc(a)vger.kernel.org
Cc: linux-renesas-soc(a)vger.kernel.org
Cc: linux-mtd(a)lists.infradead.org
Cc: linux-rtc(a)vger.kernel.org
Cc: linux-usb(a)vger.kernel.org
Cc: dri-devel(a)lists.freedesktop.org
Cc: linux-fbdev(a)vger.kernel.org
Cc: alsa-devel(a)alsa-project.org
Documentation/power/power_supply_class.rst | 4 +-
MAINTAINERS | 100 +-
arch/arm/Kconfig | 1 -
arch/arm/configs/cm_x300_defconfig | 163 --
arch/arm/configs/colibri_pxa270_defconfig | 157 --
arch/arm/configs/colibri_pxa300_defconfig | 60 -
arch/arm/configs/corgi_defconfig | 247 ---
arch/arm/configs/eseries_pxa_defconfig | 97 -
arch/arm/configs/ezx_defconfig | 389 ----
arch/arm/configs/h5000_defconfig | 74 -
arch/arm/configs/lpd270_defconfig | 58 -
arch/arm/configs/lubbock_defconfig | 53 -
arch/arm/configs/magician_defconfig | 151 --
arch/arm/configs/mainstone_defconfig | 51 -
arch/arm/configs/palmz72_defconfig | 75 -
arch/arm/configs/pcm027_defconfig | 90 -
arch/arm/configs/pxa255-idp_defconfig | 55 -
arch/arm/configs/pxa_defconfig | 3 -
arch/arm/configs/trizeps4_defconfig | 207 ---
arch/arm/configs/viper_defconfig | 160 --
arch/arm/configs/xcep_defconfig | 89 -
arch/arm/configs/zeus_defconfig | 173 --
arch/arm/mach-pxa/Kconfig | 583 +-----
arch/arm/mach-pxa/Makefile | 60 +-
arch/arm/mach-pxa/balloon3-pcmcia.c | 137 --
arch/arm/mach-pxa/balloon3.c | 821 --------
arch/arm/mach-pxa/balloon3.h | 181 --
arch/arm/mach-pxa/capc7117.c | 159 --
arch/arm/mach-pxa/cm-x300.c | 883 ---------
arch/arm/mach-pxa/colibri-evalboard.c | 138 --
arch/arm/mach-pxa/colibri-pcmcia.c | 165 --
arch/arm/mach-pxa/colibri-pxa270-income.c | 236 ---
arch/arm/mach-pxa/colibri-pxa270.c | 330 ----
arch/arm/mach-pxa/colibri-pxa300.c | 193 --
arch/arm/mach-pxa/colibri-pxa320.c | 264 ---
arch/arm/mach-pxa/colibri-pxa3xx.c | 147 --
arch/arm/mach-pxa/colibri.h | 70 -
arch/arm/mach-pxa/corgi.c | 826 ---------
arch/arm/mach-pxa/corgi.h | 110 --
arch/arm/mach-pxa/corgi_pm.c | 221 ---
arch/arm/mach-pxa/csb701.c | 67 -
arch/arm/mach-pxa/csb726.c | 291 ---
arch/arm/mach-pxa/csb726.h | 24 -
arch/arm/mach-pxa/devices.c | 408 ----
arch/arm/mach-pxa/devices.h | 3 -
arch/arm/mach-pxa/e740-pcmcia.c | 127 --
arch/arm/mach-pxa/eseries-gpio.h | 63 -
arch/arm/mach-pxa/eseries-irq.h | 24 -
arch/arm/mach-pxa/eseries.c | 1001 ----------
arch/arm/mach-pxa/ezx.c | 1254 -------------
arch/arm/mach-pxa/h5000.c | 210 ---
arch/arm/mach-pxa/h5000.h | 109 --
arch/arm/mach-pxa/himalaya.c | 166 --
arch/arm/mach-pxa/hx4700-pcmcia.c | 118 --
arch/arm/mach-pxa/hx4700.c | 942 ----------
arch/arm/mach-pxa/hx4700.h | 129 --
arch/arm/mach-pxa/icontrol.c | 218 ---
arch/arm/mach-pxa/idp.c | 285 ---
arch/arm/mach-pxa/idp.h | 195 --
arch/arm/mach-pxa/littleton.c | 462 -----
arch/arm/mach-pxa/littleton.h | 14 -
arch/arm/mach-pxa/lpd270.c | 518 ------
arch/arm/mach-pxa/lpd270.h | 40 -
arch/arm/mach-pxa/lubbock.c | 649 -------
arch/arm/mach-pxa/lubbock.h | 47 -
arch/arm/mach-pxa/magician.c | 1112 -----------
arch/arm/mach-pxa/magician.h | 125 --
arch/arm/mach-pxa/mainstone.c | 738 --------
arch/arm/mach-pxa/mainstone.h | 140 --
arch/arm/mach-pxa/mfp-pxa25x.h | 33 -
arch/arm/mach-pxa/mfp-pxa2xx.c | 4 -
arch/arm/mach-pxa/mfp-pxa300.h | 52 -
arch/arm/mach-pxa/mfp-pxa320.h | 458 -----
arch/arm/mach-pxa/mfp-pxa930.h | 495 -----
arch/arm/mach-pxa/mioa701.c | 784 --------
arch/arm/mach-pxa/mioa701.h | 76 -
arch/arm/mach-pxa/mioa701_bootresume.S | 38 -
arch/arm/mach-pxa/mp900.c | 101 -
arch/arm/mach-pxa/mxm8x10.c | 477 -----
arch/arm/mach-pxa/mxm8x10.h | 22 -
arch/arm/mach-pxa/palm27x.c | 473 -----
arch/arm/mach-pxa/palm27x.h | 77 -
arch/arm/mach-pxa/palmld-pcmcia.c | 111 --
arch/arm/mach-pxa/palmld.c | 392 ----
arch/arm/mach-pxa/palmld.h | 107 --
arch/arm/mach-pxa/palmt5.c | 234 ---
arch/arm/mach-pxa/palmt5.h | 82 -
arch/arm/mach-pxa/palmtc-pcmcia.c | 162 --
arch/arm/mach-pxa/palmtc.c | 539 ------
arch/arm/mach-pxa/palmtc.h | 84 -
arch/arm/mach-pxa/palmte2.c | 383 ----
arch/arm/mach-pxa/palmte2.h | 64 -
arch/arm/mach-pxa/palmtreo.c | 548 ------
arch/arm/mach-pxa/palmtreo.h | 64 -
arch/arm/mach-pxa/palmtx-pcmcia.c | 111 --
arch/arm/mach-pxa/palmtx.c | 390 ----
arch/arm/mach-pxa/palmtx.h | 110 --
arch/arm/mach-pxa/palmz72.c | 319 ----
arch/arm/mach-pxa/palmz72.h | 80 -
arch/arm/mach-pxa/pcm027.c | 266 ---
arch/arm/mach-pxa/pcm027.h | 73 -
arch/arm/mach-pxa/pcm990-baseboard.c | 408 ----
arch/arm/mach-pxa/pcm990_baseboard.h | 199 --
arch/arm/mach-pxa/pm.c | 2 -
arch/arm/mach-pxa/pm.h | 10 -
arch/arm/mach-pxa/poodle.c | 484 -----
arch/arm/mach-pxa/poodle.h | 92 -
arch/arm/mach-pxa/pxa25x.c | 7 -
arch/arm/mach-pxa/pxa27x.c | 18 +-
arch/arm/mach-pxa/pxa27x.h | 3 -
arch/arm/mach-pxa/pxa2xx.c | 29 -
arch/arm/mach-pxa/pxa300.c | 17 +-
arch/arm/mach-pxa/pxa320.c | 88 -
arch/arm/mach-pxa/pxa320.h | 9 -
arch/arm/mach-pxa/pxa3xx-ulpi.c | 385 ----
arch/arm/mach-pxa/pxa3xx.c | 91 -
arch/arm/mach-pxa/pxa930.c | 217 ---
arch/arm/mach-pxa/pxa930.h | 8 -
arch/arm/mach-pxa/pxa_cplds_irqs.c | 200 --
arch/arm/mach-pxa/regs-u2d.h | 199 --
arch/arm/mach-pxa/regs-uart.h | 146 --
arch/arm/mach-pxa/saar.c | 604 ------
arch/arm/mach-pxa/sharpsl_pm.c | 4 -
arch/arm/mach-pxa/spitz.c | 23 -
arch/arm/mach-pxa/tavorevb.c | 506 -----
arch/arm/mach-pxa/tosa-bt.c | 134 --
arch/arm/mach-pxa/tosa.c | 946 ----------
arch/arm/mach-pxa/tosa.h | 165 --
arch/arm/mach-pxa/tosa_bt.h | 18 -
arch/arm/mach-pxa/trizeps4-pcmcia.c | 200 --
arch/arm/mach-pxa/trizeps4.c | 575 ------
arch/arm/mach-pxa/trizeps4.h | 166 --
arch/arm/mach-pxa/viper-pcmcia.c | 180 --
arch/arm/mach-pxa/viper-pcmcia.h | 12 -
arch/arm/mach-pxa/viper.c | 1034 -----------
arch/arm/mach-pxa/viper.h | 91 -
arch/arm/mach-pxa/vpac270-pcmcia.c | 137 --
arch/arm/mach-pxa/vpac270.c | 736 --------
arch/arm/mach-pxa/vpac270.h | 38 -
arch/arm/mach-pxa/xcep.c | 190 --
arch/arm/mach-pxa/z2.c | 781 --------
arch/arm/mach-pxa/z2.h | 37 -
arch/arm/mach-pxa/zeus.c | 974 ----------
arch/arm/mach-pxa/zeus.h | 82 -
arch/arm/mach-pxa/zylonite.c | 495 -----
arch/arm/mach-pxa/zylonite.h | 45 -
arch/arm/mach-pxa/zylonite_pxa300.c | 281 ---
arch/arm/mach-pxa/zylonite_pxa320.c | 213 ---
arch/arm/mach-tegra/tegra.c | 1 -
drivers/ata/Kconfig | 9 -
drivers/ata/Makefile | 1 -
drivers/ata/pata_palmld.c | 137 --
drivers/clk/pxa/clk-pxa3xx.c | 22 +-
drivers/cpufreq/pxa3xx-cpufreq.c | 21 +-
drivers/gpio/Kconfig | 7 -
drivers/gpio/Makefile | 1 -
drivers/gpio/gpio-ucb1400.c | 85 -
drivers/input/keyboard/Kconfig | 9 -
drivers/input/keyboard/Makefile | 1 -
drivers/input/keyboard/pxa930_rotary.c | 195 --
drivers/input/mouse/Kconfig | 6 -
drivers/input/mouse/Makefile | 1 -
drivers/input/mouse/pxa930_trkball.c | 250 ---
drivers/input/touchscreen/Kconfig | 81 -
drivers/input/touchscreen/Makefile | 8 -
drivers/input/touchscreen/mainstone-wm97xx.c | 10 -
drivers/input/touchscreen/ucb1400_ts.c | 458 -----
drivers/input/touchscreen/wm9705.c | 345 ----
drivers/input/touchscreen/wm9712.c | 466 -----
drivers/input/touchscreen/wm9713.c | 476 -----
drivers/input/touchscreen/wm97xx-core.c | 910 ---------
drivers/input/touchscreen/zylonite-wm97xx.c | 220 ---
drivers/leds/Kconfig | 11 -
drivers/leds/Makefile | 1 -
drivers/leds/leds-asic3.c | 177 --
drivers/mfd/Kconfig | 72 -
drivers/mfd/Makefile | 8 -
drivers/mfd/asic3.c | 1071 -----------
drivers/mfd/htc-pasic3.c | 210 ---
drivers/mfd/t7l66xb.c | 432 -----
drivers/mfd/tc6387xb.c | 233 ---
drivers/mfd/tc6393xb.c | 912 ---------
drivers/mfd/tmio_core.c | 70 -
drivers/mfd/ucb1400_core.c | 158 --
drivers/mfd/wm97xx-core.c | 362 ----
drivers/mmc/host/Kconfig | 8 -
drivers/mmc/host/Makefile | 1 -
drivers/mmc/host/pxamci.c | 3 +-
drivers/mmc/host/tmio_mmc.c | 227 ---
drivers/mtd/nand/raw/Kconfig | 7 -
drivers/mtd/nand/raw/Makefile | 1 -
drivers/mtd/nand/raw/tmio_nand.c | 533 ------
drivers/parport/Kconfig | 11 -
drivers/parport/Makefile | 1 -
drivers/parport/parport_ax88796.c | 418 -----
drivers/pcmcia/Kconfig | 12 +-
drivers/pcmcia/Makefile | 5 -
drivers/pcmcia/pxa2xx_base.c | 14 +-
drivers/pcmcia/pxa2xx_mainstone.c | 122 --
drivers/pcmcia/sa1100_simpad.c | 115 --
drivers/pcmcia/sa1111_badge4.c | 158 --
drivers/pcmcia/sa1111_generic.c | 4 -
drivers/pcmcia/sa1111_lubbock.c | 155 --
drivers/power/supply/Kconfig | 22 -
drivers/power/supply/Makefile | 3 -
drivers/power/supply/ds2760_battery.c | 8 -
drivers/power/supply/pda_power.c | 520 ------
drivers/power/supply/tosa_battery.c | 512 -----
drivers/power/supply/z2_battery.c | 317 ----
drivers/rtc/Kconfig | 9 -
drivers/rtc/Makefile | 1 -
drivers/rtc/rtc-v3020.c | 369 ----
drivers/usb/gadget/udc/pxa25x_udc.c | 62 -
drivers/usb/host/ohci-hcd.c | 18 -
drivers/usb/host/ohci-pxa27x.c | 9 -
drivers/usb/host/ohci-tmio.c | 364 ----
drivers/video/backlight/Kconfig | 14 -
drivers/video/backlight/Makefile | 2 -
drivers/video/backlight/locomolcd.c | 10 -
drivers/video/backlight/tosa_bl.c | 173 --
drivers/video/backlight/tosa_bl.h | 8 -
drivers/video/backlight/tosa_lcd.c | 284 ---
drivers/video/fbdev/Kconfig | 39 -
drivers/video/fbdev/Makefile | 2 -
drivers/video/fbdev/tmiofb.c | 1040 -----------
drivers/video/fbdev/w100fb.c | 1644 -----------------
drivers/video/fbdev/w100fb.h | 924 ---------
drivers/w1/masters/Kconfig | 7 -
drivers/w1/masters/Makefile | 1 -
drivers/w1/masters/ds1wm.c | 675 -------
include/linux/mfd/asic3.h | 313 ----
include/linux/mfd/htc-pasic3.h | 54 -
include/linux/mfd/t7l66xb.h | 29 -
include/linux/mfd/tc6387xb.h | 19 -
include/linux/mfd/tc6393xb.h | 53 -
include/linux/mfd/tmio.h | 5 -
include/linux/parport.h | 5 -
include/linux/pda_power.h | 39 -
include/linux/platform_data/asoc-palm27x.h | 9 -
include/linux/platform_data/asoc-poodle.h | 16 -
include/linux/platform_data/asoc-pxa.h | 31 -
include/linux/platform_data/irda-pxaficp.h | 26 -
.../platform_data/keyboard-pxa930_rotary.h | 21 -
include/linux/platform_data/mmp_audio.h | 18 -
.../platform_data/mouse-pxa930_trkball.h | 11 -
include/linux/platform_data/rtc-v3020.h | 41 -
include/linux/platform_data/usb-pxa3xx-ulpi.h | 32 -
include/linux/soc/pxa/cpu.h | 93 +-
include/linux/ucb1400.h | 160 --
include/linux/z2_battery.h | 17 -
include/sound/ac97/codec.h | 116 --
include/sound/ac97/compat.h | 17 -
include/sound/ac97/controller.h | 83 -
include/video/w100fb.h | 147 --
sound/Kconfig | 3 -
sound/Makefile | 1 -
sound/ac97/Kconfig | 19 -
sound/ac97/Makefile | 9 -
sound/ac97/ac97_core.h | 13 -
sound/ac97/bus.c | 557 ------
sound/ac97/codec.c | 12 -
sound/ac97/snd_ac97_compat.c | 120 --
sound/arm/Kconfig | 13 -
sound/arm/Makefile | 4 -
sound/arm/pxa2xx-ac97-lib.c | 466 -----
sound/arm/pxa2xx-ac97-regs.h | 100 -
sound/arm/pxa2xx-ac97.c | 293 ---
sound/pci/ac97/ac97_codec.c | 1 -
sound/pci/ac97/ac97_patch.c | 40 -
sound/soc/codecs/wm9705.c | 2 -
sound/soc/codecs/wm9712.c | 2 -
sound/soc/codecs/wm9713.c | 2 -
sound/soc/pxa/Kconfig | 183 --
sound/soc/pxa/Makefile | 35 -
sound/soc/pxa/brownstone.c | 133 --
sound/soc/pxa/corgi.c | 332 ----
sound/soc/pxa/e740_wm9705.c | 168 --
sound/soc/pxa/e750_wm9705.c | 147 --
sound/soc/pxa/e800_wm9712.c | 147 --
sound/soc/pxa/em-x270.c | 92 -
sound/soc/pxa/hx4700.c | 207 ---
sound/soc/pxa/magician.c | 366 ----
sound/soc/pxa/mioa701_wm9713.c | 201 --
sound/soc/pxa/mmp-pcm.c | 267 ---
sound/soc/pxa/palm27x.c | 162 --
sound/soc/pxa/poodle.c | 291 ---
sound/soc/pxa/pxa2xx-ac97.c | 307 ---
sound/soc/pxa/pxa2xx-i2s.c | 2 -
sound/soc/pxa/tosa.c | 255 ---
sound/soc/pxa/ttc-dkb.c | 143 --
sound/soc/pxa/z2.c | 218 ---
sound/soc/pxa/zylonite.c | 266 ---
292 files changed, 24 insertions(+), 59127 deletions(-)
delete mode 100644 arch/arm/configs/cm_x300_defconfig
delete mode 100644 arch/arm/configs/colibri_pxa270_defconfig
delete mode 100644 arch/arm/configs/colibri_pxa300_defconfig
delete mode 100644 arch/arm/configs/corgi_defconfig
delete mode 100644 arch/arm/configs/eseries_pxa_defconfig
delete mode 100644 arch/arm/configs/ezx_defconfig
delete mode 100644 arch/arm/configs/h5000_defconfig
delete mode 100644 arch/arm/configs/lpd270_defconfig
delete mode 100644 arch/arm/configs/lubbock_defconfig
delete mode 100644 arch/arm/configs/magician_defconfig
delete mode 100644 arch/arm/configs/mainstone_defconfig
delete mode 100644 arch/arm/configs/palmz72_defconfig
delete mode 100644 arch/arm/configs/pcm027_defconfig
delete mode 100644 arch/arm/configs/pxa255-idp_defconfig
delete mode 100644 arch/arm/configs/trizeps4_defconfig
delete mode 100644 arch/arm/configs/viper_defconfig
delete mode 100644 arch/arm/configs/xcep_defconfig
delete mode 100644 arch/arm/configs/zeus_defconfig
delete mode 100644 arch/arm/mach-pxa/balloon3-pcmcia.c
delete mode 100644 arch/arm/mach-pxa/balloon3.c
delete mode 100644 arch/arm/mach-pxa/balloon3.h
delete mode 100644 arch/arm/mach-pxa/capc7117.c
delete mode 100644 arch/arm/mach-pxa/cm-x300.c
delete mode 100644 arch/arm/mach-pxa/colibri-evalboard.c
delete mode 100644 arch/arm/mach-pxa/colibri-pcmcia.c
delete mode 100644 arch/arm/mach-pxa/colibri-pxa270-income.c
delete mode 100644 arch/arm/mach-pxa/colibri-pxa270.c
delete mode 100644 arch/arm/mach-pxa/colibri-pxa300.c
delete mode 100644 arch/arm/mach-pxa/colibri-pxa320.c
delete mode 100644 arch/arm/mach-pxa/colibri-pxa3xx.c
delete mode 100644 arch/arm/mach-pxa/colibri.h
delete mode 100644 arch/arm/mach-pxa/corgi.c
delete mode 100644 arch/arm/mach-pxa/corgi.h
delete mode 100644 arch/arm/mach-pxa/corgi_pm.c
delete mode 100644 arch/arm/mach-pxa/csb701.c
delete mode 100644 arch/arm/mach-pxa/csb726.c
delete mode 100644 arch/arm/mach-pxa/csb726.h
delete mode 100644 arch/arm/mach-pxa/e740-pcmcia.c
delete mode 100644 arch/arm/mach-pxa/eseries-gpio.h
delete mode 100644 arch/arm/mach-pxa/eseries-irq.h
delete mode 100644 arch/arm/mach-pxa/eseries.c
delete mode 100644 arch/arm/mach-pxa/ezx.c
delete mode 100644 arch/arm/mach-pxa/h5000.c
delete mode 100644 arch/arm/mach-pxa/h5000.h
delete mode 100644 arch/arm/mach-pxa/himalaya.c
delete mode 100644 arch/arm/mach-pxa/hx4700-pcmcia.c
delete mode 100644 arch/arm/mach-pxa/hx4700.c
delete mode 100644 arch/arm/mach-pxa/hx4700.h
delete mode 100644 arch/arm/mach-pxa/icontrol.c
delete mode 100644 arch/arm/mach-pxa/idp.c
delete mode 100644 arch/arm/mach-pxa/idp.h
delete mode 100644 arch/arm/mach-pxa/littleton.c
delete mode 100644 arch/arm/mach-pxa/littleton.h
delete mode 100644 arch/arm/mach-pxa/lpd270.c
delete mode 100644 arch/arm/mach-pxa/lpd270.h
delete mode 100644 arch/arm/mach-pxa/lubbock.c
delete mode 100644 arch/arm/mach-pxa/lubbock.h
delete mode 100644 arch/arm/mach-pxa/magician.c
delete mode 100644 arch/arm/mach-pxa/magician.h
delete mode 100644 arch/arm/mach-pxa/mainstone.c
delete mode 100644 arch/arm/mach-pxa/mainstone.h
delete mode 100644 arch/arm/mach-pxa/mfp-pxa320.h
delete mode 100644 arch/arm/mach-pxa/mfp-pxa930.h
delete mode 100644 arch/arm/mach-pxa/mioa701.c
delete mode 100644 arch/arm/mach-pxa/mioa701.h
delete mode 100644 arch/arm/mach-pxa/mioa701_bootresume.S
delete mode 100644 arch/arm/mach-pxa/mp900.c
delete mode 100644 arch/arm/mach-pxa/mxm8x10.c
delete mode 100644 arch/arm/mach-pxa/mxm8x10.h
delete mode 100644 arch/arm/mach-pxa/palm27x.c
delete mode 100644 arch/arm/mach-pxa/palm27x.h
delete mode 100644 arch/arm/mach-pxa/palmld-pcmcia.c
delete mode 100644 arch/arm/mach-pxa/palmld.c
delete mode 100644 arch/arm/mach-pxa/palmld.h
delete mode 100644 arch/arm/mach-pxa/palmt5.c
delete mode 100644 arch/arm/mach-pxa/palmt5.h
delete mode 100644 arch/arm/mach-pxa/palmtc-pcmcia.c
delete mode 100644 arch/arm/mach-pxa/palmtc.c
delete mode 100644 arch/arm/mach-pxa/palmtc.h
delete mode 100644 arch/arm/mach-pxa/palmte2.c
delete mode 100644 arch/arm/mach-pxa/palmte2.h
delete mode 100644 arch/arm/mach-pxa/palmtreo.c
delete mode 100644 arch/arm/mach-pxa/palmtreo.h
delete mode 100644 arch/arm/mach-pxa/palmtx-pcmcia.c
delete mode 100644 arch/arm/mach-pxa/palmtx.c
delete mode 100644 arch/arm/mach-pxa/palmtx.h
delete mode 100644 arch/arm/mach-pxa/palmz72.c
delete mode 100644 arch/arm/mach-pxa/palmz72.h
delete mode 100644 arch/arm/mach-pxa/pcm027.c
delete mode 100644 arch/arm/mach-pxa/pcm027.h
delete mode 100644 arch/arm/mach-pxa/pcm990-baseboard.c
delete mode 100644 arch/arm/mach-pxa/pcm990_baseboard.h
delete mode 100644 arch/arm/mach-pxa/poodle.c
delete mode 100644 arch/arm/mach-pxa/poodle.h
delete mode 100644 arch/arm/mach-pxa/pxa320.c
delete mode 100644 arch/arm/mach-pxa/pxa320.h
delete mode 100644 arch/arm/mach-pxa/pxa3xx-ulpi.c
delete mode 100644 arch/arm/mach-pxa/pxa930.c
delete mode 100644 arch/arm/mach-pxa/pxa930.h
delete mode 100644 arch/arm/mach-pxa/pxa_cplds_irqs.c
delete mode 100644 arch/arm/mach-pxa/regs-u2d.h
delete mode 100644 arch/arm/mach-pxa/regs-uart.h
delete mode 100644 arch/arm/mach-pxa/saar.c
delete mode 100644 arch/arm/mach-pxa/tavorevb.c
delete mode 100644 arch/arm/mach-pxa/tosa-bt.c
delete mode 100644 arch/arm/mach-pxa/tosa.c
delete mode 100644 arch/arm/mach-pxa/tosa.h
delete mode 100644 arch/arm/mach-pxa/tosa_bt.h
delete mode 100644 arch/arm/mach-pxa/trizeps4-pcmcia.c
delete mode 100644 arch/arm/mach-pxa/trizeps4.c
delete mode 100644 arch/arm/mach-pxa/trizeps4.h
delete mode 100644 arch/arm/mach-pxa/viper-pcmcia.c
delete mode 100644 arch/arm/mach-pxa/viper-pcmcia.h
delete mode 100644 arch/arm/mach-pxa/viper.c
delete mode 100644 arch/arm/mach-pxa/viper.h
delete mode 100644 arch/arm/mach-pxa/vpac270-pcmcia.c
delete mode 100644 arch/arm/mach-pxa/vpac270.c
delete mode 100644 arch/arm/mach-pxa/vpac270.h
delete mode 100644 arch/arm/mach-pxa/xcep.c
delete mode 100644 arch/arm/mach-pxa/z2.c
delete mode 100644 arch/arm/mach-pxa/z2.h
delete mode 100644 arch/arm/mach-pxa/zeus.c
delete mode 100644 arch/arm/mach-pxa/zeus.h
delete mode 100644 arch/arm/mach-pxa/zylonite.c
delete mode 100644 arch/arm/mach-pxa/zylonite.h
delete mode 100644 arch/arm/mach-pxa/zylonite_pxa300.c
delete mode 100644 arch/arm/mach-pxa/zylonite_pxa320.c
delete mode 100644 drivers/ata/pata_palmld.c
delete mode 100644 drivers/gpio/gpio-ucb1400.c
delete mode 100644 drivers/input/keyboard/pxa930_rotary.c
delete mode 100644 drivers/input/mouse/pxa930_trkball.c
delete mode 100644 drivers/input/touchscreen/ucb1400_ts.c
delete mode 100644 drivers/input/touchscreen/wm9705.c
delete mode 100644 drivers/input/touchscreen/wm9712.c
delete mode 100644 drivers/input/touchscreen/wm9713.c
delete mode 100644 drivers/input/touchscreen/wm97xx-core.c
delete mode 100644 drivers/input/touchscreen/zylonite-wm97xx.c
delete mode 100644 drivers/leds/leds-asic3.c
delete mode 100644 drivers/mfd/asic3.c
delete mode 100644 drivers/mfd/htc-pasic3.c
delete mode 100644 drivers/mfd/t7l66xb.c
delete mode 100644 drivers/mfd/tc6387xb.c
delete mode 100644 drivers/mfd/tc6393xb.c
delete mode 100644 drivers/mfd/tmio_core.c
delete mode 100644 drivers/mfd/ucb1400_core.c
delete mode 100644 drivers/mfd/wm97xx-core.c
delete mode 100644 drivers/mmc/host/tmio_mmc.c
delete mode 100644 drivers/mtd/nand/raw/tmio_nand.c
delete mode 100644 drivers/parport/parport_ax88796.c
delete mode 100644 drivers/pcmcia/pxa2xx_mainstone.c
delete mode 100644 drivers/pcmcia/sa1100_simpad.c
delete mode 100644 drivers/pcmcia/sa1111_badge4.c
delete mode 100644 drivers/pcmcia/sa1111_lubbock.c
delete mode 100644 drivers/power/supply/pda_power.c
delete mode 100644 drivers/power/supply/tosa_battery.c
delete mode 100644 drivers/power/supply/z2_battery.c
delete mode 100644 drivers/rtc/rtc-v3020.c
delete mode 100644 drivers/usb/host/ohci-tmio.c
delete mode 100644 drivers/video/backlight/tosa_bl.c
delete mode 100644 drivers/video/backlight/tosa_bl.h
delete mode 100644 drivers/video/backlight/tosa_lcd.c
delete mode 100644 drivers/video/fbdev/tmiofb.c
delete mode 100644 drivers/video/fbdev/w100fb.c
delete mode 100644 drivers/video/fbdev/w100fb.h
delete mode 100644 drivers/w1/masters/ds1wm.c
delete mode 100644 include/linux/mfd/asic3.h
delete mode 100644 include/linux/mfd/htc-pasic3.h
delete mode 100644 include/linux/mfd/t7l66xb.h
delete mode 100644 include/linux/mfd/tc6387xb.h
delete mode 100644 include/linux/mfd/tc6393xb.h
delete mode 100644 include/linux/pda_power.h
delete mode 100644 include/linux/platform_data/asoc-palm27x.h
delete mode 100644 include/linux/platform_data/asoc-poodle.h
delete mode 100644 include/linux/platform_data/asoc-pxa.h
delete mode 100644 include/linux/platform_data/irda-pxaficp.h
delete mode 100644 include/linux/platform_data/keyboard-pxa930_rotary.h
delete mode 100644 include/linux/platform_data/mmp_audio.h
delete mode 100644 include/linux/platform_data/mouse-pxa930_trkball.h
delete mode 100644 include/linux/platform_data/rtc-v3020.h
delete mode 100644 include/linux/platform_data/usb-pxa3xx-ulpi.h
delete mode 100644 include/linux/ucb1400.h
delete mode 100644 include/linux/z2_battery.h
delete mode 100644 include/sound/ac97/codec.h
delete mode 100644 include/sound/ac97/compat.h
delete mode 100644 include/sound/ac97/controller.h
delete mode 100644 include/video/w100fb.h
delete mode 100644 sound/ac97/Kconfig
delete mode 100644 sound/ac97/Makefile
delete mode 100644 sound/ac97/ac97_core.h
delete mode 100644 sound/ac97/bus.c
delete mode 100644 sound/ac97/codec.c
delete mode 100644 sound/ac97/snd_ac97_compat.c
delete mode 100644 sound/arm/pxa2xx-ac97-lib.c
delete mode 100644 sound/arm/pxa2xx-ac97-regs.h
delete mode 100644 sound/arm/pxa2xx-ac97.c
delete mode 100644 sound/soc/pxa/brownstone.c
delete mode 100644 sound/soc/pxa/corgi.c
delete mode 100644 sound/soc/pxa/e740_wm9705.c
delete mode 100644 sound/soc/pxa/e750_wm9705.c
delete mode 100644 sound/soc/pxa/e800_wm9712.c
delete mode 100644 sound/soc/pxa/em-x270.c
delete mode 100644 sound/soc/pxa/hx4700.c
delete mode 100644 sound/soc/pxa/magician.c
delete mode 100644 sound/soc/pxa/mioa701_wm9713.c
delete mode 100644 sound/soc/pxa/mmp-pcm.c
delete mode 100644 sound/soc/pxa/palm27x.c
delete mode 100644 sound/soc/pxa/poodle.c
delete mode 100644 sound/soc/pxa/pxa2xx-ac97.c
delete mode 100644 sound/soc/pxa/tosa.c
delete mode 100644 sound/soc/pxa/ttc-dkb.c
delete mode 100644 sound/soc/pxa/z2.c
delete mode 100644 sound/soc/pxa/zylonite.c
--
2.29.2
5
7
04 Nov '22
For Hamedal C20, the current rate is different from the runtime rate,
snd_usb_endpoint stop and close endpoint to resetting rate.
if snd_usb_endpoint close the endpoint, sometimes usb will
disconnect the device.
Signed-off-by: aichao <aichao(a)kylinos.cn>
---
sound/usb/endpoint.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/sound/usb/endpoint.c b/sound/usb/endpoint.c
index 533919a28856..c19e420b1780 100644
--- a/sound/usb/endpoint.c
+++ b/sound/usb/endpoint.c
@@ -825,7 +825,9 @@ void snd_usb_endpoint_close(struct snd_usb_audio *chip,
usb_audio_dbg(chip, "Closing EP 0x%x (count %d)\n",
ep->ep_num, ep->opened);
- if (!--ep->iface_ref->opened)
+ if (!--ep->iface_ref->opened
+ && (le16_to_cpu(chip->dev->descriptor.idVendor) != 0x0525)
+ && (le16_to_cpu(chip->dev->descriptor.idProduct) != 0xa4ad))
endpoint_set_interface(chip, ep, false);
if (!--ep->opened) {
--
2.25.1
3
2