ALSA: hda - add Nvidia T114 Tegra HDMI codec id
Dara Ramesh [Thu, 20 Sep 2012 04:14:48 +0000 (09:14 +0530)]
Signed-off-by: Dara Ramesh <dramesh@nvidia.com>
Reviewed-on: http://git-master/r/133966
(cherry picked from commit e4473b4eb34fc8b57f358e0ff38095c731a6f01b)

Change-Id: I8987c4d5555a4fd0da127ec5abbf004ffe32117b
Signed-off-by: Bharat Nihalani <bnihalani@nvidia.com>
Reviewed-on: http://git-master/r/146953
Reviewed-by: Automatic_Commit_Validation_User

sound/pci/hda/patch_hdmi.c

index 51a73e1..637b3b2 100644 (file)
@@ -786,7 +786,8 @@ static void hdmi_intrinsic_event(struct hda_codec *codec, unsigned int res)
        hdmi_present_sense(&spec->pins[pin_idx], 1);
 
 #ifdef CONFIG_SND_HDA_PLATFORM_NVIDIA_TEGRA
-       if (codec->preset->id == 0x10de0020) {
+       if (((codec->preset->id == 0x10de0020) ||
+               (codec->preset->id == 0x10de0022))) {
                /*
                 * HDMI sink's ELD info cannot always be retrieved for now, e.g.
                 * in console or for audio devices. Assume the highest speakers
@@ -906,8 +907,9 @@ static int hdmi_pcm_open(struct hda_pcm_stream *hinfo,
        eld = &per_pin->sink_eld;
 
 #ifdef CONFIG_SND_HDA_PLATFORM_NVIDIA_TEGRA
-       if ((codec->preset->id == 0x10de0020) &&
-           (!eld->monitor_present || !eld->lpcm_sad_ready)) {
+       if ((((codec->preset->id == 0x10de0020) ||
+               (codec->preset->id == 0x10de0022))) &&
+               (!eld->monitor_present || !eld->lpcm_sad_ready)) {
                if (!eld->monitor_present) {
                        if (tegra_hdmi_setup_hda_presence() < 0) {
                                snd_printk(KERN_WARNING
@@ -1051,7 +1053,8 @@ static void hdmi_repoll_eld(struct work_struct *work)
        hdmi_present_sense(per_pin, per_pin->repoll_count);
 
 #ifdef CONFIG_SND_HDA_PLATFORM_NVIDIA_TEGRA
-       if (codec->preset->id == 0x10de0020) {
+       if ((codec->preset->id == 0x10de0020) ||
+               (codec->preset->id == 0x10de0022)) {
                /*
                 * HDMI sink's ELD info cannot always be retrieved for now, e.g.
                 * in console or for audio devices. Assume the highest speakers
@@ -1169,7 +1172,8 @@ static int hdmi_parse_codec(struct hda_codec *codec)
         */
 #ifdef CONFIG_SND_HDA_POWER_SAVE
        if ((!(snd_hda_param_read(codec, codec->afg, AC_PAR_POWER_STATE) &
-             AC_PWRST_EPSS)) && (codec->preset->id != 0x10de0020))
+               AC_PWRST_EPSS)) && ((codec->preset->id != 0x10de0020) ||
+               (codec->preset->id != 0x10de0022)))
                codec->bus->power_keep_link_on = 1;
 #endif
 
@@ -1202,7 +1206,8 @@ static int generic_hdmi_playback_pcm_prepare(struct hda_pcm_stream *hinfo,
        int pinctl;
 
 #if defined(CONFIG_SND_HDA_PLATFORM_NVIDIA_TEGRA) && defined(CONFIG_TEGRA_DC)
-       if (codec->preset->id == 0x10de0020) {
+       if ((codec->preset->id == 0x10de0020) ||
+               (codec->preset->id == 0x10de0022)) {
                int err = 0;
 
                if (substream->runtime->channels == 2)
@@ -1357,6 +1362,7 @@ static int generic_hdmi_init(struct hda_codec *codec)
 
        switch (codec->preset->id) {
        case 0x10de0020:
+       case 0x10de0022:
                snd_hda_codec_write(codec, 4, 0,
                                    AC_VERB_SET_DIGI_CONVERT_1, 0x11);
        default:
@@ -1979,6 +1985,7 @@ static const struct hda_codec_preset snd_hda_preset_hdmi[] = {
 { .id = 0x10de001b, .name = "GPU 1b HDMI/DP",  .patch = patch_generic_hdmi },
 { .id = 0x10de001c, .name = "GPU 1c HDMI/DP",  .patch = patch_generic_hdmi },
 { .id = 0x10de0020, .name = "Tegra30 HDMI",    .patch = patch_generic_hdmi },
+{ .id = 0x10de0022, .name = "Tegra35 HDMI",    .patch = patch_generic_hdmi },
 { .id = 0x10de0040, .name = "GPU 40 HDMI/DP",  .patch = patch_generic_hdmi },
 { .id = 0x10de0041, .name = "GPU 41 HDMI/DP",  .patch = patch_generic_hdmi },
 { .id = 0x10de0042, .name = "GPU 42 HDMI/DP",  .patch = patch_generic_hdmi },
@@ -2026,6 +2033,7 @@ MODULE_ALIAS("snd-hda-codec-id:10de001a");
 MODULE_ALIAS("snd-hda-codec-id:10de001b");
 MODULE_ALIAS("snd-hda-codec-id:10de001c");
 MODULE_ALIAS("snd-hda-codec-id:10de0020");
+MODULE_ALIAS("snd-hda-codec-id:10de0022");
 MODULE_ALIAS("snd-hda-codec-id:10de0040");
 MODULE_ALIAS("snd-hda-codec-id:10de0041");
 MODULE_ALIAS("snd-hda-codec-id:10de0042");