linux-mediatek.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] pwm_mtk_disp suspend resume issue fix
@ 2019-12-16  7:01 Jitao Shi
  2019-12-16  7:01 ` [PATCH v2 1/2] pwm: fine tune pwm-mtk-disp clock control flow Jitao Shi
  2019-12-16  7:01 ` [PATCH v2 2/2] pwm/mtk_disp: move the reg enable trigger in config Jitao Shi
  0 siblings, 2 replies; 6+ messages in thread
From: Jitao Shi @ 2019-12-16  7:01 UTC (permalink / raw)
  To: Thierry Reding, Uwe Kleine-Koenig, Matthias Brugger, linux-pwm,
	linux-arm-kernel, CK Hu
  Cc: Jitao Shi, sj.huang, linux-mediatek, linux-kernel

Changes since to v1:
 - Edit commit msg.
 - Remove the register trigger in probe.
 - Rebase to v5.5-rc1.

Changes in patches:
 - match pwm_mtk_disp clock when suspend/resume
 - trigger pwm_mtk_disp reg working after config

Jitao Shi (2):
  pwm: fine tune pwm-mtk-disp clock control flow
  pwm/mtk_disp: move the reg enable trigger in config

 drivers/pwm/pwm-mtk-disp.c | 63 ++++++++++++--------------------------
 1 file changed, 19 insertions(+), 44 deletions(-)

-- 
2.21.0
_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek

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

* [PATCH v2 1/2] pwm: fine tune pwm-mtk-disp clock control flow
  2019-12-16  7:01 [PATCH v2 0/2] pwm_mtk_disp suspend resume issue fix Jitao Shi
@ 2019-12-16  7:01 ` Jitao Shi
  2019-12-16  8:18   ` Uwe Kleine-König
  2019-12-16  7:01 ` [PATCH v2 2/2] pwm/mtk_disp: move the reg enable trigger in config Jitao Shi
  1 sibling, 1 reply; 6+ messages in thread
From: Jitao Shi @ 2019-12-16  7:01 UTC (permalink / raw)
  To: Thierry Reding, Uwe Kleine-Koenig, Matthias Brugger, linux-pwm,
	linux-arm-kernel, CK Hu
  Cc: Jitao Shi, sj.huang, linux-mediatek, linux-kernel

Match pwm clock when suspend and resume.
Prepare and enable disp_pwm clock when disp_pwm enable.
Disable and unprepare disp_pwm clock when disp_pwm disable.

Signed-off-by: Jitao Shi <jitao.shi@mediatek.com>
---
 drivers/pwm/pwm-mtk-disp.c | 43 +++++++++++---------------------------
 1 file changed, 12 insertions(+), 31 deletions(-)

diff --git a/drivers/pwm/pwm-mtk-disp.c b/drivers/pwm/pwm-mtk-disp.c
index 83b8be0209b7..c7b14acc9316 100644
--- a/drivers/pwm/pwm-mtk-disp.c
+++ b/drivers/pwm/pwm-mtk-disp.c
@@ -98,13 +98,13 @@ static int mtk_disp_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,
 	high_width = div64_u64(rate * duty_ns, div);
 	value = period | (high_width << PWM_HIGH_WIDTH_SHIFT);
 
-	err = clk_enable(mdp->clk_main);
+	err = clk_prepare_enable(mdp->clk_main);
 	if (err < 0)
 		return err;
 
-	err = clk_enable(mdp->clk_mm);
+	err = clk_prepare_enable(mdp->clk_mm);
 	if (err < 0) {
-		clk_disable(mdp->clk_main);
+		clk_disable_unprepare(mdp->clk_main);
 		return err;
 	}
 
@@ -124,8 +124,8 @@ static int mtk_disp_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,
 					 0x0);
 	}
 
-	clk_disable(mdp->clk_mm);
-	clk_disable(mdp->clk_main);
+	clk_disable_unprepare(mdp->clk_mm);
+	clk_disable_unprepare(mdp->clk_main);
 
 	return 0;
 }
@@ -135,13 +135,13 @@ static int mtk_disp_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm)
 	struct mtk_disp_pwm *mdp = to_mtk_disp_pwm(chip);
 	int err;
 
-	err = clk_enable(mdp->clk_main);
+	err = clk_prepare_enable(mdp->clk_main);
 	if (err < 0)
 		return err;
 
-	err = clk_enable(mdp->clk_mm);
+	err = clk_prepare_enable(mdp->clk_mm);
 	if (err < 0) {
-		clk_disable(mdp->clk_main);
+		clk_disable_unprepare(mdp->clk_main);
 		return err;
 	}
 
@@ -158,8 +158,8 @@ static void mtk_disp_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
 	mtk_disp_pwm_update_bits(mdp, DISP_PWM_EN, mdp->data->enable_mask,
 				 0x0);
 
-	clk_disable(mdp->clk_mm);
-	clk_disable(mdp->clk_main);
+	clk_disable_unprepare(mdp->clk_mm);
+	clk_disable_unprepare(mdp->clk_main);
 }
 
 static const struct pwm_ops mtk_disp_pwm_ops = {
@@ -194,14 +194,6 @@ static int mtk_disp_pwm_probe(struct platform_device *pdev)
 	if (IS_ERR(mdp->clk_mm))
 		return PTR_ERR(mdp->clk_mm);
 
-	ret = clk_prepare(mdp->clk_main);
-	if (ret < 0)
-		return ret;
-
-	ret = clk_prepare(mdp->clk_mm);
-	if (ret < 0)
-		goto disable_clk_main;
-
 	mdp->chip.dev = &pdev->dev;
 	mdp->chip.ops = &mtk_disp_pwm_ops;
 	mdp->chip.base = -1;
@@ -210,7 +202,7 @@ static int mtk_disp_pwm_probe(struct platform_device *pdev)
 	ret = pwmchip_add(&mdp->chip);
 	if (ret < 0) {
 		dev_err(&pdev->dev, "pwmchip_add() failed: %d\n", ret);
-		goto disable_clk_mm;
+		return ret;
 	}
 
 	platform_set_drvdata(pdev, mdp);
@@ -229,24 +221,13 @@ static int mtk_disp_pwm_probe(struct platform_device *pdev)
 	}
 
 	return 0;
-
-disable_clk_mm:
-	clk_unprepare(mdp->clk_mm);
-disable_clk_main:
-	clk_unprepare(mdp->clk_main);
-	return ret;
 }
 
 static int mtk_disp_pwm_remove(struct platform_device *pdev)
 {
 	struct mtk_disp_pwm *mdp = platform_get_drvdata(pdev);
-	int ret;
-
-	ret = pwmchip_remove(&mdp->chip);
-	clk_unprepare(mdp->clk_mm);
-	clk_unprepare(mdp->clk_main);
 
-	return ret;
+	return pwmchip_remove(&mdp->chip);
 }
 
 static const struct mtk_pwm_data mt2701_pwm_data = {
-- 
2.21.0
_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek

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

* [PATCH v2 2/2] pwm/mtk_disp: move the reg enable trigger in config
  2019-12-16  7:01 [PATCH v2 0/2] pwm_mtk_disp suspend resume issue fix Jitao Shi
  2019-12-16  7:01 ` [PATCH v2 1/2] pwm: fine tune pwm-mtk-disp clock control flow Jitao Shi
