diff mbox

[v2,4/6] drm/rockchip: A couple small fixes to psr

Message ID 1471396276-8222-5-git-send-email-seanpaul@chromium.org (mailing list archive)
State New, archived
Headers show

Commit Message

Sean Paul Aug. 17, 2016, 1:11 a.m. UTC
A few things that need tidying up, no functional changes.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
---

Changes in v2:
	- Introduced

 drivers/gpu/drm/rockchip/rockchip_drm_psr.c | 19 +++++++------------
 1 file changed, 7 insertions(+), 12 deletions(-)

Comments

Yakir Yang Aug. 17, 2016, 2:34 a.m. UTC | #1
On 08/17/2016 09:11 AM, Sean Paul wrote:
> A few things that need tidying up, no functional changes.
>
> Signed-off-by: Sean Paul <seanpaul@chromium.org>
Reviewed-by: Yakir Yang <ykk@rock-chips.com>
> ---
>
> Changes in v2:
> 	- Introduced
>
>   drivers/gpu/drm/rockchip/rockchip_drm_psr.c | 19 +++++++------------
>   1 file changed, 7 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_psr.c b/drivers/gpu/drm/rockchip/rockchip_drm_psr.c
> index 5bd54f2..c6ac5d0 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_psr.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_psr.c
> @@ -62,27 +62,25 @@ static void psr_set_state_locked(struct psr_drv *psr, enum psr_state state)
>   	 * Allowed finite state machine:
>   	 *
>   	 *   PSR_ENABLE  < = = = = = >  PSR_FLUSH
> -	  *      | ^                        |
> -	  *      | |                        |
> -	  *      v |                        |
> +	 *       | ^                        |
> +	 *       | |                        |
> +	 *       v |                        |
>   	 *   PSR_DISABLE < - - - - - - - - -
>   	 */
> -
> -	/* Forbid no state change */
>   	if (state == psr->state)
>   		return;
>   
> -	/* Forbid DISABLE change to FLUSH */
> +	/* Requesting a flush when disabled is a noop */
>   	if (state == PSR_FLUSH && psr->state == PSR_DISABLE)
>   		return;
>   
>   	psr->state = state;
>   
> -	/* Allow but no need hardware change, just need assign the state */
> +	/* Already disabled in flush, change the state, but not the hardware */
>   	if (state == PSR_DISABLE && psr->state == PSR_FLUSH)
>   		return;
>   
> -	/* Refact to hardware state change */
> +	/* Actually commit the state change to hardware */
>   	switch (psr->state) {
>   	case PSR_ENABLE:
>   		psr->set(psr->encoder, true);
> @@ -109,10 +107,7 @@ static void psr_flush_handler(unsigned long data)
>   	struct psr_drv *psr = (struct psr_drv *)data;
>   	unsigned long flags;
>   
> -	if (!psr)
> -		return;
> -
> -	/* State changed between flush time, then keep it */
> +	/* If the state has changed since we initiated the flush, do nothing */
>   	spin_lock_irqsave(&psr->lock, flags);
>   	if (psr->state == PSR_FLUSH)
>   		psr_set_state_locked(psr, PSR_ENABLE);
diff mbox

Patch

diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_psr.c b/drivers/gpu/drm/rockchip/rockchip_drm_psr.c
index 5bd54f2..c6ac5d0 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_psr.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_psr.c
@@ -62,27 +62,25 @@  static void psr_set_state_locked(struct psr_drv *psr, enum psr_state state)
 	 * Allowed finite state machine:
 	 *
 	 *   PSR_ENABLE  < = = = = = >  PSR_FLUSH
-	  *      | ^                        |
-	  *      | |                        |
-	  *      v |                        |
+	 *       | ^                        |
+	 *       | |                        |
+	 *       v |                        |
 	 *   PSR_DISABLE < - - - - - - - - -
 	 */
-
-	/* Forbid no state change */
 	if (state == psr->state)
 		return;
 
-	/* Forbid DISABLE change to FLUSH */
+	/* Requesting a flush when disabled is a noop */
 	if (state == PSR_FLUSH && psr->state == PSR_DISABLE)
 		return;
 
 	psr->state = state;
 
-	/* Allow but no need hardware change, just need assign the state */
+	/* Already disabled in flush, change the state, but not the hardware */
 	if (state == PSR_DISABLE && psr->state == PSR_FLUSH)
 		return;
 
-	/* Refact to hardware state change */
+	/* Actually commit the state change to hardware */
 	switch (psr->state) {
 	case PSR_ENABLE:
 		psr->set(psr->encoder, true);
@@ -109,10 +107,7 @@  static void psr_flush_handler(unsigned long data)
 	struct psr_drv *psr = (struct psr_drv *)data;
 	unsigned long flags;
 
-	if (!psr)
-		return;
-
-	/* State changed between flush time, then keep it */
+	/* If the state has changed since we initiated the flush, do nothing */
 	spin_lock_irqsave(&psr->lock, flags);
 	if (psr->state == PSR_FLUSH)
 		psr_set_state_locked(psr, PSR_ENABLE);