All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jessica Zhang <quic_jesszhan@quicinc.com>
To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	Rob Clark <robdclark@gmail.com>, Sean Paul <sean@poorly.run>,
	Abhinav Kumar <quic_abhinavk@quicinc.com>
Cc: David Airlie <airlied@linux.ie>, <linux-arm-msm@vger.kernel.org>,
	<dri-devel@lists.freedesktop.org>,
	Stephen Boyd <swboyd@chromium.org>,
	"Daniel Vetter" <daniel@ffwll.ch>,
	<freedreno@lists.freedesktop.org>
Subject: Re: [Freedreno] [PATCH v3 1/3] drm/msm: move utility functions from msm_drv.c
Date: Wed, 19 Jan 2022 18:17:31 -0800	[thread overview]
Message-ID: <cc54a962-253b-c764-8439-60ba08159e9a@quicinc.com> (raw)
In-Reply-To: <20220119221616.3089119-2-dmitry.baryshkov@linaro.org>



On 1/19/2022 2:16 PM, Dmitry Baryshkov wrote:
> Move clock/IO/hrtimer utility functions from msm_drv.c to new
> msm_io_utils.c file.
> 
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>

Tested on: Qualcomm RB3 (debian, sdm845), Qualcomm RB5 (debian, qrb5165)

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