@ 2019-12-16  7:01 ` Jitao Shi
  2019-12-16  8:20   ` Uwe Kleine-König
  1 sibling, 1 reply; 6+ messages in thread
From: Jitao Shi @ 2019-12-16  7:01 UTC (permalink / raw)
  To: Thierry Reding, Uwe Kleine-Koenig, Matthias Brugger, linux-pwm,
	linux-arm-kernel, CK Hu
  Cc: Jitao Shi, sj.huang, linux-mediatek, linux-kernel

Remove the regist enable trigger setting in probe.
Move the trigger to mtk_disp_pwm_config().

Signed-off-by: Jitao Shi <jitao.shi@mediatek.com>
---
 drivers/pwm/pwm-mtk-disp.c | 20 +++++++-------------
 1 file changed, 7 insertions(+), 13 deletions(-)

diff --git a/drivers/pwm/pwm-mtk-disp.c b/drivers/pwm/pwm-mtk-disp.c
index c7b14acc9316..c1aae5b5693b 100644
--- a/drivers/pwm/pwm-mtk-disp.c
+++ b/drivers/pwm/pwm-mtk-disp.c
@@ -122,6 +122,13 @@ static int mtk_disp_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,
 		mtk_disp_pwm_update_bits(mdp, mdp->data->commit,
 					 mdp->data->commit_mask,
 					 0x0);
+	} else {
+		mtk_disp_pwm_update_bits(mdp, mdp->data->bls_debug,
+					 mdp->data->bls_debug_mask,
+					 mdp->data->bls_debug_mask);
+		mtk_disp_pwm_update_bits(mdp, mdp->data->con0,
+					 mdp->data->con0_sel,
+					 mdp->data->con0_sel);
 	}
 
 	clk_disable_unprepare(mdp->clk_mm);
@@ -207,19 +214,6 @@ static int mtk_disp_pwm_probe(struct platform_device *pdev)
 
 	platform_set_drvdata(pdev, mdp);
 
