mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-13 04:41:17 +00:00
ALSA: hda - Add multi-headphone NIDs in multiout struct
For supporting both the multiple headphones and the multiple speakers, add the new field in struct hda_multi_out, and evaluate in the standard setup functions. Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
cb4e482415
commit
a06dbfc2cf
@ -4566,6 +4566,11 @@ int snd_hda_multi_out_analog_prepare(struct hda_codec *codec,
|
|||||||
snd_hda_codec_setup_stream(codec, mout->hp_nid, stream_tag,
|
snd_hda_codec_setup_stream(codec, mout->hp_nid, stream_tag,
|
||||||
0, format);
|
0, format);
|
||||||
/* extra outputs copied from front */
|
/* extra outputs copied from front */
|
||||||
|
for (i = 0; i < ARRAY_SIZE(mout->hp_out_nid); i++)
|
||||||
|
if (!mout->no_share_stream && mout->hp_out_nid[i])
|
||||||
|
snd_hda_codec_setup_stream(codec,
|
||||||
|
mout->hp_out_nid[i],
|
||||||
|
stream_tag, 0, format);
|
||||||
for (i = 0; i < ARRAY_SIZE(mout->extra_out_nid); i++)
|
for (i = 0; i < ARRAY_SIZE(mout->extra_out_nid); i++)
|
||||||
if (!mout->no_share_stream && mout->extra_out_nid[i])
|
if (!mout->no_share_stream && mout->extra_out_nid[i])
|
||||||
snd_hda_codec_setup_stream(codec,
|
snd_hda_codec_setup_stream(codec,
|
||||||
@ -4598,6 +4603,10 @@ int snd_hda_multi_out_analog_cleanup(struct hda_codec *codec,
|
|||||||
snd_hda_codec_cleanup_stream(codec, nids[i]);
|
snd_hda_codec_cleanup_stream(codec, nids[i]);
|
||||||
if (mout->hp_nid)
|
if (mout->hp_nid)
|
||||||
snd_hda_codec_cleanup_stream(codec, mout->hp_nid);
|
snd_hda_codec_cleanup_stream(codec, mout->hp_nid);
|
||||||
|
for (i = 0; i < ARRAY_SIZE(mout->hp_out_nid); i++)
|
||||||
|
if (mout->hp_out_nid[i])
|
||||||
|
snd_hda_codec_cleanup_stream(codec,
|
||||||
|
mout->hp_out_nid[i]);
|
||||||
for (i = 0; i < ARRAY_SIZE(mout->extra_out_nid); i++)
|
for (i = 0; i < ARRAY_SIZE(mout->extra_out_nid); i++)
|
||||||
if (mout->extra_out_nid[i])
|
if (mout->extra_out_nid[i])
|
||||||
snd_hda_codec_cleanup_stream(codec,
|
snd_hda_codec_cleanup_stream(codec,
|
||||||
|
@ -267,11 +267,14 @@ int snd_hda_ch_mode_put(struct hda_codec *codec,
|
|||||||
enum { HDA_FRONT, HDA_REAR, HDA_CLFE, HDA_SIDE }; /* index for dac_nidx */
|
enum { HDA_FRONT, HDA_REAR, HDA_CLFE, HDA_SIDE }; /* index for dac_nidx */
|
||||||
enum { HDA_DIG_NONE, HDA_DIG_EXCLUSIVE, HDA_DIG_ANALOG_DUP }; /* dig_out_used */
|
enum { HDA_DIG_NONE, HDA_DIG_EXCLUSIVE, HDA_DIG_ANALOG_DUP }; /* dig_out_used */
|
||||||
|
|
||||||
|
#define HDA_MAX_OUTS 5
|
||||||
|
|
||||||
struct hda_multi_out {
|
struct hda_multi_out {
|
||||||
int num_dacs; /* # of DACs, must be more than 1 */
|
int num_dacs; /* # of DACs, must be more than 1 */
|
||||||
const hda_nid_t *dac_nids; /* DAC list */
|
const hda_nid_t *dac_nids; /* DAC list */
|
||||||
hda_nid_t hp_nid; /* optional DAC for HP, 0 when not exists */
|
hda_nid_t hp_nid; /* optional DAC for HP, 0 when not exists */
|
||||||
hda_nid_t extra_out_nid[3]; /* optional DACs, 0 when not exists */
|
hda_nid_t hp_out_nid[HDA_MAX_OUTS]; /* DACs for multiple HPs */
|
||||||
|
hda_nid_t extra_out_nid[HDA_MAX_OUTS]; /* other (e.g. speaker) DACs */
|
||||||
hda_nid_t dig_out_nid; /* digital out audio widget */
|
hda_nid_t dig_out_nid; /* digital out audio widget */
|
||||||
const hda_nid_t *slave_dig_outs;
|
const hda_nid_t *slave_dig_outs;
|
||||||
int max_channels; /* currently supported analog channels */
|
int max_channels; /* currently supported analog channels */
|
||||||
@ -385,7 +388,7 @@ enum {
|
|||||||
AUTO_PIN_HP_OUT
|
AUTO_PIN_HP_OUT
|
||||||
};
|
};
|
||||||
|
|
||||||
#define AUTO_CFG_MAX_OUTS 5
|
#define AUTO_CFG_MAX_OUTS HDA_MAX_OUTS
|
||||||
#define AUTO_CFG_MAX_INS 8
|
#define AUTO_CFG_MAX_INS 8
|
||||||
|
|
||||||
struct auto_pin_cfg_item {
|
struct auto_pin_cfg_item {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user