diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-07-31 05:25:02 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-07-31 05:25:02 -0400 |
commit | c9b95e5961c0294e0efffeaa847c1a1e6369204c (patch) | |
tree | 384daa5e36a795d48475d445b3857b47e0b3f8d3 /include | |
parent | bad60e6f259a01cf9f29a1ef8d435ab6c60b2de9 (diff) | |
parent | 0984d159c8ad6618c6ebd9f00bc3f374fa52bc35 (diff) |
Merge tag 'sound-4.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound updates from Takashi Iwai:
"The majority of this update is about ASoC, including a few new
drivers, and the rest are mostly minor changes. The only substantial
change in ALSA core is about the additional error handling in the
compress-offload API. Below are highlights:
- Add the error propagating support in compress-offload API
- HD-audio: a usual Dell headset fixup, an Intel HDMI/DP fix, and the
default mixer setup change ot turn off the loopback
- Lots of updates for ASoC Intel drivers, mostly board support and
bug fixing, and to the NAU8825 driver
- Work on generalizing bits of simple-card to allow more code sharing
with the Renesas rsrc-card (which can't use simple-card due to DPCM)
- Removal of the Odroid X2 driver due to replacement with simple-card
- Support for several new Mediatek platforms and associated boards
- New ASoC drivers for Allwinner A10, Analog Devices ADAU7002,
Broadcom Cygnus, Cirrus Logic CS35L33 and CS53L30, Maxim MAX8960
and MAX98504, Realtek RT5514 and Wolfson WM8758"
* tag 'sound-4.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (278 commits)
sound: oss: Use kernel_read_file_from_path() for mod_firmware_load()
ASoC: Intel: Skylake: Delete an unnecessary check before the function call "release_firmware"
ASoC: Intel: Skylake: Fix NULL Pointer exception in dynamic_debug.
ASoC: samsung: Specify DMA channels through struct snd_dmaengine_pcm_config
ASoC: samsung: Fix error paths in the I2S driver's probe()
ASoC: cs53l30: Fix bit shift issue of TDM mode
ASoC: cs53l30: Fix a bug for TDM slot location validation
ASoC: rockchip: correct the spdif clk
ALSA: echoaudio: purge contradictions between dimension matrix members and total number of members
ASoC: rsrc-card: use asoc_simple_card_parse_card_name()
ASoC: rsrc-card: use asoc_simple_dai instead of rsrc_card_dai
ASoC: rsrc-card: use asoc_simple_card_parse_dailink_name()
ASoC: simple-card: use asoc_simple_card_parse_card_name()
ASoC: simple-card-utils: add asoc_simple_card_parse_card_name()
ASoC: simple-card: use asoc_simple_card_parse_dailink_name()
ASoC: simple-card-utils: add asoc_simple_card_set_dailink_name()
ASoC: nau8825: drop redundant idiom when converting integer to boolean
ASoC: nau8825: jack connection decision with different insertion logic
ASoC: mediatek: Add HDMI dai-links to the mt8173-rt5650 machine driver
ASoC: mediatek: mt2701: fix non static symbol warning
...
Diffstat (limited to 'include')
-rw-r--r-- | include/acpi/acpi_bus.h | 7 | ||||
-rw-r--r-- | include/linux/acpi.h | 6 | ||||
-rw-r--r-- | include/linux/mfd/arizona/core.h | 10 | ||||
-rw-r--r-- | include/linux/of.h | 14 | ||||
-rw-r--r-- | include/linux/property.h | 3 | ||||
-rw-r--r-- | include/sound/compress_driver.h | 5 | ||||
-rw-r--r-- | include/sound/cs35l33.h | 48 | ||||
-rw-r--r-- | include/sound/hdmi-codec.h | 13 | ||||
-rw-r--r-- | include/sound/simple_card.h | 11 | ||||
-rw-r--r-- | include/sound/simple_card_utils.h | 36 | ||||
-rw-r--r-- | include/sound/soc-dapm.h | 8 | ||||
-rw-r--r-- | include/sound/soc.h | 11 |
12 files changed, 149 insertions, 23 deletions
diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h index 788c6c35291a..c1a524de67c5 100644 --- a/include/acpi/acpi_bus.h +++ b/include/acpi/acpi_bus.h | |||
@@ -420,6 +420,13 @@ static inline struct acpi_data_node *to_acpi_data_node(struct fwnode_handle *fwn | |||
420 | container_of(fwnode, struct acpi_data_node, fwnode) : NULL; | 420 | container_of(fwnode, struct acpi_data_node, fwnode) : NULL; |
421 | } | 421 | } |
422 | 422 | ||
423 | static inline bool acpi_data_node_match(struct fwnode_handle *fwnode, | ||
424 | const char *name) | ||
425 | { | ||
426 | return is_acpi_data_node(fwnode) ? | ||
427 | (!strcmp(to_acpi_data_node(fwnode)->name, name)) : false; | ||
428 | } | ||
429 | |||
423 | static inline struct fwnode_handle *acpi_fwnode_handle(struct acpi_device *adev) | 430 | static inline struct fwnode_handle *acpi_fwnode_handle(struct acpi_device *adev) |
424 | { | 431 | { |
425 | return &adev->fwnode; | 432 | return &adev->fwnode; |
diff --git a/include/linux/acpi.h b/include/linux/acpi.h index db7c8bd39a3c..4d8452c2384b 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h | |||
@@ -608,6 +608,12 @@ static inline struct acpi_data_node *to_acpi_data_node(struct fwnode_handle *fwn | |||
608 | return NULL; | 608 | return NULL; |
609 | } | 609 | } |
610 | 610 | ||
611 | static inline bool acpi_data_node_match(struct fwnode_handle *fwnode, | ||
612 | const char *name) | ||
613 | { | ||
614 | return false; | ||
615 | } | ||
616 | |||
611 | static inline struct fwnode_handle *acpi_fwnode_handle(struct acpi_device *adev) | 617 | static inline struct fwnode_handle *acpi_fwnode_handle(struct acpi_device *adev) |
612 | { | 618 | { |
613 | return NULL; | 619 | return NULL; |
diff --git a/include/linux/mfd/arizona/core.h b/include/linux/mfd/arizona/core.h index d55a42297d49..58ab4c0fe761 100644 --- a/include/linux/mfd/arizona/core.h +++ b/include/linux/mfd/arizona/core.h | |||
@@ -14,6 +14,7 @@ | |||
14 | #define _WM_ARIZONA_CORE_H | 14 | #define _WM_ARIZONA_CORE_H |
15 | 15 | ||
16 | #include <linux/interrupt.h> | 16 | #include <linux/interrupt.h> |
17 | #include <linux/notifier.h> | ||
17 | #include <linux/regmap.h> | 18 | #include <linux/regmap.h> |
18 | #include <linux/regulator/consumer.h> | 19 | #include <linux/regulator/consumer.h> |
19 | #include <linux/mfd/arizona/pdata.h> | 20 | #include <linux/mfd/arizona/pdata.h> |
@@ -148,8 +149,17 @@ struct arizona { | |||
148 | uint16_t dac_comp_coeff; | 149 | uint16_t dac_comp_coeff; |
149 | uint8_t dac_comp_enabled; | 150 | uint8_t dac_comp_enabled; |
150 | struct mutex dac_comp_lock; | 151 | struct mutex dac_comp_lock; |
152 | |||
153 | struct blocking_notifier_head notifier; | ||
151 | }; | 154 | }; |
152 | 155 | ||
156 | static inline int arizona_call_notifiers(struct arizona *arizona, | ||
157 | unsigned long event, | ||
158 | void *data) | ||
159 | { | ||
160 | return blocking_notifier_call_chain(&arizona->notifier, event, data); | ||
161 | } | ||
162 | |||
153 | int arizona_clk32k_enable(struct arizona *arizona); | 163 | int arizona_clk32k_enable(struct arizona *arizona); |
154 | int arizona_clk32k_disable(struct arizona *arizona); | 164 | int arizona_clk32k_disable(struct arizona *arizona); |
155 | 165 | ||
diff --git a/include/linux/of.h b/include/linux/of.h index eb8d4b4c5dfc..3d9ff8e9d803 100644 --- a/include/linux/of.h +++ b/include/linux/of.h | |||
@@ -238,13 +238,6 @@ static inline unsigned long of_read_ulong(const __be32 *cell, int size) | |||
238 | #define OF_ROOT_NODE_SIZE_CELLS_DEFAULT 1 | 238 | #define OF_ROOT_NODE_SIZE_CELLS_DEFAULT 1 |
239 | #endif | 239 | #endif |
240 | 240 | ||
241 | /* Default string compare functions, Allow arch asm/prom.h to override */ | ||
242 | #if !defined(of_compat_cmp) | ||
243 | #define of_compat_cmp(s1, s2, l) strcasecmp((s1), (s2)) | ||
244 | #define of_prop_cmp(s1, s2) strcmp((s1), (s2)) | ||
245 | #define of_node_cmp(s1, s2) strcasecmp((s1), (s2)) | ||
246 | #endif | ||
247 | |||
248 | #define OF_IS_DYNAMIC(x) test_bit(OF_DYNAMIC, &x->_flags) | 241 | #define OF_IS_DYNAMIC(x) test_bit(OF_DYNAMIC, &x->_flags) |
249 | #define OF_MARK_DYNAMIC(x) set_bit(OF_DYNAMIC, &x->_flags) | 242 | #define OF_MARK_DYNAMIC(x) set_bit(OF_DYNAMIC, &x->_flags) |
250 | 243 | ||
@@ -728,6 +721,13 @@ static inline void of_property_clear_flag(struct property *p, unsigned long flag | |||
728 | #define of_match_node(_matches, _node) NULL | 721 | #define of_match_node(_matches, _node) NULL |
729 | #endif /* CONFIG_OF */ | 722 | #endif /* CONFIG_OF */ |
730 | 723 | ||
724 | /* Default string compare functions, Allow arch asm/prom.h to override */ | ||
725 | #if !defined(of_compat_cmp) | ||
726 | #define of_compat_cmp(s1, s2, l) strcasecmp((s1), (s2)) | ||
727 | #define of_prop_cmp(s1, s2) strcmp((s1), (s2)) | ||
728 | #define of_node_cmp(s1, s2) strcasecmp((s1), (s2)) | ||
729 | #endif | ||
730 | |||
731 | #if defined(CONFIG_OF) && defined(CONFIG_NUMA) | 731 | #if defined(CONFIG_OF) && defined(CONFIG_NUMA) |
732 | extern int of_node_to_nid(struct device_node *np); | 732 | extern int of_node_to_nid(struct device_node *np); |
733 | #else | 733 | #else |
diff --git a/include/linux/property.h b/include/linux/property.h index ecab11e40794..3a2f9ae25c86 100644 --- a/include/linux/property.h +++ b/include/linux/property.h | |||
@@ -77,6 +77,9 @@ struct fwnode_handle *device_get_next_child_node(struct device *dev, | |||
77 | for (child = device_get_next_child_node(dev, NULL); child; \ | 77 | for (child = device_get_next_child_node(dev, NULL); child; \ |
78 | child = device_get_next_child_node(dev, child)) | 78 | child = device_get_next_child_node(dev, child)) |
79 | 79 | ||
80 | struct fwnode_handle *device_get_named_child_node(struct device *dev, | ||
81 | const char *childname); | ||
82 | |||
80 | void fwnode_handle_put(struct fwnode_handle *fwnode); | 83 | void fwnode_handle_put(struct fwnode_handle *fwnode); |
81 | 84 | ||
82 | unsigned int device_get_child_node_count(struct device *dev); | 85 | unsigned int device_get_child_node_count(struct device *dev); |
diff --git a/include/sound/compress_driver.h b/include/sound/compress_driver.h index c0abcdc11470..cee8c00f3d3e 100644 --- a/include/sound/compress_driver.h +++ b/include/sound/compress_driver.h | |||
@@ -68,6 +68,7 @@ struct snd_compr_runtime { | |||
68 | * @ops: pointer to DSP callbacks | 68 | * @ops: pointer to DSP callbacks |
69 | * @runtime: pointer to runtime structure | 69 | * @runtime: pointer to runtime structure |
70 | * @device: device pointer | 70 | * @device: device pointer |
71 | * @error_work: delayed work used when closing the stream due to an error | ||
71 | * @direction: stream direction, playback/recording | 72 | * @direction: stream direction, playback/recording |
72 | * @metadata_set: metadata set flag, true when set | 73 | * @metadata_set: metadata set flag, true when set |
73 | * @next_track: has userspace signal next track transition, true when set | 74 | * @next_track: has userspace signal next track transition, true when set |
@@ -78,6 +79,7 @@ struct snd_compr_stream { | |||
78 | struct snd_compr_ops *ops; | 79 | struct snd_compr_ops *ops; |
79 | struct snd_compr_runtime *runtime; | 80 | struct snd_compr_runtime *runtime; |
80 | struct snd_compr *device; | 81 | struct snd_compr *device; |
82 | struct delayed_work error_work; | ||
81 | enum snd_compr_direction direction; | 83 | enum snd_compr_direction direction; |
82 | bool metadata_set; | 84 | bool metadata_set; |
83 | bool next_track; | 85 | bool next_track; |
@@ -187,4 +189,7 @@ static inline void snd_compr_drain_notify(struct snd_compr_stream *stream) | |||
187 | wake_up(&stream->runtime->sleep); | 189 | wake_up(&stream->runtime->sleep); |
188 | } | 190 | } |
189 | 191 | ||
192 | int snd_compr_stop_error(struct snd_compr_stream *stream, | ||
193 | snd_pcm_state_t state); | ||
194 | |||
190 | #endif | 195 | #endif |
diff --git a/include/sound/cs35l33.h b/include/sound/cs35l33.h new file mode 100644 index 000000000000..b6eadce76fc8 --- /dev/null +++ b/include/sound/cs35l33.h | |||
@@ -0,0 +1,48 @@ | |||
1 | /* | ||
2 | * linux/sound/cs35l33.h -- Platform data for CS35l33 | ||
3 | * | ||
4 | * Copyright (c) 2016 Cirrus Logic Inc. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | |||
11 | #ifndef __CS35L33_H | ||
12 | #define __CS35L33_H | ||
13 | |||
14 | struct cs35l33_hg { | ||
15 | bool enable_hg_algo; | ||
16 | unsigned int mem_depth; | ||
17 | unsigned int release_rate; | ||
18 | unsigned int hd_rm; | ||
19 | unsigned int ldo_thld; | ||
20 | unsigned int ldo_path_disable; | ||
21 | unsigned int ldo_entry_delay; | ||
22 | bool vp_hg_auto; | ||
23 | unsigned int vp_hg; | ||
24 | unsigned int vp_hg_rate; | ||
25 | unsigned int vp_hg_va; | ||
26 | }; | ||
27 | |||
28 | struct cs35l33_pdata { | ||
29 | /* Boost Controller Voltage Setting */ | ||
30 | unsigned int boost_ctl; | ||
31 | |||
32 | /* Boost Controller Peak Current */ | ||
33 | unsigned int boost_ipk; | ||
34 | |||
35 | /* Amplifier Drive Select */ | ||
36 | unsigned int amp_drv_sel; | ||
37 | |||
38 | /* soft volume ramp */ | ||
39 | unsigned int ramp_rate; | ||
40 | |||
41 | /* IMON adc scale */ | ||
42 | unsigned int imon_adc_scale; | ||
43 | |||
44 | /* H/G algo configuration */ | ||
45 | struct cs35l33_hg hg_config; | ||
46 | }; | ||
47 | |||
48 | #endif /* __CS35L33_H */ | ||
diff --git a/include/sound/hdmi-codec.h b/include/sound/hdmi-codec.h index fc3a481ad91e..530c57bdefa0 100644 --- a/include/sound/hdmi-codec.h +++ b/include/sound/hdmi-codec.h | |||
@@ -53,18 +53,19 @@ struct hdmi_codec_params { | |||
53 | int channels; | 53 | int channels; |
54 | }; | 54 | }; |
55 | 55 | ||
56 | struct hdmi_codec_pdata; | ||
56 | struct hdmi_codec_ops { | 57 | struct hdmi_codec_ops { |
57 | /* | 58 | /* |
58 | * Called when ASoC starts an audio stream setup. | 59 | * Called when ASoC starts an audio stream setup. |
59 | * Optional | 60 | * Optional |
60 | */ | 61 | */ |
61 | int (*audio_startup)(struct device *dev); | 62 | int (*audio_startup)(struct device *dev, void *data); |
62 | 63 | ||
63 | /* | 64 | /* |
64 | * Configures HDMI-encoder for audio stream. | 65 | * Configures HDMI-encoder for audio stream. |
65 | * Mandatory | 66 | * Mandatory |
66 | */ | 67 | */ |
67 | int (*hw_params)(struct device *dev, | 68 | int (*hw_params)(struct device *dev, void *data, |
68 | struct hdmi_codec_daifmt *fmt, | 69 | struct hdmi_codec_daifmt *fmt, |
69 | struct hdmi_codec_params *hparms); | 70 | struct hdmi_codec_params *hparms); |
70 | 71 | ||
@@ -72,19 +73,20 @@ struct hdmi_codec_ops { | |||
72 | * Shuts down the audio stream. | 73 | * Shuts down the audio stream. |
73 | * Mandatory | 74 | * Mandatory |
74 | */ | 75 | */ |
75 | void (*audio_shutdown)(struct device *dev); | 76 | void (*audio_shutdown)(struct device *dev, void *data); |
76 | 77 | ||
77 | /* | 78 | /* |
78 | * Mute/unmute HDMI audio stream. | 79 | * Mute/unmute HDMI audio stream. |
79 | * Optional | 80 | * Optional |
80 | */ | 81 | */ |
81 | int (*digital_mute)(struct device *dev, bool enable); | 82 | int (*digital_mute)(struct device *dev, void *data, bool enable); |
82 | 83 | ||
83 | /* | 84 | /* |
84 | * Provides EDID-Like-Data from connected HDMI device. | 85 | * Provides EDID-Like-Data from connected HDMI device. |
85 | * Optional | 86 | * Optional |
86 | */ | 87 | */ |
87 | int (*get_eld)(struct device *dev, uint8_t *buf, size_t len); | 88 | int (*get_eld)(struct device *dev, void *data, |
89 | uint8_t *buf, size_t len); | ||
88 | }; | 90 | }; |
89 | 91 | ||
90 | /* HDMI codec initalization data */ | 92 | /* HDMI codec initalization data */ |
@@ -93,6 +95,7 @@ struct hdmi_codec_pdata { | |||
93 | uint i2s:1; | 95 | uint i2s:1; |
94 | uint spdif:1; | 96 | uint spdif:1; |
95 | int max_i2s_channels; | 97 | int max_i2s_channels; |
98 | void *data; | ||
96 | }; | 99 | }; |
97 | 100 | ||
98 | #define HDMI_CODEC_DRV_NAME "hdmi-audio-codec" | 101 | #define HDMI_CODEC_DRV_NAME "hdmi-audio-codec" |
diff --git a/include/sound/simple_card.h b/include/sound/simple_card.h index 0399352f3a62..a6a2e1547092 100644 --- a/include/sound/simple_card.h +++ b/include/sound/simple_card.h | |||
@@ -13,16 +13,7 @@ | |||
13 | #define __SIMPLE_CARD_H | 13 | #define __SIMPLE_CARD_H |
14 | 14 | ||
15 | #include <sound/soc.h> | 15 | #include <sound/soc.h> |
16 | 16 | #include <sound/simple_card_utils.h> | |
17 | struct asoc_simple_dai { | ||
18 | const char *name; | ||
19 | unsigned int sysclk; | ||
20 | int slots; | ||
21 | int slot_width; | ||
22 | unsigned int tx_slot_mask; | ||
23 | unsigned int rx_slot_mask; | ||
24 | struct clk *clk; | ||
25 | }; | ||
26 | 17 | ||
27 | struct asoc_simple_card_info { | 18 | struct asoc_simple_card_info { |
28 | const char *name; | 19 | const char *name; |
diff --git a/include/sound/simple_card_utils.h b/include/sound/simple_card_utils.h new file mode 100644 index 000000000000..86088aed9002 --- /dev/null +++ b/include/sound/simple_card_utils.h | |||
@@ -0,0 +1,36 @@ | |||
1 | /* | ||
2 | * simple_card_core.h | ||
3 | * | ||
4 | * Copyright (c) 2016 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | #ifndef __SIMPLE_CARD_CORE_H | ||
11 | #define __SIMPLE_CARD_CORE_H | ||
12 | |||
13 | #include <sound/soc.h> | ||
14 | |||
15 | struct asoc_simple_dai { | ||
16 | const char *name; | ||
17 | unsigned int sysclk; | ||
18 | int slots; | ||
19 | int slot_width; | ||
20 | unsigned int tx_slot_mask; | ||
21 | unsigned int rx_slot_mask; | ||
22 | struct clk *clk; | ||
23 | }; | ||
24 | |||
25 | int asoc_simple_card_parse_daifmt(struct device *dev, | ||
26 | struct device_node *node, | ||
27 | struct device_node *codec, | ||
28 | char *prefix, | ||
29 | unsigned int *retfmt); | ||
30 | int asoc_simple_card_set_dailink_name(struct device *dev, | ||
31 | struct snd_soc_dai_link *dai_link, | ||
32 | const char *fmt, ...); | ||
33 | int asoc_simple_card_parse_card_name(struct snd_soc_card *card, | ||
34 | char *prefix); | ||
35 | |||
36 | #endif /* __SIMPLE_CARD_CORE_H */ | ||
diff --git a/include/sound/soc-dapm.h b/include/sound/soc-dapm.h index 3101d53468aa..f60d755f7ac6 100644 --- a/include/sound/soc-dapm.h +++ b/include/sound/soc-dapm.h | |||
@@ -358,6 +358,7 @@ struct snd_soc_dapm_context; | |||
358 | struct regulator; | 358 | struct regulator; |
359 | struct snd_soc_dapm_widget_list; | 359 | struct snd_soc_dapm_widget_list; |
360 | struct snd_soc_dapm_update; | 360 | struct snd_soc_dapm_update; |
361 | enum snd_soc_dapm_direction; | ||
361 | 362 | ||
362 | int dapm_regulator_event(struct snd_soc_dapm_widget *w, | 363 | int dapm_regulator_event(struct snd_soc_dapm_widget *w, |
363 | struct snd_kcontrol *kcontrol, int event); | 364 | struct snd_kcontrol *kcontrol, int event); |
@@ -382,6 +383,9 @@ int snd_soc_dapm_put_pin_switch(struct snd_kcontrol *kcontrol, | |||
382 | int snd_soc_dapm_new_controls(struct snd_soc_dapm_context *dapm, | 383 | int snd_soc_dapm_new_controls(struct snd_soc_dapm_context *dapm, |
383 | const struct snd_soc_dapm_widget *widget, | 384 | const struct snd_soc_dapm_widget *widget, |
384 | int num); | 385 | int num); |
386 | struct snd_soc_dapm_widget *snd_soc_dapm_new_control( | ||
387 | struct snd_soc_dapm_context *dapm, | ||
388 | const struct snd_soc_dapm_widget *widget); | ||
385 | int snd_soc_dapm_new_dai_widgets(struct snd_soc_dapm_context *dapm, | 389 | int snd_soc_dapm_new_dai_widgets(struct snd_soc_dapm_context *dapm, |
386 | struct snd_soc_dai *dai); | 390 | struct snd_soc_dai *dai); |
387 | int snd_soc_dapm_link_dai_widgets(struct snd_soc_card *card); | 391 | int snd_soc_dapm_link_dai_widgets(struct snd_soc_card *card); |
@@ -451,7 +455,9 @@ void dapm_mark_endpoints_dirty(struct snd_soc_card *card); | |||
451 | 455 | ||
452 | /* dapm path query */ | 456 | /* dapm path query */ |
453 | int snd_soc_dapm_dai_get_connected_widgets(struct snd_soc_dai *dai, int stream, | 457 | int snd_soc_dapm_dai_get_connected_widgets(struct snd_soc_dai *dai, int stream, |
454 | struct snd_soc_dapm_widget_list **list); | 458 | struct snd_soc_dapm_widget_list **list, |
459 | bool (*custom_stop_condition)(struct snd_soc_dapm_widget *, | ||
460 | enum snd_soc_dapm_direction)); | ||
455 | 461 | ||
456 | struct snd_soc_dapm_context *snd_soc_dapm_kcontrol_dapm( | 462 | struct snd_soc_dapm_context *snd_soc_dapm_kcontrol_dapm( |
457 | struct snd_kcontrol *kcontrol); | 463 | struct snd_kcontrol *kcontrol); |
diff --git a/include/sound/soc.h b/include/sound/soc.h index fd7b58a58d6f..6144882cc96a 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h | |||
@@ -179,6 +179,17 @@ | |||
179 | .get = snd_soc_get_volsw, .put = snd_soc_put_volsw, \ | 179 | .get = snd_soc_get_volsw, .put = snd_soc_put_volsw, \ |
180 | .private_value = SOC_DOUBLE_R_S_VALUE(reg_left, reg_right, xshift, \ | 180 | .private_value = SOC_DOUBLE_R_S_VALUE(reg_left, reg_right, xshift, \ |
181 | xmin, xmax, xsign_bit, xinvert) } | 181 | xmin, xmax, xsign_bit, xinvert) } |
182 | #define SOC_SINGLE_S8_TLV(xname, xreg, xmin, xmax, tlv_array) \ | ||
183 | { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \ | ||
184 | .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \ | ||
185 | SNDRV_CTL_ELEM_ACCESS_READWRITE, \ | ||
186 | .tlv.p = (tlv_array), \ | ||
187 | .info = snd_soc_info_volsw, .get = snd_soc_get_volsw,\ | ||
188 | .put = snd_soc_put_volsw, \ | ||
189 | .private_value = (unsigned long)&(struct soc_mixer_control) \ | ||
190 | {.reg = xreg, .rreg = xreg, \ | ||
191 | .min = xmin, .max = xmax, .platform_max = xmax, \ | ||
192 | .sign_bit = 7,} } | ||
182 | #define SOC_DOUBLE_S8_TLV(xname, xreg, xmin, xmax, tlv_array) \ | 193 | #define SOC_DOUBLE_S8_TLV(xname, xreg, xmin, xmax, tlv_array) \ |
183 | { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \ | 194 | { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \ |
184 | .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \ | 195 | .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \ |