mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-25 22:23:14 -04:00
sound updates for 4.6-rc1
After a heavy storm by syzkaller in 4.5 cycle, we have relatively few
changes in the core at this time while a lot of changes are found in
the driver side, unsurprisingly. Below are some highlights:
ALSA core:
- A few more hardening in ALSA timer codes
- An extension of sequencer API for advertising the card / pid
- Small fixes in compress-offload and jack layers
HD-audio:
- Dynamic PCM assignment in HDMI/DP codec; preparation for upcoming
DP-MST support
- Lots of code refactoring for sharing with ASoC SKL driver
- Regression fixes for Intel HDMI/DP
- Fixups for CX20724 codec, Lenovo AiO
USB-audio:
- Add quirk_alias option to make quirk debugging easier
- Fixes for possible Oops by malformed firmware
Firewire:
- Add support for FW-1804 in tascam driver
- Improvements / changes in card registration, multi stream handling,
etc for DICE
- Lots of code refactoring
ASoC:
- Enhancements of still ongoing topology API
- Lots of commits for Intel Skylake support including HDMI support
- A few Intel Atom driver updates for recent devices
- Lots of improvements to the Renesas drivers
- Capture support for Qualcomm drivers
- Support for TI DaVinci DRA7xxx devices
- New machine drivers for Freescale systems with Cirrus CODECs,
Mediatek systems with RT5650 CODECs
- New CPU drivers for Allwinner S/PDIF controllers
- New CODEC drivers for Maxim MAX9867 and MAX98926 and Realtek RT5514
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABCAAGBQJW69UAAAoJEGwxgFQ9KSmkoaAQAJ6uBco1gqTmYkJGyLMRRblT
BxEQ0NMSlPrNEJpR6GOYknrdPZiA4WfxT1zhswDQoNvSKery3bn3aOGfWHA9I+9j
TRUwHkOAlRCcwgTfy70pRS0fcAx34y9nTcAWsVn9RbrMP3ydkwKyMXRqTwqYr5u5
UU53PSdwhUO8q/PomvBeip8nvw7zrV+06nVbEMUnIQlgp165n/qq0sRFBVkRBBJ7
ooqe6VW6F2Es3Zh+W9Vp/qn9OpZEdDCKvmICX1RIFJUgYRRxbL+L021TGjkaXVmT
Or9L9StRYePZsCo1I1vsYUbYc6+Y3qDmqViGhREHBZ27EY8G1Utk7wy959vt0eFj
1xHynw36kmjrw/QlPraJBRuYIQh4SRAcXhw+wQdM5rxdp7gDjikhkezHZQWrvQAJ
5XXitZhVVNa9DRS5ZRwnW5nT/emQ+KBuJyl9gyAL1HaoZoYnDvRkfe9CGpgj7TRP
wYcnL+rKL9x8eiJY5VTfL9rIxTgNYXvuPPBgdmJEp8qu5de8O1g5UN0xHSGf3yhr
DVE5r/2J+gYNprsSF9DV6pfFQuh/Efw9XW2IbK6k6WF4labWGeD7rLrI4t9aJcXv
PJ1FY/sUFhHZhZjHlGbR9emK+BLtZweFvOAvY7dD74ON65D5tYXvHPo0QTc4V5Op
d0eDg0pcTdFLDqq8ZLLr
=Cc+v
-----END PGP SIGNATURE-----
Merge tag 'sound-4.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound updates from Takashi Iwai:
"After a heavy storm by syzkaller in 4.5 cycle, we have relatively few
changes in the core at this time while a lot of changes are found in
the driver side, unsurprisingly. Below are some highlights:
ALSA core:
- A few more hardening in ALSA timer codes
- An extension of sequencer API for advertising the card / pid
- Small fixes in compress-offload and jack layers
HD-audio:
- Dynamic PCM assignment in HDMI/DP codec; preparation for upcoming
DP-MST support
- Lots of code refactoring for sharing with ASoC SKL driver
- Regression fixes for Intel HDMI/DP
- Fixups for CX20724 codec, Lenovo AiO
USB-audio:
- Add quirk_alias option to make quirk debugging easier
- Fixes for possible Oops by malformed firmware
Firewire:
- Add support for FW-1804 in tascam driver
- Improvements / changes in card registration, multi stream handling,
etc for DICE
- Lots of code refactoring
ASoC:
- Enhancements of still ongoing topology API
- Lots of commits for Intel Skylake support including HDMI support
- A few Intel Atom driver updates for recent devices
- Lots of improvements to the Renesas drivers
- Capture support for Qualcomm drivers
- Support for TI DaVinci DRA7xxx devices
- New machine drivers for Freescale systems with Cirrus CODECs,
Mediatek systems with RT5650 CODECs
- New CPU drivers for Allwinner S/PDIF controllers
- New CODEC drivers for Maxim MAX9867 and MAX98926 and Realtek RT5514"
* tag 'sound-4.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (291 commits)
ALSA: hda - Fix mutex deadlock at HDMI/DP hotplug
ALSA: ctl: change return value in compatibility layer so that it's the same value in core implementation
ALSA: mixart: silence an uninitialized variable warning
ALSA: usb-audio: Add sanity checks for endpoint accesses
ALSA: usb-audio: Minor code cleanup in create_fixed_stream_quirk()
ALSA: usb-audio: Fix NULL dereference in create_fixed_stream_quirk()
ALSA: hda - Limit i915 HDMI binding only for HSW and later
ALSA: hda - Fix unconditional GPIO toggle via automute
ALSA: mixart: silence unitialized variable warnings
ALSA: hda - Fixes double fault in nvhdmi_chmap_cea_alloc_validate_get_type
ALSA: intel8x0: Add clock quirk entry for AD1981B on IBM ThinkPad X41.
ALSA: hda - Add new GPU codec ID 0x10de0082 to snd-hda
ASoC: rsnd: add simplified module explanation
ASoC: hdac_hdmi: Add broxton device ID
ASoC: Intel: Bxtn: Add Broxton PCI ID
ASoC: Intel: Skylake: Move Skylake dsp ops & loader ops
ASoC: Intel: add dmabuffer to common sst_dsp
ASoC: Intel: Skylake: Unstatify skl_dsp_enable_core
ASoC: Intel: Skylake: Fix whitepsace issues
ASoC: Intel: Skylake: Move module id defines
...
This commit is contained in:
commit
021f163d69
202 changed files with 12770 additions and 4360 deletions
|
|
@ -403,6 +403,18 @@ static inline int drm_eld_size(const uint8_t *eld)
|
|||
return DRM_ELD_HEADER_BLOCK_SIZE + eld[DRM_ELD_BASELINE_ELD_LEN] * 4;
|
||||
}
|
||||
|
||||
/**
|
||||
* drm_eld_get_conn_type - Get device type hdmi/dp connected
|
||||
* @eld: pointer to an ELD memory structure
|
||||
*
|
||||
* The caller need to use %DRM_ELD_CONN_TYPE_HDMI or %DRM_ELD_CONN_TYPE_DP to
|
||||
* identify the display type connected.
|
||||
*/
|
||||
static inline u8 drm_eld_get_conn_type(const uint8_t *eld)
|
||||
{
|
||||
return eld[DRM_ELD_SAD_COUNT_CONN_TYPE] & DRM_ELD_CONN_TYPE_MASK;
|
||||
}
|
||||
|
||||
struct edid *drm_do_get_edid(struct drm_connector *connector,
|
||||
int (*get_edid_block)(void *data, u8 *buf, unsigned int block,
|
||||
size_t len),
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Driver for ADAU1761/ADAU1461/ADAU1761/ADAU1961/ADAU1781/ADAU1781 codecs
|
||||
* Driver for ADAU1361/ADAU1461/ADAU1761/ADAU1961/ADAU1381/ADAU1781 codecs
|
||||
*
|
||||
* Copyright 2011-2014 Analog Devices Inc.
|
||||
* Author: Lars-Peter Clausen <lars@metafoo.de>
|
||||
|
|
|
|||
76
include/sound/hda_chmap.h
Normal file
76
include/sound/hda_chmap.h
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
/*
|
||||
* For multichannel support
|
||||
*/
|
||||
|
||||
#ifndef __SOUND_HDA_CHMAP_H
|
||||
#define __SOUND_HDA_CHMAP_H
|
||||
|
||||
#include <sound/pcm.h>
|
||||
#include <sound/hdaudio.h>
|
||||
|
||||
|
||||
#define SND_PRINT_CHANNEL_ALLOCATION_ADVISED_BUFSIZE 80
|
||||
|
||||
struct hdac_cea_channel_speaker_allocation {
|
||||
int ca_index;
|
||||
int speakers[8];
|
||||
|
||||
/* derived values, just for convenience */
|
||||
int channels;
|
||||
int spk_mask;
|
||||
};
|
||||
struct hdac_chmap;
|
||||
|
||||
struct hdac_chmap_ops {
|
||||
/*
|
||||
* Helpers for producing the channel map TLVs. These can be overridden
|
||||
* for devices that have non-standard mapping requirements.
|
||||
*/
|
||||
int (*chmap_cea_alloc_validate_get_type)(struct hdac_chmap *chmap,
|
||||
struct hdac_cea_channel_speaker_allocation *cap, int channels);
|
||||
void (*cea_alloc_to_tlv_chmap)(struct hdac_chmap *hchmap,
|
||||
struct hdac_cea_channel_speaker_allocation *cap,
|
||||
unsigned int *chmap, int channels);
|
||||
|
||||
/* check that the user-given chmap is supported */
|
||||
int (*chmap_validate)(struct hdac_chmap *hchmap, int ca,
|
||||
int channels, unsigned char *chmap);
|
||||
|
||||
void (*get_chmap)(struct hdac_device *hdac, int pcm_idx,
|
||||
unsigned char *chmap);
|
||||
void (*set_chmap)(struct hdac_device *hdac, int pcm_idx,
|
||||
unsigned char *chmap, int prepared);
|
||||
bool (*is_pcm_attached)(struct hdac_device *hdac, int pcm_idx);
|
||||
|
||||
/* get and set channel assigned to each HDMI ASP (audio sample packet) slot */
|
||||
int (*pin_get_slot_channel)(struct hdac_device *codec,
|
||||
hda_nid_t pin_nid, int asp_slot);
|
||||
int (*pin_set_slot_channel)(struct hdac_device *codec,
|
||||
hda_nid_t pin_nid, int asp_slot, int channel);
|
||||
void (*set_channel_count)(struct hdac_device *codec,
|
||||
hda_nid_t cvt_nid, int chs);
|
||||
};
|
||||
|
||||
struct hdac_chmap {
|
||||
unsigned int channels_max; /* max over all cvts */
|
||||
struct hdac_chmap_ops ops;
|
||||
struct hdac_device *hdac;
|
||||
};
|
||||
|
||||
void snd_hdac_register_chmap_ops(struct hdac_device *hdac,
|
||||
struct hdac_chmap *chmap);
|
||||
int snd_hdac_channel_allocation(struct hdac_device *hdac, int spk_alloc,
|
||||
int channels, bool chmap_set,
|
||||
bool non_pcm, unsigned char *map);
|
||||
int snd_hdac_get_active_channels(int ca);
|
||||
void snd_hdac_setup_channel_mapping(struct hdac_chmap *chmap,
|
||||
hda_nid_t pin_nid, bool non_pcm, int ca,
|
||||
int channels, unsigned char *map,
|
||||
bool chmap_set);
|
||||
void snd_hdac_print_channel_allocation(int spk_alloc, char *buf, int buflen);
|
||||
struct hdac_cea_channel_speaker_allocation *snd_hdac_get_ch_alloc_from_ca(int ca);
|
||||
int snd_hdac_chmap_to_spk_mask(unsigned char c);
|
||||
int snd_hdac_spk_to_chmap(int spk);
|
||||
int snd_hdac_add_chmap_ctls(struct snd_pcm *pcm, int pcm_idx,
|
||||
struct hdac_chmap *chmap);
|
||||
#endif /* __SOUND_HDA_CHMAP_H */
|
||||
|
|
@ -168,11 +168,13 @@ int snd_hdac_power_up(struct hdac_device *codec);
|
|||
int snd_hdac_power_down(struct hdac_device *codec);
|
||||
int snd_hdac_power_up_pm(struct hdac_device *codec);
|
||||
int snd_hdac_power_down_pm(struct hdac_device *codec);
|
||||
int snd_hdac_keep_power_up(struct hdac_device *codec);
|
||||
#else
|
||||
static inline int snd_hdac_power_up(struct hdac_device *codec) { return 0; }
|
||||
static inline int snd_hdac_power_down(struct hdac_device *codec) { return 0; }
|
||||
static inline int snd_hdac_power_up_pm(struct hdac_device *codec) { return 0; }
|
||||
static inline int snd_hdac_power_down_pm(struct hdac_device *codec) { return 0; }
|
||||
static inline int snd_hdac_keep_power_up(struct hdac_device *codec) { return 0; }
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -72,14 +72,16 @@ enum snd_jack_types {
|
|||
#define SND_JACK_SWITCH_TYPES 6
|
||||
|
||||
struct snd_jack {
|
||||
struct input_dev *input_dev;
|
||||
struct list_head kctl_list;
|
||||
struct snd_card *card;
|
||||
const char *id;
|
||||
#ifdef CONFIG_SND_JACK_INPUT_DEV
|
||||
struct input_dev *input_dev;
|
||||
int registered;
|
||||
int type;
|
||||
const char *id;
|
||||
char name[100];
|
||||
unsigned int key[6]; /* Keep in sync with definitions above */
|
||||
#endif /* CONFIG_SND_JACK_INPUT_DEV */
|
||||
void *private_data;
|
||||
void (*private_free)(struct snd_jack *);
|
||||
};
|
||||
|
|
@ -89,10 +91,11 @@ struct snd_jack {
|
|||
int snd_jack_new(struct snd_card *card, const char *id, int type,
|
||||
struct snd_jack **jack, bool initial_kctl, bool phantom_jack);
|
||||
int snd_jack_add_new_kctl(struct snd_jack *jack, const char * name, int mask);
|
||||
#ifdef CONFIG_SND_JACK_INPUT_DEV
|
||||
void snd_jack_set_parent(struct snd_jack *jack, struct device *parent);
|
||||
int snd_jack_set_key(struct snd_jack *jack, enum snd_jack_types type,
|
||||
int keytype);
|
||||
|
||||
#endif
|
||||
void snd_jack_report(struct snd_jack *jack, int status);
|
||||
|
||||
#else
|
||||
|
|
@ -107,6 +110,13 @@ static inline int snd_jack_add_new_kctl(struct snd_jack *jack, const char * name
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline void snd_jack_report(struct snd_jack *jack, int status)
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#if !defined(CONFIG_SND_JACK) || !defined(CONFIG_SND_JACK_INPUT_DEV)
|
||||
static inline void snd_jack_set_parent(struct snd_jack *jack,
|
||||
struct device *parent)
|
||||
{
|
||||
|
|
@ -118,11 +128,6 @@ static inline int snd_jack_set_key(struct snd_jack *jack,
|
|||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void snd_jack_report(struct snd_jack *jack, int status)
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* !CONFIG_SND_JACK || !CONFIG_SND_JACK_INPUT_DEV */
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1093,6 +1093,8 @@ unsigned int snd_pcm_rate_to_rate_bit(unsigned int rate);
|
|||
unsigned int snd_pcm_rate_bit_to_rate(unsigned int rate_bit);
|
||||
unsigned int snd_pcm_rate_mask_intersect(unsigned int rates_a,
|
||||
unsigned int rates_b);
|
||||
unsigned int snd_pcm_rate_range_to_bits(unsigned int rate_min,
|
||||
unsigned int rate_max);
|
||||
|
||||
/**
|
||||
* snd_pcm_set_runtime_buffer - Set the PCM runtime buffer
|
||||
|
|
|
|||
|
|
@ -56,12 +56,6 @@ struct snd_soc_dobj_widget {
|
|||
unsigned int kcontrol_enum:1; /* this widget is an enum kcontrol */
|
||||
};
|
||||
|
||||
/* dynamic PCM DAI object */
|
||||
struct snd_soc_dobj_pcm_dai {
|
||||
struct snd_soc_tplg_pcm_dai *pd;
|
||||
unsigned int count;
|
||||
};
|
||||
|
||||
/* generic dynamic object - all dynamic objects belong to this struct */
|
||||
struct snd_soc_dobj {
|
||||
enum snd_soc_dobj_type type;
|
||||
|
|
@ -71,7 +65,6 @@ struct snd_soc_dobj {
|
|||
union {
|
||||
struct snd_soc_dobj_control control;
|
||||
struct snd_soc_dobj_widget widget;
|
||||
struct snd_soc_dobj_pcm_dai pcm_dai;
|
||||
};
|
||||
void *private; /* core does not touch this */
|
||||
};
|
||||
|
|
@ -126,10 +119,16 @@ struct snd_soc_tplg_ops {
|
|||
int (*widget_unload)(struct snd_soc_component *,
|
||||
struct snd_soc_dobj *);
|
||||
|
||||
/* FE - used for any driver specific init */
|
||||
int (*pcm_dai_load)(struct snd_soc_component *,
|
||||
struct snd_soc_tplg_pcm_dai *pcm_dai, int num_fe);
|
||||
int (*pcm_dai_unload)(struct snd_soc_component *,
|
||||
/* FE DAI - used for any driver specific init */
|
||||
int (*dai_load)(struct snd_soc_component *,
|
||||
struct snd_soc_dai_driver *dai_drv);
|
||||
int (*dai_unload)(struct snd_soc_component *,
|
||||
struct snd_soc_dobj *);
|
||||
|
||||
/* DAI link - used for any driver specific init */
|
||||
int (*link_load)(struct snd_soc_component *,
|
||||
struct snd_soc_dai_link *link);
|
||||
int (*link_unload)(struct snd_soc_component *,
|
||||
struct snd_soc_dobj *);
|
||||
|
||||
/* callback to handle vendor bespoke data */
|
||||
|
|
|
|||
|
|
@ -27,7 +27,6 @@
|
|||
#include <sound/compress_driver.h>
|
||||
#include <sound/control.h>
|
||||
#include <sound/ac97_codec.h>
|
||||
#include <sound/soc-topology.h>
|
||||
|
||||
/*
|
||||
* Convenience kcontrol builders
|
||||
|
|
@ -404,6 +403,7 @@ struct snd_soc_jack_zone;
|
|||
struct snd_soc_jack_pin;
|
||||
#include <sound/soc-dapm.h>
|
||||
#include <sound/soc-dpcm.h>
|
||||
#include <sound/soc-topology.h>
|
||||
|
||||
struct snd_soc_jack_gpio;
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
#include <sound/asound.h>
|
||||
|
||||
/** version of the sequencer */
|
||||
#define SNDRV_SEQ_VERSION SNDRV_PROTOCOL_VERSION (1, 0, 1)
|
||||
#define SNDRV_SEQ_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 2)
|
||||
|
||||
/**
|
||||
* definition of sequencer event types
|
||||
|
|
@ -357,7 +357,9 @@ struct snd_seq_client_info {
|
|||
unsigned char event_filter[32]; /* event filter bitmap */
|
||||
int num_ports; /* RO: number of ports */
|
||||
int event_lost; /* number of lost events */
|
||||
char reserved[64]; /* for future use */
|
||||
int card; /* RO: card number[kernel] */
|
||||
int pid; /* RO: pid[user] */
|
||||
char reserved[56]; /* for future use */
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -594,14 +596,8 @@ struct snd_seq_query_subs {
|
|||
#define SNDRV_SEQ_IOCTL_GET_QUEUE_STATUS _IOWR('S', 0x40, struct snd_seq_queue_status)
|
||||
#define SNDRV_SEQ_IOCTL_GET_QUEUE_TEMPO _IOWR('S', 0x41, struct snd_seq_queue_tempo)
|
||||
#define SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO _IOW ('S', 0x42, struct snd_seq_queue_tempo)
|
||||
#define SNDRV_SEQ_IOCTL_GET_QUEUE_OWNER _IOWR('S', 0x43, struct snd_seq_queue_owner)
|
||||
#define SNDRV_SEQ_IOCTL_SET_QUEUE_OWNER _IOW ('S', 0x44, struct snd_seq_queue_owner)
|
||||
#define SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER _IOWR('S', 0x45, struct snd_seq_queue_timer)
|
||||
#define SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER _IOW ('S', 0x46, struct snd_seq_queue_timer)
|
||||
/* XXX
|
||||
#define SNDRV_SEQ_IOCTL_GET_QUEUE_SYNC _IOWR('S', 0x53, struct snd_seq_queue_sync)
|
||||
#define SNDRV_SEQ_IOCTL_SET_QUEUE_SYNC _IOW ('S', 0x54, struct snd_seq_queue_sync)
|
||||
*/
|
||||
#define SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT _IOWR('S', 0x49, struct snd_seq_queue_client)
|
||||
#define SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT _IOW ('S', 0x4a, struct snd_seq_queue_client)
|
||||
#define SNDRV_SEQ_IOCTL_GET_CLIENT_POOL _IOWR('S', 0x4b, struct snd_seq_client_pool)
|
||||
|
|
|
|||
|
|
@ -23,7 +23,11 @@
|
|||
#ifndef _UAPI__SOUND_ASOUND_H
|
||||
#define _UAPI__SOUND_ASOUND_H
|
||||
|
||||
#if defined(__KERNEL__) || defined(__linux__)
|
||||
#include <linux/types.h>
|
||||
#else
|
||||
#include <sys/ioctl.h>
|
||||
#endif
|
||||
|
||||
#ifndef __KERNEL__
|
||||
#include <stdlib.h>
|
||||
|
|
|
|||
Loading…
Reference in a new issue