-	/*
-	 * For MT2701, disable double buffer before writing register
-	 * and select manual mode and use PWM_PERIOD/PWM_HIGH_WIDTH.
-	 */
-	if (!mdp->data->has_commit) {
-		mtk_disp_pwm_update_bits(mdp, mdp->data->bls_debug,
-					 mdp->data->bls_debug_mask,
-					 mdp->data->bls_debug_mask);
-		mtk_disp_pwm_update_bits(mdp, mdp->data->con0,
-					 mdp->data->con0_sel,
-					 mdp->data->con0_sel);
-	}
-
 	return 0;
 }
 
-- 
2.21.0
_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek

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

* Re: [PATCH v2 1/2] pwm: fine tune pwm-mtk-disp clock control flow
  2019-12-16  7:01 ` [PATCH v2 1/2] pwm: fine tune pwm-mtk-disp clock control flow Jitao Shi
@ 2019-12-16  8:18   ` Uwe Kleine-König
  2019-12-17  2:42     ` Jitao Shi
  0 siblings, 1 reply; 6+ messages in thread
From: Uwe Kleine-König @ 2019-12-16  8:18 UTC (permalink / raw)
  To: Jitao Shi
  Cc: linux-pwm, linux-kernel, CK Hu, sj.huang, Thierry Reding,
	linux-mediatek, Matthias Brugger, linux-arm-kernel

Hello,

On Mon, Dec 16, 2019 at 03:01:22PM +0800, Jitao Shi wrote:
> Match pwm clock when suspend and resume.
> Prepare and enable disp_pwm clock when disp_pwm enable.
> Disable and unprepare disp_pwm clock when disp_pwm disable.

Assuming you catched all clock operations (I didn't check), the patch
looks fine. The commit log could however be improved. Additional to
describing what the patch does, some words about the motivation would be
good. Does this fix a bug? Is it to save some power while the PWM isn't
in use?

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | https://www.pengutronix.de/ |

_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek

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

* Re: [PATCH v2 2/2] pwm/mtk_disp: move the reg enable trigger in config
  2019-12-16  7:01 ` [PATCH v2 2/2] pwm/mtk_disp: move the reg enable trigger in config Jitao Shi
@ 2019-12-16  8:20   ` Uwe Kleine-König
  0 siblings, 0 replies; 6+ messages in thread
From: Uwe Kleine-König @ 2019-12-16  8:20 UTC (permalink / raw)
  To: Jitao Shi
  Cc: linux-pwm, linux-kernel, CK Hu, sj.huang, Thierry Reding,
	linux-mediatek, Matthias Brugger, linux-arm-kernel

On Mon, Dec 16, 2019 at 03:01:23PM +0800, Jitao Shi wrote:
> Remove the regist enable trigger setting in probe.
> Move the trigger to mtk_disp_pwm_config().

Same as in patch 1: You describe what is (somewhat) obvious when reading
the patch. But the motivation isn't clear.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | https://www.pengutronix.de/ |

_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek

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

* Re: [PATCH v2 1/2] pwm: fine tune pwm-mtk-disp clock control flow
  2019-12-16  8:18   ` Uwe Kleine-König
@ 2019-12-17  2:42     ` Jitao Shi
  0 siblings, 0 replies; 6+ messages in thread
From: Jitao Shi @ 2019-12-17  2:42 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: linux-pwm, linux-kernel, CK Hu, sj.huang, Thierry Reding,
	linux-mediatek, Matthias Brugger, linux-arm-kernel

On Mon, 2019-12-16 at 09:18 +0100, Uwe Kleine-König wrote:
> Hello,
> 
> On Mon, Dec 16, 2019 at 03:01:22PM +0800, Jitao Shi wrote:
> > Match pwm clock when suspend and resume.
> > Prepare and enable disp_pwm clock when disp_pwm enable.
> > Disable and unprepare disp_pwm clock when disp_pwm disable.
> 
> Assuming you catched all clock operations (I didn't check), the patch
> looks fine. The commit log could however be improved. Additional to
> describing what the patch does, some words about the motivation would be
> good. Does this fix a bug? Is it to save some power while the PWM isn't
> in use?
> 
> Best regards
> Uwe
> 

I'll update the commit msg next version.

Thanks for your review.

Best Regards
Jitao
_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek

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

end of thread, other threads:[~2019-12-17  2:42 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-16  7:01 [PATCH v2 0/2] pwm_mtk_disp suspend resume issue fix Jitao Shi
2019-12-16  7:01 ` [PATCH v2 1/2] pwm: fine tune pwm-mtk-disp clock control flow Jitao Shi
2019-12-16  8:18   ` Uwe Kleine-König
2019-12-17  2:42     ` Jitao Shi
2019-12-16  7:01 ` [PATCH v2 2/2] pwm/mtk_disp: move the reg enable trigger in config Jitao Shi
2019-12-16  8:20   ` Uwe Kleine-König

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).