Age | Commit message (Collapse) | Author |
|
In addition to the currently supported analog capture path, the WM8903
also supports digital mics.
The analog and digital capture paths are exclusive; a mux is present to
select the capture source.
Logically, the mux exists to select the decimator's input, from either
the ADC or DMIC block outputs. However, the ADC power domain also
includes the DMIC interface. Consequently, this change represents the
mux as existing immediately before the ADC, and selecting between the
Input PGA and DMIC block outputs.
An alternative might be to represent the mux in its correct location,
and associate the ADC power enable controls with both the real ADC, and
a fake ADC for the DMIC?
Change-Id: I96dff6a95ce7e5c0d90369cb1bc178d2b14b0f14
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Sumit Bhattacharya <sumitb@nvidia.com>
Reviewed-on: http://git-master/r/56137
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
|
|
Bug: 862023
Change-Id: I1784a813ad8ef224f0587ba977518c2940b66e01
Signed-off-by: Nikesh Oswal <noswal@nvidia.com>
Reviewed-on: http://git-master/r/55674
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
|
|
Add support to convey HP and mic jack status to switch class.
Bug 872652
Change-Id: I2d64c97ef8bf0ab3dfeec3c711ef0e8048bff133
Signed-off-by: Sumit Bhattacharya <sumitb@nvidia.com>
Reviewed-on: http://git-master/r/55670
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
|
|
Complete DAPM route map for cardhu and ventana. Expose more alsa
controls to facilitate codec routing. Properly handle speaker,
internal mic and external mic routing events.
Bug 872652
Change-Id: I4620d08ade1f455a4075d9822fcfd5e34474133f
Signed-off-by: Sumit Bhattacharya <sumitb@nvidia.com>
Reviewed-on: http://git-master/r/55669
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
|
|
Bug: 862023
Change-Id: Ibaa3ffbb9e81736e45c2bccb0d6e1828cde4025b
Signed-off-by: Nikesh Oswal <noswal@nvidia.com>
Reviewed-on: http://git-master/r/55474
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
|
|
Bug: 862023
Change-Id: I0302091654c5394733264712269be4fe0aefa39a
Signed-off-by: Nikesh Oswal <noswal@nvidia.com>
Reviewed-on: http://git-master/r/55466
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
|
|
Bug: 862023
Change-Id: Ieb9247cef5feecf3e241d8980f9c4376cadf2965
Signed-off-by: Nikesh Oswal <noswal@nvidia.com>
Reviewed-on: http://git-master/r/55465
Reviewed-by: Sumit Bhattacharya <sumitb@nvidia.com>
Reviewed-by: Scott Peterson <speterson@nvidia.com>
|
|
Bug: 862023
Change-Id: Ic4ca5d1ab4173147f2b2161a4b45f38d12c2fc78
Signed-off-by: Nikesh Oswal <noswal@nvidia.com>
Reviewed-on: http://git-master/r/57054
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
|
|
Bug: 862023
Change-Id: I1429549d5fd0d365075ca798430ab7a9274b0aa9
Signed-off-by: Nikesh Oswal <noswal@nvidia.com>
Reviewed-on: http://git-master/r/57052
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
|
|
Bug: 862023
Change-Id: I8e7e1ad90e0a38bd3380d1b4c3cabd6751906288
Signed-off-by: Nikesh Oswal <noswal@nvidia.com>
Reviewed-on: http://git-master/r/57050
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
|
|
Bug: 862023
Change-Id: I26789c9e5bc7ebd51f086a3be650186d8e541519
Signed-off-by: Nikesh Oswal <noswal@nvidia.com>
Reviewed-on: http://git-master/r/57035
Reviewed-by: Sumit Bhattacharya <sumitb@nvidia.com>
Reviewed-by: Scott Peterson <speterson@nvidia.com>
|
|
It is a WAR to have better audio quality for HDMI audio over SPDIF.
Bug 872652
Change-Id: I896589fd60980c155fae5900618734e1912b4a38
Signed-off-by: Sumit Bhattacharya <sumitb@nvidia.com>
Reviewed-on: http://git-master/r/55143
Reviewed-by: Stephen Warren <swarren@nvidia.com>
Reviewed-by: Scott Peterson <speterson@nvidia.com>
Tested-by: Gerrit_Virtual_Submit
|
|
Remove redundant ref counting for I2s and AHUB clocks.
For Tegra30 enable AHUB clocks before I2s registers are accessed.
Disable clocks when they are not in use.
Bug 872652
Change-Id: I7ec4e45cecd0391d0b5a2765214d6c03fa5cc339
Signed-off-by: Sumit Bhattacharya <sumitb@nvidia.com>
Reviewed-on: http://git-master/r/55005
Reviewed-by: Scott Peterson <speterson@nvidia.com>
Reviewed-by: Stephen Warren <swarren@nvidia.com>
Tested-by: Gerrit_Virtual_Submit
|
|
Bug 872652
Change-Id: Ia35ba728859bcba1bff1ce73c622203d027bc8f9
Signed-off-by: Sumit Bhattacharya <sumitb@nvidia.com>
Reviewed-on: http://git-master/r/54989
Reviewed-by: Scott Peterson <speterson@nvidia.com>
Reviewed-by: Stephen Warren <swarren@nvidia.com>
Tested-by: Gerrit_Virtual_Submit
|
|
Set Audio Samplerate and source information to HDMI driver so that
it can configure HDMI registers accordingly.
Bug 872652
Change-Id: Ifdbf9a1d192a870d99846e936c6c215ee999473d
Signed-off-by: Sumit Bhattacharya <sumitb@nvidia.com>
Reviewed-on: http://git-master/r/54972
Reviewed-by: Scott Peterson <speterson@nvidia.com>
Reviewed-by: Stephen Warren <swarren@nvidia.com>
Tested-by: Gerrit_Virtual_Submit
|
|
Bug 872652
Signed-off-by: Sumit Bhattacharya <sumitb@nvidia.com>
Change-Id: I2c5006a68d590b9215db056a614566b926287fda
Reviewed-on: http://git-master/r/54954
Tested-by: Sumit Bhattacharya <sumitb@nvidia.com>
Reviewed-by: Scott Peterson <speterson@nvidia.com>
Reviewed-by: Stephen Warren <swarren@nvidia.com>
Tested-by: Gerrit_Virtual_Submit
|
|
Change-Id: I68d6425e0f5c82762e34ec0033f571be22ca5413
Signed-off-by: Nikesh Oswal <noswal@nvidia.com>
Reviewed-on: http://git-master/r/55232
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Tested-by: Bharat Nihalani <bnihalani@nvidia.com>
|
|
Add code to enable channel status transmit and set channel
status bits according to pcm stream sample rate. Set
transmit attention level to 4-slot and remove redundant
spdif clock refcounting code.
Bug 872652
Change-Id: I1bb1928e263c033993fa1f4db7609b373976da62
Signed-off-by: Sumit Bhattacharya <sumitb@nvidia.com>
Reviewed-on: http://git-master/r/53976
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
|
|
Bug 872652
Signed-off-by: Sumit Bhattacharya <sumitb@nvidia.com>
Change-Id: Ia58d12a6bf7d99b0679cf0dc5f0d727af06903c8
Reviewed-on: http://git-master/r/53812
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
|
|
Bug 872652
Signed-off-by: Sumit Bhattacharya <sumitb@nvidia.com>
Change-Id: I5734ebc76c979aaf7c65144857af5377f50a81f2
Reviewed-on: http://git-master/r/53820
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
|
|
Bug 872652
Signed-off-by: Sumit Bhattacharya <sumitb@nvidia.com>
Change-Id: I6fd1a0662934eb713e5e113d548fc6976a798d07
Reviewed-on: http://git-master/r/53745
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
|
|
This is a minimal driver for the Tegra SPDIF controller.
In hardware, the SPDIF output signal is always routed to any active HDMI
display controllers, and may also be routed to external pins on Tegra
using the pinmux.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Sumit Bhattacharya <sumitb@nvidia.com>
(cherry picked from commit 774fec338bfc63fe17233feefd9c6b46ce1673e0)
Change-Id: I51e36db0052cd483b62c0413b8b04a4ae3984fe2
Reviewed-on: http://git-master/r/53704
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Tested-by: Sumit Bhattacharya <sumitb@nvidia.com>
Reviewed-by: Stephen Warren <swarren@nvidia.com>
|
|
Two issues were preventing module snd-soc-tegra-wm8903.ko from being
removed and re-inserted:
a) The speaker-enable GPIO is hosted by the WM8903 chip. This GPIO must
be freed before snd_soc_unregister_card() is called, because that
triggers wm8903.c:wm8903_remove(), which calls gpiochip_remove(), which
then fails if any of the GPIOs are in use. To solve this, free all GPIOs
first, so the code doesn't care where they come from.
b) We need to call snd_soc_jack_free_gpios() to match the call to
snd_soc_jack_add_gpios() during initialization. Without this, the
call to snd_soc_jack_add_gpios() fails during any subsequent modprobe
and initialization, since the GPIO and IRQ are already registered. In
turn, this causes the headphone state not to be monitored, so the
headphone is assumed not to be plugged in, and the audio path to it is
never enabled.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Cc: stable@kernel.org
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Sumit Bhattacharya <sumitb@nvidia.com>
(cherry picked from commit 29591ed4ac6fe00e3ff23b5be0cdc7016ef9c47e)
Change-Id: I259c81f3f6149f29f4921d294e0cef764b5d7515
Reviewed-on: http://git-master/r/53713
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
|
|
Not all PCM devices have all sub-streams. Specifically, the SPDIF driver
only supports playback and hence has no capture substream. Check whether
a substream exists before dereferencing it, when de-allocating DMA
buffers in tegra_pcm_deallocate_dma_buffer.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Sumit Bhattacharya <sumitb@nvidia.com>
Cc: stable@kernel.org
(cherry picked from commit a96edd59b2bc88b3d1ea47e0ba48076d65db9302)
Change-Id: I4d003a1bfa47f12289cae567f1df18b7cbb3cc76
Reviewed-on: http://git-master/r/53712
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Tested-by: Sumit Bhattacharya <sumitb@nvidia.com>
Reviewed-by: Stephen Warren <swarren@nvidia.com>
|
|
Bug 862023
Change-Id: Ifed4a2b524369d59f475ac6380f95db4e8c9ed44
Reviewed-on: http://git-master/r/52523
Tested-by: Sumit Bhattacharya <sumitb@nvidia.com>
Reviewed-by: Varun Wadekar <vwadekar@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Reviewed-by: Mayuresh Kulkarni <mkulkarni@nvidia.com>
|
|
Bug 862023
Change-Id: I715ce95e3cece3fc8eeea81ab6b95ad6de3b2a1c
Reviewed-on: http://git-master/r/50907
Tested-by: Sumit Bhattacharya <sumitb@nvidia.com>
Reviewed-by: Ravindra Lokhande <rlokhande@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
|
|
Bug 862023
Change-Id: I98842fef1c4617724159414132c772ae20495062
Reviewed-on: http://git-master/r/49873
Tested-by: Sumit Bhattacharya <sumitb@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
|
|
Conflicts:
drivers/usb/class/cdc-acm.c
Signed-off-by: Dan Willemsen <dwillemsen@nvidia.com>
|
|
Bug 862023
Change-Id: Ie16d410c7021640898bfbc8fcf451d14e832af6f
Reviewed-on: http://git-master/r/47155
Tested-by: Sumit Bhattacharya <sumitb@nvidia.com>
Reviewed-by: Stephen Warren <swarren@nvidia.com>
Reviewed-by: Scott Peterson <speterson@nvidia.com>
Reviewed-by: Scott Williams <scwilliams@nvidia.com>
|
|
Cardhu is a Tegra30 tablet reference design. In terms of audio, it is
extremely similar to Harmony/Ventana, except that the WM8903 codec is
attached to a different I2C bus ID, and different I2S port.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
|
|
Signed-off-by: Stephen Warren <swarren@nvidia.com>
|
|
The AHUB (Audio Hub) is a mux/crossbar which links all audio-related
devices except the HDA controller on Tegra30. The devices include the
DMA FIFOs, DAM (Digital Audio Mixers), I2S controllers, and SPDIF
controllers. Audio data may be routed between these devices in various
combinations as required by board design/application.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
|
|
This provides an ASoC DAI interface for Tegra 30's I2S controller.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
|
|
Tegra30 has some additional clocks that need to be manipulated, names
some clocks differently, runs PLLs at different base rates, etc. The
utility code needs to handle this.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
|
|
Rename Tegra20-specific Kconfig variables, module filenames, all internal
symbol names, clocks, and platform devices, to reflect the fact the DAS
and I2S drivers are for a specific HW version.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
|
|
Rename these files so they include a specific hardware version in their
filenames. The contents is only touched minimally so that git's rename
tracking operates correctly; renaming all symbols in the files results
in a diff so large that the rename detection fails.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
|
|
Without this, the Tegra20 drivers can be built into a kernel that's
built for Tegra30.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
|
|
This is mainly for symmetry with a future Tegra30 driver, where the
equivalent of the DAS (the AHUB) is useful separately from the I2S driver.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
|
|
These includes aren't needed, and the files are about to be renamed.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
|
|
Avoid audio FIFO underflow due to DMA ISR latency.
MODE_ONESHOT works like this:
* CPU tells DMA HW to make a transfer .
* DMA HW performs the transfer, fires an interrupt, and goes idle.
* Interrupt latency (including e.g. LP2 exit time) is seen here.
* DMA driver ISR programs the next transfer, from a SW transfer queue.
In that model, the interrupt latency must be hidden by the I2S FIFO, which
is 16 samples IIRC, i.e. a very short time (~0.3mS @ 48KHz).
MODE_CONTINUOUS_SINGLE works like this:
* CPU tells DMA HW to make a transfer .
* CPU tells DMA HW to make a second transfer.
* DMA HW performs the transfer, fires an interrupt, and starts the second
transfer immediately.
* DMA driver ISR programs the next (third) transfer, while the second is
in progress, from a SW transfer queue.
Thus any DMA ISR latency is seen between transfer N completing and transfer
N+2 starting (rather than N+1), since the HW itself already knows how to
perform transfer N+1 before transfer N completes. Hence, the system is
tolerant of much larger latencies.
BUG=chromium-os-partner:3294
TEST=Seaboard clamshell: "aplay sin-500hz-48000-60s.wav" multiple times
while system idle and power LED flickering indicating CPU power saving.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Olof Johansson <olofj@chromium.org>
|
|
Modify the clock management logic to match that implemented in the
upcoming Tegra30 ASoC driver.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
|
|
The clock needed by the I2S driver is associated with the I2S device name
in the standard fashion. Hence, use clk_get(dev) instead of clk_get_sys(clk_name).
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Change-Id: I63457bbe4357be5eccbedd5b4a4d6046719a0150
|
|
commit b35e160a111aa9ae3fad6294e038be20d0da721b upstream.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
|
commit b793eb60a01d5b5e4aaeb2fbc2b036dec0d9f84d upstream.
The WM8994 and WM8958 series of devices have two MICBIAS supplies rather
than one, the current widget actually manages the microphone detection
control register bit (which is managed separately by the relevant API).
Fix this, hooking the relevant supplies up to the MICBIAS1 and MICBIAS2
widgets.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
|
commit bd7fdbcaa2d06d446577fd3c9b81847b04469e01 upstream.
mask didn't cover update-data
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
|
commit 8e9ddf811ba021506d2316fcfe619faa0ab3f567 upstream.
This delay is very conservative.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
|
commit e999dc50404d401150a5429b6459473a691fd1a0 upstream.
The Blackfin DMA controller can report one frame beyond the end of the
buffer in the wraparound case but ALSA requires that the pointer always
be in the buffer. Do the wraparound to handle this. A similar bug is
likely to apply to the other Blackfin PCM drivers but the code is less
obvious to inspection and I don't have a user to test.
Reported-by: Kieran O'Leary <Kieran.O'Leary@wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
|
commit 53dea36c70c1857149a8c447224e3936eb8b5339 upstream.
Don't rely on the codec's channels_min information to decide wheter or
not allocate a substream's DMA buffer. Rather check if the substream
itself was allocated previously.
Signed-off-by: Daniel Mack <zonque@gmail.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
|
commit f0ca89b031d327b80b612a0608d31b8e13e6dc33 upstream.
Conexant ID 506c was found on Acer Aspire 3830TG. As users report
no playback, sending to stable should be safe.
BugLink: https://bugs.launchpad.net/bugs/783582
Reported-by: andROOM
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
|
commit 6f2e810ad5d162c2bfa063c1811087277b299e4e upstream.
The reporter, who is running kernel 2.6.38, reports that
he needs to set model=auto for the headphone output to work
correctly.
BugLink: http://bugs.launchpad.net/bugs/761022
Reported-by: Jo
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|