ALSA: hda: Add support for 92HD73xxx codecs
Added support for new family of IDT codecs. Signed-off-by: Matthew Ranostay <mranostay@embeddedalley.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
parent
d3bd67cdbb
commit
aafc4412be
|
@ -636,21 +636,28 @@ static struct hda_verb stac92hd71bxx_core_init[] = {
|
|||
{ 0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
|
||||
};
|
||||
|
||||
#define HD_DISABLE_PORTF 3
|
||||
static struct hda_verb stac92hd71bxx_analog_core_init[] = {
|
||||
/* start of config #1 */
|
||||
|
||||
/* connect port 0f to audio mixer */
|
||||
{ 0x0f, AC_VERB_SET_CONNECT_SEL, 0x2},
|
||||
{ 0x0f, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, /* Speaker */
|
||||
/* unmute right and left channels for node 0x0f */
|
||||
{ 0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
|
||||
/* start of config #2 */
|
||||
|
||||
/* set master volume and direct control */
|
||||
{ 0x28, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0xff},
|
||||
/* connect headphone jack to dac1 */
|
||||
{ 0x0a, AC_VERB_SET_CONNECT_SEL, 0x01},
|
||||
/* connect ports 0d and 0f to audio mixer */
|
||||
/* connect port 0d to audio mixer */
|
||||
{ 0x0d, AC_VERB_SET_CONNECT_SEL, 0x2},
|
||||
{ 0x0f, AC_VERB_SET_CONNECT_SEL, 0x2},
|
||||
{ 0x0f, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, /* Speaker */
|
||||
/* unmute dac0 input in audio mixer */
|
||||
{ 0x17, AC_VERB_SET_AMP_GAIN_MUTE, 0x701f},
|
||||
/* unmute right and left channels for nodes 0x0a, 0xd, 0x0f */
|
||||
/* unmute right and left channels for nodes 0x0a, 0xd */
|
||||
{ 0x0a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
|
||||
{ 0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
|
||||
{ 0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
|
||||
{}
|
||||
};
|
||||
|
||||
|
@ -1317,13 +1324,13 @@ static unsigned int ref92hd71bxx_pin_configs[10] = {
|
|||
0x90a000f0, 0x01452050,
|
||||
};
|
||||
|
||||
static unsigned int dell_m4_1_pin_configs[13] = {
|
||||
static unsigned int dell_m4_1_pin_configs[10] = {
|
||||
0x0421101f, 0x04a11221, 0x40f000f0, 0x90170110,
|
||||
0x23a1902e, 0x23014250, 0x40f000f0, 0x90a000f0,
|
||||
0x40f000f0, 0x4f0000f0,
|
||||
};
|
||||
|
||||
static unsigned int dell_m4_2_pin_configs[13] = {
|
||||
static unsigned int dell_m4_2_pin_configs[10] = {
|
||||
0x0421101f, 0x04a11221, 0x90a70330, 0x90170110,
|
||||
0x23a1902e, 0x23014250, 0x40f000f0, 0x40f000f0,
|
||||
0x40f000f0, 0x044413b0,
|
||||
|
@ -3095,13 +3102,16 @@ static int stac92xx_init(struct hda_codec *codec)
|
|||
0, AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
|
||||
int def_conf = snd_hda_codec_read(codec, spec->pwr_nids[i],
|
||||
0, AC_VERB_GET_CONFIG_DEFAULT, 0);
|
||||
def_conf = get_defcfg_connect(def_conf);
|
||||
/* outputs are only ports capable of power management
|
||||
* any attempts on powering down a input port cause the
|
||||
* referenced VREF to act quirky.
|
||||
*/
|
||||
if (pinctl & AC_PINCTL_IN_EN)
|
||||
continue;
|
||||
if (get_defcfg_connect(def_conf) != AC_JACK_PORT_FIXED)
|
||||
/* skip any ports that don't have jacks since presence
|
||||
* detection is useless */
|
||||
if (def_conf && def_conf != AC_JACK_PORT_FIXED)
|
||||
continue;
|
||||
enable_pin_detect(codec, spec->pwr_nids[i], event | i);
|
||||
codec->patch_ops.unsol_event(codec, (event | i) << 26);
|
||||
|
@ -3606,6 +3616,7 @@ static int patch_stac92hd71bxx(struct hda_codec *codec)
|
|||
|
||||
codec->spec = spec;
|
||||
spec->num_pins = ARRAY_SIZE(stac92hd71bxx_pin_nids);
|
||||
spec->num_pwrs = ARRAY_SIZE(stac92hd71bxx_pwr_nids);
|
||||
spec->pin_nids = stac92hd71bxx_pin_nids;
|
||||
spec->board_config = snd_hda_check_board_config(codec,
|
||||
STAC_92HD71BXX_MODELS,
|
||||
|
@ -3634,6 +3645,19 @@ again:
|
|||
spec->mixer = stac92hd71bxx_mixer;
|
||||
spec->init = stac92hd71bxx_core_init;
|
||||
break;
|
||||
case 0x111d7608: /* 5 Port with Analog Mixer */
|
||||
/* no output amps */
|
||||
spec->num_pwrs = 0;
|
||||
spec->mixer = stac92hd71bxx_analog_mixer;
|
||||
|
||||
/* disable VSW */
|
||||
spec->init = &stac92hd71bxx_analog_core_init[HD_DISABLE_PORTF];
|
||||
stac92xx_set_config_reg(codec, 0xf, 0x40f000f0);
|
||||
break;
|
||||
case 0x111d7603: /* 6 Port with Analog Mixer */
|
||||
/* no output amps */
|
||||
spec->num_pwrs = 0;
|
||||
/* fallthru */
|
||||
default:
|
||||
spec->mixer = stac92hd71bxx_analog_mixer;
|
||||
spec->init = stac92hd71bxx_analog_core_init;
|
||||
|
@ -3652,15 +3676,13 @@ again:
|
|||
spec->adc_nids = stac92hd71bxx_adc_nids;
|
||||
spec->dmic_nids = stac92hd71bxx_dmic_nids;
|
||||
spec->dmux_nids = stac92hd71bxx_dmux_nids;
|
||||
spec->pwr_nids = stac92hd71bxx_pwr_nids;
|
||||
|
||||
spec->num_muxes = ARRAY_SIZE(stac92hd71bxx_mux_nids);
|
||||
spec->num_adcs = ARRAY_SIZE(stac92hd71bxx_adc_nids);
|
||||
spec->num_dmics = STAC92HD71BXX_NUM_DMICS;
|
||||
spec->num_dmuxes = ARRAY_SIZE(stac92hd71bxx_dmux_nids);
|
||||
|
||||
spec->num_pwrs = ARRAY_SIZE(stac92hd71bxx_pwr_nids);
|
||||
spec->pwr_nids = stac92hd71bxx_pwr_nids;
|
||||
|
||||
spec->multiout.num_dacs = 1;
|
||||
spec->multiout.hp_nid = 0x11;
|
||||
spec->multiout.dac_nids = stac92hd71bxx_dac_nids;
|
||||
|
@ -4298,10 +4320,11 @@ struct hda_codec_preset snd_hda_preset_sigmatel[] = {
|
|||
{ .id = 0x838476a5, .name = "STAC9255D", .patch = patch_stac9205 },
|
||||
{ .id = 0x838476a6, .name = "STAC9254", .patch = patch_stac9205 },
|
||||
{ .id = 0x838476a7, .name = "STAC9254D", .patch = patch_stac9205 },
|
||||
{ .id = 0x111d7603, .name = "92HD75B3X5", .patch = patch_stac92hd71bxx},
|
||||
{ .id = 0x111d7608, .name = "92HD75B2X5", .patch = patch_stac92hd71bxx},
|
||||
{ .id = 0x111d7674, .name = "92HD73D1X5", .patch = patch_stac92hd73xx },
|
||||
{ .id = 0x111d7675, .name = "92HD73C1X5", .patch = patch_stac92hd73xx },
|
||||
{ .id = 0x111d7676, .name = "92HD73E1X5", .patch = patch_stac92hd73xx },
|
||||
{ .id = 0x111d7608, .name = "92HD71BXX", .patch = patch_stac92hd71bxx },
|
||||
{ .id = 0x111d76b0, .name = "92HD71B8X", .patch = patch_stac92hd71bxx },
|
||||
{ .id = 0x111d76b1, .name = "92HD71B8X", .patch = patch_stac92hd71bxx },
|
||||
{ .id = 0x111d76b2, .name = "92HD71B7X", .patch = patch_stac92hd71bxx },
|
||||
|
|
Loading…
Reference in New Issue