{
        struct kbl_rt5663_private *ctx = snd_soc_card_get_drvdata(card);
        struct kbl_hdmi_pcm *pcm;
+       struct snd_soc_codec *codec = NULL;
        int err, i = 0;
        char jack_name[NAME_SIZE];
 
        list_for_each_entry(pcm, &ctx->hdmi_pcm_list, head) {
+               codec = pcm->codec_dai->codec;
                snprintf(jack_name, sizeof(jack_name),
                        "HDMI/DP, pcm=%d Jack", pcm->device);
                err = snd_soc_card_jack_new(card, jack_name,
                i++;
        }
 
-       return 0;
+       if (!codec)
+               return -EINVAL;
+
+       return hdac_hdmi_jack_port_init(codec, &card->dapm);
 }
 
 /* kabylake audio machine driver for SPT + RT5663 */
 
 {
        struct kbl_codec_private *ctx = snd_soc_card_get_drvdata(card);
        struct kbl_hdmi_pcm *pcm;
+       struct snd_soc_codec *codec = NULL;
        int err, i = 0;
        char jack_name[NAME_SIZE];
 
        list_for_each_entry(pcm, &ctx->hdmi_pcm_list, head) {
+               codec = pcm->codec_dai->codec;
                err = snd_soc_card_jack_new(card, jack_name,
                                SND_JACK_AVOUT, &ctx->kabylake_hdmi[i],
                                NULL, 0);
                i++;
        }
 
-       return 0;
+       if (!codec)
+               return -EINVAL;
+
+       return hdac_hdmi_jack_port_init(codec, &card->dapm);
 }
 
 /*