if (pin_idx < 0)
                return;
  
 -      hdmi_present_sense(&spec->pins[pin_idx], true);
 +      hdmi_present_sense(&spec->pins[pin_idx], 1);
+       snd_hda_jack_report_sync(codec);
  }
  
  static void hdmi_non_intrinsic_event(struct hda_codec *codec, unsigned int res)
        struct hdmi_spec_per_pin *per_pin = &spec->pins[pin_idx];
        int pcmdev = spec->pcm_rec[pin_idx].device;
  
-       snprintf(hdmi_str, sizeof(hdmi_str), "HDMI/DP,pcm=%d", pcmdev);
- 
-       err = snd_hda_input_jack_add(codec, per_pin->pin_nid,
-                            SND_JACK_VIDEOOUT, pcmdev > 0 ? hdmi_str : NULL);
-       if (err < 0)
-               return err;
+       if (pcmdev > 0)
+               sprintf(hdmi_str + strlen(hdmi_str), ",pcm=%d", pcmdev);
  
-       return 0;
 +      hdmi_present_sense(per_pin, 0);
+       return snd_hda_jack_add_kctl(codec, per_pin->pin_nid, hdmi_str, 0);
  }
  
  static int generic_hdmi_build_controls(struct hda_codec *codec)