All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jessica Zhang <quic_jesszhan@quicinc.com>
To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
	Rob Clark <robdclark@gmail.com>,
	Abhinav Kumar <quic_abhinavk@quicinc.com>,
	Sean Paul <sean@poorly.run>,
	Marijn Suijten <marijn.suijten@somainline.org>,
	"David Airlie" <airlied@gmail.com>,
	Daniel Vetter <daniel@ffwll.ch>
Cc: <linux-arm-msm@vger.kernel.org>,
	<dri-devel@lists.freedesktop.org>,
	<freedreno@lists.freedesktop.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2 06/14] drm/msm/hdmi: switch to clk_bulk API
Date: Tue, 18 Jun 2024 16:51:51 -0700	[thread overview]
Message-ID: <badbf856-1b6d-42cd-880d-cdde2f293a86@quicinc.com> (raw)
In-Reply-To: <20240522-fd-hdmi-hpd-v2-6-c30bdb7c5c7e@linaro.org>



On 5/22/2024 3:50 AM, Dmitry Baryshkov wrote:
> 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 <dmitry.baryshkov@linaro.org>

Reviewed-by: Jessica Zhang <quic_jesszhan@quicinc.com>

> ---
>   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/hdmi.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;
>   
> -	for (i = 0; i < config->hpd_clk_cnt; i++) {
> -		struct clk *clk;
> +	for (i = 0; i < config->hpd_clk_cnt; i++)
> +		hdmi->hpd_clks[i].id = config->hpd_clk_names[i];
>   
> -		clk = 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] = clk;
> -	}
> +	ret = devm_clk_bulk_get(&pdev->dev, config->hpd_clk_cnt, hdmi->hpd_clks);
> +	if (ret)
> +		return ret;
>   
>   	hdmi->extp_clk = 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/hdmi.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 {
>   
>   	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;
>   
>   	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)
>   	}
>   }
>   
> -static void enable_hpd_clocks(struct hdmi *hdmi, bool enable)
> -{
> -	const struct hdmi_platform_config *config = hdmi->config;
> -	struct device *dev = &hdmi->pdev->dev;
> -	int i, ret;
> -
> -	if (enable) {
> -		for (i = 0; i < config->hpd_clk_cnt; i++) {
> -			ret = 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 = config->hpd_clk_cnt - 1; i >= 0; i--)
> -			clk_disable_unprepare(hdmi->hpd_clks[i]);
> -	}
> -}
> -
>   int msm_hdmi_hpd_enable(struct drm_bridge *bridge)
>   {
>   	struct hdmi_bridge *hdmi_bridge = 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);
>   
>   	pm_runtime_get_sync(dev);
> -	enable_hpd_clocks(hdmi, true);
> +	ret = clk_bulk_prepare_enable(config->hpd_clk_cnt, hdmi->hpd_clks);
> +	if (ret)
> +		goto fail;
>   
>   	msm_hdmi_set_mode(hdmi, false);
>   	msm_hdmi_phy_reset(hdmi);
> @@ -149,7 +130,7 @@ void msm_hdmi_hpd_disable(struct hdmi *hdmi)
>   
>   	msm_hdmi_set_mode(hdmi, false);
>   
> -	enable_hpd_clocks(hdmi, false);
> +	clk_bulk_disable_unprepare(config->hpd_clk_cnt, hdmi->hpd_clks);
>   	pm_runtime_put(dev);
>   
>   	ret = pinctrl_pm_select_sleep_state(dev);
> @@ -193,14 +174,20 @@ void msm_hdmi_hpd_irq(struct drm_bridge *bridge)
>   
>   static enum drm_connector_status detect_reg(struct hdmi *hdmi)
>   {
> -	uint32_t hpd_int_status;
> +	const struct hdmi_platform_config *config = hdmi->config;
> +	uint32_t hpd_int_status = 0;
> +	int ret;
>   
>   	pm_runtime_get_sync(&hdmi->pdev->dev);
> -	enable_hpd_clocks(hdmi, true);
> +	ret = clk_bulk_prepare_enable(config->hpd_clk_cnt, hdmi->hpd_clks);
> +	if (ret)
> +		goto out;
>   
>   	hpd_int_status = hdmi_read(hdmi, REG_HDMI_HPD_INT_STATUS);
>   
> -	enable_hpd_clocks(hdmi, false);
> +	clk_bulk_disable_unprepare(config->hpd_clk_cnt, hdmi->hpd_clks);
> +
> +out:
>   	pm_runtime_put(&hdmi->pdev->dev);
>   
>   	return (hpd_int_status & HDMI_HPD_INT_STATUS_CABLE_DETECTED) ?
> 
> -- 
> 2.39.2
> 

  reply	other threads:[~2024-06-18 23:52 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-22 10:50 [PATCH v2 00/14] drm/msm/hdmi: rework and fix the HPD even generation Dmitry Baryshkov
2024-05-22 10:50 ` [PATCH v2 01/14] drm/msm/hdmi: move the alt_iface clock to the hpd list Dmitry Baryshkov
2024-06-11 18:15   ` Jessica Zhang
2024-05-22 10:50 ` [PATCH v2 02/14] drm/msm/hdmi: simplify extp clock handling Dmitry Baryshkov
2024-06-11 18:16   ` Jessica Zhang
2024-05-22 10:50 ` [PATCH v2 03/14] drm/msm/hdmi: switch to atomic_pre_enable/post_disable Dmitry Baryshkov
2024-06-11 18:17   ` Jessica Zhang
2024-05-22 10:50 ` [PATCH v2 04/14] drm/msm/hdmi: set infoframes on all pre_enable calls Dmitry Baryshkov
2024-06-12  0:04   ` Jessica Zhang
2024-06-12  8:31     ` Dmitry Baryshkov
2024-05-22 10:50 ` [PATCH v2 05/14] drm/msm/hdmi: drop clock frequency assignment Dmitry Baryshkov
2024-06-18 23:02   ` Jessica Zhang
2024-05-22 10:50 ` [PATCH v2 06/14] drm/msm/hdmi: switch to clk_bulk API Dmitry Baryshkov
2024-06-18 23:51   ` Jessica Zhang [this message]
2024-05-22 10:50 ` [PATCH v2 07/14] drm/msm/hdmi: switch to pm_runtime_resume_and_get() Dmitry Baryshkov
2024-06-19  0:00   ` Jessica Zhang
2024-05-22 10:51 ` [PATCH v2 08/14] drm/msm/hdmi: add runtime PM calls to DDC transfer function Dmitry Baryshkov
2024-06-19  0:05   ` Jessica Zhang
2024-05-22 10:51 ` [PATCH v2 09/14] drm/msm/hdmi: implement proper runtime PM handling Dmitry Baryshkov
2024-06-19 17:36   ` Jessica Zhang
2024-05-22 10:51 ` [PATCH v2 10/14] drm/msm/hdmi: rename hpd_clks to pwr_clks Dmitry Baryshkov
2024-06-19 17:55   ` Jessica Zhang
2024-05-22 10:51 ` [PATCH v2 11/14] drm/msm/hdmi: expand the HDMI_CFG macro Dmitry Baryshkov
2024-06-19 18:11   ` Jessica Zhang
2024-05-22 10:51 ` [PATCH v2 12/14] drm/msm/hdmi: drop hpd-gpios support Dmitry Baryshkov
2024-06-19 18:47   ` Jessica Zhang
2024-05-22 10:51 ` [PATCH v2 13/14] drm/msm/hdmi: ensure that HDMI is one if HPD is requested Dmitry Baryshkov
2024-06-12 13:01   ` Markus Elfring
2024-06-12 13:22     ` Dmitry Baryshkov
2024-06-12 14:32       ` [v2 " Markus Elfring
2024-06-12 16:15         ` Dmitry Baryshkov
2024-06-19 22:13   ` [PATCH v2 " Jessica Zhang
2024-05-22 10:51 ` [PATCH v2 14/14] drm/msm/hdmi: wire in hpd_enable/hpd_disable bridge ops Dmitry Baryshkov
2024-06-19 22:14   ` Jessica Zhang
2024-06-12 12:28 ` [v2 00/14] drm/msm/hdmi: rework and fix the HPD even generation Markus Elfring

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=badbf856-1b6d-42cd-880d-cdde2f293a86@quicinc.com \
    --to=quic_jesszhan@quicinc.com \
    --cc=airlied@gmail.com \
    --cc=daniel@ffwll.ch \
    --cc=dmitry.baryshkov@linaro.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=freedreno@lists.freedesktop.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marijn.suijten@somainline.org \
    --cc=quic_abhinavk@quicinc.com \
    --cc=robdclark@gmail.com \
    --cc=sean@poorly.run \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.