From patchwork Wed Mar 18 11:30:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Shankar, Uma" X-Patchwork-Id: 11444955 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8449992A for ; Wed, 18 Mar 2020 11:03:24 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 6AB372076F for ; Wed, 18 Mar 2020 11:03:24 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6AB372076F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id EC2876E8C9; Wed, 18 Mar 2020 11:03:23 +0000 (UTC) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9DFEA6E8C9 for ; Wed, 18 Mar 2020 11:03:22 +0000 (UTC) IronPort-SDR: 7N4eUPx4qVUugxUSAFGr9YnTxMhpLtUGd4+SSb7r+X0XhGUgvoA7tfXVYAew24Y5wiy93Qq3ZH jTTcGWQDAQvA== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Mar 2020 04:03:21 -0700 IronPort-SDR: zEUP3ppJVyqnRS3DXmkiiLOA9Gj4D6ESD1r0Z4bg0eai/e4oscwy/p/S0tlJ7FqhxvGFlueIQy U65jqXuHlabw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,567,1574150400"; d="scan'208";a="417905503" Received: from unknown (HELO linuxpresi1-desktop.iind.intel.com) ([10.223.74.152]) by orsmga005.jf.intel.com with ESMTP; 18 Mar 2020 04:03:18 -0700 From: Uma Shankar To: intel-gfx@lists.freedesktop.org Date: Wed, 18 Mar 2020 17:00:09 +0530 Message-Id: <20200318113009.16757-1-uma.shankar@intel.com> X-Mailer: git-send-email 2.22.0 MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH] drm/i915/display: Trigger Modeset at boot for audio codec init X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: SweeAun Khor Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" If external monitors are connected during boot up, driver uses the same mode programmed by BIOS and avoids a full modeset. This results in display audio codec left uninitialized and display audio fails to work till user triggers a modeset. This patch fixes the same by triggering a modeset at boot. Cc: Ville Syrjälä Cc: Maarten Lankhorst Cc: Kai Vehmanen Signed-off-by: Uma Shankar Signed-off-by: SweeAun Khor --- drivers/gpu/drm/i915/display/intel_ddi.c | 4 ++++ drivers/gpu/drm/i915/display/intel_display.c | 8 ++++++++ drivers/gpu/drm/i915/i915_drv.h | 3 +++ 3 files changed, 15 insertions(+) diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c index 73d0f4648c06..ba380afa73a6 100644 --- a/drivers/gpu/drm/i915/display/intel_ddi.c +++ b/drivers/gpu/drm/i915/display/intel_ddi.c @@ -3704,6 +3704,10 @@ static void intel_ddi_update_pipe(struct intel_encoder *encoder, const struct intel_crtc_state *crtc_state, const struct drm_connector_state *conn_state) { + struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); + + /* Clear the bootflag */ + dev_priv->bootflag = false; if (!intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) intel_ddi_update_pipe_dp(encoder, crtc_state, conn_state); diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index 8f23c4d51c33..a1487539495f 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -14751,6 +14751,10 @@ static int intel_atomic_check(struct drm_device *dev, if (new_crtc_state->hw.mode.private_flags != old_crtc_state->hw.mode.private_flags) new_crtc_state->uapi.mode_changed = true; + + /* Set mode_change to init audio code once at boot */ + if (dev_priv->bootflag && new_crtc_state->hw.active) + new_crtc_state->uapi.mode_changed = true; } ret = drm_atomic_helper_check_modeset(dev, &state->base); @@ -17655,11 +17659,15 @@ static void intel_update_fdi_pll_freq(struct drm_i915_private *dev_priv) static int intel_initial_commit(struct drm_device *dev) { + struct drm_i915_private *dev_priv = to_i915(dev); struct drm_atomic_state *state = NULL; struct drm_modeset_acquire_ctx ctx; struct intel_crtc *crtc; int ret = 0; + /* Set Flag to trigger modeset for audio codec init */ + dev_priv->bootflag = true; + state = drm_atomic_state_alloc(dev); if (!state) return -ENOMEM; diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index a7ea1d855359..207196f9632b 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -1210,6 +1210,9 @@ struct drm_i915_private { * NOTE: This is the dri1/ums dungeon, don't add stuff here. Your patch * will be rejected. Instead look for a better place. */ + + /* Flag to trigger modeset for Audio codec init once during boot */ + bool bootflag; }; static inline struct drm_i915_private *to_i915(const struct drm_device *dev)