> ---
>   drivers/gpu/drm/msm/Makefile       |   1 +
>   drivers/gpu/drm/msm/msm_drv.c      | 118 ---------------------------
>   drivers/gpu/drm/msm/msm_io_utils.c | 126 +++++++++++++++++++++++++++++
>   3 files changed, 127 insertions(+), 118 deletions(-)
>   create mode 100644 drivers/gpu/drm/msm/msm_io_utils.c
> 
> diff --git a/drivers/gpu/drm/msm/Makefile b/drivers/gpu/drm/msm/Makefile
> index 03ab55c37beb..5b6e37477079 100644
> --- a/drivers/gpu/drm/msm/Makefile
> +++ b/drivers/gpu/drm/msm/Makefile
> @@ -87,6 +87,7 @@ msm-y := \
>   	msm_gem_vma.o \
>   	msm_gpu.o \
>   	msm_gpu_devfreq.o \
> +	msm_io_utils.o \
>   	msm_iommu.o \
>   	msm_perf.o \
>   	msm_rd.o \
> diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> index fd62a4da14a1..30c44c395a24 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -75,124 +75,6 @@ static bool modeset = true;
>   MODULE_PARM_DESC(modeset, "Use kernel modesetting [KMS] (1=on (default), 0=disable)");
>   module_param(modeset, bool, 0600);
>   
> -/*
> - * Util/helpers:
> - */
> -
> -struct clk *msm_clk_bulk_get_clock(struct clk_bulk_data *bulk, int count,
> -		const char *name)
> -{
> -	int i;
> -	char n[32];
> -
> -	snprintf(n, sizeof(n), "%s_clk", name);
> -
> -	for (i = 0; bulk && i < count; i++) {
> -		if (!strcmp(bulk[i].id, name) || !strcmp(bulk[i].id, n))
> -			return bulk[i].clk;
> -	}
> -
> -
> -	return NULL;
> -}
> -
> -struct clk *msm_clk_get(struct platform_device *pdev, const char *name)
> -{
> -	struct clk *clk;
> -	char name2[32];
> -
> -	clk = devm_clk_get(&pdev->dev, name);
> -	if (!IS_ERR(clk) || PTR_ERR(clk) == -EPROBE_DEFER)
> -		return clk;
> -
> -	snprintf(name2, sizeof(name2), "%s_clk", name);
> -
> -	clk = devm_clk_get(&pdev->dev, name2);
> -	if (!IS_ERR(clk))
> -		dev_warn(&pdev->dev, "Using legacy clk name binding.  Use "
> -				"\"%s\" instead of \"%s\"\n", name, name2);
> -
> -	return clk;
> -}
> -
> -static void __iomem *_msm_ioremap(struct platform_device *pdev, const char *name,
> -				  bool quiet, phys_addr_t *psize)
> -{
> -	struct resource *res;
> -	unsigned long size;
> -	void __iomem *ptr;
> -
> -	if (name)
> -		res = platform_get_resource_byname(pdev, IORESOURCE_MEM, name);
> -	else
> -		res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -
> -	if (!res) {
> -		if (!quiet)
> -			DRM_DEV_ERROR(&pdev->dev, "failed to get memory resource: %s\n", name);
> -		return ERR_PTR(-EINVAL);
> -	}
> -
> -	size = resource_size(res);
> -
> -	ptr = devm_ioremap(&pdev->dev, res->start, size);
> -	if (!ptr) {
> -		if (!quiet)
> -			DRM_DEV_ERROR(&pdev->dev, "failed to ioremap: %s\n", name);
> -		return ERR_PTR(-ENOMEM);
> -	}
> -
> -	if (psize)
> -		*psize = size;
> -
> -	return ptr;
> -}
> -
> -void __iomem *msm_ioremap(struct platform_device *pdev, const char *name)
> -{
> -	return _msm_ioremap(pdev, name, false, NULL);
> -}
> -
> -void __iomem *msm_ioremap_quiet(struct platform_device *pdev, const char *name)
> -{
> -	return _msm_ioremap(pdev, name, true, NULL);
> -}
> -
> -void __iomem *msm_ioremap_size(struct platform_device *pdev, const char *name,
> -			  phys_addr_t *psize)
> -{
> -	return _msm_ioremap(pdev, name, false, psize);
> -}
> -
> -static enum hrtimer_restart msm_hrtimer_worktimer(struct hrtimer *t)
> -{
> -	struct msm_hrtimer_work *work = container_of(t,
> -			struct msm_hrtimer_work, timer);
> -
> -	kthread_queue_work(work->worker, &work->work);
> -
> -	return HRTIMER_NORESTART;
> -}
> -
> -void msm_hrtimer_queue_work(struct msm_hrtimer_work *work,
> -			    ktime_t wakeup_time,
> -			    enum hrtimer_mode mode)
> -{
> -	hrtimer_start(&work->timer, wakeup_time, mode);
> -}
> -
> -void msm_hrtimer_work_init(struct msm_hrtimer_work *work,
> -			   struct kthread_worker *worker,
> -			   kthread_work_func_t fn,
> -			   clockid_t clock_id,
> -			   enum hrtimer_mode mode)
> -{
> -	hrtimer_init(&work->timer, clock_id, mode);
> -	work->timer.function = msm_hrtimer_worktimer;
> -	work->worker = worker;
> -	kthread_init_work(&work->work, fn);
> -}
> -
>   static irqreturn_t msm_irq(int irq, void *arg)
>   {
>   	struct drm_device *dev = arg;
> diff --git a/drivers/gpu/drm/msm/msm_io_utils.c b/drivers/gpu/drm/msm/msm_io_utils.c
> new file mode 100644
> index 000000000000..7b504617833a
> --- /dev/null
> +++ b/drivers/gpu/drm/msm/msm_io_utils.c
> @@ -0,0 +1,126 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +/*
> + * Copyright (c) 2016-2018, 2020-2021 The Linux Foundation. All rights reserved.
> + * Copyright (C) 2013 Red Hat
> + * Author: Rob Clark <robdclark@gmail.com>
> + */
> +
> +#include "msm_drv.h"
> +
> +/*
> + * Util/helpers:
> + */
> +
> +struct clk *msm_clk_bulk_get_clock(struct clk_bulk_data *bulk, int count,
> +		const char *name)
> +{
> +	int i;
> +	char n[32];
> +
> +	snprintf(n, sizeof(n), "%s_clk", name);
> +
> +	for (i = 0; bulk && i < count; i++) {
> +		if (!strcmp(bulk[i].id, name) || !strcmp(bulk[i].id, n))
> +			return bulk[i].clk;
> +	}
> +
> +
> +	return NULL;
> +}
> +
> +struct clk *msm_clk_get(struct platform_device *pdev, const char *name)
> +{
> +	struct clk *clk;
> +	char name2[32];
> +
> +	clk = devm_clk_get(&pdev->dev, name);
> +	if (!IS_ERR(clk) || PTR_ERR(clk) == -EPROBE_DEFER)
> +		return clk;
> +
> +	snprintf(name2, sizeof(name2), "%s_clk", name);
> +
> +	clk = devm_clk_get(&pdev->dev, name2);
> +	if (!IS_ERR(clk))
> +		dev_warn(&pdev->dev, "Using legacy clk name binding.  Use "
> +				"\"%s\" instead of \"%s\"\n", name, name2);
> +
> +	return clk;
> +}
> +
> +static void __iomem *_msm_ioremap(struct platform_device *pdev, const char *name,
> +				  bool quiet, phys_addr_t *psize)
> +{
> +	struct resource *res;
> +	unsigned long size;
> +	void __iomem *ptr;
> +
> +	if (name)
> +		res = platform_get_resource_byname(pdev, IORESOURCE_MEM, name);
> +	else
> +		res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> +
> +	if (!res) {
> +		if (!quiet)
> +			DRM_DEV_ERROR(&pdev->dev, "failed to get memory resource: %s\n", name);
> +		return ERR_PTR(-EINVAL);
> +	}
> +
> +	size = resource_size(res);
> +
> +	ptr = devm_ioremap(&pdev->dev, res->start, size);
> +	if (!ptr) {
> +		if (!quiet)
> +			DRM_DEV_ERROR(&pdev->dev, "failed to ioremap: %s\n", name);
> +		return ERR_PTR(-ENOMEM);
> +	}
> +
> +	if (psize)
> +		*psize = size;
> +
> +	return ptr;
> +}
> +
> +void __iomem *msm_ioremap(struct platform_device *pdev, const char *name)
> +{
> +	return _msm_ioremap(pdev, name, false, NULL);
> +}
> +
> +void __iomem *msm_ioremap_quiet(struct platform_device *pdev, const char *name)
> +{
> +	return _msm_ioremap(pdev, name, true, NULL);
> +}
> +
> +void __iomem *msm_ioremap_size(struct platform_device *pdev, const char *name,
> +			  phys_addr_t *psize)
> +{
> +	return _msm_ioremap(pdev, name, false, psize);
> +}
> +
> +static enum hrtimer_restart msm_hrtimer_worktimer(struct hrtimer *t)
> +{
> +	struct msm_hrtimer_work *work = container_of(t,
> +			struct msm_hrtimer_work, timer);
> +
> +	kthread_queue_work(work->worker, &work->work);
> +
> +	return HRTIMER_NORESTART;
> +}
> +
> +void msm_hrtimer_queue_work(struct msm_hrtimer_work *work,
> +			    ktime_t wakeup_time,
> +			    enum hrtimer_mode mode)
> +{
> +	hrtimer_start(&work->timer, wakeup_time, mode);
> +}
> +
> +void msm_hrtimer_work_init(struct msm_hrtimer_work *work,
> +			   struct kthread_worker *worker,
> +			   kthread_work_func_t fn,
> +			   clockid_t clock_id,
> +			   enum hrtimer_mode mode)
> +{
> +	hrtimer_init(&work->timer, clock_id, mode);
> +	work->timer.function = msm_hrtimer_worktimer;
> +	work->worker = worker;
> +	kthread_init_work(&work->work, fn);
> +}
> -- 
> 2.34.1
> 

WARNING: multiple messages have this Message-ID (diff)
From: Jessica Zhang <quic_jesszhan@quicinc.com>
To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	Rob Clark <robdclark@gmail.com>, Sean Paul <sean@poorly.run>,
	Abhinav Kumar <quic_abhinavk@quicinc.com>
Cc: David Airlie <airlied@linux.ie>,
	linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org,
	Stephen Boyd <swboyd@chromium.org>,
	freedreno@lists.freedesktop.org
Subject: Re: [Freedreno] [PATCH v3 1/3] drm/msm: move utility functions from msm_drv.c
Date: Wed, 19 Jan 2022 18:17:31 -0800	[thread overview]
Message-ID: <cc54a962-253b-c764-8439-60ba08159e9a@quicinc.com> (raw)
In-Reply-To: <20220119221616.3089119-2-dmitry.baryshkov@linaro.org>



On 1/19/2022 2:16 PM, Dmitry Baryshkov wrote:
> Move clock/IO/hrtimer utility functions from msm_drv.c to new
> msm_io_utils.c file.
> 
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>

Tested on: Qualcomm RB3 (debian, sdm845), Qualcomm RB5 (debian, qrb5165)

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

> ---
>   drivers/gpu/drm/msm/Makefile       |   1 +
>   drivers/gpu/drm/msm/msm_drv.c      | 118 ---------------------------
>   drivers/gpu/drm/msm/msm_io_utils.c | 126 +++++++++++++++++++++++++++++
>   3 files changed, 127 insertions(+), 118 deletions(-)
>   create mode 100644 drivers/gpu/drm/msm/msm_io_utils.c
> 
> diff --git a/drivers/gpu/drm/msm/Makefile b/drivers/gpu/drm/msm/Makefile
> index 03ab55c37beb..5b6e37477079 100644
> --- a/drivers/gpu/drm/msm/Makefile
> +++ b/drivers/gpu/drm/msm/Makefile
> @@ -87,6 +87,7 @@ msm-y := \
>   	msm_gem_vma.o \
>   	msm_gpu.o \
>   	msm_gpu_devfreq.o \
> +	msm_io_utils.o \
>   	msm_iommu.o \
>   	msm_perf.o \
>   	msm_rd.o \
> diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> index fd62a4da14a1..30c44c395a24 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -75,124 +75,6 @@ static bool modeset = true;
>   MODULE_PARM_DESC(modeset, "Use kernel modesetting [KMS] (1=on (default), 0=disable)");
>   module_param(modeset, bool, 0600);
>   
> -/*
> - * Util/helpers:
> - */
> -
> -struct clk *msm_clk_bulk_get_clock(struct clk_bulk_data *bulk, int count,
> -		const char *name)
> -{
> -	int i;
> -	char n[32];
> -
> -	snprintf(n, sizeof(n), "%s_clk", name);
> -
> -	for (i = 0; bulk && i < count; i++) {
> -		if (!strcmp(bulk[i].id, name) || !strcmp(bulk[i].id, n))
> -			return bulk[i].clk;
> -	}
> -
> -
> -	return NULL;
> -}
> -
> -struct clk *msm_clk_get(struct platform_device *pdev, const char *name)
> -{
> -	struct clk *clk;
> -	char name2[32];
> -
> -	clk = devm_clk_get(&pdev->dev, name);
> -	if (!IS_ERR(clk) || PTR_ERR(clk) == -EPROBE_DEFER)
> -		return clk;
> -
> -	snprintf(name2, sizeof(name2), "%s_clk", name);
> -
> -	clk = devm_clk_get(&pdev->dev, name2);
> -	if (!IS_ERR(clk))
> -		dev_warn(&pdev->dev, "Using legacy clk name binding.  Use "
> -				"\"%s\" instead of \"%s\"\n", name, name2);
> -
> -	return clk;
> -}
> -
> -static void __iomem *_msm_ioremap(struct platform_device *pdev, const char *name,
> -				  bool quiet, phys_addr_t *psize)
> -{
> -	struct resource *res;
> -	unsigned long size;
> -	void __iomem *ptr;
> -
> -	if (name)
> -		res = platform_get_resource_byname(pdev, IORESOURCE_MEM, name);
> -	else
> -		res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -
> -	if (!res) {
> -		if (!quiet)
> -			DRM_DEV_ERROR(&pdev->dev, "failed to get memory resource: %s\n", name);
> -		return ERR_PTR(-EINVAL);
> -	}
> -
> -	size = resource_size(res);
> -
> -	ptr = devm_ioremap(&pdev->dev, res->start, size);
> -	if (!ptr) {
> -		if (!quiet)
> -			DRM_DEV_ERROR(&pdev->dev, "failed to ioremap: %s\n", name);
> -		return ERR_PTR(-ENOMEM);
> -	}
> -
> -	if (psize)
> -		*psize = size;
> -
> -	return ptr;
> -}
> -
> -void __iomem *msm_ioremap(struct platform_device *pdev, const char *name)
> -{
> -	return _msm_ioremap(pdev, name, false, NULL);
> -}
> -
> -void __iomem *msm_ioremap_quiet(struct platform_device *pdev, const char *name)
> -{
> -	return _msm_ioremap(pdev, name, true, NULL);
> -}
> -
> -void __iomem *msm_ioremap_size(struct platform_device *pdev, const char *name,
> -			  phys_addr_t *psize)
> -{
> -	return _msm_ioremap(pdev, name, false, psize);
> -}
> -
> -static enum hrtimer_restart msm_hrtimer_worktimer(struct hrtimer *t)
> -{
> -	struct msm_hrtimer_work *work = container_of(t,
> -			struct msm_hrtimer_work, timer);
> -
> -	kthread_queue_work(work->worker, &work->work);
> -
> -	return HRTIMER_NORESTART;
> -}
> -
> -void msm_hrtimer_queue_work(struct msm_hrtimer_work *work,
> -			    ktime_t wakeup_time,
> -			    enum hrtimer_mode mode)
> -{
> -	hrtimer_start(&work->timer, wakeup_time, mode);
> -}
> -
> -void msm_hrtimer_work_init(struct msm_hrtimer_work *work,
> -			   struct kthread_worker *worker,
> -			   kthread_work_func_t fn,
> -			   clockid_t clock_id,
> -			   enum hrtimer_mode mode)
> -{
> -	hrtimer_init(&work->timer, clock_id, mode);
> -	work->timer.function = msm_hrtimer_worktimer;
> -	work->worker = worker;
> -	kthread_init_work(&work->work, fn);
> -}
> -
>   static irqreturn_t msm_irq(int irq, void *arg)
>   {
>   	struct drm_device *dev = arg;
> diff --git a/drivers/gpu/drm/msm/msm_io_utils.c b/drivers/gpu/drm/msm/msm_io_utils.c
> new file mode 100644
> index 000000000000..7b504617833a
> --- /dev/null
> +++ b/drivers/gpu/drm/msm/msm_io_utils.c
> @@ -0,0 +1,126 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +/*
> + * Copyright (c) 2016-2018, 2020-2021 The Linux Foundation. All rights reserved.
> + * Copyright (C) 2013 Red Hat
> + * Author: Rob Clark <robdclark@gmail.com>
> + */
> +
> +#include "msm_drv.h"
> +
> +/*
> + * Util/helpers:
> + */
> +
> +struct clk *msm_clk_bulk_get_clock(struct clk_bulk_data *bulk, int count,
> +		const char *name)
> +{
> +	int i;
> +	char n[32];
> +
> +	snprintf(n, sizeof(n), "%s_clk", name);
> +
> +	for (i = 0; bulk && i < count; i++) {
> +		if (!strcmp(bulk[i].id, name) || !strcmp(bulk[i].id, n))
> +			return bulk[i].clk;
> +	}
> +
> +
> +	return NULL;
> +}
> +
> +struct clk *msm_clk_get(struct platform_device *pdev, const char *name)
> +{
> +	struct clk *clk;
> +	char name2[32];
> +
> +	clk = devm_clk_get(&pdev->dev, name);
> +	if (!IS_ERR(clk) || PTR_ERR(clk) == -EPROBE_DEFER)
> +		return clk;
> +
> +	snprintf(name2, sizeof(name2), "%s_clk", name);
> +
> +	clk = devm_clk_get(&pdev->dev, name2);
> +	if (!IS_ERR(clk))
> +		dev_warn(&pdev->dev, "Using legacy clk name binding.  Use "
> +				"\"%s\" instead of \"%s\"\n", name, name2);
> +
> +	return clk;
> +}
> +
> +static void __iomem *_msm_ioremap(struct platform_device *pdev, const char *name,
> +				  bool quiet, phys_addr_t *psize)
> +{
> +	struct resource *res;
> +	unsigned long size;
> +	void __iomem *ptr;
> +
> +	if (name)
> +		res = platform_get_resource_byname(pdev, IORESOURCE_MEM, name);
> +	else
> +		res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> +
> +	if (!res) {
> +		if (!quiet)
> +			DRM_DEV_ERROR(&pdev->dev, "failed to get memory resource: %s\n", name);
> +		return ERR_PTR(-EINVAL);
> +	}
> +
> +	size = resource_size(res);
> +
> +	ptr = devm_ioremap(&pdev->dev, res->start, size);
> +	if (!ptr) {
> +		if (!quiet)
> +			DRM_DEV_ERROR(&pdev->dev, "failed to ioremap: %s\n", name);
> +		return ERR_PTR(-ENOMEM);
> +	}
> +
> +	if (psize)
> +		*psize = size;
> +
> +	return ptr;
> +}
> +
> +void __iomem *msm_ioremap(struct platform_device *pdev, const char *name)
> +{
> +	return _msm_ioremap(pdev, name, false, NULL);
> +}
> +
> +void __iomem *msm_ioremap_quiet(struct platform_device *pdev, const char *name)
> +{
> +	return _msm_ioremap(pdev, name, true, NULL);
> +}
> +
> +void __iomem *msm_ioremap_size(struct platform_device *pdev, const char *name,
> +			  phys_addr_t *psize)
> +{
> +	return _msm_ioremap(pdev, name, false, psize);
> +}
> +
> +static enum hrtimer_restart msm_hrtimer_worktimer(struct hrtimer *t)
> +{
> +	struct msm_hrtimer_work *work = container_of(t,
> +			struct msm_hrtimer_work, timer);
> +
> +	kthread_queue_work(work->worker, &work->work);
> +
> +	return HRTIMER_NORESTART;
> +}
> +
> +void msm_hrtimer_queue_work(struct msm_hrtimer_work *work,
> +			    ktime_t wakeup_time,
> +			    enum hrtimer_mode mode)
> +{
> +	hrtimer_start(&work->timer, wakeup_time, mode);
> +}
> +
> +void msm_hrtimer_work_init(struct msm_hrtimer_work *work,
> +			   struct kthread_worker *worker,
> +			   kthread_work_func_t fn,
> +			   clockid_t clock_id,
> +			   enum hrtimer_mode mode)
> +{
> +	hrtimer_init(&work->timer, clock_id, mode);
> +	work->timer.function = msm_hrtimer_worktimer;
> +	work->worker = worker;
> +	kthread_init_work(&work->work, fn);
> +}
> -- 
> 2.34.1
> 

  reply	other threads:[~2022-01-20  2:17 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-19 22:16 [PATCH v3 0/3] drm/msm: rework clock handling Dmitry Baryshkov
2022-01-19 22:16 ` Dmitry Baryshkov
2022-01-19 22:16 ` [PATCH v3 1/3] drm/msm: move utility functions from msm_drv.c Dmitry Baryshkov
2022-01-19 22:16   ` Dmitry Baryshkov
2022-01-20  2:17   ` Jessica Zhang [this message]
2022-01-20  2:17     ` [Freedreno] " Jessica Zhang
2022-01-19 22:16 ` [PATCH v3 2/3] drm/msm/dpu: simplify clocks handling Dmitry Baryshkov
2022-01-19 22:16   ` Dmitry Baryshkov
2022-01-20  2:20   ` Jessica Zhang
2022-01-20  2:20     ` Jessica Zhang
2022-01-21  4:30   ` Stephen Boyd
2022-01-21  4:30     ` Stephen Boyd
2022-01-21  7:37     ` Dmitry Baryshkov
2022-01-21  7:37       ` Dmitry Baryshkov
2022-01-21 20:44       ` Stephen Boyd
2022-01-21 20:44         ` Stephen Boyd
2022-01-24 11:15         ` Dmitry Baryshkov
2022-01-24 11:15           ` Dmitry Baryshkov
2022-01-19 22:16 ` [PATCH v3 3/3] drm/msm/dp: rewrite dss_module_power to use bulk clock functions Dmitry Baryshkov
2022-01-19 22:16   ` Dmitry Baryshkov

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=cc54a962-253b-c764-8439-60ba08159e9a@quicinc.com \
    --to=quic_jesszhan@quicinc.com \
    --cc=airlied@linux.ie \
    --cc=bjorn.andersson@linaro.org \
    --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=quic_abhinavk@quicinc.com \
    --cc=robdclark@gmail.com \
    --cc=sean@poorly.run \
    --cc=swboyd@chromium.org \
    /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.