From nobody Tue Feb 10 04:17:49 2026 Received: from mail-lf1-f54.google.com (mail-lf1-f54.google.com [209.85.167.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DE81320010C for ; Wed, 11 Dec 2024 23:42:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733960540; cv=none; b=DH6fWFM6+DpCdsQhQGZLAas0H/HRZm5qm3jLoHTbICrBVzsIPlE4L8KUEz+KeYXi288qkwP4DWB9OAxfJrJHt6+JZWeFaQI7fPYwukVyKrmDfH0EaJpw4MkfTcfN0hvi31Vgc17GBjkTmRocN3jK5vVoS4VG4f0Jp8xTWAN5SAA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733960540; c=relaxed/simple; bh=q2Wpdk6a7PejwU+tRmqcZH8pc/kqghVtciEb83rKrj8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FN8uQ7bqkQB5d3pBZc89ERhEilTnlItouoX6X5kjWS/Cio9qMUOxE6aZysSsfzZW7BYOkwzuFz1XsfkKp+QUy9I4b80nkub+DRLs0D2pn6cGvn5VsSJwM8zHCno4GWNgWn3+kMQkvUqaLRmWZ9L34dVKpH74FV6sIC6WfSo5vFg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=scPxqy2m; arc=none smtp.client-ip=209.85.167.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="scPxqy2m" Received: by mail-lf1-f54.google.com with SMTP id 2adb3069b0e04-53df19bf6a9so12285e87.1 for ; Wed, 11 Dec 2024 15:42:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1733960535; x=1734565335; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=5U4rAU+mn9lgiYE7skJSEVH4Q7pScWV+iPduICAG46I=; b=scPxqy2mbk/soiMHFtSIxZpSFaqQwyYL1ixRKd+U8+BAIyY8wTKiUHv951jEaHgI+c dshBrKPOLI8ME+bf3CHaiE7M/jmzEqGIliwss5vj8kcsEdti52i95TuoheVdCqiZk9cJ AHolxVszyNqyeeQJg80F68MfbZN2ukeLiUAyhqnkZ4Ha0tlFXlM6T6jsA60WWpdKrM0B aCcxblDJS4KyX1AzJhJ/0eLIUHol79dIQoxYXChLL4KKbzEH3XXv3tA4RQ5h9iWjWkQk WX9L7aCKWC/osABOiKpUASzmDgFnLmPVtH+fWW9ojZ/xDeLgSjXu6K77gav7VmbJMBqs qnzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733960535; x=1734565335; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5U4rAU+mn9lgiYE7skJSEVH4Q7pScWV+iPduICAG46I=; b=Zz4oYQJC4SZMtErUHqyFFgepJ2ZPNLwHm65axP4SqcYy3cAq/d3BzhlXTAWbiiiiBy m25EFPHpxMzNeI75T3BdOYSGPufAPLg6jL1TsPvKBExAdhWJJhtrt9X9Ehvp317+2kbi j5KBT70nXuN0ooVPdb4XWTFjg55Z1vKPUO18tu8HiiY8DvPxPDjM/s0ALfbtBgaxmAdf bjbDFxHvjsW0dAcFqoO8ZCU9sRfaRLJAJSu2xaqRFvLYNy8vQa5WNNXynApwEDTp/3i3 opOURIdg/WsSB3eabJ+SM6HVzXH17qNQ8cVl6b8LjiBEwDSgjbAoEN94vV8BeNr139aT mlsg== X-Forwarded-Encrypted: i=1; AJvYcCXDsp4gE1OuaFKJmyP5EAMCfe3RhfQD20X2zkvI7QBjeQlHB9Ku1GawoTIayf49BkxPDc3/kEdqTP8BYcY=@vger.kernel.org X-Gm-Message-State: AOJu0YyThdxM2cmdKEa+mDdNYR+lSBzgxcxHsZcY/gWr0U+7Fg7taSAg 3vYNe8iBVxh7lK2LKlIx0O8gd2bHqy/Kvuy1jN4sgdrpKQ2sYOV5egpLLB4L/vM= X-Gm-Gg: ASbGnctRtmJGFncPGDURyms0Avb2/UCZx+cyTgENIMDelnqTdX4jRtB5KM2lk4JHm4L SYcKxi00677eppRecSe2h5SIpLJKg1x7kjHLodEOEl7h8Chu4IjxBe8FMicTvZtXuHOgDhcNJm9 i72eMHDZyHKIEw/LRFidk5L7MDA9ZSe/lCG0pKwF3bHqJPvZXfysoz9PITfUDdEx2jKSvex6qVy eBM62/YPjzCU1Ad0m34BeLbyMP/fhrxWIcYeehGbD6MdtLcZh8txZ1LXoJDfg== X-Google-Smtp-Source: AGHT+IEsNblDOqlywljHeHp9/AKFt+qWO6OSyiJv/53HGXMHr4buE/4T3I9aqV93f3EfDYeHAteVbA== X-Received: by 2002:a05:6512:230e:b0:540:20b8:7325 with SMTP id 2adb3069b0e04-5402eff23c7mr378802e87.2.1733960534929; Wed, 11 Dec 2024 15:42:14 -0800 (PST) Received: from umbar.lan ([192.130.178.90]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5401cc76909sm1222207e87.58.2024.12.11.15.42.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Dec 2024 15:42:13 -0800 (PST) From: Dmitry Baryshkov Date: Thu, 12 Dec 2024 01:41:46 +0200 Subject: [PATCH v3 11/14] drm/msm/dp: move/inline audio related functions Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241212-fd-dp-audio-fixup-v3-11-0b1c65e7dba3@linaro.org> References: <20241212-fd-dp-audio-fixup-v3-0-0b1c65e7dba3@linaro.org> In-Reply-To: <20241212-fd-dp-audio-fixup-v3-0-0b1c65e7dba3@linaro.org> To: Rob Clark , Abhinav Kumar , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Paloma Arellano Cc: Douglas Anderson , Stephen Boyd , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=8655; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=q2Wpdk6a7PejwU+tRmqcZH8pc/kqghVtciEb83rKrj8=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBnWiM5g3t5mL3cPGG4uI0Qr//8u09OHFA4QaL++ 0XWmvb5INuJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZ1ojOQAKCRCLPIo+Aiko 1QHhB/49HUPeenCCuFA+mR9dLSoZBym5mr2szuaHlkwfqGzBGMtcJJbq8ADexbasKCqD/tB4z1m S1i8YkXcRm/s2liNwebJtzoH6Dq4p117vq5Hg0UxH18LkZIbq6/t+ixZOnmSBgR27ckTkVN7/SO Ii6B9V+puAz7ronde0soH++Cvkk1DFNimt2eHNhLAYeOH0LDVH8746pk8vVoTKQs/63/mTAF/xZ ld0DdIwn28PIQaoNI9FPMYKRfYcyCrDsD0Ccuvz9bSim9eMLR7U/7frxQkUnRE3O3BbuuOKYpPf HbBuWQ8JwzIjb4Wkp9eInHmtDETzEK8Y2KXeERR7y5xyhSs4 X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A Move audio-related functions to dp_audio.c, following up the cleanup done by the rest of the submodules. Inline functions with simple register access patterns. Reviewed-by: Stephen Boyd Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dp/dp_audio.c | 72 +++++++++++++++++++++---- drivers/gpu/drm/msm/dp/dp_catalog.c | 105 --------------------------------= ---- drivers/gpu/drm/msm/dp/dp_catalog.h | 6 --- 3 files changed, 63 insertions(+), 120 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_audio.c b/drivers/gpu/drm/msm/dp/dp_= audio.c index 24b62faa875437e184895c6d03df19884ebb1fd6..4eec0af178cbb190b4e9262dbe9= a6e788a57c054 100644 --- a/drivers/gpu/drm/msm/dp/dp_audio.c +++ b/drivers/gpu/drm/msm/dp/dp_audio.c @@ -119,9 +119,41 @@ static void msm_dp_audio_isrc_sdp(struct msm_dp_audio_= private *audio) msm_dp_write_link(catalog, MMSS_DP_AUDIO_ISRC_1, header[1]); } =20 +static void msm_dp_audio_config_sdp(struct msm_dp_audio_private *audio) +{ + struct msm_dp_catalog *msm_dp_catalog =3D audio->catalog; + u32 sdp_cfg, sdp_cfg2; + + sdp_cfg =3D msm_dp_read_link(msm_dp_catalog, MMSS_DP_SDP_CFG); + /* AUDIO_TIMESTAMP_SDP_EN */ + sdp_cfg |=3D BIT(1); + /* AUDIO_STREAM_SDP_EN */ + sdp_cfg |=3D BIT(2); + /* AUDIO_COPY_MANAGEMENT_SDP_EN */ + sdp_cfg |=3D BIT(5); + /* AUDIO_ISRC_SDP_EN */ + sdp_cfg |=3D BIT(6); + /* AUDIO_INFOFRAME_SDP_EN */ + sdp_cfg |=3D BIT(20); + + drm_dbg_dp(audio->drm_dev, "sdp_cfg =3D 0x%x\n", sdp_cfg); + + msm_dp_write_link(msm_dp_catalog, MMSS_DP_SDP_CFG, sdp_cfg); + + sdp_cfg2 =3D msm_dp_read_link(msm_dp_catalog, MMSS_DP_SDP_CFG2); + /* IFRM_REGSRC -> Do not use reg values */ + sdp_cfg2 &=3D ~BIT(0); + /* AUDIO_STREAM_HB3_REGSRC-> Do not use reg values */ + sdp_cfg2 &=3D ~BIT(1); + + drm_dbg_dp(audio->drm_dev, "sdp_cfg2 =3D 0x%x\n", sdp_cfg2); + + msm_dp_write_link(msm_dp_catalog, MMSS_DP_SDP_CFG2, sdp_cfg2); +} + static void msm_dp_audio_setup_sdp(struct msm_dp_audio_private *audio) { - msm_dp_catalog_audio_config_sdp(audio->catalog); + msm_dp_audio_config_sdp(audio); =20 msm_dp_audio_stream_sdp(audio); msm_dp_audio_timestamp_sdp(audio); @@ -132,8 +164,7 @@ static void msm_dp_audio_setup_sdp(struct msm_dp_audio_= private *audio) =20 static void msm_dp_audio_setup_acr(struct msm_dp_audio_private *audio) { - u32 select =3D 0; - struct msm_dp_catalog *catalog =3D audio->catalog; + u32 select, acr_ctrl; =20 switch (audio->msm_dp_audio.bw_code) { case DP_LINK_BW_1_62: @@ -154,13 +185,17 @@ static void msm_dp_audio_setup_acr(struct msm_dp_audi= o_private *audio) break; } =20 - msm_dp_catalog_audio_config_acr(catalog, select); + acr_ctrl =3D select << 4 | BIT(31) | BIT(8) | BIT(14); + + drm_dbg_dp(audio->drm_dev, "select: %#x, acr_ctrl: %#x\n", + select, acr_ctrl); + + msm_dp_write_link(audio->catalog, MMSS_DP_AUDIO_ACR_CTRL, acr_ctrl); } =20 static void msm_dp_audio_safe_to_exit_level(struct msm_dp_audio_private *a= udio) { - struct msm_dp_catalog *catalog =3D audio->catalog; - u32 safe_to_exit_level =3D 0; + u32 safe_to_exit_level, mainlink_levels; =20 switch (audio->msm_dp_audio.lane_count) { case 1: @@ -180,14 +215,33 @@ static void msm_dp_audio_safe_to_exit_level(struct ms= m_dp_audio_private *audio) break; } =20 - msm_dp_catalog_audio_sfe_level(catalog, safe_to_exit_level); + mainlink_levels =3D msm_dp_read_link(audio->catalog, REG_DP_MAINLINK_LEVE= LS); + mainlink_levels &=3D 0xFE0; + mainlink_levels |=3D safe_to_exit_level; + + drm_dbg_dp(audio->drm_dev, + "mainlink_level =3D 0x%x, safe_to_exit_level =3D 0x%x\n", + mainlink_levels, safe_to_exit_level); + + msm_dp_write_link(audio->catalog, REG_DP_MAINLINK_LEVELS, mainlink_levels= ); } =20 static void msm_dp_audio_enable(struct msm_dp_audio_private *audio, bool e= nable) { - struct msm_dp_catalog *catalog =3D audio->catalog; + u32 audio_ctrl; + + audio_ctrl =3D msm_dp_read_link(audio->catalog, MMSS_DP_AUDIO_CFG); + + if (enable) + audio_ctrl |=3D BIT(0); + else + audio_ctrl &=3D ~BIT(0); + + drm_dbg_dp(audio->drm_dev, "dp_audio_cfg =3D 0x%x\n", audio_ctrl); =20 - msm_dp_catalog_audio_enable(catalog, enable); + msm_dp_write_link(audio->catalog, MMSS_DP_AUDIO_CFG, audio_ctrl); + /* make sure audio engine is disabled */ + wmb(); } =20 static struct msm_dp_audio_private *msm_dp_audio_get_data(struct platform_= device *pdev) diff --git a/drivers/gpu/drm/msm/dp/dp_catalog.c b/drivers/gpu/drm/msm/dp/d= p_catalog.c index c1c30da001ed881e1524370be9082d959bdd8bc7..2eea02fc4cca3f7183e97d0fc08= 6b8d6fa27ad00 100644 --- a/drivers/gpu/drm/msm/dp/dp_catalog.c +++ b/drivers/gpu/drm/msm/dp/dp_catalog.c @@ -302,108 +302,3 @@ struct msm_dp_catalog *msm_dp_catalog_get(struct devi= ce *dev) =20 return &catalog->msm_dp_catalog; } - -void msm_dp_catalog_audio_config_acr(struct msm_dp_catalog *msm_dp_catalog= , u32 select) -{ - struct msm_dp_catalog_private *catalog; - u32 acr_ctrl; - - if (!msm_dp_catalog) - return; - - catalog =3D container_of(msm_dp_catalog, - struct msm_dp_catalog_private, msm_dp_catalog); - - acr_ctrl =3D select << 4 | BIT(31) | BIT(8) | BIT(14); - - drm_dbg_dp(catalog->drm_dev, "select: %#x, acr_ctrl: %#x\n", - select, acr_ctrl); - - msm_dp_write_link(msm_dp_catalog, MMSS_DP_AUDIO_ACR_CTRL, acr_ctrl); -} - -void msm_dp_catalog_audio_enable(struct msm_dp_catalog *msm_dp_catalog, bo= ol enable) -{ - struct msm_dp_catalog_private *catalog; - u32 audio_ctrl; - - if (!msm_dp_catalog) - return; - - catalog =3D container_of(msm_dp_catalog, - struct msm_dp_catalog_private, msm_dp_catalog); - - audio_ctrl =3D msm_dp_read_link(msm_dp_catalog, MMSS_DP_AUDIO_CFG); - - if (enable) - audio_ctrl |=3D BIT(0); - else - audio_ctrl &=3D ~BIT(0); - - drm_dbg_dp(catalog->drm_dev, "dp_audio_cfg =3D 0x%x\n", audio_ctrl); - - msm_dp_write_link(msm_dp_catalog, MMSS_DP_AUDIO_CFG, audio_ctrl); - /* make sure audio engine is disabled */ - wmb(); -} - -void msm_dp_catalog_audio_config_sdp(struct msm_dp_catalog *msm_dp_catalog) -{ - struct msm_dp_catalog_private *catalog; - u32 sdp_cfg =3D 0; - u32 sdp_cfg2 =3D 0; - - if (!msm_dp_catalog) - return; - - catalog =3D container_of(msm_dp_catalog, - struct msm_dp_catalog_private, msm_dp_catalog); - - sdp_cfg =3D msm_dp_read_link(msm_dp_catalog, MMSS_DP_SDP_CFG); - /* AUDIO_TIMESTAMP_SDP_EN */ - sdp_cfg |=3D BIT(1); - /* AUDIO_STREAM_SDP_EN */ - sdp_cfg |=3D BIT(2); - /* AUDIO_COPY_MANAGEMENT_SDP_EN */ - sdp_cfg |=3D BIT(5); - /* AUDIO_ISRC_SDP_EN */ - sdp_cfg |=3D BIT(6); - /* AUDIO_INFOFRAME_SDP_EN */ - sdp_cfg |=3D BIT(20); - - drm_dbg_dp(catalog->drm_dev, "sdp_cfg =3D 0x%x\n", sdp_cfg); - - msm_dp_write_link(msm_dp_catalog, MMSS_DP_SDP_CFG, sdp_cfg); - - sdp_cfg2 =3D msm_dp_read_link(msm_dp_catalog, MMSS_DP_SDP_CFG2); - /* IFRM_REGSRC -> Do not use reg values */ - sdp_cfg2 &=3D ~BIT(0); - /* AUDIO_STREAM_HB3_REGSRC-> Do not use reg values */ - sdp_cfg2 &=3D ~BIT(1); - - drm_dbg_dp(catalog->drm_dev, "sdp_cfg2 =3D 0x%x\n", sdp_cfg2); - - msm_dp_write_link(msm_dp_catalog, MMSS_DP_SDP_CFG2, sdp_cfg2); -} - -void msm_dp_catalog_audio_sfe_level(struct msm_dp_catalog *msm_dp_catalog,= u32 safe_to_exit_level) -{ - struct msm_dp_catalog_private *catalog; - u32 mainlink_levels; - - if (!msm_dp_catalog) - return; - - catalog =3D container_of(msm_dp_catalog, - struct msm_dp_catalog_private, msm_dp_catalog); - - mainlink_levels =3D msm_dp_read_link(msm_dp_catalog, REG_DP_MAINLINK_LEVE= LS); - mainlink_levels &=3D 0xFE0; - mainlink_levels |=3D safe_to_exit_level; - - drm_dbg_dp(catalog->drm_dev, - "mainlink_level =3D 0x%x, safe_to_exit_level =3D 0x%x\n", - mainlink_levels, safe_to_exit_level); - - msm_dp_write_link(msm_dp_catalog, REG_DP_MAINLINK_LEVELS, mainlink_levels= ); -} diff --git a/drivers/gpu/drm/msm/dp/dp_catalog.h b/drivers/gpu/drm/msm/dp/d= p_catalog.h index 5ac89a11a503e2abae9f4cc4740b18f2f3b6da5e..a6d662f5a0d95cdb8f40a9d03be= 1e7627907b176 100644 --- a/drivers/gpu/drm/msm/dp/dp_catalog.h +++ b/drivers/gpu/drm/msm/dp/dp_catalog.h @@ -130,10 +130,4 @@ u32 msm_dp_catalog_ctrl_read_psr_interrupt_status(stru= ct msm_dp_catalog *msm_dp_ =20 struct msm_dp_catalog *msm_dp_catalog_get(struct device *dev); =20 -/* DP Audio APIs */ -void msm_dp_catalog_audio_config_acr(struct msm_dp_catalog *catalog, u32 s= elect); -void msm_dp_catalog_audio_enable(struct msm_dp_catalog *catalog, bool enab= le); -void msm_dp_catalog_audio_config_sdp(struct msm_dp_catalog *catalog); -void msm_dp_catalog_audio_sfe_level(struct msm_dp_catalog *catalog, u32 sa= fe_to_exit_level); - #endif /* _DP_CATALOG_H_ */ --=20 2.39.5