From nobody Wed Feb 11 12:56:29 2026 Received: from mail-lj1-f173.google.com (mail-lj1-f173.google.com [209.85.208.173]) (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 D3DEE81AA2 for ; Wed, 22 May 2024 10:51:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375066; cv=none; b=ZHscx7SW88m/0fUSwLqLc/0UFcKLQY0ebflNurVYwqFbcmG/e2LgGm9ThoAX1YTmMr/mmQL24IEAUQtLVQoJqxwKA4H9m/GTA8KNLXZyyulKj5Ic1AkPgKhAsN+mygeUv822hJYboFapbIMAfP6/EbNsLqkf6EMyciRwQtMAvm4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375066; c=relaxed/simple; bh=GHqYh/OpnADzbIGNQTWljjAqbsvOTUqyL6NzDNpzFls=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oT8lpQdMRvDiOxSswmNd1D6Oo0YcYQGnul38IgV3Cr9u0KvXlLi/SmLD7KfvJaIK8VJ6O90V68C5HanUqcR7/42ARQ/x5jbTD4iSWdxiBovIOw9j84bQQd2ZMTFX2SCId0PO8iIAcLruxwBfWabsSDBCJp1/4+UCYf3T1Ny9w+w= 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=QTCcRXrD; arc=none smtp.client-ip=209.85.208.173 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="QTCcRXrD" Received: by mail-lj1-f173.google.com with SMTP id 38308e7fff4ca-2e716e3030aso44425411fa.2 for ; Wed, 22 May 2024 03:51:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1716375059; x=1716979859; 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=03lZtK/lY1XEVDdKgvI8NPNMNTf3HunLZingl7OzXps=; b=QTCcRXrDWWkAGiBd93rSVTXvPVTdcRUsUwkBju4f5q6NldPXSpJerIOvr3ma4lAgD6 8EVeyoI8Fiw9mLltCiJMsYkwrGNgysJssKHmn0oiKxE6kJ6dWNMF/+8AC75vA2NfXc7Y 6VWC3Sr9ZtUiTDIRnMdRXQMV8ZoMteQwyQhbGibglXeZIDI703bnVLAO82+XWiG3kWHq N5ccLY3FGL6/FcY4CbJ3ubz0cmLe9T4c3yAz51vCZFAeNh+nFYLsMhvzNerpwylLy/NH 7mKMlrKiC5NznviCOwa6XBs0BrGN4w4CpLEat6VhtN9M4lXU5kSuW1BOJN5BsWV298lr JIEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716375059; x=1716979859; 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=03lZtK/lY1XEVDdKgvI8NPNMNTf3HunLZingl7OzXps=; b=YcxN89fl08iyoTbzX7zpUWzhcjEBh9SxbPyy3Dqg+/WHHwBic6J334XQPBfKYYrq/s rwuVIjlO+bf22xTCWRcRDomf0dls1EkZf7SvDR2X3TuqlBDxEhQClPAplFp80hrU4qHL qECAM+tv/2gCrJrzE4B5escvBgN7SRfTJ+zfHs7F8vL0N5faemqxodc5nGNOJGCT1fz2 9S8S/gRKZsDAzs3l3cWEi15tXQMTEfZ5O9QPNz4ZLaNAo81WcogHY39pEcPROfMCanWY cOmC7xZXL4HexVEGA0LH+ZfEUHNOBxThMKcO+wXdNsnM9jss5FVIa9LrziJKhT4ImsnV 20yw== X-Forwarded-Encrypted: i=1; AJvYcCUXb/fbbdkwJjZ3xNTeUIeaFSRt+Uzbe9OGHLWCAfqS8T9IDLAAe9mVpkPhDzqaZbBfYMtf4sHtntRE4ZIPWlUj4wWwcfFgK/KhtfJI X-Gm-Message-State: AOJu0YzzbUAIYQUCsEbK0um06hy85GVkVQ9lpYXJsDIE2pho8tuw93tE LRSpbzF2Bd3R4bTiZLLWSAd3RNe2dQKJIVgHfIM/DQ8cE8UOD+18mcAsDQNupdc= X-Google-Smtp-Source: AGHT+IFjZBlFB63a+RCudEv/MwFQ9Q2bCole0thkPnhyzMY0Oy8BRRlACoKsAdrqd0TOgwhv6ucLQQ== X-Received: by 2002:a19:ca05:0:b0:51d:8159:598 with SMTP id 2adb3069b0e04-526bf35cb35mr855189e87.19.1716375058977; Wed, 22 May 2024 03:50:58 -0700 (PDT) Received: from umbar.lan ([192.130.178.91]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-52431778ec8sm1279126e87.194.2024.05.22.03.50.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 May 2024 03:50:58 -0700 (PDT) From: Dmitry Baryshkov Date: Wed, 22 May 2024 13:50:53 +0300 Subject: [PATCH v2 01/14] drm/msm/hdmi: move the alt_iface clock to the hpd list 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: <20240522-fd-hdmi-hpd-v2-1-c30bdb7c5c7e@linaro.org> References: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> In-Reply-To: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Daniel Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1311; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=GHqYh/OpnADzbIGNQTWljjAqbsvOTUqyL6NzDNpzFls=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBmTc4P+BDWacbqmwW114/XMonajf8PabUyuJ9lv 2ys/6u9ObSJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZk3ODwAKCRCLPIo+Aiko 1e3eB/9uYYVb14/WnhhBPj+AyebWjWRnP0iG8FjY7dT+zHqyaHXAWZqh22kKOrvTdAFImY8ih1Z Lgk5naB5PAau9KARHCmo4xvSVORJHkEmzse2OCD3YJpxoS/3fZb9pqaQabxdi6zrbj2t6rksnwi vtvaSz0tlomAzHIpdZIAxeU6XnxshDfgfnf+44edFQ29Tb658R4vIir+ysKkGeI1qTta+6HQUlB EUZc/mqgBdxzKfBc0YlF+Xz0SayBG8YJC0DtMpEDdBJ4uZjmR45AZ7ihrMm57eZ5P1bkEoS4Chs 91rAubNr/uUXsHn4+bZ3HmPH4dnNKqIfyMAvTS3WyHxqrxzv X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A According to the vendor kernel [1] , the alt_iface clock should be enabled together with the rest of HPD clocks, to make HPD to work properly. [1] https://git.codelinaro.org/clo/la/kernel/msm-3.18/-/commit/e07a5487e521= e57f76083c0a6e2f995414ac6d03 Signed-off-by: Dmitry Baryshkov Reviewed-by: Jessica Zhang --- drivers/gpu/drm/msm/hdmi/hdmi.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdm= i.c index 24abcb7254cc..108c86925780 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c @@ -235,9 +235,9 @@ static const struct hdmi_platform_config hdmi_tx_8960_c= onfig =3D { }; =20 static const char *pwr_reg_names_8x74[] =3D {"core-vdda", "core-vcc"}; -static const char *pwr_clk_names_8x74[] =3D {"extp", "alt_iface"}; -static const char *hpd_clk_names_8x74[] =3D {"iface", "core", "mdp_core"}; -static unsigned long hpd_clk_freq_8x74[] =3D {0, 19200000, 0}; +static const char *pwr_clk_names_8x74[] =3D {"extp"}; +static const char *hpd_clk_names_8x74[] =3D {"iface", "core", "mdp_core", = "alt_iface"}; +static unsigned long hpd_clk_freq_8x74[] =3D {0, 19200000, 0, 0}; =20 static const struct hdmi_platform_config hdmi_tx_8974_config =3D { HDMI_CFG(pwr_reg, 8x74), --=20 2.39.2 From nobody Wed Feb 11 12:56:29 2026 Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) (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 92271811FB for ; Wed, 22 May 2024 10:51:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375064; cv=none; b=MTnjHYPy26HW/Rzj8Zqhk6FenXZeAYeTniP0cvWQu/3mBnbmjGMDMARegkNQx2FNB07u+KopStB2O61QPLE04MqYhrMalNtpjAQNjXo1yvEiJ/aZ5qiH1ydncj1fBJVfGnvDpE7qwaeLXY7rTdjMTFO9MN9p+RkXFaH49TQGz/o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375064; c=relaxed/simple; bh=OqWVWP2+AiuB0eZmmX6BVNibFfmd2vfn14lHJu5N/wM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EZP4EzvDEnC/wSbKPXcbY97e8plGIszNmZwBEfwwWTERvZk+yzuBQrBg4sB5+UG2AK1HkYo89C4WrF0HlYZPlEM1nL1PLuLf43UTWvISZka5KoDRtT7jVxSNyr9A77Xm71MRkVL5AD58iY+kchmv7t38V9m+0drqsVTKYZ03cPI= 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=FzTmBHlb; arc=none smtp.client-ip=209.85.167.47 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="FzTmBHlb" Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-51f1e8eaee5so594818e87.1 for ; Wed, 22 May 2024 03:51:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1716375060; x=1716979860; 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=/4mDJNdY3BQpBxyPjIYj4R7zW531FPYbhtqPnKZkd9k=; b=FzTmBHlbI7SCG6DBYSgSZOeSU5MydeR8v8gXwlNBPhwp3ejtxVDYaLjBLgKBoIj34Z ADL8DcMc96KeRG5W8kEnV2pnShpNr0IPRUtcb5fvWozTwZEyENqpwiPijqTsf8M6ucIb zrblhDwyybFd6jtG2bVzC2TYuHGAjjmBwWwQc5ET5mc48TrjeXClDDdQGCqIQTe6l59r hohVDd6Pyb+6d1ujUKdXzKlrLZGuR8O03TFxssm8FjIlB9XKG4z4u7YNsfdtb0gxzQgq MHbSK15SWyLrGSlFb95sSM0XPCPZfQPm8uG4pEsIPk/M5eZrh8l8DFmRDtZciKzvE8m1 3Y+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716375060; x=1716979860; 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=/4mDJNdY3BQpBxyPjIYj4R7zW531FPYbhtqPnKZkd9k=; b=qdhsFPjaUkL74PxySifX04ekBI+D/3i2eZd+1zHPiWnglqyaw2VBj41V6HRBIZ0xbV 8g54atEC11ifHL/hzXVFA0PSiFGks/Chawi+rYWnM7NhrNtYpLmu8rtQLlfXt3Q57H1x QYteAkjpb+hmaex+swrrPtlCeYXEOm6zEG1FIQgA1JQg8y0aQ9usdmVAtqp6FXYAdoaV 8N+7/G4KJyeacbZt44NWzAMfyA8LEhvhuWMz/J15RnG5oMPjPUbgNnfhnZCHL0Zce93y lxBplsiacKz7sRlRa+j88xlNSFIuEpKWjMTfuLx5RRL2LyV7hG+iBjjtxN4bV2pc6wMU FHCg== X-Forwarded-Encrypted: i=1; AJvYcCUei+gEv9yOhW8IeGxfRwXkSlUsUXoOcvY/PAJjFMkFIhqjD7qz928PlrZkor6TaJYAH567MST4m+NyLe4lhDB5FEQGAgPaFbnHf2te X-Gm-Message-State: AOJu0YwDyh/Iplp2nBP/OnZXB6J3XGbc0zaoh75Oi9DHeFOTha7f5rjH sYGZOkkXSLN3pfVu5LQCqL9EXmU88NeHIg1v/PancCQDDVnx/sAlUuNDusYlh8nKmZgjO2iLcxS Y X-Google-Smtp-Source: AGHT+IEYXIMyl3eSxKpjBCG9L21f/R2Dl2+wh1OnVS2XyqdyNDi1cNFgpQEiZv9NXyXWYkFmbpjYuw== X-Received: by 2002:ac2:46ef:0:b0:51c:b0c9:ea54 with SMTP id 2adb3069b0e04-5269b8a9c36mr552508e87.16.1716375059959; Wed, 22 May 2024 03:50:59 -0700 (PDT) Received: from umbar.lan ([192.130.178.91]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-52431778ec8sm1279126e87.194.2024.05.22.03.50.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 May 2024 03:50:59 -0700 (PDT) From: Dmitry Baryshkov Date: Wed, 22 May 2024 13:50:54 +0300 Subject: [PATCH v2 02/14] drm/msm/hdmi: simplify extp clock handling 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: <20240522-fd-hdmi-hpd-v2-2-c30bdb7c5c7e@linaro.org> References: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> In-Reply-To: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Daniel Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=5848; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=OqWVWP2+AiuB0eZmmX6BVNibFfmd2vfn14lHJu5N/wM=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBmTc4PbIhSU16AXMkzZZcytwIW6PZ12zsiXOYod IBQ5PyaSMeJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZk3ODwAKCRCLPIo+Aiko 1V5oB/4mjXL6dJ/5q/obF0HXfl/AQP265nycil27dxSNjaftozZH2WVndqjQxfgl0S3O+7/ZsZU dUZAtqu3NwlHnTM7EnM7Rf83GjyVCwnO7hfPmNpvrAO564o7qkvDYb7MDyf1Q3hx3fIxvIdLG1D JLr0ZZtuxuKmeu42xCpfS7rTYlkNuONeVlxv26khJL9CzDdf3mcr8a5lMGOrcobOrh69+fhzQD1 bWR/pzkkecsKvpDADa5Bz7rsfXaG+6RrahLWIA8DdOrV9spB5gdkj0SRJuJggDRbfdnRMqDhLw1 +O2y7rVVBQzartquDNj5r4b5x47nugrv7XF8NBMjjXKRhn43 X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A With the extp being the only "power" clock left, remove the surrounding loops and handle the extp clock directly. Signed-off-by: Dmitry Baryshkov Reviewed-by: Jessica Zhang --- drivers/gpu/drm/msm/hdmi/hdmi.c | 24 ++++-------------------- drivers/gpu/drm/msm/hdmi/hdmi.h | 6 +----- drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 33 +++++++++++++-----------------= --- 3 files changed, 18 insertions(+), 45 deletions(-) diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdm= i.c index 108c86925780..681265e29aa0 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c @@ -235,13 +235,11 @@ static const struct hdmi_platform_config hdmi_tx_8960= _config =3D { }; =20 static const char *pwr_reg_names_8x74[] =3D {"core-vdda", "core-vcc"}; -static const char *pwr_clk_names_8x74[] =3D {"extp"}; static const char *hpd_clk_names_8x74[] =3D {"iface", "core", "mdp_core", = "alt_iface"}; static unsigned long hpd_clk_freq_8x74[] =3D {0, 19200000, 0, 0}; =20 static const struct hdmi_platform_config hdmi_tx_8974_config =3D { HDMI_CFG(pwr_reg, 8x74), - HDMI_CFG(pwr_clk, 8x74), HDMI_CFG(hpd_clk, 8x74), .hpd_freq =3D hpd_clk_freq_8x74, }; @@ -485,24 +483,10 @@ static int msm_hdmi_dev_probe(struct platform_device = *pdev) hdmi->hpd_clks[i] =3D clk; } =20 - hdmi->pwr_clks =3D devm_kcalloc(&pdev->dev, - config->pwr_clk_cnt, - sizeof(hdmi->pwr_clks[0]), - GFP_KERNEL); - if (!hdmi->pwr_clks) - return -ENOMEM; - - for (i =3D 0; i < config->pwr_clk_cnt; i++) { - struct clk *clk; - - clk =3D msm_clk_get(pdev, config->pwr_clk_names[i]); - if (IS_ERR(clk)) - return dev_err_probe(dev, PTR_ERR(clk), - "failed to get pwr clk: %s\n", - config->pwr_clk_names[i]); - - hdmi->pwr_clks[i] =3D clk; - } + hdmi->extp_clk =3D devm_clk_get_optional(&pdev->dev, "extp"); + if (IS_ERR(hdmi->extp_clk)) + return dev_err_probe(dev, PTR_ERR(hdmi->extp_clk), + "failed to get extp clock\n"); =20 hdmi->hpd_gpiod =3D devm_gpiod_get_optional(&pdev->dev, "hpd", GPIOD_IN); /* This will catch e.g. -EPROBE_DEFER */ diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.h b/drivers/gpu/drm/msm/hdmi/hdm= i.h index 4586baf36415..abdbe4779cf9 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.h +++ b/drivers/gpu/drm/msm/hdmi/hdmi.h @@ -51,7 +51,7 @@ struct hdmi { struct regulator_bulk_data *hpd_regs; struct regulator_bulk_data *pwr_regs; struct clk **hpd_clks; - struct clk **pwr_clks; + struct clk *extp_clk; =20 struct gpio_desc *hpd_gpiod; =20 @@ -98,10 +98,6 @@ struct hdmi_platform_config { const char **hpd_clk_names; const long unsigned *hpd_freq; int hpd_clk_cnt; - - /* clks that need to be on for screen pwr (ie pixel clk): */ - const char **pwr_clk_names; - int pwr_clk_cnt; }; =20 struct hdmi_bridge { diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c b/drivers/gpu/drm/msm/h= dmi/hdmi_bridge.c index 4a5b5112227f..9eb4d06bdc0e 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c @@ -17,7 +17,7 @@ static void msm_hdmi_power_on(struct drm_bridge *bridge) struct hdmi_bridge *hdmi_bridge =3D to_hdmi_bridge(bridge); struct hdmi *hdmi =3D hdmi_bridge->hdmi; const struct hdmi_platform_config *config =3D hdmi->config; - int i, ret; + int ret; =20 pm_runtime_get_sync(&hdmi->pdev->dev); =20 @@ -25,21 +25,15 @@ static void msm_hdmi_power_on(struct drm_bridge *bridge) if (ret) DRM_DEV_ERROR(dev->dev, "failed to enable pwr regulator: %d\n", ret); =20 - if (config->pwr_clk_cnt > 0) { + if (hdmi->extp_clk) { DBG("pixclock: %lu", hdmi->pixclock); - ret =3D clk_set_rate(hdmi->pwr_clks[0], hdmi->pixclock); - if (ret) { - DRM_DEV_ERROR(dev->dev, "failed to set pixel clk: %s (%d)\n", - config->pwr_clk_names[0], ret); - } - } + ret =3D clk_set_rate(hdmi->extp_clk, hdmi->pixclock); + if (ret) + DRM_DEV_ERROR(dev->dev, "failed to set extp clk rate: %d\n", ret); =20 - for (i =3D 0; i < config->pwr_clk_cnt; i++) { - ret =3D clk_prepare_enable(hdmi->pwr_clks[i]); - if (ret) { - DRM_DEV_ERROR(dev->dev, "failed to enable pwr clk: %s (%d)\n", - config->pwr_clk_names[i], ret); - } + ret =3D clk_prepare_enable(hdmi->extp_clk); + if (ret) + DRM_DEV_ERROR(dev->dev, "failed to enable extp clk: %d\n", ret); } } =20 @@ -49,15 +43,15 @@ static void power_off(struct drm_bridge *bridge) struct hdmi_bridge *hdmi_bridge =3D to_hdmi_bridge(bridge); struct hdmi *hdmi =3D hdmi_bridge->hdmi; const struct hdmi_platform_config *config =3D hdmi->config; - int i, ret; + int ret; =20 /* TODO do we need to wait for final vblank somewhere before * cutting the clocks? */ mdelay(16 + 4); =20 - for (i =3D 0; i < config->pwr_clk_cnt; i++) - clk_disable_unprepare(hdmi->pwr_clks[i]); + if (hdmi->extp_clk) + clk_disable_unprepare(hdmi->extp_clk); =20 ret =3D regulator_bulk_disable(config->pwr_reg_cnt, hdmi->pwr_regs); if (ret) @@ -271,7 +265,6 @@ static enum drm_mode_status msm_hdmi_bridge_mode_valid(= struct drm_bridge *bridge { struct hdmi_bridge *hdmi_bridge =3D to_hdmi_bridge(bridge); struct hdmi *hdmi =3D hdmi_bridge->hdmi; - const struct hdmi_platform_config *config =3D hdmi->config; struct msm_drm_private *priv =3D bridge->dev->dev_private; struct msm_kms *kms =3D priv->kms; long actual, requested; @@ -285,8 +278,8 @@ static enum drm_mode_status msm_hdmi_bridge_mode_valid(= struct drm_bridge *bridge if (kms->funcs->round_pixclk) actual =3D kms->funcs->round_pixclk(kms, requested, hdmi_bridge->hdmi->encoder); - else if (config->pwr_clk_cnt > 0) - actual =3D clk_round_rate(hdmi->pwr_clks[0], requested); + else if (hdmi->extp_clk) + actual =3D clk_round_rate(hdmi->extp_clk, requested); else actual =3D requested; =20 --=20 2.39.2 From nobody Wed Feb 11 12:56:29 2026 Received: from mail-lf1-f44.google.com (mail-lf1-f44.google.com [209.85.167.44]) (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 472A682490 for ; Wed, 22 May 2024 10:51:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375064; cv=none; b=jQjkez0sx1zHU8z54yfsgK50rMpPLq/0VBJbnpb6GPaY5VQ3sp0rnOYcOgA9NSIsORQP4+mIzuKnCUeczZrRlAdLqvXEdOzwv9lQSmIwcCPzooi6mN0v+D1l/Nyy3y27w6RKaY7X+Wb0s267tp/ZYVUDjPYFAqtzLdlB9aMUy8g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375064; c=relaxed/simple; bh=osqs9uVQGma2pB7Uqqmi191XkOj9NO2HEt9nbTjIsVU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LI1NbhZg99HAZsjVNmu92OroWa7n4Zlvlz0gAOA2V8aEJnJnQate+OTDEmwzWHN8h/gLSIUv5aKGIU2DTrPqD0O7fL2lGrPxwdyp21EKjbzsEBwLipEqkDhlcAoROOT0E/6uKk6W6C9P16L4VwmDnHI/QhPEuYuGv2/tCBUbJyQ= 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=TjNkqHKI; arc=none smtp.client-ip=209.85.167.44 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="TjNkqHKI" Received: by mail-lf1-f44.google.com with SMTP id 2adb3069b0e04-5238b5c080cso7888080e87.1 for ; Wed, 22 May 2024 03:51:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1716375060; x=1716979860; 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=9dResiOVnD3KDBKBragxWJ8JzwAGCkXgZAm144m2F5c=; b=TjNkqHKIdYxxWe4LEmJ4nirZAc8wdlcMp/EIEPugcFw18uo8hykEaqzHc6Of5TEfeO 79JcefWoluPbRVUbJOglmYTXbZHK273twte6kDaFWa9HVN7/w8YFlw+O+r1R7otjXaos W6RotYZJRxz4SxXrO/ZdkFSedhT24T+IdImGOmqCByJ1ssxBOeOomSlY8VFuEekLalP4 FYsSXuYdU/Vowx2HZx1mCw13evMhQHSwpyHI013Ux1o0FJwuyRgEWs0SK0TiJ41pzVs/ RvybGeFXC3xcjjbogfVQcPRL2FYfp3Djekbi8k+w/yVxfrO/LruqNkuUnNP17l7Bo7O0 V2fg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716375060; x=1716979860; 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=9dResiOVnD3KDBKBragxWJ8JzwAGCkXgZAm144m2F5c=; b=guhQQE4IlvHKNTz1saV4uPx2b6INhsfctDCl+tMeYLKx28LaIUtCrGWc4UZENHqFWO QCAgdRtPVPTNn0OME2keVgvrfXqgWQpusSf5E8UwIrQ8moo8LtkuwJ81NWtcJ5xY8ty/ mpWOU6MxivTMzfDl5QN94Fo1ndcZ0W6CMxYT039lvpSpAgX0UfJnMS+a2+OVnKgRPcvU 19E+iiqf0fGA/TDQ64XJ4ZxS2Enhv1swD9QF34PIsvoXvl5t+u2DUrD+YZyGIQC5nuHB Zr/Dj11Xkm4TfaADjgs0mB9ViPHnxniLpX4ooSXTUvHES3/D/aVo9O51w+c4h0ZOhNH2 6igg== X-Forwarded-Encrypted: i=1; AJvYcCWeXPEKA+/DQWJiY87dULYef7sZmaR41Lnfdkf4MgFgG7RYvRWiKhfWDKsehbZzcLKPtQ+OMw88/JxrIQmDphH1DhnxGQwW0UHQkmz3 X-Gm-Message-State: AOJu0YznGEVyB7H3CSbf+kFQ5c4HnSLGZnY1ena0h8TTGdRhmir3d/P3 Zeoq2V5L/tdsi7sY9mfP+CFbPtOvh5k7VAxZUII7mWpfytDEfkDNi0DIo/+tn7Q= X-Google-Smtp-Source: AGHT+IEOC9Mt121LUZMOGbgq/bBML1Pc3j8MLinnpLNjgkjcRolQAPuoJbIEqAzUiz7UiRJq4scneg== X-Received: by 2002:a05:6512:1583:b0:51f:5d0a:d71a with SMTP id 2adb3069b0e04-526bd694ab4mr1047130e87.10.1716375060602; Wed, 22 May 2024 03:51:00 -0700 (PDT) Received: from umbar.lan ([192.130.178.91]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-52431778ec8sm1279126e87.194.2024.05.22.03.51.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 May 2024 03:51:00 -0700 (PDT) From: Dmitry Baryshkov Date: Wed, 22 May 2024 13:50:55 +0300 Subject: [PATCH v2 03/14] drm/msm/hdmi: switch to atomic_pre_enable/post_disable 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: <20240522-fd-hdmi-hpd-v2-3-c30bdb7c5c7e@linaro.org> References: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> In-Reply-To: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Daniel Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2151; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=osqs9uVQGma2pB7Uqqmi191XkOj9NO2HEt9nbTjIsVU=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBmTc4PCjd2hgbwjgDirDxBNAxSDUfP1Beqm985y mK3+UPx39GJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZk3ODwAKCRCLPIo+Aiko 1WPYB/9GLMl/u2GZ6jjdkuV0W4HL2lvbKpyLAgp7znyuLJlQUAPszh1vOixoX8xNGhFns22vham I4iJi+J8EkXyOxci+LIH4tRVsV/SxwHRSEW/e3Cw2bXrKQmcDYv7fd+0GHrCCLjcpCMyebaojiW zRBJyJl3CHbBr5p9gzsVLMJylnF0DZTA1ug30vaVjh9K08tofK+gyZ4Ispn4JPX3qyHCuXfciM2 bPq0rZyOMrJ8bx5Jt46S0g3gIGzI3yhMeb83rVW7IeutOq0m1XsS63rQmH/ccGOypBcBVfxVRjx JO7Ny9cUSQ2fG1qG4VcrKyPdZonoRdiIM6VG2BeF/b+MX3uD X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A In preparation of reworking the HDMI mode setting, switch pre_enable and post_disable callbacks to their atomic variants. Signed-off-by: Dmitry Baryshkov Reviewed-by: Jessica Zhang --- drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c b/drivers/gpu/drm/msm/h= dmi/hdmi_bridge.c index 9eb4d06bdc0e..3c6121c57b01 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c @@ -120,7 +120,8 @@ static void msm_hdmi_config_avi_infoframe(struct hdmi *= hdmi) hdmi_write(hdmi, REG_HDMI_INFOFRAME_CTRL1, val); } =20 -static void msm_hdmi_bridge_pre_enable(struct drm_bridge *bridge) +static void msm_hdmi_bridge_atomic_pre_enable(struct drm_bridge *bridge, + struct drm_bridge_state *old_bridge_state) { struct hdmi_bridge *hdmi_bridge =3D to_hdmi_bridge(bridge); struct hdmi *hdmi =3D hdmi_bridge->hdmi; @@ -146,7 +147,8 @@ static void msm_hdmi_bridge_pre_enable(struct drm_bridg= e *bridge) msm_hdmi_hdcp_on(hdmi->hdcp_ctrl); } =20 -static void msm_hdmi_bridge_post_disable(struct drm_bridge *bridge) +static void msm_hdmi_bridge_atomic_post_disable(struct drm_bridge *bridge, + struct drm_bridge_state *old_bridge_state) { struct hdmi_bridge *hdmi_bridge =3D to_hdmi_bridge(bridge); struct hdmi *hdmi =3D hdmi_bridge->hdmi; @@ -292,8 +294,13 @@ static enum drm_mode_status msm_hdmi_bridge_mode_valid= (struct drm_bridge *bridge } =20 static const struct drm_bridge_funcs msm_hdmi_bridge_funcs =3D { - .pre_enable =3D msm_hdmi_bridge_pre_enable, - .post_disable =3D msm_hdmi_bridge_post_disable, + .atomic_duplicate_state =3D drm_atomic_helper_bridge_duplicate_state, + .atomic_destroy_state =3D drm_atomic_helper_bridge_destroy_state, + .atomic_reset =3D drm_atomic_helper_bridge_reset, + + .atomic_pre_enable =3D msm_hdmi_bridge_atomic_pre_enable, + .atomic_post_disable =3D msm_hdmi_bridge_atomic_post_disable, + .mode_set =3D msm_hdmi_bridge_mode_set, .mode_valid =3D msm_hdmi_bridge_mode_valid, .edid_read =3D msm_hdmi_bridge_edid_read, --=20 2.39.2 From nobody Wed Feb 11 12:56:29 2026 Received: from mail-lf1-f43.google.com (mail-lf1-f43.google.com [209.85.167.43]) (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 174D58249F for ; Wed, 22 May 2024 10:51:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375065; cv=none; b=K5byvWjcyW5iHrsyNxlhjfU8NPglkC8Ye3SyCEhmB1nqSuJzXnxO3aWB1NRIU3B5CMpwtxj3+aMjdo1+E3ee3/RagV0INCh9s7OqlkWUQhzT+UXqWsc4OSUtPxeBB9KJ4RSu+4OSaUBdgQQLGli26EEWWsZTHHGD6fTWxOtbjg0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375065; c=relaxed/simple; bh=v9IgZbEVIzCU//v+7Xjr4VR0vD49EBefgZxRpj3Zixc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TeCSqtsBQB8FrbouIEmpGDd01s4g+QGIzHKW9w2Uvs3LKgEbtRBMvsUtiUHwypZZvabKdUSJESsx8+FxAC1SqwhWPI6cpCId521z8CwKAwajRS92qlkZ2EfXz0qALG4/uaaZkGQ/mE4qznU2zbiNtsC1aTLbCBgXDjCdnsYBerU= 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=oMUeZCxD; arc=none smtp.client-ip=209.85.167.43 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="oMUeZCxD" Received: by mail-lf1-f43.google.com with SMTP id 2adb3069b0e04-51f74fa2a82so6417427e87.0 for ; Wed, 22 May 2024 03:51:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1716375061; x=1716979861; 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=/cpewU7AgCBeUcebhA/squE/VnkWqKDOhJWxtD0Wziw=; b=oMUeZCxDlmZY0BipfZBye8cMd7mS1uOpJiXforiOXxfT7WARyXx5lhXfqEeHHmlUzm vZNLRkM70htEyPM9IvXMPITKkFFMs5wcZSbGFOS3bUbaq3B3tadTWrr1zNOZYWk2U8+T J2+pAQp75r807Idmk0Gk0WpTMEfzzXGrlsO9TdHDIoan1tU8BS0J9JaH8yKjbSR6u096 ZKJ/huwiyccSUhQiimk0n/UcSnrpbD7qBUaMCUt6cbkwMU05i6mcVg9doiwLNDhIHPiS b8oCZWEZYWGCW1auJTx6Wat8OElZf9NK/Iuej1m+dxQvepW0EmVHB7ncAjWPc1yc81il HVJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716375061; x=1716979861; 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=/cpewU7AgCBeUcebhA/squE/VnkWqKDOhJWxtD0Wziw=; b=CFT+UiRtsQ6Pl4w0pZg8HuayKeQJgidLy42OQ/eyOXkQJf69oEPDrT4Ir5Ml5Uywba /9UUGxcjuJrjdZpM/kp+qA3mrH1w35LQEZwwM1KeFgy92UXokvT+xXyLqNrvtqjRrtnU dNUyDI50ItpLnudbOuByUhvT8kfem/aoP5tuAXytCHOr7qeRDyp9ZNZNSnJtnRSdD2VN 3EnmAfWPxtQjJRgAh+DQ1ONDOfovu/kWs8RT1Rer3ldLSuUXQ4wSegIbLg5FliTka72D VfEB1pbHgVK0Heji2PwWEIWMXF4tmdfDQmNebRDr+ytyB1Sqx3MDe+yUED9gtQ5c99Ak 5lDg== X-Forwarded-Encrypted: i=1; AJvYcCVkgwQnU2HBwfQ2cEF1/ivZsUSHmBYNq0SQDO0Xz7PO5mQNicyMETmYDSVuSU/Q5nGA5QUwCDdtIWvkYvmyeNFVekUWNtEqITqBpj5E X-Gm-Message-State: AOJu0Yx+15yNREsHG4BS1szT09Y+sjakzHjpqhIDV0BNgGUtKPxDIl1a QreQDYRVlOJ94npgewTgr0GlOSx0Xz/HVBYUYAK/QxlUuV8SDnbiF0Y/MD3wNjs= X-Google-Smtp-Source: AGHT+IHA746vcyQKIF6ARQUrKclZUZ17SOeurs4Y7bb5zbXhpahNcHMlhYUZc1enWJkGEceoCKPVVA== X-Received: by 2002:a05:6512:2030:b0:51d:1d42:3eef with SMTP id 2adb3069b0e04-526bf82d08bmr1528410e87.29.1716375061315; Wed, 22 May 2024 03:51:01 -0700 (PDT) Received: from umbar.lan ([192.130.178.91]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-52431778ec8sm1279126e87.194.2024.05.22.03.51.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 May 2024 03:51:00 -0700 (PDT) From: Dmitry Baryshkov Date: Wed, 22 May 2024 13:50:56 +0300 Subject: [PATCH v2 04/14] drm/msm/hdmi: set infoframes on all pre_enable calls 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: <20240522-fd-hdmi-hpd-v2-4-c30bdb7c5c7e@linaro.org> References: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> In-Reply-To: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Daniel Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1133; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=v9IgZbEVIzCU//v+7Xjr4VR0vD49EBefgZxRpj3Zixc=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBmTc4PZtDbcPARHAK4vTPyxmPCjneihSIWI/DGZ yc1CddrMImJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZk3ODwAKCRCLPIo+Aiko 1QuwB/9C68k51MnziXzY9cD980CHlYfmEBZfzN3HRPuRudP0j0YzyHWgbm6wN+ZIQY4jaqGVNXV 4T6y6ytqk8N1gNtMxki5EfrFIiQDKRYxXyAYrRgiTzzjI0g6vBAThzSgKlJwXnBzu3LZJ0rNPBD gRrFHl1GehF5mJ64QLav5u/c5z7EuAX5ElXSH0DjRsfdnMsGeTyD73KCyNw94bk7XeeGKf6R/bU 6k5iRyb6YQLYbv3Nkgy173dvexu7PNVkL6FDi3yKAUfCG+i9b0RlqKDbYT8r+VfvR3bMX+n5dt5 wCrGSQLNLCj7cHogLW0nFCKGhkFBzo3TPJ2i9qjyMejciR3l X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A In consequent modeset calls, the atomic_pre_enable() will be called several times without calling atomic_post_disable() inbetween. Thus iframes will not be updated for the next mode. Fix this by setting the iframe outside of the !power_on check. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c b/drivers/gpu/drm/msm/h= dmi/hdmi_bridge.c index 3c6121c57b01..fb99328107dd 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c @@ -133,10 +133,11 @@ static void msm_hdmi_bridge_atomic_pre_enable(struct = drm_bridge *bridge, msm_hdmi_phy_resource_enable(phy); msm_hdmi_power_on(bridge); hdmi->power_on =3D true; - if (hdmi->hdmi_mode) { - msm_hdmi_config_avi_infoframe(hdmi); - msm_hdmi_audio_update(hdmi); - } + } + + if (hdmi->hdmi_mode) { + msm_hdmi_config_avi_infoframe(hdmi); + msm_hdmi_audio_update(hdmi); } =20 msm_hdmi_phy_powerup(phy, hdmi->pixclock); --=20 2.39.2 From nobody Wed Feb 11 12:56:29 2026 Received: from mail-lf1-f51.google.com (mail-lf1-f51.google.com [209.85.167.51]) (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 CBEEC824AC for ; Wed, 22 May 2024 10:51:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375065; cv=none; b=U1d/vwyRAjlwpGXEeb/dvIv2ME4YeTJxvapu/00Y0AIa6ixSJu1R3qC+60TNdk1gY560vIuhWQOL4EoOa5NG1mGxiteTD5Ktw3OQCzz7Z4R+lpDQRySCXKSo8tbqouLoWP0o34VVXho5HzqcftGWFQ9Jr6BKDFQJWji9X4I4cfc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375065; c=relaxed/simple; bh=K1KI+nZVasxZlSMfFS8U9hLPw6QPc6PsVGWsUOlWg9o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aUPSEsSAf88+bHUKztlIHYMHeHz7ZmdFUxXWT3Sxq8uAyUR5XMfrNIZqxHQTqWhZTJLK1RGXGnrtNlIVCeJ8rtsLZCsu7SDQ0VQcn/jFVgn9aJzRWn0UZfGoz5oBMZG9RpMT1C3WQO2N1N0a/MeYg4up68twWIUKAtYqwPpDV9k= 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=CjupJRt9; arc=none smtp.client-ip=209.85.167.51 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="CjupJRt9" Received: by mail-lf1-f51.google.com with SMTP id 2adb3069b0e04-51fcb7dc722so643787e87.1 for ; Wed, 22 May 2024 03:51:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1716375062; x=1716979862; 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=tsC/gRsvFclAEANavYSBlEUjjyUnanQ9kBr3o4SWpJA=; b=CjupJRt9CqbVSlMtBqOvGzoSBwc3+xhxQgFfLGk26h7IonFMuQ3T5F18qOaj8qAT2D PaTA6ovZA8w3eJMMl8oRdQGBsFzT+C94K7PRw+OEvtzNjt7k0rq5SWejP5Gp3ZLC4+nl Bcymip1C44ZSgr8xzqgHkbM2JGwnu8cvznlQsT5wLDuS5zn5ihHb1ohiPGOwaWFpTi1f crPey6N1rRR9QLoHdWsfUuzef0V35qco9NNhPAs5Y6nStg55XqQxWNi6Bio6nLC70dSQ sSEDvEC47PywWjDVUtCOra4u2QIqQXrpBR4YV/cEYhMIuZ+uqb3Qfgvg57L1PQ5wx7h9 dNHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716375062; x=1716979862; 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=tsC/gRsvFclAEANavYSBlEUjjyUnanQ9kBr3o4SWpJA=; b=qpBcIyHQk5K5XLi4SFLbTmJG72PuHISgJUacA3Ftk6NEqeLqQknc3S3eiWIzWqir73 XJL0VeORUd66kUiyM1Crfsch86tRlFxOOThWoAWkOlFDWK8VwA6r4CRlrqqZWCTutsF0 O0OSU7DlesCYnkihI3L1LreIfiF0PFUyoJ37gpws70A9STv3oVEf88AbQLYU/A7PZ1Xs tk5l/MrEM/Xc/bsWB/mH+rn+XsYywdKKfttEq15SDEWKXlYQ1LuFXzE3AlKPePDnOnEI ixrh7E98SgHi0XjzF24fHrfTD/D5fjPOvm6TzC1Hfu9xw46w+NJGK/E2FyYG2p9PbBfo kIiQ== X-Forwarded-Encrypted: i=1; AJvYcCXkVsLzJ2JZGeEeshpgRrsCwjJ4GjfJxqXe3RBTpgu/vwLwnjBjNOImqjJxy3vsdKPnwZLRpINrwKnW3Rfcd0X/BsRVSDBchomz+r3I X-Gm-Message-State: AOJu0YwYOuWYLmXt2DUB1i+hGP4LRq9nszvcHRW39SR4N8OWHDvgTG5V EVyqhp4RdusiZCcsg3eIHmjLlsD5RTO1aDdXtAHhIwyBsQ5/5Lqg/z5Wrs1wf5w= X-Google-Smtp-Source: AGHT+IFKBWmoLwb0ELld20WRYh6MP860S9/NAr7J2q43NCXsCE00e4g0SyRTBt1FvFJipTvpKF/64A== X-Received: by 2002:ac2:46ca:0:b0:51c:590f:4305 with SMTP id 2adb3069b0e04-5269b2e6679mr529373e87.8.1716375062015; Wed, 22 May 2024 03:51:02 -0700 (PDT) Received: from umbar.lan ([192.130.178.91]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-52431778ec8sm1279126e87.194.2024.05.22.03.51.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 May 2024 03:51:01 -0700 (PDT) From: Dmitry Baryshkov Date: Wed, 22 May 2024 13:50:57 +0300 Subject: [PATCH v2 05/14] drm/msm/hdmi: drop clock frequency assignment 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: <20240522-fd-hdmi-hpd-v2-5-c30bdb7c5c7e@linaro.org> References: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> In-Reply-To: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Daniel Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2294; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=K1KI+nZVasxZlSMfFS8U9hLPw6QPc6PsVGWsUOlWg9o=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBmTc4PVwLPggWZS7nDhhkL19OkYk1UVB6HyzzLX mh6kxylRy2JATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZk3ODwAKCRCLPIo+Aiko 1T3zB/9Tc0eNy+q8LiRXQPBs5tBj5FD0fCU6cAnP2CgFPzBGWPNFSlTgvY0wUYAIhkX8udzpSbe mhSARwL1p/kUkAYWEVinpmOOjzyfowqVQqiXtzGJgeCpzcLxg9YgdAefRuO5X4FMjOQIydeexxK 4rFnK1ZBFuYeflTip1RBDLYsJfVb+Mt1XfJbbu7SRpyLkI8jEcESSPvtimktULPTKI2EYn3yrFE 2u3lrsW6FWkc2GGo3v+uhClA+Q9YScQllpF2B+Z5ASitZziAnHHhXXXGZEN49f/AwmKHdT31gRc qJdqXDzQTGkSf7y4B0qFRGA5bslOc2ncIzYVceNhmOuRAAG7 X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A The only clock which has frequency being set through hpd_freqs is the "core" aka MDSS_HDMI_CLK clock. It always has the specified frequency, so we can drop corresponding clk_set_rate() call together with the hpd_freq infrastructure. Signed-off-by: Dmitry Baryshkov Reviewed-by: Jessica Zhang --- drivers/gpu/drm/msm/hdmi/hdmi.c | 2 -- drivers/gpu/drm/msm/hdmi/hdmi.h | 1 - drivers/gpu/drm/msm/hdmi/hdmi_hpd.c | 9 --------- 3 files changed, 12 deletions(-) diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdm= i.c index 681265e29aa0..c14e009f38b1 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c @@ -236,12 +236,10 @@ static const struct hdmi_platform_config hdmi_tx_8960= _config =3D { =20 static const char *pwr_reg_names_8x74[] =3D {"core-vdda", "core-vcc"}; static const char *hpd_clk_names_8x74[] =3D {"iface", "core", "mdp_core", = "alt_iface"}; -static unsigned long hpd_clk_freq_8x74[] =3D {0, 19200000, 0, 0}; =20 static const struct hdmi_platform_config hdmi_tx_8974_config =3D { HDMI_CFG(pwr_reg, 8x74), HDMI_CFG(hpd_clk, 8x74), - .hpd_freq =3D hpd_clk_freq_8x74, }; =20 /* diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.h b/drivers/gpu/drm/msm/hdmi/hdm= i.h index abdbe4779cf9..c0d60ed23b75 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.h +++ b/drivers/gpu/drm/msm/hdmi/hdmi.h @@ -96,7 +96,6 @@ struct hdmi_platform_config { =20 /* clks that need to be on for hpd: */ const char **hpd_clk_names; - const long unsigned *hpd_freq; int hpd_clk_cnt; }; =20 diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c b/drivers/gpu/drm/msm/hdmi= /hdmi_hpd.c index 9ce0ffa35417..7ae69b14e953 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c @@ -68,15 +68,6 @@ static void enable_hpd_clocks(struct hdmi *hdmi, bool en= able) =20 if (enable) { for (i =3D 0; i < config->hpd_clk_cnt; i++) { - if (config->hpd_freq && config->hpd_freq[i]) { - ret =3D clk_set_rate(hdmi->hpd_clks[i], - config->hpd_freq[i]); - if (ret) - dev_warn(dev, - "failed to set clk %s (%d)\n", - config->hpd_clk_names[i], ret); - } - ret =3D clk_prepare_enable(hdmi->hpd_clks[i]); if (ret) { DRM_DEV_ERROR(dev, --=20 2.39.2 From nobody Wed Feb 11 12:56:29 2026 Received: from mail-lf1-f51.google.com (mail-lf1-f51.google.com [209.85.167.51]) (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 9714E8286B for ; Wed, 22 May 2024 10:51:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375066; cv=none; b=qBQSK226wCLLA9m19tdAFWfaTNbVUhh1KnsqhziiDgOzFBqpFENHuyGyiMROP+iFzyNHi3QMepNL9sbQQZw5gilGl7G4JxBofD4kS60oi6c79MR0fTLRhCn45I7djpA0dUhyPx0g/2++VcaXIw5VXhCVgv1xZULpIn56DcsYUXU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375066; c=relaxed/simple; bh=qWoWxaBIT57QfQL/H3b3qamuy/KWc1sBIdaw/+EtJuE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JILUY62YXrXWlxpNYWaD3hOl2tQWx3Togo7R3U40MtZWyE7J7/hF4Y9+MqnwAq9ULKyYkX5StmyXRNLIuaHAwOM637ngRqF+BXo5UPtvhCVVyk1ZW47iZsl3P2sT6p471YQnbV1/JcaJg/dhrO3B8YyLL7UOm8gwAdsdlwXkgEo= 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=Xf0382W7; arc=none smtp.client-ip=209.85.167.51 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="Xf0382W7" Received: by mail-lf1-f51.google.com with SMTP id 2adb3069b0e04-51f40b5e059so6899583e87.0 for ; Wed, 22 May 2024 03:51:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1716375063; x=1716979863; 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=Thx5VEVIdtS5W6YUF2PWAi/DMOAy+79Zm1AEBWpV7cY=; b=Xf0382W7oHg4HtgzOES28PyexMoQR9x8xQEUhn+BVHJQDskGPdKCqsfD1G+ynr/zwK u0So3Y8o5qLR/t95IBbgmPjCLMEcJp6qS58r0LlyPLZ6wA3cQWQMNiwwQuPXM37uZMFY 6x74oAsh+Vq8d8LoKeHn5aRRGHcaTCKYsggORLlIgI8toBrZSUeM3zCaJ3k3uLoH+9tl YB7djfDmk6yAvzHdgYyId/9mwKdv7IK7Me6++Z95CvjgW3b57U9kUmQNyEZWXOhnjMkP QKWMw67DZenb6gjVgvwxHi5XK6U/t8I5OfMVS1VtgE2v0/PfpMOqjYxqWrJvccUUrwcx sxqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716375063; x=1716979863; 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=Thx5VEVIdtS5W6YUF2PWAi/DMOAy+79Zm1AEBWpV7cY=; b=lKI7BWWnln+Y6ZbOuDNx9j1kNSk5Cvp6d80ZT1XCeIHGi8zLmi9C3w5Oo03DKJeGY0 jyta7TKwHyoO/rVykSERfJImYv3Fbax9h8MZEwYUhBOi2yLHl2SpzenUqfMYahEag4He cykO9IGn7hB+pQaWAhJQo2KA2aMjaTkHEDMyTyKZZKlQZDt7VYdwkU1cRhcrvOFwmdE5 wfg09+pxWDa6xbYSuxnfx3JYmYe9dH/6fL/wl9ZvBCYUlQtNdNuekUwnrkPrNCn7wxy2 A//DIabj5Lz4ckbWI0WsVFK7jJAH4wriGTWddNjHUYkECeOODZNmu9XO5MO7nMGpYqQM EGLQ== X-Forwarded-Encrypted: i=1; AJvYcCWRT1dj2oeRbv+is2SW8EjgwXxxHo93KdDKgXr6dOtsJ4d9a2xTZSku16O7Y38dkosFYq1FYR5MTfQ6aFss2LZxhkGy3x+/Ct5bkHFm X-Gm-Message-State: AOJu0Yx3r3Ppj/2ZQAww7nyPS9O4WNSPZ+7ysRwfqsv+vFYbD9cs16Jy PxK99eVImZW1q5qol2XY7nY0mIpym5T+zqK5cFjIF1RRfuWkdvwk+skN78i3Hg4= X-Google-Smtp-Source: AGHT+IFN/5I+WfK1fn5/Y5SqzUG4dzDQSqWg9365wTwasAYWN8c53SqYLJBZM4tHc7Y7GU7QdS8teQ== X-Received: by 2002:a05:6512:3607:b0:523:48f2:e3fd with SMTP id 2adb3069b0e04-526bdc53aa0mr840925e87.16.1716375062796; Wed, 22 May 2024 03:51:02 -0700 (PDT) Received: from umbar.lan ([192.130.178.91]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-52431778ec8sm1279126e87.194.2024.05.22.03.51.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 May 2024 03:51:02 -0700 (PDT) From: Dmitry Baryshkov Date: Wed, 22 May 2024 13:50:58 +0300 Subject: [PATCH v2 06/14] drm/msm/hdmi: switch to clk_bulk API 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: <20240522-fd-hdmi-hpd-v2-6-c30bdb7c5c7e@linaro.org> References: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> In-Reply-To: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Daniel Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=4258; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=qWoWxaBIT57QfQL/H3b3qamuy/KWc1sBIdaw/+EtJuE=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBmTc4QhcbTNU1xZ4zo5pb7Is97xUeXSclmnMHPO dnPqXumZJeJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZk3OEAAKCRCLPIo+Aiko 1QLEB/4gFS6pepNvbhCKqUq2k20uwDwdS+34Dhukn30EerccF8nXVS1JtS5x0be0enjckgxW4H5 gZi+UPdUoUsRQlDev5eALmLY3uubG6EJoWGHbV6MwyiLk3YuFSrbi0bmJe8EID0OkJ2qRKqDNAH ASO2yJquay9eV8KQPaqYUESX66/2JVxFShOuBjNWPmUgyE4ve8eUkYGLY1/CybiIly4pP71Z7JZ 3PC92joqtA8NlIZucUqNWgdn1jUSGvRaUWkQ9mwVE657TFH2i9cMJ5P1rTWJMcYK9pIyIyYUAio c2aB8t9VYo/RHkhfXOpAZGS286LncX3QMmj+KpV1K2gtELpH X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A The last platform using legacy clock names for HDMI block (APQ8064) switched to new clock names in 5.16. It's time to stop caring about old DT, drop hand-coded helpers and switch to clk_bulk_* API. Signed-off-by: Dmitry Baryshkov Reviewed-by: Jessica Zhang --- drivers/gpu/drm/msm/hdmi/hdmi.c | 15 +++++--------- drivers/gpu/drm/msm/hdmi/hdmi.h | 2 +- drivers/gpu/drm/msm/hdmi/hdmi_hpd.c | 39 +++++++++++++--------------------= ---- 3 files changed, 19 insertions(+), 37 deletions(-) diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdm= i.c index c14e009f38b1..7ec4ca3b7597 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c @@ -469,17 +469,12 @@ static int msm_hdmi_dev_probe(struct platform_device = *pdev) if (!hdmi->hpd_clks) return -ENOMEM; =20 - for (i =3D 0; i < config->hpd_clk_cnt; i++) { - struct clk *clk; + for (i =3D 0; i < config->hpd_clk_cnt; i++) + hdmi->hpd_clks[i].id =3D config->hpd_clk_names[i]; =20 - clk =3D msm_clk_get(pdev, config->hpd_clk_names[i]); - if (IS_ERR(clk)) - return dev_err_probe(dev, PTR_ERR(clk), - "failed to get hpd clk: %s\n", - config->hpd_clk_names[i]); - - hdmi->hpd_clks[i] =3D clk; - } + ret =3D devm_clk_bulk_get(&pdev->dev, config->hpd_clk_cnt, hdmi->hpd_clks= ); + if (ret) + return ret; =20 hdmi->extp_clk =3D devm_clk_get_optional(&pdev->dev, "extp"); if (IS_ERR(hdmi->extp_clk)) diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.h b/drivers/gpu/drm/msm/hdmi/hdm= i.h index c0d60ed23b75..eeba85ffef09 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.h +++ b/drivers/gpu/drm/msm/hdmi/hdmi.h @@ -50,7 +50,7 @@ struct hdmi { =20 struct regulator_bulk_data *hpd_regs; struct regulator_bulk_data *pwr_regs; - struct clk **hpd_clks; + struct clk_bulk_data *hpd_clks; struct clk *extp_clk; =20 struct gpio_desc *hpd_gpiod; diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c b/drivers/gpu/drm/msm/hdmi= /hdmi_hpd.c index 7ae69b14e953..36266aa626dc 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c @@ -60,27 +60,6 @@ static void msm_hdmi_phy_reset(struct hdmi *hdmi) } } =20 -static void enable_hpd_clocks(struct hdmi *hdmi, bool enable) -{ - const struct hdmi_platform_config *config =3D hdmi->config; - struct device *dev =3D &hdmi->pdev->dev; - int i, ret; - - if (enable) { - for (i =3D 0; i < config->hpd_clk_cnt; i++) { - ret =3D clk_prepare_enable(hdmi->hpd_clks[i]); - if (ret) { - DRM_DEV_ERROR(dev, - "failed to enable hpd clk: %s (%d)\n", - config->hpd_clk_names[i], ret); - } - } - } else { - for (i =3D config->hpd_clk_cnt - 1; i >=3D 0; i--) - clk_disable_unprepare(hdmi->hpd_clks[i]); - } -} - int msm_hdmi_hpd_enable(struct drm_bridge *bridge) { struct hdmi_bridge *hdmi_bridge =3D to_hdmi_bridge(bridge); @@ -107,7 +86,9 @@ int msm_hdmi_hpd_enable(struct drm_bridge *bridge) gpiod_set_value_cansleep(hdmi->hpd_gpiod, 1); =20 pm_runtime_get_sync(dev); - enable_hpd_clocks(hdmi, true); + ret =3D clk_bulk_prepare_enable(config->hpd_clk_cnt, hdmi->hpd_clks); + if (ret) + goto fail; =20 msm_hdmi_set_mode(hdmi, false); msm_hdmi_phy_reset(hdmi); @@ -149,7 +130,7 @@ void msm_hdmi_hpd_disable(struct hdmi *hdmi) =20 msm_hdmi_set_mode(hdmi, false); =20 - enable_hpd_clocks(hdmi, false); + clk_bulk_disable_unprepare(config->hpd_clk_cnt, hdmi->hpd_clks); pm_runtime_put(dev); =20 ret =3D pinctrl_pm_select_sleep_state(dev); @@ -193,14 +174,20 @@ void msm_hdmi_hpd_irq(struct drm_bridge *bridge) =20 static enum drm_connector_status detect_reg(struct hdmi *hdmi) { - uint32_t hpd_int_status; + const struct hdmi_platform_config *config =3D hdmi->config; + uint32_t hpd_int_status =3D 0; + int ret; =20 pm_runtime_get_sync(&hdmi->pdev->dev); - enable_hpd_clocks(hdmi, true); + ret =3D clk_bulk_prepare_enable(config->hpd_clk_cnt, hdmi->hpd_clks); + if (ret) + goto out; =20 hpd_int_status =3D hdmi_read(hdmi, REG_HDMI_HPD_INT_STATUS); =20 - enable_hpd_clocks(hdmi, false); + clk_bulk_disable_unprepare(config->hpd_clk_cnt, hdmi->hpd_clks); + +out: pm_runtime_put(&hdmi->pdev->dev); =20 return (hpd_int_status & HDMI_HPD_INT_STATUS_CABLE_DETECTED) ? --=20 2.39.2 From nobody Wed Feb 11 12:56:29 2026 Received: from mail-lj1-f180.google.com (mail-lj1-f180.google.com [209.85.208.180]) (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 69D4382890 for ; Wed, 22 May 2024 10:51:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375067; cv=none; b=Tb02NgYMNW7YyQtaDoQeN+g5LLvO8IWXce8eZNw+7eIEb4llZW8rt7bkyErKH3ocx6kYJOywkPUqldVcwpRDWhEwC51R0E7orS7b1RdzOmXn6poEJIgTPeVjIFMqymQrsSZ19E1lM3nWnvOIobNPWQZZcQCifvbAT+QnXUbahTQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375067; c=relaxed/simple; bh=rVRKl0jVYPeqcqz91TQ881Equ4F+ZgpwdiZXFz89P0g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=F35pyq1v2jY2MV64LGKsL5RemafPSRB0dovLx4k29J/uQiGlfplomA13CkTJ9dpGbH3PQ9StMVL5ZVDJ/L5agl2r5Wxq5RUS5xIs5xgtDHJ/NwIYMFjXEowVUibnPB7Wcshc1+kEuCcFBMe/cNTIm+oAWM8gMdzUNKv4S1T6cug= 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=Jt0d8YIR; arc=none smtp.client-ip=209.85.208.180 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="Jt0d8YIR" Received: by mail-lj1-f180.google.com with SMTP id 38308e7fff4ca-2e72b8931caso35065091fa.0 for ; Wed, 22 May 2024 03:51:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1716375063; x=1716979863; 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=IAmphMNQpXqW8eT1O41Bu5TdohycNUyawz5wYr1vHd8=; b=Jt0d8YIRnom2NpB7q0YHMMJKbXklgQdCgbEqOsOoSTwR2YxgkYDr0KJHiOPlUkM2h5 WvZDh0/QgolGHG96cncqfJwnAWykHmNjsaw4ceL8JPT9Ust/70HbvKMHH8j4Rbx7th7d z4Ddgq29+tGTC+JEbo8GXD2+/k8OGLjvmpagHjZtyi9sHN97hXjoMLHdxGoV/WGa0Ohl gEwSluI+QK2ZtL9JNMPqk4vEld2BWgciB52ZeNie0BtKFz/W3AvQSyGaLuR88G14EYD+ x1gDO9KG9e+ifDcaSrhG8Xb967GfsPWu0ADduCI3CCEImBDUq9bnpubWPzwO3AzYFM8a bRLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716375063; x=1716979863; 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=IAmphMNQpXqW8eT1O41Bu5TdohycNUyawz5wYr1vHd8=; b=bnQzePfHOwLDOQGRa7V4jkxFsHKTJu1DZXZ6wF3ILUO9A2Lg07vtNyFfV6nOyFfPz+ cEbP+aPZT6mOc5b7U+usJcmxpOidNCke65TOq47Jp3iK3CAG46fPMpgFZ/hsaOqDeJg9 1V4xdA8ElFrcB0T1Z1Y1r42VtejlfW7DCaHac6Krj/vbJsv6+RAx752T6zDO6se/q1dT 9hXBl8BPWwcCAgxv9bHdSYacbEM/McFXKRxoyGwCQapNcrHTtlCkmcJ+1EA3i47Fbwrj wBBRebLRCON0lA5wuucRRAiDigffVO8zQ+ZyT1vqz+adL/jzFb8Po+WlnTtoKbY1ig6Q phxw== X-Forwarded-Encrypted: i=1; AJvYcCWs0PqHnNo6oxED8M4pJCJPmr0RXYJ1/HXDcnamJvyHwIUsScrSjagkpZWpMbnx5/p+tJ165lobACk+BXJWdHTL+FBRnzbtKOIr8GOw X-Gm-Message-State: AOJu0YyVqp/CYU22wz6p0DpkyHFJA7an59Nln4Vl7fIQeEHzCZ3U3Xbe F+T+Rtnc5neSwQPwEQSQCyyzgR3hgiRrTc5oZV+2RzUkiLCmKPfVMJ1UwFw8Y2Q= X-Google-Smtp-Source: AGHT+IFvKJh7JOYXQJKM2qi5VIh0iYd/BGRN6yDP29LSOK7OX2zXaEKTsibdu8B9a2dC6ZHLhKrCjQ== X-Received: by 2002:a19:6a09:0:b0:51d:5f0b:816f with SMTP id 2adb3069b0e04-526bf35c690mr832319e87.15.1716375063679; Wed, 22 May 2024 03:51:03 -0700 (PDT) Received: from umbar.lan ([192.130.178.91]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-52431778ec8sm1279126e87.194.2024.05.22.03.51.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 May 2024 03:51:03 -0700 (PDT) From: Dmitry Baryshkov Date: Wed, 22 May 2024 13:50:59 +0300 Subject: [PATCH v2 07/14] drm/msm/hdmi: switch to pm_runtime_resume_and_get() 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: <20240522-fd-hdmi-hpd-v2-7-c30bdb7c5c7e@linaro.org> References: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> In-Reply-To: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Daniel Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2613; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=rVRKl0jVYPeqcqz91TQ881Equ4F+ZgpwdiZXFz89P0g=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBmTc4QmHQVBTWzpD8Jbi0KRzPokGAEgSr3P4vPX 6mb04s1+KiJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZk3OEAAKCRCLPIo+Aiko 1fSQCACsc4K3scUWB77PU9aHBfrcHuUnWfl6JI/ujLNtLgxLO3Gc1GO2QfCPmY0NwhqA29kIB18 vJ21o26KCmZINsMjIV/y7yFwUEX+oa4+2d39ZLu/s1YkR1wasrTckdY0sPYebJxxkNc9JAjaO0p ofgIEbCuajfb1AJFLf+ygf9ALiPRqLlVVM3rWvN/sxeHKiahb+TE4NbHaUzdTCas5RCFj5rDVQj QQz2mdlVfmrp82eJwicfGToeL6X2DSvkTQ1UtsBCEt/a0Bo5uUd42ND5xfcWVrxZSEwox3LzVDh W9TTH9jpEtbTPnHu8fjEp4MQknreKmXwj8w06V01FkXAesNB X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A The pm_runtime_get_sync() function is a bad choise for runtime power management. Switch HDMI driver to pm_runtime_resume_and_get() and add proper error handling, while we are at it. Signed-off-by: Dmitry Baryshkov Reviewed-by: Jessica Zhang --- drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 2 +- drivers/gpu/drm/msm/hdmi/hdmi_hpd.c | 12 ++++++++++-- drivers/gpu/drm/msm/hdmi/hdmi_phy.c | 6 +++++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c b/drivers/gpu/drm/msm/h= dmi/hdmi_bridge.c index fb99328107dd..d1b35328b6e8 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c @@ -19,7 +19,7 @@ static void msm_hdmi_power_on(struct drm_bridge *bridge) const struct hdmi_platform_config *config =3D hdmi->config; int ret; =20 - pm_runtime_get_sync(&hdmi->pdev->dev); + pm_runtime_resume_and_get(&hdmi->pdev->dev); =20 ret =3D regulator_bulk_enable(config->pwr_reg_cnt, hdmi->pwr_regs); if (ret) diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c b/drivers/gpu/drm/msm/hdmi= /hdmi_hpd.c index 36266aa626dc..fc21ad3b01dc 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c @@ -85,7 +85,12 @@ int msm_hdmi_hpd_enable(struct drm_bridge *bridge) if (hdmi->hpd_gpiod) gpiod_set_value_cansleep(hdmi->hpd_gpiod, 1); =20 - pm_runtime_get_sync(dev); + ret =3D pm_runtime_resume_and_get(dev); + if (ret) { + DRM_DEV_ERROR(dev, "runtime resume failed: %d\n", ret); + goto fail; + } + ret =3D clk_bulk_prepare_enable(config->hpd_clk_cnt, hdmi->hpd_clks); if (ret) goto fail; @@ -178,7 +183,10 @@ static enum drm_connector_status detect_reg(struct hdm= i *hdmi) uint32_t hpd_int_status =3D 0; int ret; =20 - pm_runtime_get_sync(&hdmi->pdev->dev); + ret =3D pm_runtime_resume_and_get(&hdmi->pdev->dev); + if (ret) + goto out; + ret =3D clk_bulk_prepare_enable(config->hpd_clk_cnt, hdmi->hpd_clks); if (ret) goto out; diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_phy.c b/drivers/gpu/drm/msm/hdmi= /hdmi_phy.c index 88a3423b7f24..d5acae752300 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_phy.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_phy.c @@ -58,7 +58,11 @@ int msm_hdmi_phy_resource_enable(struct hdmi_phy *phy) struct device *dev =3D &phy->pdev->dev; int i, ret =3D 0; =20 - pm_runtime_get_sync(dev); + ret =3D pm_runtime_resume_and_get(dev); + if (ret) { + DRM_DEV_ERROR(dev, "runtime resume failed: %d\n", ret); + return ret; + } =20 ret =3D regulator_bulk_enable(cfg->num_regs, phy->regs); if (ret) { --=20 2.39.2 From nobody Wed Feb 11 12:56:29 2026 Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) (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 1DC1682D68 for ; Wed, 22 May 2024 10:51:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375067; cv=none; b=G5T6Ey/6sayx8B4VSZ0uRMAtDME7rX7WcAT9Eb0So1Bnc5S59uWQocM4pjQ/62T2ZvNYnxLVuqQElgk3kP2TCyhZh90d3uwHt+8jYA7eRj7kvF5bazl4N3Bp91q6pItqcAXwC4ZD39AtjkM7SSBNgJfYvQhUKnQ0A1poaZA9SCI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375067; c=relaxed/simple; bh=Jgttl5H44Vld14qWMns1jroXWg5YOpL1Dc2oQSS9ypw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VReAJ408O/lc2xzmIgp7X6EtH5+3fhlqhA7vxyB0rWnxREIYmdh+kw67PSGIjyBQJKS+Q2RtuOn0zjEw0C4xxbrvKUdO4Yr3znEC6X/BFY+6zEm3ZUu0AP0ctOVj2Nj6c8WDjhULEgnjpgN1ziY3ERBDBwO9ROeSF1MgN/tJnt4= 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=J+DkYB/g; arc=none smtp.client-ip=209.85.167.53 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="J+DkYB/g" Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-51f57713684so7843733e87.1 for ; Wed, 22 May 2024 03:51:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1716375064; x=1716979864; 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=r6GgwKTdsZwJRv3Ukk7SFtFzEc2aaRxTR76EeCWgZKA=; b=J+DkYB/gslx7TMhjgQCCJh3/Ltmu/25tbMFf0DXtl2i7IoamLjjtvvu55HmdxBexTN O0OYeyscnvgIDLaGNgm0+f7X/zcSGHsDBR3I4GQWjkFPa1LLwO7jk+NdocoyRAxfYWhU KxTpQBTmfX450e1dKTrTRjrqVJEKuOOr8lMyCVFrF73z1XNiHY1StAu4mG2jdfhIr24I 0iojeGJS1ZUAzgGwzvSWiwL9zmzvq+F6af/TAgifgsxBpcQGbYQJQNiH3S3IzrFTNXrT oNQ8WtnlCyhrBcY9sFDCQdeHT3kMuhQaiflX1S/FrVNdQmlG9UT5Wn/Nb3FdDqBhhRWn q2xQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716375064; x=1716979864; 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=r6GgwKTdsZwJRv3Ukk7SFtFzEc2aaRxTR76EeCWgZKA=; b=au4dH6YfRLh9qmz2lIEOK05Cbwl1QP4TrNKLvrhjpM+JFQRF6rxbUkmTeKXuK0G6xP DUqce1kggZOPbtI/K4JPJG3+xNhxPBz0Pxc2O2oOvUQmD015LB5Uep36FId9W63GnltG OAMT0uM8Z/PoeFWtWhESKBrsouYZW+nHE55k1UtDudhci8FDCwmzCNwK7b/4w2dqpEov ZCauPI6p+eQvXiuhUqoXaMUcM0sJHDjVjyyCSaz979Cr/xDL6dDd9DWsNIXYa+KEk3cc Ry1ZCxcyyYBq0mgTIW96SQ1dWXEOEqsHfEkkP2d6slguFpLfbAfvi8knHVEJ9qcB57J7 k60g== X-Forwarded-Encrypted: i=1; AJvYcCXw4x+pDgkj3S/1Nq7HagJD1UurhCi8Mx9LgCJE8UZ2S3KCkIodFlNHd/showsZepuHDcl3jmFE79ZndaFGppcHwm2eBOpKrZEK5pPK X-Gm-Message-State: AOJu0YwL3Aig2zSZ53y69xduP6jYig+Zq+qfBiSdUTJkTEjz757qJUgy lPyj3rpjICaq2TnZlBvVCH+ftqHX0mmhE/qlGGOKfSHEcg/cVoU/Hf6AyQXkS5E= X-Google-Smtp-Source: AGHT+IGZEv+CIDPXP0TJ1i+AotzbFz5H7fqitUI/2i1sh33JfiQ5E7D0YHElItOMq6UM8jVLtSM+jA== X-Received: by 2002:ac2:47e8:0:b0:521:7846:69d1 with SMTP id 2adb3069b0e04-526be6ea784mr995436e87.6.1716375064461; Wed, 22 May 2024 03:51:04 -0700 (PDT) Received: from umbar.lan ([192.130.178.91]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-52431778ec8sm1279126e87.194.2024.05.22.03.51.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 May 2024 03:51:04 -0700 (PDT) From: Dmitry Baryshkov Date: Wed, 22 May 2024 13:51:00 +0300 Subject: [PATCH v2 08/14] drm/msm/hdmi: add runtime PM calls to DDC transfer function 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: <20240522-fd-hdmi-hpd-v2-8-c30bdb7c5c7e@linaro.org> References: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> In-Reply-To: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Daniel Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1518; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=Jgttl5H44Vld14qWMns1jroXWg5YOpL1Dc2oQSS9ypw=; b=owGbwMvMwMXYbdNlx6SpcZXxtFoSQ5rvOYH/AvxRXG5PuivCtgZbTDkzq5nVPWvqSuvbF7bJ9 rk0FuZ2MhqzMDByMciKKbL4FLRMjdmUHPZhx9R6mEGsTCBTGLg4BWAik8U4GBpOrL91US2S2SFV 9ZCs0o4mLsaQ+M5Xpdm66VVdr8SybSZkrV92JVMh3kPGLmgR67tHLIlF57/r1jWJRc/4UDnxY+m eeTJx0/alXEoTqJaWKljNnD9vmuILxjDFKMP8sMMFJ0svhu7uyJeqCn45Q3lKZMEFZq9JrYpvfy y7FHL66gttO929211S1l5RmLlJsmeSBLf7boZrZzszPBmMFyzbI5fVJGMSfdl5+4nyf9t1vyXP/ PukZV1B4yyra3/OSLzOcK6Z+CnSfLVGYfnVbwyO/6VbMg801y/ROpJzgLss7q1uTcbtjao+B2Tf 7zvHoJK1ZYrOpKDmdXeWHam/tVr6j4H+YcHFqf7lBVKnAQ== X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A We must be sure that the HDMI controller is powered on, while performing the DDC transfer. Add corresponding runtime PM calls to msm_hdmi_i2c_xfer(). Signed-off-by: Dmitry Baryshkov Reviewed-by: Jessica Zhang --- drivers/gpu/drm/msm/hdmi/hdmi_i2c.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_i2c.c b/drivers/gpu/drm/msm/hdmi= /hdmi_i2c.c index 7aa500d24240..ebefea4fb408 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_i2c.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_i2c.c @@ -107,11 +107,15 @@ static int msm_hdmi_i2c_xfer(struct i2c_adapter *i2c, if (num =3D=3D 0) return num; =20 + ret =3D pm_runtime_resume_and_get(&hdmi->pdev->dev); + if (ret) + return ret; + init_ddc(hdmi_i2c); =20 ret =3D ddc_clear_irq(hdmi_i2c); if (ret) - return ret; + goto fail; =20 for (i =3D 0; i < num; i++) { struct i2c_msg *p =3D &msgs[i]; @@ -169,7 +173,7 @@ static int msm_hdmi_i2c_xfer(struct i2c_adapter *i2c, hdmi_read(hdmi, REG_HDMI_DDC_SW_STATUS), hdmi_read(hdmi, REG_HDMI_DDC_HW_STATUS), hdmi_read(hdmi, REG_HDMI_DDC_INT_CTRL)); - return ret; + goto fail; } =20 ddc_status =3D hdmi_read(hdmi, REG_HDMI_DDC_SW_STATUS); @@ -202,7 +206,13 @@ static int msm_hdmi_i2c_xfer(struct i2c_adapter *i2c, } } =20 + pm_runtime_put(&hdmi->pdev->dev); + return i; + +fail: + pm_runtime_put(&hdmi->pdev->dev); + return ret; } =20 static u32 msm_hdmi_i2c_func(struct i2c_adapter *adapter) --=20 2.39.2 From nobody Wed Feb 11 12:56:29 2026 Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) (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 07C88839FF for ; Wed, 22 May 2024 10:51:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375069; cv=none; b=g0J5I6Y5HkmNGW3fjO9llegrMegjqsEQJ5aaQEkf9r+Mb5ADxfeEIVBjJPNKsTbB3VqMIx2Lvw+9Leo62qP3ZeARLzrNYf1ndexzMyRgcojWRJHo8YaavQbMIiwQZmDEobh7cNUKfwOJV81aDPz9ur1LfWpgciB5SNXiM6GTrH0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375069; c=relaxed/simple; bh=Lc0bVtuFpNb+Ymx6Sipm+Khv6fPSaylIkez8yRj45ho=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LSfMjF6ZIf9iyStnAOxxwbm9pv/z2As/kO64XvBtQk4NgfnEtuGM4gPU5p4CwUp44GsfDysDywqh2wLHMxl63itrtLVRY5vrj0KeHt+8qR59b1MC7p08BVwQsprZahGrmBmTuHoAxrXMN0z84EMSjdjA3AtjNBFsaXGgwMyymxo= 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=oLyr7YIZ; arc=none smtp.client-ip=209.85.167.52 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="oLyr7YIZ" Received: by mail-lf1-f52.google.com with SMTP id 2adb3069b0e04-5231efd80f2so6966057e87.2 for ; Wed, 22 May 2024 03:51:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1716375065; x=1716979865; 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=8/jygvMJ3/GBJyU+8CJDKmRqXu0M260iVTpHcmYrXMY=; b=oLyr7YIZXRu922irTilxGVBnzwYYrNuPmFSPIxcWcmCMg8BI20OoaxfnlvrUbKNMdv fpqemqhpKIPLWm8Te5bE2OSHlL4imUAXv0QcrDj+Bc6N4YxtAMOIa+2oxxMm2NUi3XU+ v5OyB1n375GCHMTfXM7IcC6vdwuUcgTq6AMggK0quNZl6ttaiatx/bviQLUzUcfDVolm BVipIiMVV2WI2W16QZZ69XJhWVWt8QCswG3JAmaNVLAlbvxp4yQRNmLFOc6TnMsljCtI 8vy0OJCP6tewO8Mm4h3KvHT+l626v80DB69u2l4ScMz7b5ndS1fEqrcJle6K4Jl3C3m4 UmaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716375065; x=1716979865; 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=8/jygvMJ3/GBJyU+8CJDKmRqXu0M260iVTpHcmYrXMY=; b=C21BX1gsBDAF5vYzv/42BJ0QAubuGHFR+anSgsmh+EM4SGYR/ngNYftS79sHMDMt6O 5kssslwo/FICSpL3jPKkhRILFH/exxDPzRLx0yObtl40KFAn6v7W2Ea5YlcxHxwzQcRh fAVlzVuPxZGU2mpw80YBJqMdcB1LYMReodH67g7+GkXB+1BpNPsFsQiBDTLRZFKMoIxv jTfARwMn9IESZDOcN4CcWqF+bWV71u8JOWfbANcNuefjGLE/RuGs67p1UDqDcJFoG5xw qAN3XXQPsv/Iw2IqDPVUJ9PaXYwbKeaN73ruteWqtcRs1F3cVqe+Q6Chqu0WBSIaCp5u hdrA== X-Forwarded-Encrypted: i=1; AJvYcCXsHC+u+3NYmXq0OTmNxPaedizQtb5qORyDb9XneyekmuHHO8VCrSKwmHR0GkVhDrtpgnes4ByGopZB/6kCQjNeucixAWipuU3+2HE2 X-Gm-Message-State: AOJu0YyyrcalitqE75CPK3M92Advm9rcJdGUlMY6Mpdr+1jqdi/cjvIl XMliKxrJVRbmp10rgRRzkBHw7lCiAb88/DjeGJrhXHWzp6Fx9P/nUOpix+z+xVk= X-Google-Smtp-Source: AGHT+IGsNvBZcZ4dXFq9HOlPo4tVb7EFJXwQB2v1yDLA+jyRQutXC4QDxtLa58RNAaDnq0EUyYV7Pw== X-Received: by 2002:a05:6512:4807:b0:522:32c0:bb6e with SMTP id 2adb3069b0e04-526bf35cc19mr1035373e87.23.1716375065311; Wed, 22 May 2024 03:51:05 -0700 (PDT) Received: from umbar.lan ([192.130.178.91]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-52431778ec8sm1279126e87.194.2024.05.22.03.51.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 May 2024 03:51:04 -0700 (PDT) From: Dmitry Baryshkov Date: Wed, 22 May 2024 13:51:01 +0300 Subject: [PATCH v2 09/14] drm/msm/hdmi: implement proper runtime PM handling 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: <20240522-fd-hdmi-hpd-v2-9-c30bdb7c5c7e@linaro.org> References: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> In-Reply-To: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Daniel Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=9116; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=Lc0bVtuFpNb+Ymx6Sipm+Khv6fPSaylIkez8yRj45ho=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBmTc4QKxKBlGU1QsX0EOt7g17wHUC+2BuBaO2l/ q1cfh/zHDuJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZk3OEAAKCRCLPIo+Aiko 1R5eCACcwoewyJW/4BM0UAihtifd0M92cx2YkA518iAz4JeePuwZ2oJ09StiGt/19poHbIo1HAQ /xvYd0qPj86UFc9rGU4NZCaTRqsSIEHAfMwyWFDBjONVCfaLwvnz6roXVLCZ7HTPYLOJ+LWVxZC cw1Nx29Xj3HevnIr9Zc0zRgqy2ZPOeZQblHYVMBC0N4IxY/Q+nM/CFQpk6IhmPxqmJj8LTwUKs+ 9bnicc+TQUADmtEtXddI1rVs3DOkgCU/gJvFacT5xSRmmI1aBtePkqEmMoC4+pNlLi1PfSD49VA j5wvhuH3FAA3reta9z2GPsOAw+hXz7q7bQC5sNmyy9FrHhid X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A It is completely not obvious, but the so-called 'hpd' clocks and regulators are required for the HDMI host to function properly. Merge pwr and hpd regulators. Use regulators, clocks and pinctrl to implement proper runtime PM callbacks. Signed-off-by: Dmitry Baryshkov Reviewed-by: Jessica Zhang --- drivers/gpu/drm/msm/hdmi/hdmi.c | 62 +++++++++++++++++++++++++-----= ---- drivers/gpu/drm/msm/hdmi/hdmi.h | 7 +--- drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 12 ------- drivers/gpu/drm/msm/hdmi/hdmi_hpd.c | 42 +---------------------- 4 files changed, 48 insertions(+), 75 deletions(-) diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdm= i.c index 7ec4ca3b7597..cc671baad87b 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c @@ -8,6 +8,7 @@ #include #include #include +#include #include =20 #include @@ -226,11 +227,11 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi, .item ## _names =3D item ##_names_ ## entry, \ .item ## _cnt =3D ARRAY_SIZE(item ## _names_ ## entry) =20 -static const char *hpd_reg_names_8960[] =3D {"core-vdda"}; +static const char *pwr_reg_names_8960[] =3D {"core-vdda"}; static const char *hpd_clk_names_8960[] =3D {"core", "master_iface", "slav= e_iface"}; =20 static const struct hdmi_platform_config hdmi_tx_8960_config =3D { - HDMI_CFG(hpd_reg, 8960), + HDMI_CFG(pwr_reg, 8960), HDMI_CFG(hpd_clk, 8960), }; =20 @@ -434,20 +435,6 @@ static int msm_hdmi_dev_probe(struct platform_device *= pdev) if (hdmi->irq < 0) return hdmi->irq; =20 - hdmi->hpd_regs =3D devm_kcalloc(&pdev->dev, - config->hpd_reg_cnt, - sizeof(hdmi->hpd_regs[0]), - GFP_KERNEL); - if (!hdmi->hpd_regs) - return -ENOMEM; - - for (i =3D 0; i < config->hpd_reg_cnt; i++) - hdmi->hpd_regs[i].supply =3D config->hpd_reg_names[i]; - - ret =3D devm_regulator_bulk_get(&pdev->dev, config->hpd_reg_cnt, hdmi->hp= d_regs); - if (ret) - return dev_err_probe(dev, ret, "failed to get hpd regulators\n"); - hdmi->pwr_regs =3D devm_kcalloc(&pdev->dev, config->pwr_reg_cnt, sizeof(hdmi->pwr_regs[0]), @@ -525,6 +512,48 @@ static void msm_hdmi_dev_remove(struct platform_device= *pdev) msm_hdmi_put_phy(hdmi); } =20 +static int msm_hdmi_runtime_suspend(struct device *dev) +{ + struct hdmi *hdmi =3D dev_get_drvdata(dev); + const struct hdmi_platform_config *config =3D hdmi->config; + + clk_bulk_disable_unprepare(config->hpd_clk_cnt, hdmi->hpd_clks); + + pinctrl_pm_select_sleep_state(dev); + + regulator_bulk_disable(config->pwr_reg_cnt, hdmi->pwr_regs); + + return 0; +} + +static int msm_hdmi_runtime_resume(struct device *dev) +{ + struct hdmi *hdmi =3D dev_get_drvdata(dev); + const struct hdmi_platform_config *config =3D hdmi->config; + int ret; + + ret =3D regulator_bulk_enable(config->pwr_reg_cnt, hdmi->pwr_regs); + if (ret) + return ret; + + ret =3D pinctrl_pm_select_default_state(dev); + if (ret) + goto fail; + + ret =3D clk_bulk_prepare_enable(config->hpd_clk_cnt, hdmi->hpd_clks); + if (ret) + goto fail; + + return 0; + +fail: + pinctrl_pm_select_sleep_state(dev); + + return ret; +} + +DEFINE_RUNTIME_DEV_PM_OPS(msm_hdmi_pm_ops, msm_hdmi_runtime_suspend, msm_h= dmi_runtime_resume, NULL); + static const struct of_device_id msm_hdmi_dt_match[] =3D { { .compatible =3D "qcom,hdmi-tx-8996", .data =3D &hdmi_tx_8974_config }, { .compatible =3D "qcom,hdmi-tx-8994", .data =3D &hdmi_tx_8974_config }, @@ -541,6 +570,7 @@ static struct platform_driver msm_hdmi_driver =3D { .driver =3D { .name =3D "hdmi_msm", .of_match_table =3D msm_hdmi_dt_match, + .pm =3D &msm_hdmi_pm_ops, }, }; =20 diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.h b/drivers/gpu/drm/msm/hdmi/hdm= i.h index eeba85ffef09..ee5463eb41b6 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.h +++ b/drivers/gpu/drm/msm/hdmi/hdmi.h @@ -48,7 +48,6 @@ struct hdmi { void __iomem *qfprom_mmio; phys_addr_t mmio_phy_addr; =20 - struct regulator_bulk_data *hpd_regs; struct regulator_bulk_data *pwr_regs; struct clk_bulk_data *hpd_clks; struct clk *extp_clk; @@ -86,11 +85,7 @@ struct hdmi { =20 /* platform config data (ie. from DT, or pdata) */ struct hdmi_platform_config { - /* regulators that need to be on for hpd: */ - const char **hpd_reg_names; - int hpd_reg_cnt; - - /* regulators that need to be on for screen pwr: */ + /* regulators that need to be on: */ const char **pwr_reg_names; int pwr_reg_cnt; =20 diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c b/drivers/gpu/drm/msm/h= dmi/hdmi_bridge.c index d1b35328b6e8..cddba640d292 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c @@ -16,15 +16,10 @@ static void msm_hdmi_power_on(struct drm_bridge *bridge) struct drm_device *dev =3D bridge->dev; struct hdmi_bridge *hdmi_bridge =3D to_hdmi_bridge(bridge); struct hdmi *hdmi =3D hdmi_bridge->hdmi; - const struct hdmi_platform_config *config =3D hdmi->config; int ret; =20 pm_runtime_resume_and_get(&hdmi->pdev->dev); =20 - ret =3D regulator_bulk_enable(config->pwr_reg_cnt, hdmi->pwr_regs); - if (ret) - DRM_DEV_ERROR(dev->dev, "failed to enable pwr regulator: %d\n", ret); - if (hdmi->extp_clk) { DBG("pixclock: %lu", hdmi->pixclock); ret =3D clk_set_rate(hdmi->extp_clk, hdmi->pixclock); @@ -39,11 +34,8 @@ static void msm_hdmi_power_on(struct drm_bridge *bridge) =20 static void power_off(struct drm_bridge *bridge) { - struct drm_device *dev =3D bridge->dev; struct hdmi_bridge *hdmi_bridge =3D to_hdmi_bridge(bridge); struct hdmi *hdmi =3D hdmi_bridge->hdmi; - const struct hdmi_platform_config *config =3D hdmi->config; - int ret; =20 /* TODO do we need to wait for final vblank somewhere before * cutting the clocks? @@ -53,10 +45,6 @@ static void power_off(struct drm_bridge *bridge) if (hdmi->extp_clk) clk_disable_unprepare(hdmi->extp_clk); =20 - ret =3D regulator_bulk_disable(config->pwr_reg_cnt, hdmi->pwr_regs); - if (ret) - DRM_DEV_ERROR(dev->dev, "failed to disable pwr regulator: %d\n", ret); - pm_runtime_put(&hdmi->pdev->dev); } =20 diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c b/drivers/gpu/drm/msm/hdmi= /hdmi_hpd.c index fc21ad3b01dc..32e447267e3b 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c @@ -64,36 +64,17 @@ int msm_hdmi_hpd_enable(struct drm_bridge *bridge) { struct hdmi_bridge *hdmi_bridge =3D to_hdmi_bridge(bridge); struct hdmi *hdmi =3D hdmi_bridge->hdmi; - const struct hdmi_platform_config *config =3D hdmi->config; struct device *dev =3D &hdmi->pdev->dev; uint32_t hpd_ctrl; int ret; unsigned long flags; =20 - ret =3D regulator_bulk_enable(config->hpd_reg_cnt, hdmi->hpd_regs); - if (ret) { - DRM_DEV_ERROR(dev, "failed to enable hpd regulators: %d\n", ret); - goto fail; - } - - ret =3D pinctrl_pm_select_default_state(dev); - if (ret) { - DRM_DEV_ERROR(dev, "pinctrl state chg failed: %d\n", ret); - goto fail; - } - if (hdmi->hpd_gpiod) gpiod_set_value_cansleep(hdmi->hpd_gpiod, 1); =20 ret =3D pm_runtime_resume_and_get(dev); - if (ret) { - DRM_DEV_ERROR(dev, "runtime resume failed: %d\n", ret); - goto fail; - } - - ret =3D clk_bulk_prepare_enable(config->hpd_clk_cnt, hdmi->hpd_clks); if (ret) - goto fail; + return ret; =20 msm_hdmi_set_mode(hdmi, false); msm_hdmi_phy_reset(hdmi); @@ -119,32 +100,18 @@ int msm_hdmi_hpd_enable(struct drm_bridge *bridge) spin_unlock_irqrestore(&hdmi->reg_lock, flags); =20 return 0; - -fail: - return ret; } =20 void msm_hdmi_hpd_disable(struct hdmi *hdmi) { - const struct hdmi_platform_config *config =3D hdmi->config; struct device *dev =3D &hdmi->pdev->dev; - int ret; =20 /* Disable HPD interrupt */ hdmi_write(hdmi, REG_HDMI_HPD_INT_CTRL, 0); =20 msm_hdmi_set_mode(hdmi, false); =20 - clk_bulk_disable_unprepare(config->hpd_clk_cnt, hdmi->hpd_clks); pm_runtime_put(dev); - - ret =3D pinctrl_pm_select_sleep_state(dev); - if (ret) - dev_warn(dev, "pinctrl state chg failed: %d\n", ret); - - ret =3D regulator_bulk_disable(config->hpd_reg_cnt, hdmi->hpd_regs); - if (ret) - dev_warn(dev, "failed to disable hpd regulator: %d\n", ret); } =20 void msm_hdmi_hpd_irq(struct drm_bridge *bridge) @@ -179,7 +146,6 @@ void msm_hdmi_hpd_irq(struct drm_bridge *bridge) =20 static enum drm_connector_status detect_reg(struct hdmi *hdmi) { - const struct hdmi_platform_config *config =3D hdmi->config; uint32_t hpd_int_status =3D 0; int ret; =20 @@ -187,14 +153,8 @@ static enum drm_connector_status detect_reg(struct hdm= i *hdmi) if (ret) goto out; =20 - ret =3D clk_bulk_prepare_enable(config->hpd_clk_cnt, hdmi->hpd_clks); - if (ret) - goto out; - hpd_int_status =3D hdmi_read(hdmi, REG_HDMI_HPD_INT_STATUS); =20 - clk_bulk_disable_unprepare(config->hpd_clk_cnt, hdmi->hpd_clks); - out: pm_runtime_put(&hdmi->pdev->dev); =20 --=20 2.39.2 From nobody Wed Feb 11 12:56:29 2026 Received: from mail-lf1-f41.google.com (mail-lf1-f41.google.com [209.85.167.41]) (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 A2E8A83CCC for ; Wed, 22 May 2024 10:51:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375069; cv=none; b=ofBInH3D2Hx9syJSRlWjyP95A16+K8mmwn0fKNhbOiBDsBG4Hv5qC9fx4T3VBgIUnT0aJjZbfN3YEDDwG/v64AiQv8y9NsqNknq9u8qssbaLi7BuyJZy0ULf+CgqzwrQ6M3MFSYWyGfDRViXradTksqjNGrNyFpOOKXJSfTNGRw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375069; c=relaxed/simple; bh=u0XwnOVdGXgfRiv18KJvoggCPFhhyJzYE8jnecSwHG0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CFMCBax2M+CZ/uaKdJR2pbwf3IMdiND3fNz2JYKADPCyvWqLizMLM7sim7dZEP4dd7cnBD84cQ9ta4uO2KcOifrQka9QWFoI0E/QGyYkRPIetwSmL2HZNkawoDpqjgGuqd+v6m95SwXDqmWHa1ftGlVxh+WT1ALm11ZqaeBgNZs= 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=dWIKMkfa; arc=none smtp.client-ip=209.85.167.41 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="dWIKMkfa" Received: by mail-lf1-f41.google.com with SMTP id 2adb3069b0e04-51f57713684so7843756e87.1 for ; Wed, 22 May 2024 03:51:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1716375066; x=1716979866; 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=cKuE+Md2+CJZ4ooxLw6IM33pLF9pqRQyKVYsC0dlBR4=; b=dWIKMkfaUiEnGyu9KdA4yFKn5VvhwX/0Kw9lZEsTc5P1fBZ5ktVWL2yafpvHWejDJW CkrhMyW/3Q0MTGBjYEJCPgsKaa/IeSIW1y2YHy6FI0f7/JGj/5nytvR5DEu6da6am5g2 ALIL17DKbzIXOhULR7FrkUgHS8Dpdc9f5jnsoJ6Wm/5uU8nkUkWsd4JkZcmJ9Idikfr3 5ZOg8VcyZtwmcdejH84V0eqOveF6IjNE6J6t+vy8qV0dDRpi+PZCnrA5hpzMJEME0SAc kJA6v/lDl9UWVZgYykpBS7HeBmkZeYJD0tViU++VsjeGxFP6rio1T5kEw+0cOEj8nRlK cSdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716375066; x=1716979866; 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=cKuE+Md2+CJZ4ooxLw6IM33pLF9pqRQyKVYsC0dlBR4=; b=FwhlXUA87KYatIb45oBUo4rAlfjUboYperoXjQu/NQsY0bOJ1K68WYEDKdYYaXVhm/ H4jBo5vOkXwU0d84pK0xu24q9X1F38WXiIQ2QR/P+G5Ik9p5ovc+SE8OOxBYl6aXDhoE svaNBDpRYkRrgIX1C55a5FrEMXOYjqsN9lZuZsVtPu30zE4YjL+BOyvzgUsEvyweoKzb y8xWz2qYe1BFEJVGlWbc4MDjQVLupX8Ehn18E7sjldL+NQ87jDFEVefWBDZoxbW5qa+Z 1Q73rY1T6duYPaub4XKoo9IYsakPiYzzV3jZF5XG8gnAZqOkke8OtfkN41AIsLcUmj6h aoiA== X-Forwarded-Encrypted: i=1; AJvYcCWUUNFlKmjAJFFhnM94eRVnuOE3P6z65d6YVgLr2FjscwH3gjVB4g8/+0iWtr3tWZesdtsuxavIOrUz8gK14I096P0CeQgoTWcHTacU X-Gm-Message-State: AOJu0YzgV7WRafDNrBpK1KHAvugESaD73sEmzQI185lqxfJOaIMIgoGp 53nC22phvuWDhQbmYFg7sEamZzQRKbjHQfa8ZWnkA0y1AcxQWqyUnbV1g5X/Pcs= X-Google-Smtp-Source: AGHT+IHJeHTfHyWHVmMD+/FJkx5/LYCOdgdKbvGKBtmAdB4VaETozRkOXBbdUDLL9rrVCMVWowSddA== X-Received: by 2002:ac2:58cc:0:b0:51e:150e:2c45 with SMTP id 2adb3069b0e04-526c0d496c5mr830356e87.63.1716375066002; Wed, 22 May 2024 03:51:06 -0700 (PDT) Received: from umbar.lan ([192.130.178.91]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-52431778ec8sm1279126e87.194.2024.05.22.03.51.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 May 2024 03:51:05 -0700 (PDT) From: Dmitry Baryshkov Date: Wed, 22 May 2024 13:51:02 +0300 Subject: [PATCH v2 10/14] drm/msm/hdmi: rename hpd_clks to pwr_clks 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: <20240522-fd-hdmi-hpd-v2-10-c30bdb7c5c7e@linaro.org> References: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> In-Reply-To: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Daniel Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3783; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=u0XwnOVdGXgfRiv18KJvoggCPFhhyJzYE8jnecSwHG0=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBmTc4QVCgxWG7MQkwYIO2fZmquhIl4W6mSsgcqw QAYfxikpzaJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZk3OEAAKCRCLPIo+Aiko 1UkvB/0QXhbzvu2Qi7WDnyqqjv7fCAiOPkjQFZ982cDkBIbjU3x1gUpa/ChxkJ+kgfp8UguLOKW Urr3FuY5QKNOH7upYyMF7MilONK8M6VzNEuIRhiO3Oe6k6zpxZQmoKbb9pizEqB1Sv4MGnhh7gC bnW59QObIlD2aXrOnMfsdCQHXsK/T1GB82W9UyUek7nwaEGFCrUIsOzgEaU/gTCpj0XoejKsgqj AsCm3jQdJmcyyaU4gfXFBVE0PMZ0PsCuidADxkTPfL7gtgWMeZJHsfphPLh1BbWu6/QTHLR9tS2 03S0gc01vvsSCpUzwYIYtSlMeoOHmuJwmcTD5PLi71Exy7TZ X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A As these clocks are now used in the runtime PM callbacks, they have no connection to 'HPD'. Rename corresponding fields to follow clocks purpose, to power up the HDMI controller. Signed-off-by: Dmitry Baryshkov Reviewed-by: Jessica Zhang --- drivers/gpu/drm/msm/hdmi/hdmi.c | 26 +++++++++++++------------- drivers/gpu/drm/msm/hdmi/hdmi.h | 6 +++--- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdm= i.c index cc671baad87b..c39a1f3a7505 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c @@ -228,19 +228,19 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi, .item ## _cnt =3D ARRAY_SIZE(item ## _names_ ## entry) =20 static const char *pwr_reg_names_8960[] =3D {"core-vdda"}; -static const char *hpd_clk_names_8960[] =3D {"core", "master_iface", "slav= e_iface"}; +static const char *pwr_clk_names_8960[] =3D {"core", "master_iface", "slav= e_iface"}; =20 static const struct hdmi_platform_config hdmi_tx_8960_config =3D { HDMI_CFG(pwr_reg, 8960), - HDMI_CFG(hpd_clk, 8960), + HDMI_CFG(pwr_clk, 8960), }; =20 static const char *pwr_reg_names_8x74[] =3D {"core-vdda", "core-vcc"}; -static const char *hpd_clk_names_8x74[] =3D {"iface", "core", "mdp_core", = "alt_iface"}; +static const char *pwr_clk_names_8x74[] =3D {"iface", "core", "mdp_core", = "alt_iface"}; =20 static const struct hdmi_platform_config hdmi_tx_8974_config =3D { HDMI_CFG(pwr_reg, 8x74), - HDMI_CFG(hpd_clk, 8x74), + HDMI_CFG(pwr_clk, 8x74), }; =20 /* @@ -449,17 +449,17 @@ static int msm_hdmi_dev_probe(struct platform_device = *pdev) if (ret) return dev_err_probe(dev, ret, "failed to get pwr regulators\n"); =20 - hdmi->hpd_clks =3D devm_kcalloc(&pdev->dev, - config->hpd_clk_cnt, - sizeof(hdmi->hpd_clks[0]), + hdmi->pwr_clks =3D devm_kcalloc(&pdev->dev, + config->pwr_clk_cnt, + sizeof(hdmi->pwr_clks[0]), GFP_KERNEL); - if (!hdmi->hpd_clks) + if (!hdmi->pwr_clks) return -ENOMEM; =20 - for (i =3D 0; i < config->hpd_clk_cnt; i++) - hdmi->hpd_clks[i].id =3D config->hpd_clk_names[i]; + for (i =3D 0; i < config->pwr_clk_cnt; i++) + hdmi->pwr_clks[i].id =3D config->pwr_clk_names[i]; =20 - ret =3D devm_clk_bulk_get(&pdev->dev, config->hpd_clk_cnt, hdmi->hpd_clks= ); + ret =3D devm_clk_bulk_get(&pdev->dev, config->pwr_clk_cnt, hdmi->pwr_clks= ); if (ret) return ret; =20 @@ -517,7 +517,7 @@ static int msm_hdmi_runtime_suspend(struct device *dev) struct hdmi *hdmi =3D dev_get_drvdata(dev); const struct hdmi_platform_config *config =3D hdmi->config; =20 - clk_bulk_disable_unprepare(config->hpd_clk_cnt, hdmi->hpd_clks); + clk_bulk_disable_unprepare(config->pwr_clk_cnt, hdmi->pwr_clks); =20 pinctrl_pm_select_sleep_state(dev); =20 @@ -540,7 +540,7 @@ static int msm_hdmi_runtime_resume(struct device *dev) if (ret) goto fail; =20 - ret =3D clk_bulk_prepare_enable(config->hpd_clk_cnt, hdmi->hpd_clks); + ret =3D clk_bulk_prepare_enable(config->pwr_clk_cnt, hdmi->pwr_clks); if (ret) goto fail; =20 diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.h b/drivers/gpu/drm/msm/hdmi/hdm= i.h index ee5463eb41b6..1e346e697f8e 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.h +++ b/drivers/gpu/drm/msm/hdmi/hdmi.h @@ -49,7 +49,7 @@ struct hdmi { phys_addr_t mmio_phy_addr; =20 struct regulator_bulk_data *pwr_regs; - struct clk_bulk_data *hpd_clks; + struct clk_bulk_data *pwr_clks; struct clk *extp_clk; =20 struct gpio_desc *hpd_gpiod; @@ -90,8 +90,8 @@ struct hdmi_platform_config { int pwr_reg_cnt; =20 /* clks that need to be on for hpd: */ - const char **hpd_clk_names; - int hpd_clk_cnt; + const char **pwr_clk_names; + int pwr_clk_cnt; }; =20 struct hdmi_bridge { --=20 2.39.2 From nobody Wed Feb 11 12:56:29 2026 Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) (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 5B99E84A3B for ; Wed, 22 May 2024 10:51:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375070; cv=none; b=qC52+8XfsxdeV42f8tVcva0i/0aY86EvpWHH5GTQ3E4lXX2Ga8JDu4snE7H8qzbzgH0I5mtrYmVtQRN2/bP4u8aTtiBvd31ll8CbGdvp36k37nt8Dz120LFpnM0myxPJhobWGoTbZKsOAshfCCZZeIbAl+/Ec1T4fFgl3NU+/IM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375070; c=relaxed/simple; bh=5oIxEFONp2G3t75XHmnnmPd77025c+YPgV0mxBOxves=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iuhQUUvm5QxVCx1b1hifaaD0RqCZZQiNt8LjgdeDYftQhcg/vcmr82Dpf/lT3mbYg/P2Us3HcZxjNUS1MYNy8xIoEV2Uen9GgWs4VlEh7whvgHPm/DCTMjkLrTBJQ/qlyJYhagZosOkF3L8WyUthw8akT4EEJVEC7/tfphi0/kE= 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=Wj/TX9kK; arc=none smtp.client-ip=209.85.167.48 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="Wj/TX9kK" Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-51f174e316eso5817754e87.0 for ; Wed, 22 May 2024 03:51:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1716375066; x=1716979866; 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=sH41O+MLWcEGoOFILncrbRDXVEgD8N3mxfmUHLQKrxo=; b=Wj/TX9kKdwRss81wRUIYQ5CRVBcSyNG13UUx1ZSJhnCWBS+bN6Vk9h3aJ+Q8Pkga5O 0jc5XmQCPFDI39hxSLXQ8msI51vGWyK59XOphMCn8juCIE4/bVQnLv7aGmSkOP3Vs7Pz vV4AfxK6o4Ifa9jU3asTDqrLBZlPRmEcz+QnO0ttJru7fIdEkAQQb9jpH6wN9gfbZgDZ xBHTcMpf/MiajyJPqvglRjDHJqDJGwPi8YAnm5UXd2wRLxB/u1yA6PhoaSDewaYjedh/ 7ofZXbMpX4yUmuXmdYYFA57wo+tMbtSpYdr1QANySB+JrD4PVbN0kuIhYyJjS6M2dTyq +PUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716375066; x=1716979866; 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=sH41O+MLWcEGoOFILncrbRDXVEgD8N3mxfmUHLQKrxo=; b=NTAxbYiBjXdFQWM6J9Kin3dx3oxQLUUrnyr0l5qiamn+QrhP//lLzGyILYQLpAmOi2 z/mr2PY3TwbngSxu9gkNDk9KvadDCgWb/IyEXGBnwkT2q9eMmZQu6hBL/QJw1eo0EUIc HMe2K5WkXsfQRkENxGCPes0ydSUvMxAY8y2bLuEw7CQaOOCwDBLlUtAK+li9HhAfZILk 4h4Bndia8/kE47y6MdwR3OExH2jBNU1qgX/cL7ijuyfLJNriJRWbQgRlzICPYCNLAGgc 1mS2t6ALceLFWmYBVRM5XnW/5n0rkhsAP2PklqYlNvA+GMgsL7AQcn4FgLflESAylZKF M0SA== X-Forwarded-Encrypted: i=1; AJvYcCUHGeiaMjTvw/IXRtBSGupAbntsV0aRtD9rjUzGmIDiMHya/AxTeelOMWR0W4qnkMPvC6DuUwRqNmJI1+60pg0u4yemsobHAtdNMp8E X-Gm-Message-State: AOJu0YzvWF/hhuBqURt8amoiZ9m0HzugmaC4vamhzy823KLF2sICy7/p 9N8SveHcHqWTUA3Mzqn6/22iw0VighFujRyVtse2ml+c6K20KwxUBHnGbwz1VSU= X-Google-Smtp-Source: AGHT+IGCxr96bjX8x1MG+g9F95qGyDTdggpyJqocrQW/lh29CygQ0vqX1n7hNrmg1HrGHeu4jOLkDA== X-Received: by 2002:a05:6512:239d:b0:523:6354:881e with SMTP id 2adb3069b0e04-526bf82d6ddmr1341359e87.39.1716375066683; Wed, 22 May 2024 03:51:06 -0700 (PDT) Received: from umbar.lan ([192.130.178.91]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-52431778ec8sm1279126e87.194.2024.05.22.03.51.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 May 2024 03:51:06 -0700 (PDT) From: Dmitry Baryshkov Date: Wed, 22 May 2024 13:51:03 +0300 Subject: [PATCH v2 11/14] drm/msm/hdmi: expand the HDMI_CFG macro 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: <20240522-fd-hdmi-hpd-v2-11-c30bdb7c5c7e@linaro.org> References: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> In-Reply-To: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Daniel Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2180; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=5oIxEFONp2G3t75XHmnnmPd77025c+YPgV0mxBOxves=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBmTc4QI5yArcsRgIC1Y5yDdP4FZ3iATW4eltThT TQdTVy+bJiJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZk3OEAAKCRCLPIo+Aiko 1R0yB/4m6I8/Jn6RfH4DWx6uVdIDZq8+GTkaMxoun5+Z75RRwIBgaFMUeP+IcJTMIJrdQqZ4elt DwLqUTU10+3iq8msyPPUrOm168PRnHpiR/R/z9bpquMLQ3folJJy8ss20tOqwdO79yCGJNDm7kj /lTzIDraU6Yvjrkzp+lkWsVn50eehgungQNNl/0t695TOt4CfwGMUXFCJKhFNetbYeOb6k/tvgS eXkuclZcuQztNyXp+W4JlYGEquZT85pNDH5RtTLW+DcsXEH5J0md45zD9mArVGIgNMMbnHhzvCe g5kUTL/W3PO+9QdbjRUczy9tvLveerr/9GEBVQYOASrvtXLR X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A Expand the HDMI_CFG() macro in HDMI config description. It has no added value other than hiding some boilerplate declarations. Signed-off-by: Dmitry Baryshkov Reviewed-by: Jessica Zhang --- drivers/gpu/drm/msm/hdmi/hdmi.c | 16 ++++++++-------- drivers/gpu/drm/msm/hdmi/hdmi.h | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdm= i.c index c39a1f3a7505..e160a23e962e 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c @@ -223,24 +223,24 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi, * The hdmi device: */ =20 -#define HDMI_CFG(item, entry) \ - .item ## _names =3D item ##_names_ ## entry, \ - .item ## _cnt =3D ARRAY_SIZE(item ## _names_ ## entry) - static const char *pwr_reg_names_8960[] =3D {"core-vdda"}; static const char *pwr_clk_names_8960[] =3D {"core", "master_iface", "slav= e_iface"}; =20 static const struct hdmi_platform_config hdmi_tx_8960_config =3D { - HDMI_CFG(pwr_reg, 8960), - HDMI_CFG(pwr_clk, 8960), + .pwr_reg_names =3D pwr_reg_names_8960, + .pwr_reg_cnt =3D ARRAY_SIZE(pwr_reg_names_8960), + .pwr_clk_names =3D pwr_clk_names_8960, + .pwr_clk_cnt =3D ARRAY_SIZE(pwr_clk_names_8960), }; =20 static const char *pwr_reg_names_8x74[] =3D {"core-vdda", "core-vcc"}; static const char *pwr_clk_names_8x74[] =3D {"iface", "core", "mdp_core", = "alt_iface"}; =20 static const struct hdmi_platform_config hdmi_tx_8974_config =3D { - HDMI_CFG(pwr_reg, 8x74), - HDMI_CFG(pwr_clk, 8x74), + .pwr_reg_names =3D pwr_reg_names_8x74, + .pwr_reg_cnt =3D ARRAY_SIZE(pwr_reg_names_8x74), + .pwr_clk_names =3D pwr_clk_names_8x74, + .pwr_clk_cnt =3D ARRAY_SIZE(pwr_clk_names_8x74), }; =20 /* diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.h b/drivers/gpu/drm/msm/hdmi/hdm= i.h index 1e346e697f8e..2a98efa8b6bd 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.h +++ b/drivers/gpu/drm/msm/hdmi/hdmi.h @@ -89,7 +89,7 @@ struct hdmi_platform_config { const char **pwr_reg_names; int pwr_reg_cnt; =20 - /* clks that need to be on for hpd: */ + /* clks that need to be on: */ const char **pwr_clk_names; int pwr_clk_cnt; }; --=20 2.39.2 From nobody Wed Feb 11 12:56:29 2026 Received: from mail-lf1-f41.google.com (mail-lf1-f41.google.com [209.85.167.41]) (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 2C6BA84D08 for ; Wed, 22 May 2024 10:51:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375071; cv=none; b=rllh5JZ7u3c7zXuBgs9tHypHlsRjWy4yVx4adgT5P7/QpOIdm6DEeU6kyj5oDpjeDV7nvSCOrqasIJq4h4U/GohAwsax0n2SRu5mjp+RziU5lkpSidCTfviyiPWJRdV+aky2AWU+e3Y0f++MwuKsxPhU2DgpX5iC+PjtKLRZfXE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375071; c=relaxed/simple; bh=+CX0caTW/kgZp6WyPrwa6tsFcNkT9AW5y90XnvQROQ4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=trn087+CEunjdsxmlWpm5MbUiDVFcJk2umtouOo7U8qVi7LPUqBUxGQdZ2QSyW/zt+jGqUrItV/2/QVs3Z4PC2zO/p7PwTsZXnIYMfI49NRvdsG7C6Cl6zUfum8v4h/+UK/gPbZek4BOMdclwTiJq0s7BgCRINcHYZeCTLbjvAw= 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=OOVqqLvT; arc=none smtp.client-ip=209.85.167.41 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="OOVqqLvT" Received: by mail-lf1-f41.google.com with SMTP id 2adb3069b0e04-51f99f9e0faso7580331e87.2 for ; Wed, 22 May 2024 03:51:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1716375067; x=1716979867; 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=wqy3Nq/FVqz5cSsGbuupU45qtEw4OAV0P+mpABZ0QzY=; b=OOVqqLvTa93aT44KMlo/MprjDF2jjcXQMLMukXqW/BdzkMXGBB8iYkJg3Xh5L+ZTWW 2UNt9gsHCOrYRqsz/XTsjRLhHFcEZKylB1IfMahjKV5Ge/q4W0RFh+CL+b+ydcQFyVrD jcmjFXN+yyQ4S0psjqVgyLCcO1RiLhnUJ6qUNRePJcgRnuEavjJG0BLi+bwbly6DXOzl qp74+ZZJhmQR0YOCCwjNUnlYGqnHm9MbG7HpT77xdU/b0UJaul1MAmz8KdHFPkfQo3lU +YvimlBPbniU5/dwgN4x5S2epwDj0lKTHUKaG8o+HLQo6x0G/K5H2sFwXA5JMoDPMlnm MQZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716375067; x=1716979867; 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=wqy3Nq/FVqz5cSsGbuupU45qtEw4OAV0P+mpABZ0QzY=; b=ddpcNkUHn/WQ0+jKBojQPhSQ6S4RgQU0MENVspb9cJiVM2ZSqULXwQvozCdJRr9nNi shgjsKdMBcZyNicAvjEwSGZL5eXFPEKficJJ6CaI98hg21yvk1/Tm5fKAa9nIQyd2oKi xTxHvVXAcD9ysqJMWsgfAsRwlnEfX010rAC8PyDqXHkZpzEmaB1bFb0eDBTMlSXWY/Cf jDVbPrpgu1ZQ/W111IGQ+pyOoWdmixWIs+qwX8huEfY5q63ql0aTPQd2OTVXXbQVqX9g HOu8qSlJ7LSy92VeqXUEQM5SYXiiNDQeU4kPf+6AevuuWj5XLgBfoov35zrcjsXfV5jm 9BEg== X-Forwarded-Encrypted: i=1; AJvYcCVOlfDX6DxTsnFlHBW6cduGkbcK/lozxH16aOJOBitD36h8aQnWAwNfr7AVSPXjoHjv5PlZokVdxYnOqcZE1ptKFqgW148VRCp4EuAm X-Gm-Message-State: AOJu0YwIe2Uk+etNxMGMvWEl5DForl3lx6ZI3CFj+ZjfsSqMqUbshW6Q MIlNDS3k7XPhJ+HI4i56zOqIX/+fAlZcVXP9BJddKQYQjRSMNTmeb02aMVKdTkI= X-Google-Smtp-Source: AGHT+IHgBR6IZsd/oD+qVsjGs90/sjJcSsviftKInsNc+Zspk9Ki5Svqna+XEj1d07VSv/zTMZKS2Q== X-Received: by 2002:ac2:4650:0:b0:523:b261:3dde with SMTP id 2adb3069b0e04-526be210a62mr1072706e87.41.1716375067512; Wed, 22 May 2024 03:51:07 -0700 (PDT) Received: from umbar.lan ([192.130.178.91]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-52431778ec8sm1279126e87.194.2024.05.22.03.51.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 May 2024 03:51:06 -0700 (PDT) From: Dmitry Baryshkov Date: Wed, 22 May 2024 13:51:04 +0300 Subject: [PATCH v2 12/14] drm/msm/hdmi: drop hpd-gpios support 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: <20240522-fd-hdmi-hpd-v2-12-c30bdb7c5c7e@linaro.org> References: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> In-Reply-To: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Daniel Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=4311; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=+CX0caTW/kgZp6WyPrwa6tsFcNkT9AW5y90XnvQROQ4=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBmTc4RBfN8d+WWDxu9Xpu1mwywXrVcB/Zvb1Dt5 CqWSyTK8umJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZk3OEQAKCRCLPIo+Aiko 1df0B/0RzAIL6g568vkZbZkPLb9FipJP10RMJLky2EpTE5cL+q8WdmEQ1VJnepz2WWxQS+gG6vS a2SxV9T7v0unXemRNdHQD5m7kvc9HZu6Y0w16kaRF0rn6i/qWCCy2YSF61jn/nbbiWhxUfYUI5x 6TT0PPjqJZSz+i6eOAkd8hZmb4a4Xu+bbvma7uCiEhQ9ti6xkqx8PqauXeen77BusXSY3K09cph t/QhkXG1CE0lK43fpgBd0QQzaqxsvw3ys5SDImQSzwAeAuooAo74CMS4Qadtoc2i1SinufzahFy BwfKekG9BMpvo3c1PLRp0GZFg//2osKqBG6HkAa18M9NQVCs X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A Supporting simultaneous check of native HPD and the external GPIO proved to be less stable than just native HPD. Drop the hpd-gpios support, leaving just the native HPD support. In case the native HPD doesn't work the user is urged to switch to specifying the HPD property to the hdmi-connector device. Signed-off-by: Dmitry Baryshkov Reviewed-by: Jessica Zhang --- drivers/gpu/drm/msm/hdmi/hdmi.c | 14 +++------- drivers/gpu/drm/msm/hdmi/hdmi.h | 2 -- drivers/gpu/drm/msm/hdmi/hdmi_hpd.c | 53 +++------------------------------= ---- 3 files changed, 7 insertions(+), 62 deletions(-) diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdm= i.c index e160a23e962e..a9437054c015 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c @@ -468,17 +468,9 @@ static int msm_hdmi_dev_probe(struct platform_device *= pdev) return dev_err_probe(dev, PTR_ERR(hdmi->extp_clk), "failed to get extp clock\n"); =20 - hdmi->hpd_gpiod =3D devm_gpiod_get_optional(&pdev->dev, "hpd", GPIOD_IN); - /* This will catch e.g. -EPROBE_DEFER */ - if (IS_ERR(hdmi->hpd_gpiod)) - return dev_err_probe(dev, PTR_ERR(hdmi->hpd_gpiod), - "failed to get hpd gpio\n"); - - if (!hdmi->hpd_gpiod) - DBG("failed to get HPD gpio"); - - if (hdmi->hpd_gpiod) - gpiod_set_consumer_name(hdmi->hpd_gpiod, "HDMI_HPD"); + if (of_find_property(dev->of_node, "hpd-gpios", NULL) || + of_find_property(dev->of_node, "hpd-gpio", NULL)) + dev_warn(dev, "hpd-gpios is not supported anymore, please migrate to the= hdmi-connector\n"); =20 ret =3D msm_hdmi_get_phy(hdmi); if (ret) { diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.h b/drivers/gpu/drm/msm/hdmi/hdm= i.h index 2a98efa8b6bd..268ff8604423 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.h +++ b/drivers/gpu/drm/msm/hdmi/hdmi.h @@ -52,8 +52,6 @@ struct hdmi { struct clk_bulk_data *pwr_clks; struct clk *extp_clk; =20 - struct gpio_desc *hpd_gpiod; - struct hdmi_phy *phy; struct device *phy_dev; =20 diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c b/drivers/gpu/drm/msm/hdmi= /hdmi_hpd.c index 32e447267e3b..d3353c6148ed 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c @@ -69,9 +69,6 @@ int msm_hdmi_hpd_enable(struct drm_bridge *bridge) int ret; unsigned long flags; =20 - if (hdmi->hpd_gpiod) - gpiod_set_value_cansleep(hdmi->hpd_gpiod, 1); - ret =3D pm_runtime_resume_and_get(dev); if (ret) return ret; @@ -144,8 +141,11 @@ void msm_hdmi_hpd_irq(struct drm_bridge *bridge) } } =20 -static enum drm_connector_status detect_reg(struct hdmi *hdmi) +enum drm_connector_status msm_hdmi_bridge_detect( + struct drm_bridge *bridge) { + struct hdmi_bridge *hdmi_bridge =3D to_hdmi_bridge(bridge); + struct hdmi *hdmi =3D hdmi_bridge->hdmi; uint32_t hpd_int_status =3D 0; int ret; =20 @@ -161,48 +161,3 @@ static enum drm_connector_status detect_reg(struct hdm= i *hdmi) return (hpd_int_status & HDMI_HPD_INT_STATUS_CABLE_DETECTED) ? connector_status_connected : connector_status_disconnected; } - -#define HPD_GPIO_INDEX 2 -static enum drm_connector_status detect_gpio(struct hdmi *hdmi) -{ - return gpiod_get_value(hdmi->hpd_gpiod) ? - connector_status_connected : - connector_status_disconnected; -} - -enum drm_connector_status msm_hdmi_bridge_detect( - struct drm_bridge *bridge) -{ - struct hdmi_bridge *hdmi_bridge =3D to_hdmi_bridge(bridge); - struct hdmi *hdmi =3D hdmi_bridge->hdmi; - enum drm_connector_status stat_gpio, stat_reg; - int retry =3D 20; - - /* - * some platforms may not have hpd gpio. Rely only on the status - * provided by REG_HDMI_HPD_INT_STATUS in this case. - */ - if (!hdmi->hpd_gpiod) - return detect_reg(hdmi); - - do { - stat_gpio =3D detect_gpio(hdmi); - stat_reg =3D detect_reg(hdmi); - - if (stat_gpio =3D=3D stat_reg) - break; - - mdelay(10); - } while (--retry); - - /* the status we get from reading gpio seems to be more reliable, - * so trust that one the most if we didn't manage to get hdmi and - * gpio status to agree: - */ - if (stat_gpio !=3D stat_reg) { - DBG("HDMI_HPD_INT_STATUS tells us: %d", stat_reg); - DBG("hpd gpio tells us: %d", stat_gpio); - } - - return stat_gpio; -} --=20 2.39.2 From nobody Wed Feb 11 12:56:29 2026 Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) (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 E9B0F84DED for ; Wed, 22 May 2024 10:51:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375073; cv=none; b=T6gc89ykvZ1PrLbzGXAPzdSJFJ9H0SbLYd2W5KWWFqN5U/RFoPdfg7duCwUWYBOH9xdWtpc8aQhWCQqpyQCaXSTjBCsLgRVN+ATFe+w0XfYojHASPqqL1+t7HYaXJsfk+hoEJAZAE73hGKuhWZnMGvnuoRpAlihBdLqoIPUv+xE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375073; c=relaxed/simple; bh=fN+A3/6vCyYk379OydAiduI6v5ThmuLGAylNRut8Q0Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SuvrlfY/gbf85EYfHUkQESEbDmJ6DN/4t0IzuqxF/biaO17NpUVp26OGgCkbTX+BYWQenDORUmKZWegSgenbgfBHA6KUWxHmxX2GP0M4z7GiHZ1lyGyyzHZAkoZ5lG15v4x/OAY6wPsisw3y4qc5SWeGoY5KspGRE5ssa4RwWHI= 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=lcrFIY3b; arc=none smtp.client-ip=209.85.167.53 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="lcrFIY3b" Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-5206a5854adso5464152e87.0 for ; Wed, 22 May 2024 03:51:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1716375068; x=1716979868; 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=kQt039iK/MLUHKrg6kdB48KBLBfk/G02HtDymVf9/cs=; b=lcrFIY3bS3ZxBTvyycSzuQE6zBdzZEytlpFNNw/FUjrRDXBTedjg9GOLQnrp3vvvmU rRXcX8gNAPJWktAjCKViKW2arA4o59tx0XvJ4sqgoK7lKw/Qn9K0e80/9fjgRbF86YA+ hn4uLo0XoLZveeRCnrRzb1LiLnOC2M7uj8kZasip5h8fxzkdaQSKToADl4Vg9SvGSNzr y+1UTzL1sEG05dR7CukUFPIxuz4rxIyuzpt8p1jvgB0UP+8+hk5iVlOyE+sNO2mBC9Ap sxIatAdnyllrry0er9bCJyw4ckrgklO+QCQXiO2+St3iLg+RhKhUSIN4yu4S1A6zuIMP FBow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716375068; x=1716979868; 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=kQt039iK/MLUHKrg6kdB48KBLBfk/G02HtDymVf9/cs=; b=OlJUrJh9KB8YcMyV1IkYGsD6t9t4uF9nAXe19nmw+4QUyxlNfLTlW5zxvcvc47/opr esIHdf8NyXQhlVMtRRuqSgUINnXuqsFrtWDBmgthvciTENXTv48mvS4PO6GAWGiurlYT eFWONi2f6X8cxtN1NCr4aYP2sveiZAwWbbNCIv3x6Z6KGCTTBY/uMyrPAYJEnxBVO/5R sjpg6duMOtYo48lyH7JYuAQEZgTYPeVaj9PicEzeK7REwHN9v96gDUrpivAPYbc1+ynG kxkSEdqsx5uYf1kZXvKFg2mZe7T1aPrR3taDcuKGpJ5SyiR6jGNqXg03snxf9aGiTbcC X4tw== X-Forwarded-Encrypted: i=1; AJvYcCU6MzgX4WdSy4GnWN8EZxrkmU/Is0yHAJvt2MOseKC1FGvuTO1SQ9VxaE2JRm/trxJCaEbmV0mFI6RJu8dOtpQyBD/4jZrucWNlwh9E X-Gm-Message-State: AOJu0YwmHjKOel+vIvq1xbdbcaxSMHNuLYcRtNG59DlYsf9YQlyHqA9D tjIHej62Syu/m2eagV15NnjUJ2bKukHW6W4yO7oIprZ4jgiZcQd7/O/ZlB8Ielw= X-Google-Smtp-Source: AGHT+IE19pPXGyC8uaae6hqcH2EPzGBxyhrTv79BSBeUBvyS8uz/EAWUerDg6ffy+uQkeB6O0oM3xw== X-Received: by 2002:a05:6512:3707:b0:523:d1ba:6431 with SMTP id 2adb3069b0e04-526bfcf72d6mr829466e87.66.1716375068296; Wed, 22 May 2024 03:51:08 -0700 (PDT) Received: from umbar.lan ([192.130.178.91]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-52431778ec8sm1279126e87.194.2024.05.22.03.51.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 May 2024 03:51:07 -0700 (PDT) From: Dmitry Baryshkov Date: Wed, 22 May 2024 13:51:05 +0300 Subject: [PATCH v2 13/14] drm/msm/hdmi: ensure that HDMI is one if HPD is requested 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: <20240522-fd-hdmi-hpd-v2-13-c30bdb7c5c7e@linaro.org> References: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> In-Reply-To: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Daniel Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3672; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=fN+A3/6vCyYk379OydAiduI6v5ThmuLGAylNRut8Q0Y=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBmTc4RpzFy/RBa6wu+q9FeHDiKrwkox2DFhaeHF 4v2WsPp4GaJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZk3OEQAKCRCLPIo+Aiko 1Vh7B/95PEKsWeIEL8mDIfKMXBJryYqmCBX/RF1wUhr6eSzA/642guxhiuaaYf6UpvEodW9nitX B5kvWRDkiDFyZy65fYhKFZ+9HIC8VZdpA6iR4/OHYwrV8FuvaljFy1tvDz9VvpkfCgYxN/HfTvc dflfpD25FK19tPRsaer+FbKMFcNqYmLpo6ta5ZrNMw2LPHsPAPfW8JBNOBgzw2USJZ59EOqNAR8 XeJteZAPLcLS5o0EUrRYn5ob0Z1oCVT8Ksa26Q6HZSKEXedF/V20TD4ByYIkW4CHQHCnM8MJx+G hSkEKjEqMj5dmZ+WNiuSzZHnvnwFadD6TI4pJFEh+6T2uBLZ X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A The HDMI block needs to be enabled to properly generate HPD events. Make sure it is not turned off in the disable paths if HPD delivery is enabled. Signed-off-by: Dmitry Baryshkov Reviewed-by: Jessica Zhang --- drivers/gpu/drm/msm/hdmi/hdmi.c | 1 + drivers/gpu/drm/msm/hdmi/hdmi.h | 2 ++ drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 8 +++++++- drivers/gpu/drm/msm/hdmi/hdmi_hpd.c | 9 ++++++++- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdm= i.c index a9437054c015..2890196857f8 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c @@ -409,6 +409,7 @@ static int msm_hdmi_dev_probe(struct platform_device *p= dev) hdmi->pdev =3D pdev; hdmi->config =3D config; spin_lock_init(&hdmi->reg_lock); + mutex_init(&hdmi->state_mutex); =20 ret =3D drm_of_find_panel_or_bridge(pdev->dev.of_node, 1, 0, NULL, &hdmi-= >next_bridge); if (ret && ret !=3D -ENODEV) diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.h b/drivers/gpu/drm/msm/hdmi/hdm= i.h index 268ff8604423..7f0ca5252018 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.h +++ b/drivers/gpu/drm/msm/hdmi/hdmi.h @@ -42,6 +42,8 @@ struct hdmi { =20 /* video state: */ bool power_on; + bool hpd_enabled; + struct mutex state_mutex; /* protects two booleans */ unsigned long int pixclock; =20 void __iomem *mmio; diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c b/drivers/gpu/drm/msm/h= dmi/hdmi_bridge.c index cddba640d292..104107ed47d0 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c @@ -117,11 +117,13 @@ static void msm_hdmi_bridge_atomic_pre_enable(struct = drm_bridge *bridge, =20 DBG("power up"); =20 + mutex_lock(&hdmi->state_mutex); if (!hdmi->power_on) { msm_hdmi_phy_resource_enable(phy); msm_hdmi_power_on(bridge); hdmi->power_on =3D true; } + mutex_unlock(&hdmi->state_mutex); =20 if (hdmi->hdmi_mode) { msm_hdmi_config_avi_infoframe(hdmi); @@ -147,7 +149,10 @@ static void msm_hdmi_bridge_atomic_post_disable(struct= drm_bridge *bridge, msm_hdmi_hdcp_off(hdmi->hdcp_ctrl); =20 DBG("power down"); - msm_hdmi_set_mode(hdmi, false); + + /* Keep the HDMI enabled if the HPD is enabled */ + mutex_lock(&hdmi->state_mutex); + msm_hdmi_set_mode(hdmi, hdmi->hpd_enabled); =20 msm_hdmi_phy_powerdown(phy); =20 @@ -158,6 +163,7 @@ static void msm_hdmi_bridge_atomic_post_disable(struct = drm_bridge *bridge, msm_hdmi_audio_update(hdmi); msm_hdmi_phy_resource_disable(phy); } + mutex_unlock(&hdmi->state_mutex); } =20 static void msm_hdmi_bridge_mode_set(struct drm_bridge *bridge, diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c b/drivers/gpu/drm/msm/hdmi= /hdmi_hpd.c index d3353c6148ed..cb89e9e2c6ea 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c @@ -73,10 +73,14 @@ int msm_hdmi_hpd_enable(struct drm_bridge *bridge) if (ret) return ret; =20 + mutex_lock(&hdmi->state_mutex); msm_hdmi_set_mode(hdmi, false); msm_hdmi_phy_reset(hdmi); msm_hdmi_set_mode(hdmi, true); =20 + hdmi->hpd_enabled =3D true; + mutex_unlock(&hdmi->state_mutex); + hdmi_write(hdmi, REG_HDMI_USEC_REFTIMER, 0x0001001b); =20 /* enable HPD events: */ @@ -106,7 +110,10 @@ void msm_hdmi_hpd_disable(struct hdmi *hdmi) /* Disable HPD interrupt */ hdmi_write(hdmi, REG_HDMI_HPD_INT_CTRL, 0); =20 - msm_hdmi_set_mode(hdmi, false); + mutex_lock(&hdmi->state_mutex); + hdmi->hpd_enabled =3D false; + msm_hdmi_set_mode(hdmi, hdmi->power_on); + mutex_unlock(&hdmi->state_mutex); =20 pm_runtime_put(dev); } --=20 2.39.2 From nobody Wed Feb 11 12:56:29 2026 Received: from mail-lf1-f41.google.com (mail-lf1-f41.google.com [209.85.167.41]) (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 B236684E0C for ; Wed, 22 May 2024 10:51:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375072; cv=none; b=jiMIJ9XkySr+tNKD1j1uulFeUhB1UrZbPbnH32I06ZDlRGHS3hUOztyv9RMNTaG4lQzNHn5XIsTm1tiSzuKGGxuo7ySgvtj26BrIF84S8aOwIYelAjuEQ79Cl88ZMHJYVgdvMT59x132D33mqXAE5w7SkzHmSSpdBV7x8Q9uSu0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716375072; c=relaxed/simple; bh=/wrNOYlvXzRdTeplf6TZbVC8so7rhZlXjnI2QI/al7o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rq/KynuPFx3jxXvQzsTsJhWHoRqds3ynXPmBLZohYKka3zhVTDpziE/WHbb9jfe4hMzXFT2UEAlJlOyysqEiDR/v6WNet/R9YMGD98YFtclqOxOOYnor22/7K3+gh9ypwi0K/JM6C+3B9J/fwXCLeRbHOeiwfIfoEs7QprYRg3k= 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=Tm8MlPwx; arc=none smtp.client-ip=209.85.167.41 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="Tm8MlPwx" Received: by mail-lf1-f41.google.com with SMTP id 2adb3069b0e04-51f45104ef0so6200940e87.3 for ; Wed, 22 May 2024 03:51:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1716375069; x=1716979869; 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=j/4fTIJgTEUbDdUM7ulateH0ttYK2JMK4XIQQRpRwck=; b=Tm8MlPwxK1nypOUAwjlRF+fzLS6TkOxfc0zK4sjJ8zqu0yR35mfz/AdQ/j/DSK6p5k XnNTvUzYu5JdBFLWhQSsxZOKzSpSULk/Dpuj60BgTnOXEhnHvv1NUTE63wIxygCVNKac qW0cIQw54KLEnQKwTJPBO8f0pmRb5vGdwoxe04uSo/tC6GMZOzZiUeGBD44G+SWAfR0/ A6pBlhCskhJML7SUB4YrYmaJgI3NNmTvnqWgoSEJBTmwPG12QnVAsRGWzNcrRKfSDffJ 30jkjgMOayXP03JwUsm5luHPCREXfeASLCkIdEtjGm11G9PQUy7wMNUXhpuJXKkHSatc LVsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716375069; x=1716979869; 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=j/4fTIJgTEUbDdUM7ulateH0ttYK2JMK4XIQQRpRwck=; b=akOodTCBNWZOSu87qAdqJaBUrls+sZbbV692J9C33C27RCYFg963R871ipW9FH1M2R 5Oe6Vkey7d1vrz/SLkSMqVdremJpQQnoJhTESUpiJKQwmi30WX7g4THndAdIvdJqtc/V FV+nJkKzZDpsqloeRdhLzxJcT9nEjE4xvKEDzzBQ/mthfHT7pdh5jkv4zeAu3zzEHC0q PeQ2eKmxN0ppgdxW/hwh6sNgl0NXLhDhMd0kwuvFzvN7t1sHoIqaMpCMVAl5b12WEypI oTRCnJkP4eua2h+IbGsaCq/mfN7uReMvYsbKGCaHII1+PhN9b20fjYM2oJpwXf1hV+gg V4Fw== X-Forwarded-Encrypted: i=1; AJvYcCU3yDR0sI+hLGdGZqdgx5trl84/8bNpIq7PvMocOYZTkQGeysz9Y0zC3u8Ol2zwv8fBeH7McT80VMnBsJpUNABGaIZhXwI5L8Gt60TA X-Gm-Message-State: AOJu0YyT69kNUeivd3oCNuRlirK8OPmdVcsikq9b5wG60Tg/uVOBkmB8 BF1brUBd4bS3qQykxeK53fcgEKqqRy/UB74BW9D8hmiFQKrqu5mM1pFPIJjDKcU= X-Google-Smtp-Source: AGHT+IELruHphQs1lHT+YJc17lZvFaGsZaIttRkKgj/276EsYqWN2Z5w0oVEWecTGdEVYJODT/Hf7Q== X-Received: by 2002:ac2:4c10:0:b0:518:95b6:176f with SMTP id 2adb3069b0e04-526c068ea7cmr892773e87.50.1716375069078; Wed, 22 May 2024 03:51:09 -0700 (PDT) Received: from umbar.lan ([192.130.178.91]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-52431778ec8sm1279126e87.194.2024.05.22.03.51.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 May 2024 03:51:08 -0700 (PDT) From: Dmitry Baryshkov Date: Wed, 22 May 2024 13:51:06 +0300 Subject: [PATCH v2 14/14] drm/msm/hdmi: wire in hpd_enable/hpd_disable bridge ops 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: <20240522-fd-hdmi-hpd-v2-14-c30bdb7c5c7e@linaro.org> References: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> In-Reply-To: <20240522-fd-hdmi-hpd-v2-0-c30bdb7c5c7e@linaro.org> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Daniel Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3864; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=/wrNOYlvXzRdTeplf6TZbVC8so7rhZlXjnI2QI/al7o=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBmTc4RYwSU6lOZZB3KG7aLp6Cx2FiLEgfA/chDB bge3K0A5YmJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZk3OEQAKCRCLPIo+Aiko 1Rb7CACP2WFe3WKMzifDnF7L4BKpX8QNHIRZOX8BsKiod/n3IIa0usUDK3kAMOi40/U6TyKOcF6 gqRv0D03gJMhCARcSsXKbPIjk9mKtLJlLumJGkKiVPY0MQm9hcxsx3atkHilZU1+XycaOMjW+dL YiHeo+COVv47oNf0ETJY25YIWK6DjkFxuYeG7F2zeK1ahF5QrIl64FxN3M73Coj/yQjKdjJUM4t AP4boZhBwBi02kTxoxEr2BrrrJDYNMPuS79LPR07pI5yHvcALXo3VUzqIZLAa75+VXuG8xZ3dsQ Z3hQXnUujcst+Q52pd4hGrHQe+Qhhli6fsO0wgDUt4l1owTm X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A The HDMI driver already has msm_hdmi_hpd_enable() and msm_hdmi_hpd_disable() functions. Wire them into the msm_hdmi_bridge_funcs, so that HPD can be enabled and disabled dynamically rather than always having HPD events generation enabled. Signed-off-by: Dmitry Baryshkov Reviewed-by: Jessica Zhang --- drivers/gpu/drm/msm/hdmi/hdmi.c | 9 --------- drivers/gpu/drm/msm/hdmi/hdmi.h | 4 ++-- drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 3 +++ drivers/gpu/drm/msm/hdmi/hdmi_hpd.c | 12 ++++++------ 4 files changed, 11 insertions(+), 17 deletions(-) diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdm= i.c index 2890196857f8..06adcf4a6544 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c @@ -202,12 +202,6 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi, goto fail; } =20 - ret =3D msm_hdmi_hpd_enable(hdmi->bridge); - if (ret < 0) { - DRM_DEV_ERROR(&hdmi->pdev->dev, "failed to enable HPD: %d\n", ret); - goto fail; - } - return 0; =20 fail: @@ -377,9 +371,6 @@ static void msm_hdmi_unbind(struct device *dev, struct = device *master, if (priv->hdmi->audio_pdev) platform_device_unregister(priv->hdmi->audio_pdev); =20 - if (priv->hdmi->bridge) - msm_hdmi_hpd_disable(priv->hdmi); - msm_hdmi_destroy(priv->hdmi); priv->hdmi =3D NULL; } diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.h b/drivers/gpu/drm/msm/hdmi/hdm= i.h index 7f0ca5252018..c6519e6f7f2c 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.h +++ b/drivers/gpu/drm/msm/hdmi/hdmi.h @@ -219,8 +219,8 @@ int msm_hdmi_bridge_init(struct hdmi *hdmi); void msm_hdmi_hpd_irq(struct drm_bridge *bridge); enum drm_connector_status msm_hdmi_bridge_detect( struct drm_bridge *bridge); -int msm_hdmi_hpd_enable(struct drm_bridge *bridge); -void msm_hdmi_hpd_disable(struct hdmi *hdmi); +void msm_hdmi_hpd_enable(struct drm_bridge *bridge); +void msm_hdmi_hpd_disable(struct drm_bridge *bridge); =20 /* * i2c adapter for ddc: diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c b/drivers/gpu/drm/msm/h= dmi/hdmi_bridge.c index 104107ed47d0..41722b2e6b44 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c @@ -300,6 +300,9 @@ static const struct drm_bridge_funcs msm_hdmi_bridge_fu= ncs =3D { .mode_valid =3D msm_hdmi_bridge_mode_valid, .edid_read =3D msm_hdmi_bridge_edid_read, .detect =3D msm_hdmi_bridge_detect, + + .hpd_enable =3D msm_hdmi_hpd_enable, + .hpd_disable =3D msm_hdmi_hpd_disable, }; =20 static void diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c b/drivers/gpu/drm/msm/hdmi= /hdmi_hpd.c index cb89e9e2c6ea..04d00b6f36fd 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c @@ -60,7 +60,7 @@ static void msm_hdmi_phy_reset(struct hdmi *hdmi) } } =20 -int msm_hdmi_hpd_enable(struct drm_bridge *bridge) +void msm_hdmi_hpd_enable(struct drm_bridge *bridge) { struct hdmi_bridge *hdmi_bridge =3D to_hdmi_bridge(bridge); struct hdmi *hdmi =3D hdmi_bridge->hdmi; @@ -70,8 +70,8 @@ int msm_hdmi_hpd_enable(struct drm_bridge *bridge) unsigned long flags; =20 ret =3D pm_runtime_resume_and_get(dev); - if (ret) - return ret; + if (WARN_ON(ret)) + return; =20 mutex_lock(&hdmi->state_mutex); msm_hdmi_set_mode(hdmi, false); @@ -99,12 +99,12 @@ int msm_hdmi_hpd_enable(struct drm_bridge *bridge) hdmi_write(hdmi, REG_HDMI_HPD_CTRL, HDMI_HPD_CTRL_ENABLE | hpd_ctrl); spin_unlock_irqrestore(&hdmi->reg_lock, flags); - - return 0; } =20 -void msm_hdmi_hpd_disable(struct hdmi *hdmi) +void msm_hdmi_hpd_disable(struct drm_bridge *bridge) { + struct hdmi_bridge *hdmi_bridge =3D to_hdmi_bridge(bridge); + struct hdmi *hdmi =3D hdmi_bridge->hdmi; struct device *dev =3D &hdmi->pdev->dev; =20 /* Disable HPD interrupt */ --=20 2.39.2