ALSA: x86: Use config base depending on the pipe
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Tue, 31 Jan 2017 20:16:53 +0000 (14:16 -0600)
committerTakashi Iwai <tiwai@suse.de>
Wed, 1 Feb 2017 15:22:25 +0000 (16:22 +0100)
Now the pipe that is being used is passed over i915 notification, we
can re-setup the relevant register offset depending on pipe assignments
during hotplug.
This allows playback on single port machines such Zotac Pi330 or
dual-port machines such as Dell Wyse 3040 box

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/x86/intel_hdmi_lpe_audio.c

index cea05dfc081ac0d468266ba8235dddb7162f1662..6d630f20bca8dea45163db05505df5608e01510f 100644 (file)
@@ -463,6 +463,22 @@ static void notify_audio_lpe(void *audio_ptr)
 
        } else if (eld != NULL) {
 
+               switch (eld->pipe_id) {
+               case 0:
+                       ctx->had_config_offset = AUDIO_HDMI_CONFIG_A;
+                       break;
+               case 1:
+                       ctx->had_config_offset = AUDIO_HDMI_CONFIG_B;
+                       break;
+               case 2:
+                       ctx->had_config_offset = AUDIO_HDMI_CONFIG_C;
+                       break;
+               default:
+                       dev_dbg(&hlpe_pdev->dev, "Invalid pipe %d\n",
+                               eld->pipe_id);
+                       break;
+               }
+
                hdmi_set_eld(eld->eld_data);
 
                mid_hdmi_audio_signal_event(HAD_EVENT_HOT_PLUG);
@@ -560,15 +576,15 @@ static int hdmi_lpe_audio_probe(struct platform_device *pdev)
        ctx->mmio_start = mmio_start;
        ctx->tmds_clock_speed = DIS_SAMPLE_RATE_148_5;
 
-       if (pci_dev_present(cherryview_ids)) {
+       if (pci_dev_present(cherryview_ids))
                dev_dbg(&hlpe_pdev->dev, "%s: Cherrytrail LPE - Detected\n",
                                __func__);
-               ctx->had_config_offset = AUDIO_HDMI_CONFIG_C;
-       } else {
+       else
                dev_dbg(&hlpe_pdev->dev, "%s: Baytrail LPE - Assume\n",
                                __func__);
-               ctx->had_config_offset = AUDIO_HDMI_CONFIG_A;
-       }
+
+       /* assume pipe A as default */
+       ctx->had_config_offset = AUDIO_HDMI_CONFIG_A;
 
        pdata = pdev->dev.platform_data;