mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
sound updates for v3.10-rc1
Mostly many small changes spread as seen in diffstat in sound/*
directory by this update. A significant change in the subsystem level
is the introduction of snd_soc_component, which will help more generic
handling of SoC and off-SoC components.
Also, snd_BUG_ON() macro is enabled unconditionally now due to its
misuses, so people might hit kernel warnings (it's a good thing for
us).
- compress-offload: support for capture by Charles Keepax
- HD-audio: codec delay support by Dylan Reid
- HD-audio: improvements/fixes in generic parser: better headphone mic
and headset mic support, jack_modes hint consolidation, proper beep
attach/detachment, generalized power filter controls by David
Henningsson, et al
- HD-audio: Improved management of HDMI codec pins/converters
- HD-audio: Better pin/DAC assignment for VIA codecs
- HD-audio: Haswell HDMI workarounds
- HD-audio: ALC268 codec support, a few new quirks for Chromebooks
- USB: regression fixes: USB-MIDI autopm fix, the recent ISO latency
fix by Clemens Ladisch
- USB: support for DSD formats by Daniel Mack
- USB: A few UAC2 device endian/cock fixes by Eldad Zack
- USB: quirks for Emu 192kHz support, Novation Twitch DJ controller,
Yamaha THRxx devices
- HDSPM: updates for TCO controls by Adrian Knoth
- ASoC: Add a snd_soc_component object type for generic handling of
SoC and off-SoC components by Kuninori Morimoto,
- dmaengine: a large set of cleanups and conversions by Lars-Peter
Clausen
- ASoC DAPM: performance optimizations from Ryo Tsutsui
- ASoC DAPM: support for mixer control sharing by Stephen Warren
- ASoC: multiplatform ARM cleanups from Arnd Bergmann
- ASoC: new codec drivers for AK5385 and TAS5086 from Daniel Mack
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (GNU/Linux)
iQIcBAABAgAGBQJRg2bUAAoJEGwxgFQ9KSmksasQAIq1ypbylrLA3vf7PUXmL7Jb
hMtC5tzasZqJsIZ2fyhiZL8J5yQ78Z5dhjehFWlCbJEaKhsjZVyb67RpuK597b6K
Ypa30OghbWuCoKjmaXK9AFTuijTxdefmewIJfgwVMYtgA5rBU70qt96NC/b/UQXk
gEPI740i7EFJL2wfcqRpGoKGO1o80yMuKzIj3gHUZMFHYYhPgvVuGt9cCe3cXwLV
IBT77PjMoGt1Q7iJQkX4DGlB5n526l1G8a6VptdCou0qyEWfhgSik5I3msNuAXte
1KYE4zj0Rq4xqN28/D/eAF1o3q+X9aiLttGpG0sJLiwGagdWVFaXLyJDMhZxCbwz
1F4k+B8UCucojw3HtNzoIQJezoRX2aHMjlAZ50b416hITkg5VQe5+sJBxpjIJo4I
GSmizUiNahDk9jtI/PEGo7yr8CdRTY3v38mdZRGYxyWgJ1a8sNwQwqUdH6A0D/w6
3wMp4Y9Zt8AK/kiWLLWvsDVvwRptqplrXistTvv4v2xVJgvU+klDsDpa5Lz7kG7Z
q43RA4o+yWdG6d1hTgMXp7FGwUkcer7WKWEmAZsQmX03Q0zjZqMhfUwVUtaHIx9c
6YipHdVMAJ0sz/dYrKnZ92hbZcXNj/A9zfqYWeFlA/18FCO6u4BXODBup8BLwyUm
hfOv+M/q6haNA98GDHS9
=sYiI
-----END PGP SIGNATURE-----
Merge tag 'sound-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound updates from Takashi Iwai:
"Mostly many small changes spread as seen in diffstat in sound/*
directory by this update. A significant change in the subsystem level
is the introduction of snd_soc_component, which will help more generic
handling of SoC and off-SoC components.
Also, snd_BUG_ON() macro is enabled unconditionally now due to its
misuses, so people might hit kernel warnings (it's a good thing for
us).
- compress-offload: support for capture by Charles Keepax
- HD-audio: codec delay support by Dylan Reid
- HD-audio: improvements/fixes in generic parser: better headphone
mic and headset mic support, jack_modes hint consolidation, proper
beep attach/detachment, generalized power filter controls by David
Henningsson, et al
- HD-audio: Improved management of HDMI codec pins/converters
- HD-audio: Better pin/DAC assignment for VIA codecs
- HD-audio: Haswell HDMI workarounds
- HD-audio: ALC268 codec support, a few new quirks for Chromebooks
- USB: regression fixes: USB-MIDI autopm fix, the recent ISO latency
fix by Clemens Ladisch
- USB: support for DSD formats by Daniel Mack
- USB: A few UAC2 device endian/cock fixes by Eldad Zack
- USB: quirks for Emu 192kHz support, Novation Twitch DJ controller,
Yamaha THRxx devices
- HDSPM: updates for TCO controls by Adrian Knoth
- ASoC: Add a snd_soc_component object type for generic handling of
SoC and off-SoC components by Kuninori Morimoto,
- dmaengine: a large set of cleanups and conversions by Lars-Peter
Clausen
- ASoC DAPM: performance optimizations from Ryo Tsutsui
- ASoC DAPM: support for mixer control sharing by Stephen Warren
- ASoC: multiplatform ARM cleanups from Arnd Bergmann
- ASoC: new codec drivers for AK5385 and TAS5086 from Daniel Mack"
* tag 'sound-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (315 commits)
ALSA: usb-audio: caiaq: fix endianness bug in snd_usb_caiaq_maschine_dispatch
ALSA: asihpi: add format support check in snd_card_asihpi_capture_formats
ALSA: pcm_format_to_bits strong-typed conversion
ALSA: compress: fix the states to check for allowing read
ALSA: hda - Move Thinkpad X220 to use auto parser
ALSA: USB: adjust for changed 3.8 USB API
ALSA: usb - Avoid unnecessary sample rate changes on USB 2.0 clock sources
sound: oss/dmabuf: use dma_map_single
ALSA: ali5451: use mdelay instead of large udelay constants
ALSA: hda - Add the support for ALC286 codec
ALSA: usb-audio: USB quirk for Yamaha THR10C
ALSA: usb-audio: USB quirk for Yamaha THR5A
ALSA: usb-audio: USB quirk for Yamaha THR10
ALSA: usb-audio: Fix autopm error during probing
ALSA: snd-usb: try harder to find USB_DT_CS_ENDPOINT
ALSA: sound kconfig typo
ALSA: emu10k1: Fix dock firmware loading
ASoC: ux500: forward declare msp_i2s_platform_data
ASoC: davinci-mcasp: Add Support BCLK-to-LRCLK ratio for TDM modes
ASoC: davinci-pcm, davinci-mcasp: Clean up active_serializers
...
This commit is contained in:
commit
9992ba7232
267 changed files with 7241 additions and 3721 deletions
|
|
@ -56,8 +56,6 @@ struct snd_compr_runtime {
|
|||
u64 buffer_size;
|
||||
u32 fragment_size;
|
||||
u32 fragments;
|
||||
u64 hw_pointer;
|
||||
u64 app_pointer;
|
||||
u64 total_bytes_available;
|
||||
u64 total_bytes_transferred;
|
||||
wait_queue_head_t sleep;
|
||||
|
|
@ -121,7 +119,7 @@ struct snd_compr_ops {
|
|||
int (*trigger)(struct snd_compr_stream *stream, int cmd);
|
||||
int (*pointer)(struct snd_compr_stream *stream,
|
||||
struct snd_compr_tstamp *tstamp);
|
||||
int (*copy)(struct snd_compr_stream *stream, const char __user *buf,
|
||||
int (*copy)(struct snd_compr_stream *stream, char __user *buf,
|
||||
size_t count);
|
||||
int (*mmap)(struct snd_compr_stream *stream,
|
||||
struct vm_area_struct *vma);
|
||||
|
|
|
|||
|
|
@ -189,7 +189,6 @@ int _snd_ctl_add_slave(struct snd_kcontrol *master, struct snd_kcontrol *slave,
|
|||
*
|
||||
* Add a virtual slave control to the given master element created via
|
||||
* snd_ctl_create_virtual_master() beforehand.
|
||||
* Returns zero if successful or a negative error code.
|
||||
*
|
||||
* All slaves must be the same type (returning the same information
|
||||
* via info callback). The function doesn't check it, so it's your
|
||||
|
|
@ -199,6 +198,8 @@ int _snd_ctl_add_slave(struct snd_kcontrol *master, struct snd_kcontrol *slave,
|
|||
* at most two channels,
|
||||
* logarithmic volume control (dB level) thus no linear volume,
|
||||
* master can only attenuate the volume without gain
|
||||
*
|
||||
* Return: Zero if successful or a negative error code.
|
||||
*/
|
||||
static inline int
|
||||
snd_ctl_add_slave(struct snd_kcontrol *master, struct snd_kcontrol *slave)
|
||||
|
|
@ -219,6 +220,8 @@ snd_ctl_add_slave(struct snd_kcontrol *master, struct snd_kcontrol *slave)
|
|||
* When the control peeks the hardware values directly and the value
|
||||
* can be changed by other means than the put callback of the element,
|
||||
* this function should be used to keep the value always up-to-date.
|
||||
*
|
||||
* Return: Zero if successful or a negative error code.
|
||||
*/
|
||||
static inline int
|
||||
snd_ctl_add_slave_uncached(struct snd_kcontrol *master,
|
||||
|
|
|
|||
|
|
@ -229,7 +229,7 @@ int snd_register_device_for_dev(int type, struct snd_card *card,
|
|||
* This function uses the card's device pointer to link to the
|
||||
* correct &struct device.
|
||||
*
|
||||
* Returns zero if successful, or a negative error code on failure.
|
||||
* Return: Zero if successful, or a negative error code on failure.
|
||||
*/
|
||||
static inline int snd_register_device(int type, struct snd_card *card, int dev,
|
||||
const struct file_operations *f_ops,
|
||||
|
|
@ -379,18 +379,10 @@ void __snd_printk(unsigned int level, const char *file, int line,
|
|||
* snd_BUG_ON - debugging check macro
|
||||
* @cond: condition to evaluate
|
||||
*
|
||||
* When CONFIG_SND_DEBUG is set, this macro evaluates the given condition,
|
||||
* and call WARN() and returns the value if it's non-zero.
|
||||
*
|
||||
* When CONFIG_SND_DEBUG is not set, this just returns zero, and the given
|
||||
* condition is ignored.
|
||||
*
|
||||
* NOTE: the argument won't be evaluated at all when CONFIG_SND_DEBUG=n.
|
||||
* Thus, don't put any statement that influences on the code behavior,
|
||||
* such as pre/post increment, to the argument of this macro.
|
||||
* If you want to evaluate and give a warning, use standard WARN_ON().
|
||||
* Has the same behavior as WARN_ON when CONFIG_SND_DEBUG is set,
|
||||
* otherwise just evaluates the conditional and returns the value.
|
||||
*/
|
||||
#define snd_BUG_ON(cond) WARN((cond), "BUG? (%s)\n", __stringify(cond))
|
||||
#define snd_BUG_ON(cond) WARN_ON((cond))
|
||||
|
||||
#else /* !CONFIG_SND_DEBUG */
|
||||
|
||||
|
|
@ -400,11 +392,11 @@ __printf(2, 3)
|
|||
static inline void _snd_printd(int level, const char *format, ...) {}
|
||||
|
||||
#define snd_BUG() do { } while (0)
|
||||
static inline int __snd_bug_on(int cond)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#define snd_BUG_ON(cond) __snd_bug_on(0 && (cond)) /* always false */
|
||||
|
||||
#define snd_BUG_ON(condition) ({ \
|
||||
int __ret_warn_on = !!(condition); \
|
||||
unlikely(__ret_warn_on); \
|
||||
})
|
||||
|
||||
#endif /* CONFIG_SND_DEBUG */
|
||||
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
#define __SOUND_DMAENGINE_PCM_H__
|
||||
|
||||
#include <sound/pcm.h>
|
||||
#include <sound/soc.h>
|
||||
#include <linux/dmaengine.h>
|
||||
|
||||
/**
|
||||
|
|
@ -32,9 +33,6 @@ snd_pcm_substream_to_dma_direction(const struct snd_pcm_substream *substream)
|
|||
return DMA_DEV_TO_MEM;
|
||||
}
|
||||
|
||||
void snd_dmaengine_pcm_set_data(struct snd_pcm_substream *substream, void *data);
|
||||
void *snd_dmaengine_pcm_get_data(struct snd_pcm_substream *substream);
|
||||
|
||||
int snd_hwparams_to_dma_slave_config(const struct snd_pcm_substream *substream,
|
||||
const struct snd_pcm_hw_params *params, struct dma_slave_config *slave_config);
|
||||
int snd_dmaengine_pcm_trigger(struct snd_pcm_substream *substream, int cmd);
|
||||
|
|
@ -42,9 +40,100 @@ snd_pcm_uframes_t snd_dmaengine_pcm_pointer(struct snd_pcm_substream *substream)
|
|||
snd_pcm_uframes_t snd_dmaengine_pcm_pointer_no_residue(struct snd_pcm_substream *substream);
|
||||
|
||||
int snd_dmaengine_pcm_open(struct snd_pcm_substream *substream,
|
||||
dma_filter_fn filter_fn, void *filter_data);
|
||||
struct dma_chan *chan);
|
||||
int snd_dmaengine_pcm_close(struct snd_pcm_substream *substream);
|
||||
|
||||
int snd_dmaengine_pcm_open_request_chan(struct snd_pcm_substream *substream,
|
||||
dma_filter_fn filter_fn, void *filter_data);
|
||||
int snd_dmaengine_pcm_close_release_chan(struct snd_pcm_substream *substream);
|
||||
|
||||
struct dma_chan *snd_dmaengine_pcm_request_channel(dma_filter_fn filter_fn,
|
||||
void *filter_data);
|
||||
struct dma_chan *snd_dmaengine_pcm_get_chan(struct snd_pcm_substream *substream);
|
||||
|
||||
/**
|
||||
* struct snd_dmaengine_dai_dma_data - DAI DMA configuration data
|
||||
* @addr: Address of the DAI data source or destination register.
|
||||
* @addr_width: Width of the DAI data source or destination register.
|
||||
* @maxburst: Maximum number of words(note: words, as in units of the
|
||||
* src_addr_width member, not bytes) that can be send to or received from the
|
||||
* DAI in one burst.
|
||||
* @slave_id: Slave requester id for the DMA channel.
|
||||
* @filter_data: Custom DMA channel filter data, this will usually be used when
|
||||
* requesting the DMA channel.
|
||||
*/
|
||||
struct snd_dmaengine_dai_dma_data {
|
||||
dma_addr_t addr;
|
||||
enum dma_slave_buswidth addr_width;
|
||||
u32 maxburst;
|
||||
unsigned int slave_id;
|
||||
void *filter_data;
|
||||
};
|
||||
|
||||
void snd_dmaengine_pcm_set_config_from_dai_data(
|
||||
const struct snd_pcm_substream *substream,
|
||||
const struct snd_dmaengine_dai_dma_data *dma_data,
|
||||
struct dma_slave_config *config);
|
||||
|
||||
|
||||
/*
|
||||
* Try to request the DMA channel using compat_request_channel or
|
||||
* compat_filter_fn if it couldn't be requested through devicetree.
|
||||
*/
|
||||
#define SND_DMAENGINE_PCM_FLAG_COMPAT BIT(0)
|
||||
/*
|
||||
* Don't try to request the DMA channels through devicetree. This flag only
|
||||
* makes sense if SND_DMAENGINE_PCM_FLAG_COMPAT is set as well.
|
||||
*/
|
||||
#define SND_DMAENGINE_PCM_FLAG_NO_DT BIT(1)
|
||||
/*
|
||||
* The platforms dmaengine driver does not support reporting the amount of
|
||||
* bytes that are still left to transfer.
|
||||
*/
|
||||
#define SND_DMAENGINE_PCM_FLAG_NO_RESIDUE BIT(2)
|
||||
/*
|
||||
* The PCM is half duplex and the DMA channel is shared between capture and
|
||||
* playback.
|
||||
*/
|
||||
#define SND_DMAENGINE_PCM_FLAG_HALF_DUPLEX BIT(3)
|
||||
|
||||
/**
|
||||
* struct snd_dmaengine_pcm_config - Configuration data for dmaengine based PCM
|
||||
* @prepare_slave_config: Callback used to fill in the DMA slave_config for a
|
||||
* PCM substream. Will be called from the PCM drivers hwparams callback.
|
||||
* @compat_request_channel: Callback to request a DMA channel for platforms
|
||||
* which do not use devicetree.
|
||||
* @compat_filter_fn: Will be used as the filter function when requesting a
|
||||
* channel for platforms which do not use devicetree. The filter parameter
|
||||
* will be the DAI's DMA data.
|
||||
* @pcm_hardware: snd_pcm_hardware struct to be used for the PCM.
|
||||
* @prealloc_buffer_size: Size of the preallocated audio buffer.
|
||||
*
|
||||
* Note: If both compat_request_channel and compat_filter_fn are set
|
||||
* compat_request_channel will be used to request the channel and
|
||||
* compat_filter_fn will be ignored. Otherwise the channel will be requested
|
||||
* using dma_request_channel with compat_filter_fn as the filter function.
|
||||
*/
|
||||
struct snd_dmaengine_pcm_config {
|
||||
int (*prepare_slave_config)(struct snd_pcm_substream *substream,
|
||||
struct snd_pcm_hw_params *params,
|
||||
struct dma_slave_config *slave_config);
|
||||
struct dma_chan *(*compat_request_channel)(
|
||||
struct snd_soc_pcm_runtime *rtd,
|
||||
struct snd_pcm_substream *substream);
|
||||
dma_filter_fn compat_filter_fn;
|
||||
|
||||
const struct snd_pcm_hardware *pcm_hardware;
|
||||
unsigned int prealloc_buffer_size;
|
||||
};
|
||||
|
||||
int snd_dmaengine_pcm_register(struct device *dev,
|
||||
const struct snd_dmaengine_pcm_config *config,
|
||||
unsigned int flags);
|
||||
void snd_dmaengine_pcm_unregister(struct device *dev);
|
||||
|
||||
int snd_dmaengine_pcm_prepare_slave_config(struct snd_pcm_substream *substream,
|
||||
struct snd_pcm_hw_params *params,
|
||||
struct dma_slave_config *slave_config);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1787,6 +1787,7 @@ struct snd_emu10k1 {
|
|||
unsigned int next_free_voice;
|
||||
|
||||
const struct firmware *firmware;
|
||||
const struct firmware *dock_fw;
|
||||
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
unsigned int *saved_ptr;
|
||||
|
|
|
|||
|
|
@ -181,6 +181,8 @@ struct snd_pcm_ops {
|
|||
#define SNDRV_PCM_FMTBIT_G723_24_1B _SNDRV_PCM_FMTBIT(G723_24_1B)
|
||||
#define SNDRV_PCM_FMTBIT_G723_40 _SNDRV_PCM_FMTBIT(G723_40)
|
||||
#define SNDRV_PCM_FMTBIT_G723_40_1B _SNDRV_PCM_FMTBIT(G723_40_1B)
|
||||
#define SNDRV_PCM_FMTBIT_DSD_U8 _SNDRV_PCM_FMTBIT(DSD_U8)
|
||||
#define SNDRV_PCM_FMTBIT_DSD_U16_LE _SNDRV_PCM_FMTBIT(DSD_U16_LE)
|
||||
|
||||
#ifdef SNDRV_LITTLE_ENDIAN
|
||||
#define SNDRV_PCM_FMTBIT_S16 SNDRV_PCM_FMTBIT_S16_LE
|
||||
|
|
@ -659,7 +661,7 @@ static inline snd_pcm_sframes_t snd_pcm_capture_hw_avail(struct snd_pcm_runtime
|
|||
*
|
||||
* Checks whether enough free space is available on the playback buffer.
|
||||
*
|
||||
* Returns non-zero if available, or zero if not.
|
||||
* Return: Non-zero if available, or zero if not.
|
||||
*/
|
||||
static inline int snd_pcm_playback_ready(struct snd_pcm_substream *substream)
|
||||
{
|
||||
|
|
@ -673,7 +675,7 @@ static inline int snd_pcm_playback_ready(struct snd_pcm_substream *substream)
|
|||
*
|
||||
* Checks whether enough capture data is available on the capture buffer.
|
||||
*
|
||||
* Returns non-zero if available, or zero if not.
|
||||
* Return: Non-zero if available, or zero if not.
|
||||
*/
|
||||
static inline int snd_pcm_capture_ready(struct snd_pcm_substream *substream)
|
||||
{
|
||||
|
|
@ -685,10 +687,10 @@ static inline int snd_pcm_capture_ready(struct snd_pcm_substream *substream)
|
|||
* snd_pcm_playback_data - check whether any data exists on the playback buffer
|
||||
* @substream: the pcm substream instance
|
||||
*
|
||||
* Checks whether any data exists on the playback buffer. If stop_threshold
|
||||
* is bigger or equal to boundary, then this function returns always non-zero.
|
||||
* Checks whether any data exists on the playback buffer.
|
||||
*
|
||||
* Returns non-zero if exists, or zero if not.
|
||||
* Return: Non-zero if any data exists, or zero if not. If stop_threshold
|
||||
* is bigger or equal to boundary, then this function returns always non-zero.
|
||||
*/
|
||||
static inline int snd_pcm_playback_data(struct snd_pcm_substream *substream)
|
||||
{
|
||||
|
|
@ -705,7 +707,7 @@ static inline int snd_pcm_playback_data(struct snd_pcm_substream *substream)
|
|||
*
|
||||
* Checks whether the playback buffer is empty.
|
||||
*
|
||||
* Returns non-zero if empty, or zero if not.
|
||||
* Return: Non-zero if empty, or zero if not.
|
||||
*/
|
||||
static inline int snd_pcm_playback_empty(struct snd_pcm_substream *substream)
|
||||
{
|
||||
|
|
@ -719,7 +721,7 @@ static inline int snd_pcm_playback_empty(struct snd_pcm_substream *substream)
|
|||
*
|
||||
* Checks whether the capture buffer is empty.
|
||||
*
|
||||
* Returns non-zero if empty, or zero if not.
|
||||
* Return: Non-zero if empty, or zero if not.
|
||||
*/
|
||||
static inline int snd_pcm_capture_empty(struct snd_pcm_substream *substream)
|
||||
{
|
||||
|
|
@ -852,7 +854,7 @@ int snd_pcm_format_big_endian(snd_pcm_format_t format);
|
|||
* snd_pcm_format_cpu_endian - Check the PCM format is CPU-endian
|
||||
* @format: the format to check
|
||||
*
|
||||
* Returns 1 if the given PCM format is CPU-endian, 0 if
|
||||
* Return: 1 if the given PCM format is CPU-endian, 0 if
|
||||
* opposite, or a negative error code if endian not specified.
|
||||
*/
|
||||
int snd_pcm_format_cpu_endian(snd_pcm_format_t format);
|
||||
|
|
@ -963,7 +965,7 @@ struct page *snd_pcm_lib_get_vmalloc_page(struct snd_pcm_substream *substream,
|
|||
* contiguous in kernel virtual space, but not in physical memory. Use this
|
||||
* if the buffer is accessed by kernel code but not by device DMA.
|
||||
*
|
||||
* Returns 1 if the buffer was changed, 0 if not changed, or a negative error
|
||||
* Return: 1 if the buffer was changed, 0 if not changed, or a negative error
|
||||
* code.
|
||||
*/
|
||||
static int snd_pcm_lib_alloc_vmalloc_buffer
|
||||
|
|
@ -975,6 +977,9 @@ static int snd_pcm_lib_alloc_vmalloc_buffer
|
|||
*
|
||||
* This function works like snd_pcm_lib_alloc_vmalloc_buffer(), but uses
|
||||
* vmalloc_32(), i.e., the pages are allocated from 32-bit-addressable memory.
|
||||
*
|
||||
* Return: 1 if the buffer was changed, 0 if not changed, or a negative error
|
||||
* code.
|
||||
*/
|
||||
static int snd_pcm_lib_alloc_vmalloc_32_buffer
|
||||
(struct snd_pcm_substream *substream, size_t size);
|
||||
|
|
@ -1070,6 +1075,8 @@ const char *snd_pcm_format_name(snd_pcm_format_t format);
|
|||
/**
|
||||
* snd_pcm_stream_str - Get a string naming the direction of a stream
|
||||
* @substream: the pcm substream instance
|
||||
*
|
||||
* Return: A string naming the direction of the stream.
|
||||
*/
|
||||
static inline const char *snd_pcm_stream_str(struct snd_pcm_substream *substream)
|
||||
{
|
||||
|
|
@ -1126,4 +1133,10 @@ int snd_pcm_add_chmap_ctls(struct snd_pcm *pcm, int stream,
|
|||
unsigned long private_value,
|
||||
struct snd_pcm_chmap **info_ret);
|
||||
|
||||
/* Strong-typed conversion of pcm_format to bitwise */
|
||||
static inline u64 pcm_format_to_bits(snd_pcm_format_t pcm_format)
|
||||
{
|
||||
return 1ULL << (__force int) pcm_format;
|
||||
}
|
||||
|
||||
#endif /* __SOUND_PCM_H */
|
||||
|
|
|
|||
|
|
@ -95,14 +95,6 @@ struct snd_soc_dai_driver;
|
|||
struct snd_soc_dai;
|
||||
struct snd_ac97_bus_ops;
|
||||
|
||||
/* Digital Audio Interface registration */
|
||||
int snd_soc_register_dai(struct device *dev,
|
||||
struct snd_soc_dai_driver *dai_drv);
|
||||
void snd_soc_unregister_dai(struct device *dev);
|
||||
int snd_soc_register_dais(struct device *dev,
|
||||
struct snd_soc_dai_driver *dai_drv, size_t count);
|
||||
void snd_soc_unregister_dais(struct device *dev, size_t count);
|
||||
|
||||
/* Digital Audio Interface clocking API.*/
|
||||
int snd_soc_dai_set_sysclk(struct snd_soc_dai *dai, int clk_id,
|
||||
unsigned int freq, int dir);
|
||||
|
|
|
|||
|
|
@ -566,7 +566,6 @@ struct snd_soc_dapm_update {
|
|||
|
||||
/* DAPM context */
|
||||
struct snd_soc_dapm_context {
|
||||
int n_widgets; /* number of widgets in this context */
|
||||
enum snd_soc_bias_level bias_level;
|
||||
enum snd_soc_bias_level suspend_bias_level;
|
||||
struct delayed_work delayed_work;
|
||||
|
|
|
|||
|
|
@ -324,6 +324,8 @@ struct snd_soc_dai_link;
|
|||
struct snd_soc_platform_driver;
|
||||
struct snd_soc_codec;
|
||||
struct snd_soc_codec_driver;
|
||||
struct snd_soc_component;
|
||||
struct snd_soc_component_driver;
|
||||
struct soc_enum;
|
||||
struct snd_soc_jack;
|
||||
struct snd_soc_jack_zone;
|
||||
|
|
@ -371,12 +373,20 @@ int snd_soc_suspend(struct device *dev);
|
|||
int snd_soc_resume(struct device *dev);
|
||||
int snd_soc_poweroff(struct device *dev);
|
||||
int snd_soc_register_platform(struct device *dev,
|
||||
struct snd_soc_platform_driver *platform_drv);
|
||||
const struct snd_soc_platform_driver *platform_drv);
|
||||
void snd_soc_unregister_platform(struct device *dev);
|
||||
int snd_soc_add_platform(struct device *dev, struct snd_soc_platform *platform,
|
||||
const struct snd_soc_platform_driver *platform_drv);
|
||||
void snd_soc_remove_platform(struct snd_soc_platform *platform);
|
||||
struct snd_soc_platform *snd_soc_lookup_platform(struct device *dev);
|
||||
int snd_soc_register_codec(struct device *dev,
|
||||
const struct snd_soc_codec_driver *codec_drv,
|
||||
struct snd_soc_dai_driver *dai_drv, int num_dai);
|
||||
void snd_soc_unregister_codec(struct device *dev);
|
||||
int snd_soc_register_component(struct device *dev,
|
||||
const struct snd_soc_component_driver *cmpnt_drv,
|
||||
struct snd_soc_dai_driver *dai_drv, int num_dai);
|
||||
void snd_soc_unregister_component(struct device *dev);
|
||||
int snd_soc_codec_volatile_register(struct snd_soc_codec *codec,
|
||||
unsigned int reg);
|
||||
int snd_soc_codec_readable_register(struct snd_soc_codec *codec,
|
||||
|
|
@ -801,10 +811,10 @@ struct snd_soc_platform_driver {
|
|||
struct snd_soc_dai *);
|
||||
|
||||
/* platform stream pcm ops */
|
||||
struct snd_pcm_ops *ops;
|
||||
const struct snd_pcm_ops *ops;
|
||||
|
||||
/* platform stream compress ops */
|
||||
struct snd_compr_ops *compr_ops;
|
||||
const struct snd_compr_ops *compr_ops;
|
||||
|
||||
/* platform stream completion event */
|
||||
int (*stream_event)(struct snd_soc_dapm_context *dapm, int event);
|
||||
|
|
@ -823,7 +833,7 @@ struct snd_soc_platform {
|
|||
const char *name;
|
||||
int id;
|
||||
struct device *dev;
|
||||
struct snd_soc_platform_driver *driver;
|
||||
const struct snd_soc_platform_driver *driver;
|
||||
struct mutex mutex;
|
||||
|
||||
unsigned int suspended:1; /* platform is suspended */
|
||||
|
|
@ -841,6 +851,20 @@ struct snd_soc_platform {
|
|||
#endif
|
||||
};
|
||||
|
||||
struct snd_soc_component_driver {
|
||||
const char *name;
|
||||
};
|
||||
|
||||
struct snd_soc_component {
|
||||
const char *name;
|
||||
int id;
|
||||
int num_dai;
|
||||
struct device *dev;
|
||||
struct list_head list;
|
||||
|
||||
const struct snd_soc_component_driver *driver;
|
||||
};
|
||||
|
||||
struct snd_soc_dai_link {
|
||||
/* config - must be set by machine driver */
|
||||
const char *name; /* Codec name */
|
||||
|
|
@ -1086,7 +1110,6 @@ struct soc_enum {
|
|||
unsigned int mask;
|
||||
const char * const *texts;
|
||||
const unsigned int *values;
|
||||
void *dapm;
|
||||
};
|
||||
|
||||
/* codec IO */
|
||||
|
|
|
|||
7
include/sound/tas5086.h
Normal file
7
include/sound/tas5086.h
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
#ifndef _SND_SOC_CODEC_TAS5086_H_
|
||||
#define _SND_SOC_CODEC_TAS5086_H_
|
||||
|
||||
#define TAS5086_CLK_IDX_MCLK 0
|
||||
#define TAS5086_CLK_IDX_SCLK 1
|
||||
|
||||
#endif /* _SND_SOC_CODEC_TAS5086_H_ */
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
/*
|
||||
* Copyright 2011 NVIDIA, Inc.
|
||||
*
|
||||
* This software is licensed under the terms of the GNU General Public
|
||||
* License version 2, as published by the Free Software Foundation, and
|
||||
* may be copied, distributed, and modified under those terms.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __SOUND_TEGRA_WM38903_H
|
||||
#define __SOUND_TEGRA_WM38903_H
|
||||
|
||||
struct tegra_wm8903_platform_data {
|
||||
int gpio_spkr_en;
|
||||
int gpio_hp_det;
|
||||
int gpio_hp_mute;
|
||||
int gpio_int_mic_en;
|
||||
int gpio_ext_mic_en;
|
||||
};
|
||||
|
||||
#endif
|
||||
Loading…
Reference in a new issue