diff options
Diffstat (limited to 'include/sound')
-rw-r--r-- | include/sound/ac97_codec.h | 3 | ||||
-rw-r--r-- | include/sound/hda_register.h | 3 | ||||
-rw-r--r-- | include/sound/soc-dapm.h | 5 | ||||
-rw-r--r-- | include/sound/soc.h | 36 |
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 | ||
424 | struct snd_ac97; | 425 | struct snd_ac97; |
426 | struct snd_ac97_gpio_priv; | ||
425 | struct snd_pcm_chmap; | 427 | struct snd_pcm_chmap; |
426 | 428 | ||
427 | struct snd_ac97_build_ops { | 429 | struct 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, | |||
398 | int snd_soc_dapm_weak_routes(struct snd_soc_dapm_context *dapm, | 401 | int 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); |
400 | void snd_soc_dapm_free_widget(struct snd_soc_dapm_widget *w); | 403 | void snd_soc_dapm_free_widget(struct snd_soc_dapm_widget *w); |
404 | void snd_soc_dapm_reset_cache(struct snd_soc_dapm_context *dapm); | ||
401 | 405 | ||
402 | /* dapm events */ | 406 | /* dapm events */ |
403 | void snd_soc_dapm_stream_event(struct snd_soc_pcm_runtime *rtd, int stream, | 407 | void 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 | ||
1042 | struct snd_soc_codec_conf { | 1056 | struct 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 | ||
1672 | int snd_soc_add_dai_link(struct snd_soc_card *card, | ||
1673 | struct snd_soc_dai_link *dai_link); | ||
1674 | void 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 |