From: Vladimir Zapolskiy <vz@mleia.com>
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 4/4] video: ARM CLCD: add support of an optional GPIO to enable panel
Date: Wed, 21 Dec 2016 03:27:17 +0000 [thread overview]
Message-ID: <20161221032717.13154-5-vz@mleia.com> (raw)
In-Reply-To: <20161221032717.13154-1-vz@mleia.com>
The change adds handling of "enable-gpios" property of panel-dpi device
node used with an ARM CLCD controller, note that the property already has
a description in display/panel/panel-dpi.txt documentation and it founds
practical usage while describing some panel devices connected to other
types of display controllers.
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
---
drivers/video/fbdev/amba-clcd.c | 29 +++++++++++++++++++++++++++++
include/linux/amba/clcd.h | 2 ++
2 files changed, 31 insertions(+)
diff --git a/drivers/video/fbdev/amba-clcd.c b/drivers/video/fbdev/amba-clcd.c
index 0fab92c..0bb8646 100644
--- a/drivers/video/fbdev/amba-clcd.c
+++ b/drivers/video/fbdev/amba-clcd.c
@@ -17,6 +17,7 @@
#include <linux/delay.h>
#include <linux/dma-mapping.h>
#include <linux/fb.h>
+#include <linux/gpio/consumer.h>
#include <linux/init.h>
#include <linux/ioport.h>
#include <linux/list.h>
@@ -87,6 +88,9 @@ static void clcdfb_disable(struct clcd_fb *fb)
writel(val, fb->regs + fb->off_cntl);
}
+ if (fb->panel->enable_gpio)
+ gpiod_set_value_cansleep(fb->panel->enable_gpio, 0);
+
/*
* Disable CLCD clock source.
*/
@@ -106,6 +110,9 @@ static void clcdfb_enable(struct clcd_fb *fb, u32 cntl)
clk_enable(fb->clk);
}
+ if (fb->panel->enable_gpio)
+ gpiod_set_value_cansleep(fb->panel->enable_gpio, 1);
+
/*
* Bring up by first enabling..
*/
@@ -624,6 +631,24 @@ static int clcdfb_snprintf_mode(char *buf, int size, struct fb_videomode *mode)
mode->refresh);
}
+static int clcdfb_of_get_enable_gpio(struct device *dev,
+ struct device_node *panel,
+ struct clcd_panel *clcd_panel)
+{
+ int err;
+
+ clcd_panel->enable_gpio = devm_get_gpiod_from_child(dev, "enable",
+ &panel->fwnode);
+ if (IS_ERR(clcd_panel->enable_gpio)) {
+ err = PTR_ERR(clcd_panel->enable_gpio);
+ clcd_panel->enable_gpio = NULL;
+ if (err != -ENOENT)
+ return err;
+ }
+
+ return 0;
+}
+
static int clcdfb_of_get_backlight(struct device_node *panel,
struct clcd_panel *clcd_panel)
{
@@ -781,6 +806,10 @@ static int clcdfb_of_init_display(struct clcd_fb *fb)
return err;
}
+ err = clcdfb_of_get_enable_gpio(&fb->dev->dev, panel, fb->panel);
+ if (err)
+ return err;
+
err = clcdfb_of_get_backlight(panel, fb->panel);
if (err)
return err;
diff --git a/include/linux/amba/clcd.h b/include/linux/amba/clcd.h
index 1035879..a9c6007 100644
--- a/include/linux/amba/clcd.h
+++ b/include/linux/amba/clcd.h
@@ -105,6 +105,7 @@ enum {
};
struct backlight_device;
+struct gpio_desc;
struct clcd_panel {
struct fb_videomode mode;
@@ -119,6 +120,7 @@ struct clcd_panel {
grayscale:1;
unsigned int connector;
struct backlight_device *backlight;
+ struct gpio_desc *enable_gpio;
/*
* If the B/R lines are switched between the CLCD
* and the panel we need to know this and not try to
--
2.10.2
next prev parent reply other threads:[~2016-12-21 3:27 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-21 3:27 [PATCH 0/4] video: ARM CLCD: add support of an optional GPIO to enable panel Vladimir Zapolskiy
2016-12-21 3:27 ` [PATCH 1/4] video: ARM CLCD: sort included headers out alphabetically Vladimir Zapolskiy
2016-12-21 3:27 ` [PATCH 2/4] video: ARM CLCD: use panel device node for panel initialization Vladimir Zapolskiy
2016-12-21 3:27 ` [PATCH 3/4] video: ARM CLCD: use panel device node for getting backlight and mode Vladimir Zapolskiy
2016-12-21 3:27 ` Vladimir Zapolskiy [this message]
2016-12-30 8:20 ` [PATCH 4/4] video: ARM CLCD: add support of an optional GPIO to enable panel Linus Walleij
2016-12-30 9:24 ` Vladimir Zapolskiy
2016-12-30 8:23 ` [PATCH 0/4] " Linus Walleij
2017-01-01 20:50 ` Vladimir Zapolskiy
2017-01-02 14:22 ` Russell King - ARM Linux
2017-01-07 23:32 ` Vladimir Zapolskiy
2017-01-10 4:06 ` Vladimir Zapolskiy
2017-01-10 13:47 ` Vladimir Murzin
2017-01-11 15:16 ` Linus Walleij
2017-01-12 0:05 ` Vladimir Zapolskiy
2017-01-12 8:27 ` Linus Walleij
2017-01-12 21:26 ` Vladimir Zapolskiy
2017-01-13 11:08 ` Bartlomiej Zolnierkiewicz
2017-01-17 1:57 ` Vladimir Zapolskiy
2017-01-18 12:22 ` Linus Walleij
[not found] ` <CGME20170130152340epcas5p3f68349ef89c5ec902186ae71011c0c4b@epcas5p3.samsung.com>
2017-01-30 15:23 ` Bartlomiej Zolnierkiewicz
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=20161221032717.13154-5-vz@mleia.com \
--to=vz@mleia.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 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).