diff options
Diffstat (limited to 'sound/pci/hda/patch_hdmi.c')
-rw-r--r-- | sound/pci/hda/patch_hdmi.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c index 7ea0245fc6bd..50173d412ac5 100644 --- a/sound/pci/hda/patch_hdmi.c +++ b/sound/pci/hda/patch_hdmi.c | |||
@@ -937,6 +937,14 @@ static void hdmi_setup_audio_infoframe(struct hda_codec *codec, | |||
937 | } | 937 | } |
938 | 938 | ||
939 | /* | 939 | /* |
940 | * always configure channel mapping, it may have been changed by the | ||
941 | * user in the meantime | ||
942 | */ | ||
943 | hdmi_setup_channel_mapping(codec, pin_nid, non_pcm, ca, | ||
944 | channels, per_pin->chmap, | ||
945 | per_pin->chmap_set); | ||
946 | |||
947 | /* | ||
940 | * sizeof(ai) is used instead of sizeof(*hdmi_ai) or | 948 | * sizeof(ai) is used instead of sizeof(*hdmi_ai) or |
941 | * sizeof(*dp_ai) to avoid partial match/update problems when | 949 | * sizeof(*dp_ai) to avoid partial match/update problems when |
942 | * the user switches between HDMI/DP monitors. | 950 | * the user switches between HDMI/DP monitors. |
@@ -947,20 +955,10 @@ static void hdmi_setup_audio_infoframe(struct hda_codec *codec, | |||
947 | "pin=%d channels=%d\n", | 955 | "pin=%d channels=%d\n", |
948 | pin_nid, | 956 | pin_nid, |
949 | channels); | 957 | channels); |
950 | hdmi_setup_channel_mapping(codec, pin_nid, non_pcm, ca, | ||
951 | channels, per_pin->chmap, | ||
952 | per_pin->chmap_set); | ||
953 | hdmi_stop_infoframe_trans(codec, pin_nid); | 958 | hdmi_stop_infoframe_trans(codec, pin_nid); |
954 | hdmi_fill_audio_infoframe(codec, pin_nid, | 959 | hdmi_fill_audio_infoframe(codec, pin_nid, |
955 | ai.bytes, sizeof(ai)); | 960 | ai.bytes, sizeof(ai)); |
956 | hdmi_start_infoframe_trans(codec, pin_nid); | 961 | hdmi_start_infoframe_trans(codec, pin_nid); |
957 | } else { | ||
958 | /* For non-pcm audio switch, setup new channel mapping | ||
959 | * accordingly */ | ||
960 | if (per_pin->non_pcm != non_pcm) | ||
961 | hdmi_setup_channel_mapping(codec, pin_nid, non_pcm, ca, | ||
962 | channels, per_pin->chmap, | ||
963 | per_pin->chmap_set); | ||
964 | } | 962 | } |
965 | 963 | ||
966 | per_pin->non_pcm = non_pcm; | 964 | per_pin->non_pcm = non_pcm; |