aboutsummaryrefslogtreecommitdiffstats
path: root/sound/arm
Commit message (Collapse)AuthorAgeFilesLines
* ALSA: pxa2xx: Fix unlocked snd_pcm_stop() callTakashi Iwai2013-08-021-0/+2
| | | | | | | | | | commit 46f6c1aaf790be9ea3c8ddfc8f235a5f677d08e2 upstream. snd_pcm_stop() must be called in the PCM substream lock context. Acked-by: Mark Brown <broonie@linaro.org> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
* ALSA: pxa27x: fix ac97 warm resetMike Dunn2013-02-061-1/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | commit 3b4bc7bccc7857274705b05cf81a0c72cfd0b0dd upstream. This patch fixes some code that implements a work-around to a hardware bug in the ac97 controller on the pxa27x. A bug in the controller's warm reset functionality requires that the mfp used by the controller as the AC97_nRESET line be temporarily reconfigured as a generic output gpio (AF0) and manually held high for the duration of the warm reset cycle. This is what was done in the original code, but it was broken long ago by commit fb1bf8cd ([ARM] pxa: introduce processor specific pxa27x_assert_ac97reset()) which changed the mfp to a GPIO input instead of a high output. The fix requires the ac97 controller to obtain the gpio via gpio_request_one(), with arguments that configure the gpio as an output initially driven high. Tested on a palm treo 680 machine. Reportedly, this broken code only prevents a warm reset on hardware that lacks a pull-up on the line, which appears to be the case for me. Signed-off-by: Mike Dunn <mikedunn@newsguy.com> Signed-off-by: Igor Grinberg <grinberg@compulab.co.il> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> [bwh: Backported to 3.2: adjust context] Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
* ALSA: pxa27x: fix ac97 cold resetMike Dunn2013-02-061-2/+6
| | | | | | | | | | | | | | | | | | | | | commit 41b645c8624df6ace020a8863ad1449d69140f7d upstream. Cold reset on the pxa27x currently fails and pxa2xx_ac97_try_cold_reset: cold reset timeout (GSR=0x44) appears in the kernel log. Through trial-and-error (the pxa270 developer's manual is mostly incoherent on the topic of ac97 reset), I got cold reset to complete by setting the WARM_RST bit in the GCR register (and later noticed that pxa3xx does this for cold reset as well). Also, a timeout loop is needed to wait for the reset to complete. Tested on a palm treo 680 machine. Signed-off-by: Mike Dunn <mikedunn@newsguy.com> Acked-by: Igor Grinberg <grinberg@compulab.co.il> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
* sound: Add module.h to the previously silent sound usersPaul Gortmaker2011-10-312-0/+2
| | | | | | | | Lots of sound drivers were getting module.h via the implicit presence of it in <linux/device.h> but we are going to clean that up. So fix up those users now. Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
* sound: irq: Remove IRQF_DISABLEDYong Zhang2011-09-222-2/+2
| | | | | | | | | | | | | | | Since commit [e58aa3d2: genirq: Run irq handlers with interrupts disabled], We run all interrupt handlers with interrupts disabled and we even check and yell when an interrupt handler returns with interrupts enabled (see commit [b738a50a: genirq: Warn when handler enables interrupts]). So now this flag is a NOOP and can be removed. Signed-off-by: Yong Zhang <yong.zhang0@gmail.com> Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* Merge branch 'for-2.6.39' of ↵Mark Brown2011-04-031-0/+3
|\ | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6 into for-2.6.39
| * ASoC: PXA: Fix oops in __pxa2xx_pcm_prepareVasily Khoruzhick2011-04-031-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | pxa2xx_pcm_hw_free frees dma channel and sets prtd->dma_ch to -1, but does not set prtd->params to NULL, so if pxa2xx_pcm_hw_params will be called immediately, it leaves prtd->dma_ch initialized with -1, and it results in oops in __pxa2xx_pcm_prepare. This bug is triggered via SDL. This patch adds check for prtd->dma_ch to __pxa2xx_pcm_prepare and cleans prtd->params, so now it works properly. Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| |
| \
| \
| \
*---. \ Merge branches 'aaci', 'mmci-dma', 'pl' and 'pl011' into driversRussell King2011-03-171-2/+9
|\ \ \ \
| | * | | ARM: amba: make probe() functions take const id tablesRussell King2011-02-231-1/+2
| | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make Primecell driver probe functions take a const pointer to their ID tables. Drivers should never modify their ID tables in their probe handler. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
| | * | ALSA: AACI: allow writes to MAINCR to take effectRussell King2011-02-071-1/+7
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The AACI TRM requires the MAINCR enable bit to be held zero for two bitclk cycles plus three apb_pclk cycles. Use a delay of 1us to ensure this. Ensure that writes to MAINCR to change the addressed codec only happen when required, and that they take effect in a similar manner to the above, otherwise we seem to occasionally have stuck slot busy bits. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* | | ALSA: AACI: make fifo variables more explanitoryRussell King2011-01-262-20/+26
| | | | | | | | | | | | | | | | | | | | | Improve commenting and change fifo variable names to reflect their meanings. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* | | ALSA: AACI: no need to call snd_pcm_period_elapsed() for each periodRussell King2011-01-261-8/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | There is no need to call snd_pcm_period_elapsed() each time a period elapses - we can call it after we're done once loading/unloading the FIFO with data. ALSA works out how many periods have elapsed by reading the current pointers. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* | | ALSA: AACI: use snd_pcm_lib_period_bytes()Russell King2011-01-262-3/+4
| | | | | | | | | | | | | | | | | | Use the helper rather than open-coding this. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* | | ALSA: AACI: clean up AACI announcement printkRussell King2011-01-261-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | Make the AACI announcement printk say which primecell part number has been found. Display the revision as an unsigned decimal, and display only the first 8 hex digits of the base address unless it's larger. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* | | ALSA: AACI: fix channel mask selectionRussell King2011-01-261-50/+20
| | | | | | | | | | | | | | | | | | | | | | | | When double-rate mode was selected, we weren't setting the additional two channel mask bits to allow double-rate to work. Rearrange the hw_params code to allow the correct channel mask to be selected. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* | | ALSA: AACI: fix number of channels for recordRussell King2011-01-251-62/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | AC'97 codecs only support two channels for recording, so we shouldn't advertize that there are up to six channels available. Limit the selection of 4 and 6 channel audio to playback only. As this adds additional SNDRV_PCM_STREAM_PLAYBACK conditionals, we can combine some resulting in the elimination of __aaci_pcm_open() entirely, and making the code easier to read. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* | | ALSA: AACI: fix multiple IRQ claimingRussell King2011-01-252-9/+17
|/ / | | | | | | | | | | | | | | | | Claiming the IRQ each time a playback or capture interface is opened is wasteful; the second copy of the registered handler is identical to the first and just wastes resources. Track the number of opens and only register the handler when necessary. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* | ALSA: AACI: fix timeout durationRussell King2011-01-251-19/+23
| | | | | | | | | | | | | | | | | | | | | | Relying on the access time of peripherals is unreliable - it depends on the speed of the CPU and the bus. On Versatile Express, these timeouts were expiring, causing the driver to fail. Add udelay(1) to ensure that they don't expire early, and adjust timeouts to give a reasonable margin over the response times. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* | ALSA: AACI: fix timeout condition checkingRussell King2011-01-251-3/+3
|/ | | | | | | | Ensure that a timeout coincident with the condition being waited for results in success rather than failure. This helps avoid timeout conditions being inappropriately flagged. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* Merge branch 'fix/misc' into for-linusTakashi Iwai2010-04-161-2/+5
|\
| * ALSA: aaci - Fix alignment faults on ARM Cortex introduced by commit 29a4f2d3Philby John2010-04-131-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | The commit 29a4f2d3 used writel() at offset 0x26 which is half-word aligned causing unaligned exceptions on a Cortex-A8. The original patch solved the "aaci-pl041 fpga:04: ac97 read back fail" issue on a soft reset. Reading from any arbitrary aaci register seems to solve this issue. Signed-off-by: Philby John <pjohn@mvista.com> Acked-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | include cleanup: Update gfp.h and slab.h includes to prepare for breaking ↵Tejun Heo2010-03-301-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | implicit slab.h inclusion from percpu.h percpu.h is included by sched.h and module.h and thus ends up being included when building most .c files. percpu.h includes slab.h which in turn includes gfp.h making everything defined by the two files universally available and complicating inclusion dependencies. percpu.h -> slab.h dependency is about to be removed. Prepare for this change by updating users of gfp and slab facilities include those headers directly instead of assuming availability. As this conversion needs to touch large number of source files, the following script is used as the basis of conversion. http://userweb.kernel.org/~tj/misc/slabh-sweep.py The script does the followings. * Scan files for gfp and slab usages and update includes such that only the necessary includes are there. ie. if only gfp is used, gfp.h, if slab is used, slab.h. * When the script inserts a new include, it looks at the include blocks and try to put the new include such that its order conforms to its surrounding. It's put in the include block which contains core kernel includes, in the same order that the rest are ordered - alphabetical, Christmas tree, rev-Xmas-tree or at the end if there doesn't seem to be any matching order. * If the script can't find a place to put a new include (mostly because the file doesn't have fitting include block), it prints out an error message indicating which .h file needs to be added to the file. The conversion was done in the following steps. 1. The initial automatic conversion of all .c files updated slightly over 4000 files, deleting around 700 includes and adding ~480 gfp.h and ~3000 slab.h inclusions. The script emitted errors for ~400 files. 2. Each error was manually checked. Some didn't need the inclusion, some needed manual addition while adding it to implementation .h or embedding .c file was more appropriate for others. This step added inclusions to around 150 files. 3. The script was run again and the output was compared to the edits from #2 to make sure no file was left behind. 4. Several build tests were done and a couple of problems were fixed. e.g. lib/decompress_*.c used malloc/free() wrappers around slab APIs requiring slab.h to be added manually. 5. The script was run on all .h files but without automatically editing them as sprinkling gfp.h and slab.h inclusions around .h files could easily lead to inclusion dependency hell. Most gfp.h inclusion directives were ignored as stuff from gfp.h was usually wildly available and often used in preprocessor macros. Each slab.h inclusion directive was examined and added manually as necessary. 6. percpu.h was updated not to include slab.h. 7. Build test were done on the following configurations and failures were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my distributed build env didn't work with gcov compiles) and a few more options had to be turned off depending on archs to make things build (like ipr on powerpc/64 which failed due to missing writeq). * x86 and x86_64 UP and SMP allmodconfig and a custom test config. * powerpc and powerpc64 SMP allmodconfig * sparc and sparc64 SMP allmodconfig * ia64 SMP allmodconfig * s390 SMP allmodconfig * alpha SMP allmodconfig * um on x86_64 SMP allmodconfig 8. percpu.h modifications were reverted so that it could be applied as a separate patch and serve as bisection point. Given the fact that I had only a couple of failures from tests on step 6, I'm fairly confident about the coverage of this conversion patch. If there is a breakage, it's likely to be something in one of the arch headers which should be easily discoverable easily on most builds of the specific arch. Signed-off-by: Tejun Heo <tj@kernel.org> Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org> Cc: Ingo Molnar <mingo@redhat.com> Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
* | Merge commit 'v2.6.34-rc2' into for-2.6.34Mark Brown2010-03-221-62/+6
|\ \ | |/
| * [ARM] pxa: remove now unnecessary pxa_gpio_mode() calls in ac97Eric Miao2010-03-021-8/+0
| | | | | | | | | | | | | | | | | | | | Now most (if not all) PXA platforms have been switched to the new MFP API, it's rather safe to remove these unnecessary pxa_gpio_mode() calls in pxa2xx-ac97-lib.c now. Cc: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> Cc: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
| * [ARM] pxa: introduce processor specific pxa27x_assert_ac97reset()Eric Miao2010-03-021-44/+6
| | | | | | | | | | | | | | | | | | This is really pxa27x specific and should be kept in pxa27x.c. With this newly introduced function, the original set_resetgpio_mode() is deprecated. Cc: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> Cc: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
| * [ARM] pxa: remove the unnecessary restoring of MFP registersEric Miao2010-03-021-10/+0
| | | | | | | | | | | | | | | | | | MFP registers are saved and restored by the mfp sys_device before all other platform devices, and it is unnecessary here. Cc: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> Cc: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
* | ASoC: pxa-pcm-lib: initialize DMA channel to -1Daniel Mack2010-03-191-0/+1
|/ | | | | | | | | | This fixes a warning ("pxa_free_dma: trying to free channel 0 which is already freed") when a device was opened but the hw_params() call failed. Signed-off-by: Daniel Mack <daniel@caiaq.de> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* ALSA: sound/arm: Fix build failure caused by missing struct aaci definitionPeter Huewe2009-12-261-2/+1
| | | | | | | | | | | | | | | | | | | This patch fixes a build failure introduced by the patch ALSA: AACI: factor common hw_params logic into aaci_pcm_hw_params [1] by adding/moving the aaci struct to the right position. The patch mentioned above merged common source parts into one function, but unfortunately left out the aaci struct and consequently caused a build failure e.g. for arm versatile_config [2] References: [1] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=d3aee7996c30f928bbbbfd0994148e35d2e83084 [2] http://kisskb.ellerman.id.au/kisskb/buildresult/1893605/ Patch against Linus' tree. Signed-off-by: Peter Huewe <peterhuewe@gmx.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: AACI: switch to per-pcm lockingRussell King2009-12-182-21/+30
| | | | | | | | We can use finer-grained locking, which makes things easier when we gain DMA support. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: AACI: add double-rate supportRussell King2009-12-181-2/+15
| | | | | Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: AACI: factor common hw_params logic into aaci_pcm_hw_paramsRussell King2009-12-181-15/+7
| | | | | Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: AACI: cleanup aaci_pcm_hw_paramsRussell King2009-12-181-11/+7
| | | | | | | | Since the recording and playback paths are now the same, eliminate the needless conditionals. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: AACI: simplify codec rate informationRussell King2009-12-181-72/+3
| | | | | | | | | There's no need for a specific rule; ALSA's generic AC'97 support calculates the necessary rate constraint information itself, and we can use this directly. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: aaci - Fix a typoTakashi Iwai2009-12-181-1/+1
| | | | | | | Fixed a typo of the max buffer size specified for buffer allocation changed in the commit d6797322231af98b9bb4afb175dd614cf511e5f7. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* const: constify remaining dev_pm_opsAlexey Dobriyan2009-12-151-1/+1
| | | | | | Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* Merge branch 'topic/misc' into for-linusTakashi Iwai2009-12-041-14/+5
|\
| * ALSA: aaci - Clean up duplicate codeTakashi Iwai2009-12-011-9/+3
| | | | | | | | | | | | | | Now snd_ac97_pcm_open() is called with the exactly same arguments for both playback and capture directions. Remove the unneeded check. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * Merge branch 'fix/misc' into topic/miscTakashi Iwai2009-12-011-1/+5
| |\
| * | ALSA: AACI cleanupRussell King2009-11-231-5/+2
| | | | | | | | | | | | | | | | | | | | | Fix the buffer size calculation to use the size which ALSA is expecting. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | | Merge branch 'topic/core-change' into for-linusTakashi Iwai2009-12-044-95/+6
|\ \ \ | |_|/ |/| |
| * | ALSA: Remove old DMA-mmap code from arm/devdma.cTakashi Iwai2009-11-274-95/+6
| |/ | | | | | | | | | | The call of dma_mmap_coherent() is done in the PCM core now. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: AACI: fix recording bugRussell King2009-11-301-1/+1
| | | | | | | | | | | | | | | | | | | | pcm->r[1].slots is the double rate slot information, not the capture information. For capture, 'pcm' will already be the capture ac97 pcm structure. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Cc: <stable@kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: AACI: fix AC97 multiple-open bugRussell King2009-11-301-0/+4
|/ | | | | | Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Cc: <stable@kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: aaci: ARM1176 aaci-pl041 AC97 register read timeoutPhilby John2009-10-131-0/+1
| | | | | | | | | | | | | | After a reboot on an ARM1176 which amounts to a softreset, it has been noted that the ALSA driver does not get registered and the probe fails with the error "aaci-pl041 fpga:04: ac97 read back fail". In the process of reading from a register the SL1TxBusy bit is set indicating that the transceiver is busy and remains so until the default timeout occurs. Set the Power down register 0x26 to an arbitrary value as specified in the PL041 manual (page: 3-18) so that AACISL1TX/AACISL2TX registers take their default state. Signed-off-by: Philby John <pjohn@in.mvista.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* Merge branch 'devel' of ↵Russell King2009-09-211-9/+11
|\ | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel
| * [ARM] pxa: update pxa2xx-ac97.c to use 'struct dev_pm_ops'Mike Rapoport2009-09-101-9/+11
| | | | | | | | | | Signed-off-by: Mike Rapoport <mike@compulab.co.il> Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
* | ASoC: fix pxa2xx-ac97.c breakageRobert Schwebel2009-09-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Today's linux-next fails to build with sound/arm/pxa2xx-ac97.c: In function 'pxa2xx_ac97_probe': sound/arm/pxa2xx-ac97.c:211: error: 'pxa2xx_audio_ops_t' has no member named 'codec_data' make[2]: *** [sound/arm/pxa2xx-ac97.o] Error 1 It looks like commit e2365bf313fb21b49b1e4c911033389564428d03 has introduced this; patch below. Signed-off-by: Robert Schwebel <r.schwebel@pengutronix.de> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* | ASoC: Pass correct platform data from pxa2xx-ac97Marek Vasut2009-08-231-2/+2
| | | | | | | | | | Signed-off-by: Marek Vasut <marek.vasut@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* | ALSA: Restore support for DMAless DAIs on PXAMark Brown2009-08-191-0/+3
| | | | | | | | | | | | | | | | | | Used for applications such as direct bluetooth connections on smartphones which don't go via the CPU. This used to be supported before the refactoring to share code but this check was removed during that move. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* | ALSA: Allow passing platform_data for pxa2xx-ac97Marek Vasut2009-08-131-0/+10
|/ | | | | | | | This patch adds support for passing platform data to ac97 bus devices from PXA2xx-AC97 driver.. Signed-off-by: Marek Vasut <marek.vasut@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>