aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2011-06-09ASoC: p1022ds: fix incorrect referencing of device tree propertiesTimur Tabi4-13/+18
Device tree integer properties are encoded in big-endian format, but some of the Freescale ASoC drivers were assuming that the host is in big-endian format as well. Although this is true, it's better to use endian-safe accessors. Also add a check for a failed ioremap() call in the SSI driver. Signed-off-by: Timur Tabi <[email protected]> Acked-by: Liam Girdwood <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2011-06-09ASoC: fsl: fix initialization of DMA buffersTimur Tabi1-4/+5
The DMA (PCM) driver used by some Freescale PowerPC supports separate DAIs for playback and capture, so DMA buffers should be allocated only for the initialized streams. Instead of checking for the number of active channels, which apparently is not reliable, check to see if the actual stream object exists. Also provide a better name for the DMA interrupt. Signed-off-by: Timur Tabi <[email protected]> Acked-by: Liam Girdwood <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2011-06-09ASoC: WM8804 does not support sample rates below 32kHzMark Brown1-2/+7
Reported-by: Kieran O'Leary <Kieran.O'[email protected]> Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]> Cc: [email protected]
2011-06-08ASoC: twl6040 - According to TWL6040 specification, gain start at 6dB and ↵Ricardo Neri1-2/+2
not -6dB. Signed-off-by: Ricardo Neri <[email protected]> Acked-by: Mark Brown <[email protected]> Signed-off-by: Liam Girdwood <[email protected]>
2011-06-08ASoC: Fix mismerge of Speyside set_bias_level_post()Mark Brown1-0/+1
Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]>
2011-06-08Merge branch 'for-3.0' into for-3.1Mark Brown1-2/+2
2011-06-08ASoC: Support Speyside build variants with WM8962 fittedMark Brown3-0/+268
Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]>
2011-06-08ASoC: Defer all WM8962 clocking configuration until power upMark Brown1-27/+33
Don't require an audio rate SYSCLK in hw_params() in order to better support microphone detection use cases. Signed-off-by: Mark Brown <[email protected]>
2011-06-08ASoC: Implement base 5 band EQ control for WM8962Mark Brown1-0/+16
ReTune Mobile modes are not currently supported. Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]>
2011-06-08ASoC: Report errors when we have a WM8962 IRQ and don't get FLL lockMark Brown1-5/+32
We really should be getting the interrupt - if we don't get one it's very likely that the configuration is incorrect and audio will fail. Also increase the timeout substantially in this case for safety. Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]>
2011-06-08ASoC: Factor out I2C usage in WM8962 driverMark Brown1-9/+10
The chip can actually support SPI so we shouldn't assume we've got an I2C device even though that's the most common configuration. Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]>
2011-06-08ASoC: Suppress restore of default register values for rbtree cache syncMark Brown1-1/+6
Currently the rbtree code will write out the entire register map when doing a cache sync which is wasteful and will slow things down. Check to see if the value we're about to write is the default and don't bother restoring it if it is, either the value will have been retained or the device will have been reset and holds the value already. We should really store the defaults in the nodes but this resolves the immediate issue. Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]>
2011-06-08ASoC: Fix WM8962 headphone volume update for use of advanced cachesMark Brown1-2/+2
Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]> Cc: [email protected]
2011-06-07ASoC: core - Allow components to probe/remove in sequence.Liam Girdwood3-21/+61
Some ASoC components depend on other ASoC components to provide clocks and power resources in order to probe() and vice versa for remove(). Allow components to be ordered so that components can be probed() and removed() in sequences that conform to their dependencies. Signed-off-by: Liam Girdwood <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2011-06-07ASoC: core - Optimise and refactor pcm_new() to pass only rtdLiam Girdwood27-61/+96
Currently pcm_new() passes in 3 arguments :- card, pcm and DAI. Refactor this to only pass in 1 argument (i.e. the rtd) since struct rtd contains card, pcm and DAI along with other members too that are useful too. Signed-off-by: Liam Girdwood <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2011-06-07ALSA: hda - Judge playback stream from stream id in azx_via_get_position()Takashi Iwai1-1/+1
Instead of checking the azx_dev index with a fixed number (4), check the stream direction of the assigned substream. Signed-off-by: Takashi Iwai <[email protected]>
2011-06-07ALSA: hda - Handle -1 as invalid position, tooTakashi Iwai1-10/+11
When reading from the position-buffer results in -1, handle as it's invalid and falls back to LPIB mode as well as 0. Signed-off-by: Takashi Iwai <[email protected]>
2011-06-07Merge branch 'for-3.0' into for-3.1Mark Brown1-2/+2
2011-06-07ASoC: Blackfin: bf5xx-ad1836: Fix codec device nameLars-Peter Clausen1-2/+2
Fix the codec_name field of the dai_link to match the actual device name of the codec. Otherwise the card won't be instantiated. Signed-off-by: Lars-Peter Clausen <[email protected]> Acked-by: Liam Girdwood <[email protected]> Signed-off-by: Mark Brown <[email protected]> Cc: [email protected]
2011-06-07ASoC: AD1836: Fix build errorLars-Peter Clausen1-1/+1
Commit f97d0c6d5f94 ("ASoC: AD1836: Add input gain control for ADC2") contained a typo in the register name, causing a build error. This patch fixes it. Signed-off-by: Lars-Peter Clausen <[email protected]> Acked-by: Liam Girdwood <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2011-06-07ASoC: wm8940: remove unnecessary if statementsGreg Dietsche1-7/+0
removing unnecessary if(ret) checks This updated patch corrects a minor spelling problem in the commit message and resolves two other (similar) issues found in wm8940.c by Jonathan Cameron. Signed-off-by: Greg Dietsche <[email protected]> Acked-by: Jonathan Cameron <[email protected]> Acked-by: Liam Girdwood <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2011-06-07ALSA: hda: Fix quirk for Dell Inspiron 910Daniel T Chen1-0/+1
BugLink: https://launchpad.net/bugs/792712 The original reporter states that sound from the internal speakers is inaudible until using the model=auto quirk. This symptom is due to an existing quirk mask for 0x102802b* that uses the model=dell quirk. To limit the possible regressions, leave the existing quirk mask but add a higher priority specific mask for the reporter's PCI SSID. Reported-and-tested-by: rodni hipp Cc: <[email protected]> [2.6.38+] Signed-off-by: Daniel T Chen <[email protected]> Signed-off-by: Takashi Iwai <[email protected]>
2011-06-06Merge branch 'for-3.0' into for-3.1Mark Brown2-7/+13
2011-06-06ASoC: AD1836: Fix setting the PCM formatLars-Peter Clausen2-7/+13
Signed-off-by: Lars-Peter Clausen <[email protected]> Acked-by: Liam Girdwood <[email protected]> Signed-off-by: Mark Brown <[email protected]> Cc: [email protected]
2011-06-06ASoC: AD1836: Add input gain control for ADC2Lars-Peter Clausen1-0/+11
The AD1836 has a PGA for its second ADC. This patch adds a control for adjusting the the gain of the PGA. Signed-off-by: Lars-Peter Clausen <[email protected]> Acked-by: Liam Girdwood <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2011-06-06ASoC: AD1836: Remove unused fields from private structLars-Peter Clausen1-5/+0
The control_type field is never used, so it can be removed. The control_data field is used to initialize the codec's control_data field, but since this is also done by the snd-soc-cache core, the redundant assignment can be removed and the field can be dropped. Signed-off-by: Lars-Peter Clausen <[email protected]> Acked-by: Liam Girdwood <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2011-06-06ASoC: AD1836: Add AD1835/AD1837/AD1838/AD1839 supportLars-Peter Clausen1-54/+129
The AD183X codec devices are mostly register compatible and can easily be supported by the same driver. The main difference between those devices is the number of DACs and ADCs. This patch adjusts the driver to allocate the controls, DAPM widgets and routes for the DACs and ADCs dynamically based on the chip type. The AD1836 is a bit special in that it supports different modes for its second ADC, so it needs some special handling. Right now the driver hardcodes the mode to the differential PGA mode. Signed-off-by: Lars-Peter Clausen <[email protected]> Acked-by: Liam Girdwood <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2011-06-06ASoC: AD1836: Use snd_soc_update_bits for read-modify-writeLars-Peter Clausen1-12/+6
Use snd_soc_update_bits for read-modify-write register access instead of open-coding it using snd_soc_read and snd_soc_write. Signed-off-by: Lars-Peter Clausen <[email protected]> Acked-by: Liam Girdwood <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2011-06-06ASoC: AD1836: Add ADC/DAC controls helper macrosLars-Peter Clausen2-39/+34
The different ADC and DAC controls follow the same scheme, so add some helper macros for declaring them. This should make the code a bit more readable and also decreases the code size a bit. Signed-off-by: Lars-Peter Clausen <[email protected]> Acked-by: Liam Girdwood <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2011-06-06ASoC: Manage Speyside system clocking only in bias managementMark Brown1-10/+40
Now that the CODEC driver supports it defer configuration of the system clock until bias management which is a much more idiomatic place to do system power control and makes things a lot more happy when we're using both interfaces. Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]>
2011-06-06ASoC: Only provide a default bias level update for CODEC contextsMark Brown1-4/+7
This allows the card driver to use the bias level variable more easily in multi component systems. Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]>
2011-06-06ASoC: Add context parameter to card DAPM callbacksMark Brown5-3/+11
The card callback will get called for each DAPM context in the card so it can be useful for it to know which device is currently undergoing a transition. Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]>
2011-06-06ASoC: Simplify logic in snd_soc_dapm_set_bias_level()Mark Brown1-10/+12
No functional changes but much less indentation. Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]>
2011-06-06ASoC: Remove trace for DAPM bias level loggingMark Brown1-18/+0
It's redundant now thanks to the use of the generic trace infrastructure. Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]>
2011-06-06ASoC: Indentation fix for null loop operationMark Brown1-1/+1
More with the legibility. Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]>
2011-06-06ASoC: Don't bring the CODEC up to full power for supplies and biasesMark Brown1-2/+21
If the only widgets active within a CODEC are supplies and micbiases we are not passing audio, we are probably just doing microphone detection. This will not generally require either fully accurate reference voltages or much power so If this turns out to be unsuitable for some systems we can provide a facility to override this decision. Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]>
2011-06-06ASoC: Specify target bias state directly as a bias stateMark Brown3-32/+38
Rather than a simple flag to say if we want the DAPM context to be at full power specify the target bias state. This should have no current effect but is a bit more direct and so makes it easier to change our decisions about the which bias state to go into in future. Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]>
2011-06-06ASoC: Allow WM8915 BCLK calculation outside hw_params()Mark Brown1-29/+53
Allow more dynamic management of the device clocking by allowing BCLK to be calculated when we set SYSCLK. This means that if the system is idle when hw_params() runs then we don't try to use the SYSCLK used in that case to set up the BCLK dividers, we can instead wait until a later point such as bias level configuration. This makes it easier to manage low power modes. Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]>
2011-06-06Merge branch 'for-3.0' into for-3.1Mark Brown1-0/+3
2011-06-06ASoC: Check for NULL register bank in snd_soc_get_cache_val()Mark Brown1-0/+3
Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]>
2011-06-06ASoC: Enforce the mask in snd_soc_update_bits()Mark Brown1-1/+1
Avoids issues if someone does a read followed by restore and doesn't mask out only the bits being updated. Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]>
2011-06-06ASoC: Error out when FLL lock interrupt is not delivered on WM8915Mark Brown1-2/+14
When the FLL locks on the WM8915 an interrupt is generated. For safety error out if we don't get that interrupt when the IRQ output of the WM8915 is hooked up. Since we *really* expect an interrupt but the threaded IRQ handler may take a bit longer than expected to get scheduled also dramatically increase the delay in this case. Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]>
2011-06-06ASoC: Suppress noop SYSCLK updates in WM8915Mark Brown1-0/+6
Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]>
2011-06-06Merge branch 'for-3.0' into for-3.1Mark Brown1-1/+2
2011-06-06ASoC: Add missing break in WM8915 FLL source selectionMark Brown1-0/+1
Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]>
2011-06-06ASoC: Only update SYSCLK_ENA when pausing WM8915 SYSCLKMark Brown1-1/+1
Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]>
2011-06-06Merge branch 'for-3.0' into for-3.1Mark Brown7576-378954/+451486
2011-06-06ALSA: hda: HDMI: Support codecs with fewer cvts than pinsStephen Warren3-266/+350
The general concept of this change is to create a PCM device for each pin widget instead of each converter widget. Whenever a PCM is opened, a converter is dynamically selected to drive that pin based on those available for muxing into the pin. The one thing this model doesn't support is a single PCM/converter sending audio to multiple pin widgets at once. Note that this means that a struct hda_pcm_stream's nid variable is set to 0 except between a stream's open and cleanup calls. The dynamic de-assignment of converters to PCMs occurs within cleanup, not close, in order for it to co-incide with when controller stream IDs are cleaned up from converters. While the PCM for a pin is not open, the pin is disabled (its widget control's PIN_OUT bit is cleared) so that if the currently routed converter is used to drive a different PCM/pin, that audio does not leak out over a disabled pin. We use the recently added SPDIF virtualization feature in order to create SPDIF controls for each pin widget instead of each converter widget, so that state is specific to a PCM. In order to support this, a number of more mechanical changes are made: * s/nid/pin_nid/ or s/nid/cvt_nid/ in many places in order to make it clear exactly what the code is dealing with. * We now have per_pin and per_cvt arrays in hdmi_spec to store relevant data. In particular, we store a converter's capabilities in the per_cvt entry, rather than relying on a combination of codec_pcm_pars and the struct hda_pcm_stream. * ELD-related workarounds were removed from hdmi_channel_allocation into hdmi_instrinsic in order to simplifiy infoframe calculations and remove HW dependencies. * Various functions only apply to a single pin, since there is now only 1 pin per PCM. For example, hdmi_setup_infoframe, hdmi_setup_stream. * hdmi_add_pin and hdmi_add_cvt are more oriented at pure codec parsing and data retrieval, rather than determining which pins/converters are to be used for creating PCMs. This is quite a large change; it may be appropriate to simply read the result of the patch rather than the diffs. Some small parts of the change might be separable into different patches, but I think the bulk of the change will probably always be one large patch. Hopefully the change isn't too opaque! This has been tested on: * NVIDIA GeForce 400 series discrete graphics card. This model has the classical 1:1:1 codec:converter:pcm widget model. Tested stereo PCM audio to a PC monitor that supports audio. * NVIDIA GeForce 520 discrete graphics card. This model is the new 1 codec n converters m pins m>n model. Tested stereo PCM audio to a PC monitor that supports audio. * NVIDIA GeForce 400 series laptop graphics chip. This model has the classical 1:1:1 codec:converter:pcm widget model. Tested stereo PCM, multi-channel PCM, and AC3 pass-through to an AV receiver. * Intel Ibex Peak laptop. This model is the new 1 codec n converters m pins m>n model. Tested stereo PCM, multi-channel PCM, and AC3 pass- through to an AV receiver. Note that I'm not familiar at all with AC3 pass-through. Hence, I may not have covered all possible mechanisms that are applicable here. I do know that my receiver definitely received AC3, not decoded PCM. I tested with mplayer's "-afm hwac3" and/or "-af lavcac3enc" options, and alsa a WAV file that I believe has AC3 content rather than PCM. I also tested: * Play a stream * Mute while playing * Stop stream * Play some other streams to re-assign the converter to a different pin, PCM, set of SPDIF controls, ... hence hopefully triggering cleanup for the original PCM. * Unmute original stream while not playing * Play a stream on the original pin/PCM. This was to test SPDIF control virtualization. Signed-off-by: Stephen Warren <[email protected]> Signed-off-by: Takashi Iwai <[email protected]>
2011-06-06ALSA: hda: hdmi_eld_update_pcm_info: update a stream in placeStephen Warren3-32/+36
A future change won't store an entire hda_pcm_stream just to represent the capabilities of a codec; a custom data-structure will be used. To ease that transition, modify hdmi_eld_update_pcm_info to expect the hda_pcm_stream to be pre-initialized with the codec's capabilities, and to update those capabilities in-place based on the ELD. Signed-off-by: Stephen Warren <[email protected]> Signed-off-by: Takashi Iwai <[email protected]>
2011-06-06ALSA: hda: Separate generic and non-generic implementationsStephen Warren1-9/+66
A future change will significantly rework the generic implementation in order to support codecs with a different number of pins and converters. Isolate the more custom codec variants from this change by duplicating the small portions of generic code they share. This simplifies the later rework of that previously shared code, since we don't have to consider the more custom codecs, and also prevents support for those codecs from regressing. Signed-off-by: Stephen Warren <[email protected]> Signed-off-by: Takashi Iwai <[email protected]>