drm/i915: Expose the force_audio property with DP MST
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 27 Mar 2019 13:19:29 +0000 (15:19 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 27 Mar 2019 13:19:41 +0000 (15:19 +0200)
We already expose the force_audio property with SST. Do the same
with MST.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190326142556.21176-2-ville.syrjala@linux.intel.com
drivers/gpu/drm/i915/intel_dp_mst.c

index 3e45420c6af04ec0e9d0ed4c53cc23f1b20b1c2e..880003c8576bd6b0f9dfae8b3bb07c200d546e3f 100644 (file)
@@ -38,6 +38,8 @@ static int intel_dp_mst_compute_config(struct intel_encoder *encoder,
        struct intel_digital_port *intel_dig_port = intel_mst->primary;
        struct intel_dp *intel_dp = &intel_dig_port->dp;
        struct drm_connector *connector = conn_state->connector;
+       struct intel_digital_connector_state *intel_conn_state =
+               to_intel_digital_connector_state(conn_state);
        void *port = to_intel_connector(connector)->port;
        struct drm_atomic_state *state = pipe_config->base.state;
        struct drm_crtc *crtc = pipe_config->base.crtc;
@@ -62,6 +64,14 @@ static int intel_dp_mst_compute_config(struct intel_encoder *encoder,
                DRM_DEBUG_KMS("Setting pipe bpp to %d\n",
                              bpp);
        }
+
+       if (intel_conn_state->force_audio == HDMI_AUDIO_AUTO)
+               pipe_config->has_audio =
+                       drm_dp_mst_port_has_audio(&intel_dp->mst_mgr, port);
+       else
+               pipe_config->has_audio =
+                       intel_conn_state->force_audio == HDMI_AUDIO_ON;
+
        /*
         * for MST we always configure max link bw - the spec doesn't
         * seem to suggest we should do otherwise.
@@ -74,9 +84,6 @@ static int intel_dp_mst_compute_config(struct intel_encoder *encoder,
 
        pipe_config->port_clock = intel_dp_max_link_rate(intel_dp);
 
-       if (drm_dp_mst_port_has_audio(&intel_dp->mst_mgr, port))
-               pipe_config->has_audio = true;
-
        pipe_config->limited_color_range =
                intel_dp_limited_color_range(pipe_config, conn_state);
 
@@ -496,6 +503,7 @@ static struct drm_connector *intel_dp_add_mst_connector(struct drm_dp_mst_topolo
        if (ret)
                goto err;
 
+       intel_attach_force_audio_property(connector);
        intel_attach_broadcast_rgb_property(connector);
 
        return connector;