linux-arm-msm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] drm/msm/mdp4: refactor HW revision detection into read_mdp_hw_revision
@ 2021-07-05 23:16 David Heidelberg
  2021-07-05 23:16 ` [PATCH 2/2] drm/msm/mdp4: move HW revision detection to earlier phase David Heidelberg
  2021-08-05  9:04 ` [PATCH 1/2] drm/msm/mdp4: refactor HW revision detection into read_mdp_hw_revision Dmitry Baryshkov
  0 siblings, 2 replies; 4+ messages in thread
From: David Heidelberg @ 2021-07-05 23:16 UTC (permalink / raw)
  To: Jonathan Marek, robdclark; +Cc: linux-arm-msm, David Heidelberg

Inspired by MDP5 code.
Also use DRM_DEV_INFO for MDP version as MDP5 does.

Cosmetic change: uint32_t -> u32 - checkpatch suggestion.

Signed-off-by: David Heidelberg <david@ixit.cz>
---
 drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 27 ++++++++++++++++--------
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c
index 4a5b518288b0..3a7a01d801aa 100644
--- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c
+++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c
@@ -19,20 +19,13 @@ static int mdp4_hw_init(struct msm_kms *kms)
 {
 	struct mdp4_kms *mdp4_kms = to_mdp4_kms(to_mdp_kms(kms));
 	struct drm_device *dev = mdp4_kms->dev;
-	uint32_t version, major, minor, dmap_cfg, vg_cfg;
+	u32 major, minor, dmap_cfg, vg_cfg;
 	unsigned long clk;
 	int ret = 0;
 
 	pm_runtime_get_sync(dev->dev);
 
-	mdp4_enable(mdp4_kms);
-	version = mdp4_read(mdp4_kms, REG_MDP4_VERSION);
-	mdp4_disable(mdp4_kms);
-
-	major = FIELD(version, MDP4_VERSION_MAJOR);
-	minor = FIELD(version, MDP4_VERSION_MINOR);
-
-	DBG("found MDP4 version v%d.%d", major, minor);
+	read_mdp_hw_revision(mdp4_kms, &major, &minor);
 
 	if (major != 4) {
 		DRM_DEV_ERROR(dev->dev, "unexpected MDP version: v%d.%d\n",
@@ -411,6 +404,22 @@ static int modeset_init(struct mdp4_kms *mdp4_kms)
 	return ret;
 }
 
+static void read_mdp_hw_revision(struct mdp4_kms *mdp4_kms,
+				 u32 *major, u32 *minor)
+{
+	struct drm_device *dev = mdp4_kms->dev;
+	u32 version;
+
+	mdp4_enable(mdp4_kms);
+	version = mdp4_read(mdp4_kms, REG_MDP4_VERSION);
+	mdp4_disable(mdp4_kms);
+
+	*major = FIELD(version, MDP4_VERSION_MAJOR);
+	*minor = FIELD(version, MDP4_VERSION_MINOR);
+
+	DRM_DEV_INFO(dev->dev, "MDP4 version v%d.%d", *major, *minor);
+}
+
 struct msm_kms *mdp4_kms_init(struct drm_device *dev)
 {
 	struct platform_device *pdev = to_platform_device(dev->dev);
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] drm/msm/mdp4: move HW revision detection to earlier phase
  2021-07-05 23:16 [PATCH 1/2] drm/msm/mdp4: refactor HW revision detection into read_mdp_hw_revision David Heidelberg
@ 2021-07-05 23:16 ` David Heidelberg
  2021-08-05  9:05   ` Dmitry Baryshkov
  2021-08-05  9:04 ` [PATCH 1/2] drm/msm/mdp4: refactor HW revision detection into read_mdp_hw_revision Dmitry Baryshkov
  1 sibling, 1 reply; 4+ messages in thread
From: David Heidelberg @ 2021-07-05 23:16 UTC (permalink / raw)
  To: Jonathan Marek, robdclark; +Cc: linux-arm-msm, David Heidelberg

Fixes if condition, which never worked inside mdp4_kms_init, since
HW detection has been done later in mdp4_hw_init.

Fixes: eb2b47bb9a03 ("drm/msm/mdp4: only use lut_clk on mdp4.2+")

Signed-off-by: David Heidelberg <david@ixit.cz>
---
 drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 45 ++++++++++++------------
 1 file changed, 22 insertions(+), 23 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c
index 3a7a01d801aa..0712752742f4 100644
--- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c
+++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c
@@ -19,23 +19,12 @@ static int mdp4_hw_init(struct msm_kms *kms)
 {
 	struct mdp4_kms *mdp4_kms = to_mdp4_kms(to_mdp_kms(kms));
 	struct drm_device *dev = mdp4_kms->dev;
-	u32 major, minor, dmap_cfg, vg_cfg;
+	u32 dmap_cfg, vg_cfg;
 	unsigned long clk;
 	int ret = 0;
 
 	pm_runtime_get_sync(dev->dev);
 
-	read_mdp_hw_revision(mdp4_kms, &major, &minor);
-
-	if (major != 4) {
-		DRM_DEV_ERROR(dev->dev, "unexpected MDP version: v%d.%d\n",
-				major, minor);
-		ret = -ENXIO;
-		goto out;
-	}
-
-	mdp4_kms->rev = minor;
-
 	if (mdp4_kms->rev > 1) {
 		mdp4_write(mdp4_kms, REG_MDP4_CS_CONTROLLER0, 0x0707ffff);
 		mdp4_write(mdp4_kms, REG_MDP4_CS_CONTROLLER1, 0x03073f3f);
@@ -81,7 +70,6 @@ static int mdp4_hw_init(struct msm_kms *kms)
 	if (mdp4_kms->rev > 1)
 		mdp4_write(mdp4_kms, REG_MDP4_RESET_STATUS, 1);
 
-out:
 	pm_runtime_put_sync(dev->dev);
 
 	return ret;
@@ -428,6 +416,7 @@ struct msm_kms *mdp4_kms_init(struct drm_device *dev)
 	struct msm_kms *kms = NULL;
 	struct msm_gem_address_space *aspace;
 	int irq, ret;
+	u32 major, minor;
 
 	mdp4_kms = kzalloc(sizeof(*mdp4_kms), GFP_KERNEL);
 	if (!mdp4_kms) {
@@ -488,15 +477,6 @@ struct msm_kms *mdp4_kms_init(struct drm_device *dev)
 	if (IS_ERR(mdp4_kms->pclk))
 		mdp4_kms->pclk = NULL;
 
-	if (mdp4_kms->rev >= 2) {
-		mdp4_kms->lut_clk = devm_clk_get(&pdev->dev, "lut_clk");
-		if (IS_ERR(mdp4_kms->lut_clk)) {
-			DRM_DEV_ERROR(dev->dev, "failed to get lut_clk\n");
-			ret = PTR_ERR(mdp4_kms->lut_clk);
-			goto fail;
-		}
-	}
-
 	mdp4_kms->axi_clk = devm_clk_get(&pdev->dev, "bus_clk");
 	if (IS_ERR(mdp4_kms->axi_clk)) {
 		DRM_DEV_ERROR(dev->dev, "failed to get axi_clk\n");
@@ -505,8 +485,27 @@ struct msm_kms *mdp4_kms_init(struct drm_device *dev)
 	}
 
 	clk_set_rate(mdp4_kms->clk, config->max_clk);
-	if (mdp4_kms->lut_clk)
+
+	read_mdp_hw_revision(mdp4_kms, &major, &minor);
+
+	if (major != 4) {
+		DRM_DEV_ERROR(dev->dev, "unexpected MDP version: v%d.%d\n",
+			      major, minor);
+		ret = -ENXIO;
+		goto fail;
+	}
+
+	mdp4_kms->rev = minor;
+
+	if (mdp4_kms->rev >= 2) {
+		mdp4_kms->lut_clk = devm_clk_get(&pdev->dev, "lut_clk");
+		if (IS_ERR(mdp4_kms->lut_clk)) {
+			DRM_DEV_ERROR(dev->dev, "failed to get lut_clk\n");
+			ret = PTR_ERR(mdp4_kms->lut_clk);
+			goto fail;
+		}
 		clk_set_rate(mdp4_kms->lut_clk, config->max_clk);
+	}
 
 	pm_runtime_enable(dev->dev);
 	mdp4_kms->rpm_enabled = true;
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/2] drm/msm/mdp4: refactor HW revision detection into read_mdp_hw_revision
  2021-07-05 23:16 [PATCH 1/2] drm/msm/mdp4: refactor HW revision detection into read_mdp_hw_revision David Heidelberg
  2021-07-05 23:16 ` [PATCH 2/2] drm/msm/mdp4: move HW revision detection to earlier phase David Heidelberg
@ 2021-08-05  9:04 ` Dmitry Baryshkov
  1 sibling, 0 replies; 4+ messages in thread
From: Dmitry Baryshkov @ 2021-08-05  9:04 UTC (permalink / raw)
  To: David Heidelberg, Jonathan Marek, robdclark; +Cc: linux-arm-msm

On 06/07/2021 02:16, David Heidelberg wrote:
> Inspired by MDP5 code.
> Also use DRM_DEV_INFO for MDP version as MDP5 does.
> 
> Cosmetic change: uint32_t -> u32 - checkpatch suggestion.
> 
> Signed-off-by: David Heidelberg <david@ixit.cz>

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>

> ---
>   drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 27 ++++++++++++++++--------
>   1 file changed, 18 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c
> index 4a5b518288b0..3a7a01d801aa 100644
> --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c
> +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c
> @@ -19,20 +19,13 @@ static int mdp4_hw_init(struct msm_kms *kms)
>   {
>   	struct mdp4_kms *mdp4_kms = to_mdp4_kms(to_mdp_kms(kms));
>   	struct drm_device *dev = mdp4_kms->dev;
> -	uint32_t version, major, minor, dmap_cfg, vg_cfg;
> +	u32 major, minor, dmap_cfg, vg_cfg;
>   	unsigned long clk;
>   	int ret = 0;
>   
>   	pm_runtime_get_sync(dev->dev);
>   
> -	mdp4_enable(mdp4_kms);
> -	version = mdp4_read(mdp4_kms, REG_MDP4_VERSION);
> -	mdp4_disable(mdp4_kms);
> -
> -	major = FIELD(version, MDP4_VERSION_MAJOR);
> -	minor = FIELD(version, MDP4_VERSION_MINOR);
> -
> -	DBG("found MDP4 version v%d.%d", major, minor);
> +	read_mdp_hw_revision(mdp4_kms, &major, &minor);
>   
>   	if (major != 4) {
>   		DRM_DEV_ERROR(dev->dev, "unexpected MDP version: v%d.%d\n",
> @@ -411,6 +404,22 @@ static int modeset_init(struct mdp4_kms *mdp4_kms)
>   	return ret;
>   }
>   
> +static void read_mdp_hw_revision(struct mdp4_kms *mdp4_kms,
> +				 u32 *major, u32 *minor)
> +{
> +	struct drm_device *dev = mdp4_kms->dev;
> +	u32 version;
> +
> +	mdp4_enable(mdp4_kms);
> +	version = mdp4_read(mdp4_kms, REG_MDP4_VERSION);
> +	mdp4_disable(mdp4_kms);
> +
> +	*major = FIELD(version, MDP4_VERSION_MAJOR);
> +	*minor = FIELD(version, MDP4_VERSION_MINOR);
> +
> +	DRM_DEV_INFO(dev->dev, "MDP4 version v%d.%d", *major, *minor);
> +}
> +
>   struct msm_kms *mdp4_kms_init(struct drm_device *dev)
>   {
>   	struct platform_device *pdev = to_platform_device(dev->dev);
> 


-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/2] drm/msm/mdp4: move HW revision detection to earlier phase
  2021-07-05 23:16 ` [PATCH 2/2] drm/msm/mdp4: move HW revision detection to earlier phase David Heidelberg
@ 2021-08-05  9:05   ` Dmitry Baryshkov
  0 siblings, 0 replies; 4+ messages in thread
From: Dmitry Baryshkov @ 2021-08-05  9:05 UTC (permalink / raw)
  To: David Heidelberg, Jonathan Marek, robdclark; +Cc: linux-arm-msm

On 06/07/2021 02:16, David Heidelberg wrote:
> Fixes if condition, which never worked inside mdp4_kms_init, since
> HW detection has been done later in mdp4_hw_init.
> 
> Fixes: eb2b47bb9a03 ("drm/msm/mdp4: only use lut_clk on mdp4.2+")
> 
> Signed-off-by: David Heidelberg <david@ixit.cz>

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>

> ---
>   drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 45 ++++++++++++------------
>   1 file changed, 22 insertions(+), 23 deletions(-)
> 
> diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c
> index 3a7a01d801aa..0712752742f4 100644
> --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c
> +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c
> @@ -19,23 +19,12 @@ static int mdp4_hw_init(struct msm_kms *kms)
>   {
>   	struct mdp4_kms *mdp4_kms = to_mdp4_kms(to_mdp_kms(kms));
>   	struct drm_device *dev = mdp4_kms->dev;
> -	u32 major, minor, dmap_cfg, vg_cfg;
> +	u32 dmap_cfg, vg_cfg;
>   	unsigned long clk;
>   	int ret = 0;
>   
>   	pm_runtime_get_sync(dev->dev);
>   
> -	read_mdp_hw_revision(mdp4_kms, &major, &minor);
> -
> -	if (major != 4) {
> -		DRM_DEV_ERROR(dev->dev, "unexpected MDP version: v%d.%d\n",
> -				major, minor);
> -		ret = -ENXIO;
> -		goto out;
> -	}
> -
> -	mdp4_kms->rev = minor;
> -
>   	if (mdp4_kms->rev > 1) {
>   		mdp4_write(mdp4_kms, REG_MDP4_CS_CONTROLLER0, 0x0707ffff);
>   		mdp4_write(mdp4_kms, REG_MDP4_CS_CONTROLLER1, 0x03073f3f);
> @@ -81,7 +70,6 @@ static int mdp4_hw_init(struct msm_kms *kms)
>   	if (mdp4_kms->rev > 1)
>   		mdp4_write(mdp4_kms, REG_MDP4_RESET_STATUS, 1);
>   
> -out:
>   	pm_runtime_put_sync(dev->dev);
>   
>   	return ret;
> @@ -428,6 +416,7 @@ struct msm_kms *mdp4_kms_init(struct drm_device *dev)
>   	struct msm_kms *kms = NULL;
>   	struct msm_gem_address_space *aspace;
>   	int irq, ret;
> +	u32 major, minor;
>   
>   	mdp4_kms = kzalloc(sizeof(*mdp4_kms), GFP_KERNEL);
>   	if (!mdp4_kms) {
> @@ -488,15 +477,6 @@ struct msm_kms *mdp4_kms_init(struct drm_device *dev)
>   	if (IS_ERR(mdp4_kms->pclk))
>   		mdp4_kms->pclk = NULL;
>   
> -	if (mdp4_kms->rev >= 2) {
> -		mdp4_kms->lut_clk = devm_clk_get(&pdev->dev, "lut_clk");
> -		if (IS_ERR(mdp4_kms->lut_clk)) {
> -			DRM_DEV_ERROR(dev->dev, "failed to get lut_clk\n");
> -			ret = PTR_ERR(mdp4_kms->lut_clk);
> -			goto fail;
> -		}
> -	}
> -
>   	mdp4_kms->axi_clk = devm_clk_get(&pdev->dev, "bus_clk");
>   	if (IS_ERR(mdp4_kms->axi_clk)) {
>   		DRM_DEV_ERROR(dev->dev, "failed to get axi_clk\n");
> @@ -505,8 +485,27 @@ struct msm_kms *mdp4_kms_init(struct drm_device *dev)
>   	}
>   
>   	clk_set_rate(mdp4_kms->clk, config->max_clk);
> -	if (mdp4_kms->lut_clk)
> +
> +	read_mdp_hw_revision(mdp4_kms, &major, &minor);
> +
> +	if (major != 4) {
> +		DRM_DEV_ERROR(dev->dev, "unexpected MDP version: v%d.%d\n",
> +			      major, minor);
> +		ret = -ENXIO;
> +		goto fail;
> +	}
> +
> +	mdp4_kms->rev = minor;
> +
> +	if (mdp4_kms->rev >= 2) {
> +		mdp4_kms->lut_clk = devm_clk_get(&pdev->dev, "lut_clk");
> +		if (IS_ERR(mdp4_kms->lut_clk)) {
> +			DRM_DEV_ERROR(dev->dev, "failed to get lut_clk\n");
> +			ret = PTR_ERR(mdp4_kms->lut_clk);
> +			goto fail;
> +		}
>   		clk_set_rate(mdp4_kms->lut_clk, config->max_clk);
> +	}
>   
>   	pm_runtime_enable(dev->dev);
>   	mdp4_kms->rpm_enabled = true;
> 


-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-08-05  9:05 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-05 23:16 [PATCH 1/2] drm/msm/mdp4: refactor HW revision detection into read_mdp_hw_revision David Heidelberg
2021-07-05 23:16 ` [PATCH 2/2] drm/msm/mdp4: move HW revision detection to earlier phase David Heidelberg
2021-08-05  9:05   ` Dmitry Baryshkov
2021-08-05  9:04 ` [PATCH 1/2] drm/msm/mdp4: refactor HW revision detection into read_mdp_hw_revision Dmitry Baryshkov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).