aboutsummaryrefslogtreecommitdiffstats
path: root/include/sound
diff options
context:
space:
mode:
Diffstat (limited to 'include/sound')
-rw-r--r--include/sound/ac97_codec.h3
-rw-r--r--include/sound/hda_register.h3
-rw-r--r--include/sound/soc-dapm.h5
-rw-r--r--include/sound/soc.h36
4 files changed, 44 insertions, 3 deletions
diff --git a/include/sound/ac97_codec.h b/include/sound/ac97_codec.h
index 74bc85473b58..15aa5f07c955 100644
--- a/include/sound/ac97_codec.h
+++ b/include/sound/ac97_codec.h
@@ -417,11 +417,13 @@
417#define AC97_RATES_MIC_ADC 4 417#define AC97_RATES_MIC_ADC 4
418#define AC97_RATES_SPDIF 5 418#define AC97_RATES_SPDIF 5
419 419
420#define AC97_NUM_GPIOS 16
420/* 421/*
421 * 422 *
422 */ 423 */
423 424
424struct snd_ac97; 425struct snd_ac97;
426struct snd_ac97_gpio_priv;
425struct snd_pcm_chmap; 427struct snd_pcm_chmap;
426 428
427struct snd_ac97_build_ops { 429struct snd_ac97_build_ops {
@@ -529,6 +531,7 @@ struct snd_ac97 {
529 struct delayed_work power_work; 531 struct delayed_work power_work;
530#endif 532#endif
531 struct device dev; 533 struct device dev;
534 struct snd_ac97_gpio_priv *gpio_priv;
532 535
533 struct snd_pcm_chmap *chmaps[2]; /* channel-maps (optional) */ 536 struct snd_pcm_chmap *chmaps[2]; /* channel-maps (optional) */
534}; 537};
diff --git a/include/sound/hda_register.h b/include/sound/hda_register.h
index 2ae8812d7b1a..94dc6a9772e0 100644
--- a/include/sound/hda_register.h
+++ b/include/sound/hda_register.h
@@ -93,6 +93,9 @@ enum { SDI0, SDI1, SDI2, SDI3, SDO0, SDO1, SDO2, SDO3 };
93#define AZX_REG_HSW_EM4 0x100c 93#define AZX_REG_HSW_EM4 0x100c
94#define AZX_REG_HSW_EM5 0x1010 94#define AZX_REG_HSW_EM5 0x1010
95 95
96/* Skylake/Broxton display HD-A controller Extended Mode registers */
97#define AZX_REG_SKL_EM4L 0x1040
98
96/* PCI space */ 99/* PCI space */
97#define AZX_PCIREG_TCSEL 0x44 100#define AZX_PCIREG_TCSEL 0x44
98 101
diff --git a/include/sound/soc-dapm.h b/include/sound/soc-dapm.h
index 7855cfe46b69..97069466c38d 100644
--- a/include/sound/soc-dapm.h
+++ b/include/sound/soc-dapm.h
@@ -49,6 +49,9 @@ struct device;
49#define SND_SOC_DAPM_SIGGEN(wname) \ 49#define SND_SOC_DAPM_SIGGEN(wname) \
50{ .id = snd_soc_dapm_siggen, .name = wname, .kcontrol_news = NULL, \ 50{ .id = snd_soc_dapm_siggen, .name = wname, .kcontrol_news = NULL, \
51 .num_kcontrols = 0, .reg = SND_SOC_NOPM } 51 .num_kcontrols = 0, .reg = SND_SOC_NOPM }
52#define SND_SOC_DAPM_SINK(wname) \
53{ .id = snd_soc_dapm_sink, .name = wname, .kcontrol_news = NULL, \
54 .num_kcontrols = 0, .reg = SND_SOC_NOPM }
52#define SND_SOC_DAPM_INPUT(wname) \ 55#define SND_SOC_DAPM_INPUT(wname) \
53{ .id = snd_soc_dapm_input, .name = wname, .kcontrol_news = NULL, \ 56{ .id = snd_soc_dapm_input, .name = wname, .kcontrol_news = NULL, \
54 .num_kcontrols = 0, .reg = SND_SOC_NOPM } 57 .num_kcontrols = 0, .reg = SND_SOC_NOPM }
@@ -398,6 +401,7 @@ int snd_soc_dapm_del_routes(struct snd_soc_dapm_context *dapm,
398int snd_soc_dapm_weak_routes(struct snd_soc_dapm_context *dapm, 401int snd_soc_dapm_weak_routes(struct snd_soc_dapm_context *dapm,
399 const struct snd_soc_dapm_route *route, int num); 402 const struct snd_soc_dapm_route *route, int num);
400void snd_soc_dapm_free_widget(struct snd_soc_dapm_widget *w); 403void snd_soc_dapm_free_widget(struct snd_soc_dapm_widget *w);
404void snd_soc_dapm_reset_cache(struct snd_soc_dapm_context *dapm);
401 405
402/* dapm events */ 406/* dapm events */
403void snd_soc_dapm_stream_event(struct snd_soc_pcm_runtime *rtd, int stream, 407void snd_soc_dapm_stream_event(struct snd_soc_pcm_runtime *rtd, int stream,
@@ -484,6 +488,7 @@ enum snd_soc_dapm_type {
484 snd_soc_dapm_aif_in, /* audio interface input */ 488 snd_soc_dapm_aif_in, /* audio interface input */
485 snd_soc_dapm_aif_out, /* audio interface output */ 489 snd_soc_dapm_aif_out, /* audio interface output */
486 snd_soc_dapm_siggen, /* signal generator */ 490 snd_soc_dapm_siggen, /* signal generator */
491 snd_soc_dapm_sink,
487 snd_soc_dapm_dai_in, /* link to DAI structure */ 492 snd_soc_dapm_dai_in, /* link to DAI structure */
488 snd_soc_dapm_dai_out, 493 snd_soc_dapm_dai_out,
489 snd_soc_dapm_dai_link, /* link between two DAI structures */ 494 snd_soc_dapm_dai_link, /* link between two DAI structures */
diff --git a/include/sound/soc.h b/include/sound/soc.h
index a8b4b9c8b1d2..ea443239cc6d 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -110,6 +110,14 @@
110 .put = snd_soc_put_volsw, \ 110 .put = snd_soc_put_volsw, \
111 .private_value = SOC_DOUBLE_VALUE(reg, shift_left, shift_right, \ 111 .private_value = SOC_DOUBLE_VALUE(reg, shift_left, shift_right, \
112 max, invert, 0) } 112 max, invert, 0) }
113#define SOC_DOUBLE_STS(xname, reg, shift_left, shift_right, max, invert) \
114{ \
115 .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \
116 .info = snd_soc_info_volsw, .get = snd_soc_get_volsw, \
117 .access = SNDRV_CTL_ELEM_ACCESS_READ | \
118 SNDRV_CTL_ELEM_ACCESS_VOLATILE, \
119 .private_value = SOC_DOUBLE_VALUE(reg, shift_left, shift_right, \
120 max, invert, 0) }
113#define SOC_DOUBLE_R(xname, reg_left, reg_right, xshift, xmax, xinvert) \ 121#define SOC_DOUBLE_R(xname, reg_left, reg_right, xshift, xmax, xinvert) \
114{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \ 122{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \
115 .info = snd_soc_info_volsw, \ 123 .info = snd_soc_info_volsw, \
@@ -293,6 +301,9 @@
293 {.base = xbase, .num_regs = xregs, \ 301 {.base = xbase, .num_regs = xregs, \
294 .mask = xmask }) } 302 .mask = xmask }) }
295 303
304/*
305 * SND_SOC_BYTES_EXT is deprecated, please USE SND_SOC_BYTES_TLV instead
306 */
296#define SND_SOC_BYTES_EXT(xname, xcount, xhandler_get, xhandler_put) \ 307#define SND_SOC_BYTES_EXT(xname, xcount, xhandler_get, xhandler_put) \
297{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \ 308{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
298 .info = snd_soc_bytes_info_ext, \ 309 .info = snd_soc_bytes_info_ext, \
@@ -1037,6 +1048,9 @@ struct snd_soc_dai_link {
1037 1048
1038 /* pmdown_time is ignored at stop */ 1049 /* pmdown_time is ignored at stop */
1039 unsigned int ignore_pmdown_time:1; 1050 unsigned int ignore_pmdown_time:1;
1051
1052 struct list_head list; /* DAI link list of the soc card */
1053 struct snd_soc_dobj dobj; /* For topology */
1040}; 1054};
1041 1055
1042struct snd_soc_codec_conf { 1056struct snd_soc_codec_conf {
@@ -1101,12 +1115,20 @@ struct snd_soc_card {
1101 struct snd_soc_dapm_context *dapm, 1115 struct snd_soc_dapm_context *dapm,
1102 enum snd_soc_bias_level level); 1116 enum snd_soc_bias_level level);
1103 1117
1118 int (*add_dai_link)(struct snd_soc_card *,
1119 struct snd_soc_dai_link *link);
1120 void (*remove_dai_link)(struct snd_soc_card *,
1121 struct snd_soc_dai_link *link);
1122
1104 long pmdown_time; 1123 long pmdown_time;
1105 1124
1106 /* CPU <--> Codec DAI links */ 1125 /* CPU <--> Codec DAI links */
1107 struct snd_soc_dai_link *dai_link; 1126 struct snd_soc_dai_link *dai_link; /* predefined links only */
1108 int num_links; 1127 int num_links; /* predefined links only */
1109 struct snd_soc_pcm_runtime *rtd; 1128 struct list_head dai_link_list; /* all links */
1129 int num_dai_links;
1130
1131 struct list_head rtd_list;
1110 int num_rtd; 1132 int num_rtd;
1111 1133
1112 /* optional codec specific configuration */ 1134 /* optional codec specific configuration */
@@ -1201,6 +1223,9 @@ struct snd_soc_pcm_runtime {
1201 struct dentry *debugfs_dpcm_root; 1223 struct dentry *debugfs_dpcm_root;
1202 struct dentry *debugfs_dpcm_state; 1224 struct dentry *debugfs_dpcm_state;
1203#endif 1225#endif
1226
1227 unsigned int num; /* 0-based and monotonic increasing */
1228 struct list_head list; /* rtd list of the soc card */
1204}; 1229};
1205 1230
1206/* mixer control */ 1231/* mixer control */
@@ -1644,6 +1669,11 @@ int snd_soc_of_get_dai_link_codecs(struct device *dev,
1644 struct device_node *of_node, 1669 struct device_node *of_node,
1645 struct snd_soc_dai_link *dai_link); 1670 struct snd_soc_dai_link *dai_link);
1646 1671
1672int snd_soc_add_dai_link(struct snd_soc_card *card,
1673 struct snd_soc_dai_link *dai_link);
1674void snd_soc_remove_dai_link(struct snd_soc_card *card,
1675 struct snd_soc_dai_link *dai_link);
1676
1647#include <sound/soc-dai.h> 1677#include <sound/soc-dai.h>
1648 1678
1649#ifdef CONFIG_DEBUG_FS 1679#ifdef CONFIG_DEBUG_FS