ALSA: hda - Increase the max number of coverters/pins in patch_hdmi.c
authorTakashi Iwai <tiwai@suse.de>
Thu, 24 Nov 2011 13:44:19 +0000 (14:44 +0100)
committerTakashi Iwai <tiwai@suse.de>
Sat, 26 Nov 2011 09:19:48 +0000 (10:19 +0100)
The new hardware tends to have more and more.  As a temporary fix, just
increase the number for now.

For a long-term solution, we should assign the cvts/pins dynamically.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/patch_hdmi.c

index c505fd5..6e0756f 100644 (file)
@@ -48,8 +48,8 @@ MODULE_PARM_DESC(static_hdmi_pcm, "Don't restrict PCM parameters per ELD info");
  *
  * The HDA correspondence of pipes/ports are converter/pin nodes.
  */
-#define MAX_HDMI_CVTS  4
-#define MAX_HDMI_PINS  4
+#define MAX_HDMI_CVTS  8
+#define MAX_HDMI_PINS  8
 
 struct hdmi_spec_per_cvt {
        hda_nid_t cvt_nid;
@@ -1126,12 +1126,12 @@ static int hdmi_parse_codec(struct hda_codec *codec)
 
 /*
  */
-static char *generic_hdmi_pcm_names[MAX_HDMI_PINS] = {
-       "HDMI 0",
-       "HDMI 1",
-       "HDMI 2",
-       "HDMI 3",
-};
+static char *get_hdmi_pcm_name(int idx)
+{
+       static char names[MAX_HDMI_PINS][8];
+       sprintf(&names[idx][0], "HDMI %d", idx);
+       return &names[idx][0];
+}
 
 /*
  * HDMI callbacks
@@ -1209,7 +1209,7 @@ static int generic_hdmi_build_pcms(struct hda_codec *codec)
                struct hda_pcm_stream *pstr;
 
                info = &spec->pcm_rec[pin_idx];
-               info->name = generic_hdmi_pcm_names[pin_idx];
+               info->name = get_hdmi_pcm_name(pin_idx);
                info->pcm_type = HDA_PCM_TYPE_HDMI;
 
                pstr = &info->stream[SNDRV_PCM_STREAM_PLAYBACK];
@@ -1364,7 +1364,7 @@ static int simple_playback_build_pcms(struct hda_codec *codec)
                chans = get_wcaps(codec, spec->cvts[i].cvt_nid);
                chans = get_wcaps_channels(chans);
 
-               info->name = generic_hdmi_pcm_names[i];
+               info->name = get_hdmi_pcm_name(i);
                info->pcm_type = HDA_PCM_TYPE_HDMI;
                pstr = &info->stream[SNDRV_PCM_STREAM_PLAYBACK];
                snd_BUG_ON(!spec->pcm_playback);