Loading Documentation/sound/alsa-configuration.rst +7 −0 Original line number Diff line number Diff line Loading @@ -2376,6 +2376,13 @@ quirk_flags Skip the probe-time interface setup (usb_set_interface, init_pitch, init_sample_rate); redundant with snd_usb_endpoint_prepare() at stream-open time * bit 27: ``mixer_playback_linear_vol`` Set linear volume mapping for devices where the playback volume control value is mapped to voltage (instead of dB) level linearly. In short: ``x(raw) = (raw - raw_min) / (raw_max - raw_min)``; ``V(x) = k * x``; ``dB(x) = 20 * log10(x)``. Overrides bit 24 * bit 28: ``mixer_capture_linear_vol`` Similar to bit 27 but for capture streams. Overrides bit 25 This module supports multiple devices, autoprobe and hotplugging. Loading include/sound/core.h +3 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,9 @@ struct snd_card { #ifdef CONFIG_SND_DEBUG struct dentry *debugfs_root; /* debugfs root for card */ #endif #ifdef CONFIG_SND_CTL_DEBUG struct snd_ctl_elem_value *value_buf; /* buffer for kctl->put() verification */ #endif #ifdef CONFIG_PM unsigned int power_state; /* power state */ Loading include/sound/gus.h +8 −0 Original line number Diff line number Diff line Loading @@ -536,6 +536,7 @@ int snd_gf1_dma_transfer_block(struct snd_gus_card * gus, struct snd_gf1_dma_block * block, int atomic, int synth); void snd_gf1_dma_suspend(struct snd_gus_card *gus); /* gus_volume.c */ Loading @@ -552,6 +553,8 @@ struct snd_gus_voice *snd_gf1_alloc_voice(struct snd_gus_card * gus, int type, i void snd_gf1_free_voice(struct snd_gus_card * gus, struct snd_gus_voice *voice); int snd_gf1_start(struct snd_gus_card * gus); int snd_gf1_stop(struct snd_gus_card * gus); int snd_gf1_suspend(struct snd_gus_card *gus); int snd_gf1_resume(struct snd_gus_card *gus); /* gus_mixer.c */ Loading @@ -572,6 +575,8 @@ int snd_gus_create(struct snd_card *card, int effect, struct snd_gus_card ** rgus); int snd_gus_initialize(struct snd_gus_card * gus); int snd_gus_suspend(struct snd_gus_card *gus); int snd_gus_resume(struct snd_gus_card *gus); /* gus_irq.c */ Loading @@ -583,6 +588,8 @@ void snd_gus_irq_profile_init(struct snd_gus_card *gus); /* gus_uart.c */ int snd_gf1_rawmidi_new(struct snd_gus_card *gus, int device); void snd_gf1_uart_suspend(struct snd_gus_card *gus); void snd_gf1_uart_resume(struct snd_gus_card *gus); /* gus_dram.c */ int snd_gus_dram_write(struct snd_gus_card *gus, char __user *ptr, Loading @@ -593,5 +600,6 @@ int snd_gus_dram_read(struct snd_gus_card *gus, char __user *ptr, /* gus_timer.c */ void snd_gf1_timers_init(struct snd_gus_card *gus); void snd_gf1_timers_done(struct snd_gus_card *gus); void snd_gf1_timers_resume(struct snd_gus_card *gus); #endif /* __SOUND_GUS_H */ include/sound/hda_codec.h +15 −0 Original line number Diff line number Diff line Loading @@ -336,6 +336,17 @@ snd_hda_codec_write(struct hda_codec *codec, hda_nid_t nid, int flags, return snd_hdac_codec_write(&codec->core, nid, flags, verb, parm); } /* sync after write */ static inline int snd_hda_codec_write_sync(struct hda_codec *codec, hda_nid_t nid, int flags, unsigned int verb, unsigned int parm) { /* use snd_hda_codec_read() for writing; * the returned value is usually discarded */ return snd_hdac_codec_read(&codec->core, nid, flags, verb, parm); } #define snd_hda_param_read(codec, nid, param) \ snd_hdac_read_parm(&(codec)->core, nid, param) #define snd_hda_get_sub_nodes(codec, nid, start_nid) \ Loading Loading @@ -470,6 +481,10 @@ void snd_hda_unlock_devices(struct hda_bus *bus); void snd_hda_bus_reset(struct hda_bus *bus); void snd_hda_bus_reset_codecs(struct hda_bus *bus); void snd_hda_codec_set_gpio(struct hda_codec *codec, unsigned int mask, unsigned int dir, unsigned int data, unsigned int delay); int snd_hda_codec_set_name(struct hda_codec *codec, const char *name); /* Loading include/sound/hda_verbs.h +11 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,12 @@ enum { #define AC_VERB_GET_DIGI_CONVERT_1 0x0f0d #define AC_VERB_GET_DIGI_CONVERT_2 0x0f0e /* unused */ #define AC_VERB_GET_VOLUME_KNOB_CONTROL 0x0f0f /* f10-f1a: GPIO */ /* f10-f1a: GPI/GPO/GPIO */ #define AC_VERB_GET_GPI_DATA 0x0f10 #define AC_VERB_GET_GPI_WAKE_MASK 0x0f11 #define AC_VERB_GET_GPI_UNSOLICITED_RSP_MASK 0x0f12 #define AC_VERB_GET_GPI_STICKY_MASK 0x0f13 #define AC_VERB_GET_GPO_DATA 0x0f14 #define AC_VERB_GET_GPIO_DATA 0x0f15 #define AC_VERB_GET_GPIO_MASK 0x0f16 #define AC_VERB_GET_GPIO_DIRECTION 0x0f17 Loading Loading @@ -99,6 +104,11 @@ enum { #define AC_VERB_SET_DIGI_CONVERT_2 0x70e #define AC_VERB_SET_DIGI_CONVERT_3 0x73e #define AC_VERB_SET_VOLUME_KNOB_CONTROL 0x70f #define AC_VERB_SET_GPI_DATA 0x710 #define AC_VERB_SET_GPI_WAKE_MASK 0x711 #define AC_VERB_SET_SPI_UNSOLICITED_RSP_MASK 0x712 #define AC_VERB_SET_GPI_STICKY_MASK 0x713 #define AC_VERB_SET_GPO_DATA 0x714 #define AC_VERB_SET_GPIO_DATA 0x715 #define AC_VERB_SET_GPIO_MASK 0x716 #define AC_VERB_SET_GPIO_DIRECTION 0x717 Loading Loading
Documentation/sound/alsa-configuration.rst +7 −0 Original line number Diff line number Diff line Loading @@ -2376,6 +2376,13 @@ quirk_flags Skip the probe-time interface setup (usb_set_interface, init_pitch, init_sample_rate); redundant with snd_usb_endpoint_prepare() at stream-open time * bit 27: ``mixer_playback_linear_vol`` Set linear volume mapping for devices where the playback volume control value is mapped to voltage (instead of dB) level linearly. In short: ``x(raw) = (raw - raw_min) / (raw_max - raw_min)``; ``V(x) = k * x``; ``dB(x) = 20 * log10(x)``. Overrides bit 24 * bit 28: ``mixer_capture_linear_vol`` Similar to bit 27 but for capture streams. Overrides bit 25 This module supports multiple devices, autoprobe and hotplugging. Loading
include/sound/core.h +3 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,9 @@ struct snd_card { #ifdef CONFIG_SND_DEBUG struct dentry *debugfs_root; /* debugfs root for card */ #endif #ifdef CONFIG_SND_CTL_DEBUG struct snd_ctl_elem_value *value_buf; /* buffer for kctl->put() verification */ #endif #ifdef CONFIG_PM unsigned int power_state; /* power state */ Loading
include/sound/gus.h +8 −0 Original line number Diff line number Diff line Loading @@ -536,6 +536,7 @@ int snd_gf1_dma_transfer_block(struct snd_gus_card * gus, struct snd_gf1_dma_block * block, int atomic, int synth); void snd_gf1_dma_suspend(struct snd_gus_card *gus); /* gus_volume.c */ Loading @@ -552,6 +553,8 @@ struct snd_gus_voice *snd_gf1_alloc_voice(struct snd_gus_card * gus, int type, i void snd_gf1_free_voice(struct snd_gus_card * gus, struct snd_gus_voice *voice); int snd_gf1_start(struct snd_gus_card * gus); int snd_gf1_stop(struct snd_gus_card * gus); int snd_gf1_suspend(struct snd_gus_card *gus); int snd_gf1_resume(struct snd_gus_card *gus); /* gus_mixer.c */ Loading @@ -572,6 +575,8 @@ int snd_gus_create(struct snd_card *card, int effect, struct snd_gus_card ** rgus); int snd_gus_initialize(struct snd_gus_card * gus); int snd_gus_suspend(struct snd_gus_card *gus); int snd_gus_resume(struct snd_gus_card *gus); /* gus_irq.c */ Loading @@ -583,6 +588,8 @@ void snd_gus_irq_profile_init(struct snd_gus_card *gus); /* gus_uart.c */ int snd_gf1_rawmidi_new(struct snd_gus_card *gus, int device); void snd_gf1_uart_suspend(struct snd_gus_card *gus); void snd_gf1_uart_resume(struct snd_gus_card *gus); /* gus_dram.c */ int snd_gus_dram_write(struct snd_gus_card *gus, char __user *ptr, Loading @@ -593,5 +600,6 @@ int snd_gus_dram_read(struct snd_gus_card *gus, char __user *ptr, /* gus_timer.c */ void snd_gf1_timers_init(struct snd_gus_card *gus); void snd_gf1_timers_done(struct snd_gus_card *gus); void snd_gf1_timers_resume(struct snd_gus_card *gus); #endif /* __SOUND_GUS_H */
include/sound/hda_codec.h +15 −0 Original line number Diff line number Diff line Loading @@ -336,6 +336,17 @@ snd_hda_codec_write(struct hda_codec *codec, hda_nid_t nid, int flags, return snd_hdac_codec_write(&codec->core, nid, flags, verb, parm); } /* sync after write */ static inline int snd_hda_codec_write_sync(struct hda_codec *codec, hda_nid_t nid, int flags, unsigned int verb, unsigned int parm) { /* use snd_hda_codec_read() for writing; * the returned value is usually discarded */ return snd_hdac_codec_read(&codec->core, nid, flags, verb, parm); } #define snd_hda_param_read(codec, nid, param) \ snd_hdac_read_parm(&(codec)->core, nid, param) #define snd_hda_get_sub_nodes(codec, nid, start_nid) \ Loading Loading @@ -470,6 +481,10 @@ void snd_hda_unlock_devices(struct hda_bus *bus); void snd_hda_bus_reset(struct hda_bus *bus); void snd_hda_bus_reset_codecs(struct hda_bus *bus); void snd_hda_codec_set_gpio(struct hda_codec *codec, unsigned int mask, unsigned int dir, unsigned int data, unsigned int delay); int snd_hda_codec_set_name(struct hda_codec *codec, const char *name); /* Loading
include/sound/hda_verbs.h +11 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,12 @@ enum { #define AC_VERB_GET_DIGI_CONVERT_1 0x0f0d #define AC_VERB_GET_DIGI_CONVERT_2 0x0f0e /* unused */ #define AC_VERB_GET_VOLUME_KNOB_CONTROL 0x0f0f /* f10-f1a: GPIO */ /* f10-f1a: GPI/GPO/GPIO */ #define AC_VERB_GET_GPI_DATA 0x0f10 #define AC_VERB_GET_GPI_WAKE_MASK 0x0f11 #define AC_VERB_GET_GPI_UNSOLICITED_RSP_MASK 0x0f12 #define AC_VERB_GET_GPI_STICKY_MASK 0x0f13 #define AC_VERB_GET_GPO_DATA 0x0f14 #define AC_VERB_GET_GPIO_DATA 0x0f15 #define AC_VERB_GET_GPIO_MASK 0x0f16 #define AC_VERB_GET_GPIO_DIRECTION 0x0f17 Loading Loading @@ -99,6 +104,11 @@ enum { #define AC_VERB_SET_DIGI_CONVERT_2 0x70e #define AC_VERB_SET_DIGI_CONVERT_3 0x73e #define AC_VERB_SET_VOLUME_KNOB_CONTROL 0x70f #define AC_VERB_SET_GPI_DATA 0x710 #define AC_VERB_SET_GPI_WAKE_MASK 0x711 #define AC_VERB_SET_SPI_UNSOLICITED_RSP_MASK 0x712 #define AC_VERB_SET_GPI_STICKY_MASK 0x713 #define AC_VERB_SET_GPO_DATA 0x714 #define AC_VERB_SET_GPIO_DATA 0x715 #define AC_VERB_SET_GPIO_MASK 0x716 #define AC_VERB_SET_GPIO_DIRECTION 0x717 Loading