* [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 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.