All of lore.kernel.org
 help / color / mirror / Atom feed
From: denis@eukrea.com (Denis Carikli)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 2/2] video: imxfb: Fix lcd_ops .set_power and .get_power on/off inversion
Date: Mon, 23 Jun 2014 15:07:19 +0200	[thread overview]
Message-ID: <1403528839-31901-2-git-send-email-denis@eukrea.com> (raw)
In-Reply-To: <1403528839-31901-1-git-send-email-denis@eukrea.com>

.set_power takes the blank level as argument instead
of an on/off parameter:
fb_blank calls fb_notifier_call_chain with the blank
level encoded in its parameters, which is then sent
as-is to the set_power callback.

imxfb_lcd_set_power was expecting an on/off parameter
instead.
This resulted in the inversion of the on/off behaviour.

.get_power was also fixed in the same way.

Signed-off-by: Denis Carikli <denis@eukrea.com>
---
Changelog v1->v2:
- get_power which has the same issue, was also fixed as requested.
- The commit message was updated to reflect that.
---
 drivers/video/fbdev/imxfb.c |   27 +++++++++++++++++++--------
 1 file changed, 19 insertions(+), 8 deletions(-)

diff --git a/drivers/video/fbdev/imxfb.c b/drivers/video/fbdev/imxfb.c
index 121cbd7..f734757 100644
--- a/drivers/video/fbdev/imxfb.c
+++ b/drivers/video/fbdev/imxfb.c
@@ -758,21 +758,32 @@ static int imxfb_lcd_get_power(struct lcd_device *lcddev)
 {
 	struct imxfb_info *fbi = dev_get_drvdata(&lcddev->dev);
 
-	if (!IS_ERR(fbi->lcd_pwr))
-		return regulator_is_enabled(fbi->lcd_pwr);
+	if (!IS_ERR_OR_NULL(fbi->lcd_pwr))
+		if (!regulator_is_enabled(fbi->lcd_pwr))
+			return FB_BLANK_NORMAL;
 
-	return 1;
+	return FB_BLANK_UNBLANK;
 }
 
-static int imxfb_lcd_set_power(struct lcd_device *lcddev, int power)
+static int imxfb_lcd_set_power(struct lcd_device *lcddev, int blank)
 {
 	struct imxfb_info *fbi = dev_get_drvdata(&lcddev->dev);
 
 	if (!IS_ERR(fbi->lcd_pwr)) {
-		if (power && !regulator_is_enabled(fbi->lcd_pwr))
-			return regulator_enable(fbi->lcd_pwr);
-		else if (regulator_is_enabled(fbi->lcd_pwr))
-			return regulator_disable(fbi->lcd_pwr);
+		switch (blank) {
+		case FB_BLANK_VSYNC_SUSPEND:
+		case FB_BLANK_HSYNC_SUSPEND:
+		case FB_BLANK_NORMAL:
+		case FB_BLANK_POWERDOWN:
+			if (regulator_is_enabled(fbi->lcd_pwr))
+				return regulator_disable(fbi->lcd_pwr);
+			break;
+
+		case FB_BLANK_UNBLANK:
+			if (!regulator_is_enabled(fbi->lcd_pwr))
+				return regulator_enable(fbi->lcd_pwr);
+			break;
+		}
 	}
 
 	return 0;
-- 
1.7.9.5

  reply	other threads:[~2014-06-23 13:07 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-23 13:07 [PATCH v2 1/2] video: imxfb: Fix unbalanced regulators Denis Carikli
2014-06-23 13:07 ` Denis Carikli [this message]
2014-06-25  6:16   ` [PATCH v2 2/2] video: imxfb: Fix lcd_ops .set_power and .get_power on/off inversion Sascha Hauer
2014-06-25 12:57     ` Denis Carikli
2014-06-25  6:08 ` [PATCH v2 1/2] video: imxfb: Fix unbalanced regulators Sascha Hauer
2014-06-25  8:51   ` Denis Carikli
2014-06-25  8:58     ` Denis Carikli
2014-06-25  9:33     ` Sascha Hauer
2014-06-25  6:17 ` Shawn Guo

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=1403528839-31901-2-git-send-email-denis@eukrea.com \
    --to=denis@eukrea.com \
    --cc=linux-arm-kernel@lists.infradead.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.