static void hdmi_setup_channel_mapping(struct hda_codec *codec,
                                       hda_nid_t pin_nid, bool non_pcm, int ca,
-                                      int channels, unsigned char *map)
+                                      int channels, unsigned char *map,
+                                      bool chmap_set)
 {
-       if (!non_pcm && map) {
+       if (!non_pcm && chmap_set) {
                hdmi_manual_setup_channel_mapping(codec, pin_nid,
                                                  channels, map);
        } else {
                            pin_nid,
                            channels);
                hdmi_setup_channel_mapping(codec, pin_nid, non_pcm, ca,
-                                          channels, per_pin->chmap);
+                                          channels, per_pin->chmap,
+                                          per_pin->chmap_set);
                hdmi_stop_infoframe_trans(codec, pin_nid);
                hdmi_fill_audio_infoframe(codec, pin_nid,
                                            ai.bytes, sizeof(ai));
                 * accordingly */
                if (per_pin->non_pcm != non_pcm)
                        hdmi_setup_channel_mapping(codec, pin_nid, non_pcm, ca,
-                                                  channels, per_pin->chmap);
+                                                  channels, per_pin->chmap,
+                                                  per_pin->chmap_set);
        }
 
        per_pin->non_pcm = non_pcm;