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
WARNING: multiple messages have this Message-ID (diff)
From: vz@mleia.com (Vladimir Zapolskiy) 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 05:27:17 +0200 [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: 42+ 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 ` 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 ` 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 ` 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 2016-12-21 3:27 ` Vladimir Zapolskiy [this message] 2016-12-21 3:27 ` [PATCH 4/4] video: ARM CLCD: add support of an optional GPIO to enable panel Vladimir Zapolskiy 2016-12-30 8:20 ` Linus Walleij 2016-12-30 8:20 ` Linus Walleij 2016-12-30 9:24 ` Vladimir Zapolskiy 2016-12-30 9:24 ` Vladimir Zapolskiy 2016-12-30 8:23 ` [PATCH 0/4] " Linus Walleij 2016-12-30 8:23 ` Linus Walleij 2017-01-01 20:50 ` Vladimir Zapolskiy 2017-01-01 20:50 ` Vladimir Zapolskiy 2017-01-02 14:22 ` Russell King - ARM Linux 2017-01-02 14:22 ` Russell King - ARM Linux 2017-01-07 23:32 ` Vladimir Zapolskiy 2017-01-07 23:32 ` Vladimir Zapolskiy 2017-01-10 4:06 ` Vladimir Zapolskiy 2017-01-10 4:06 ` Vladimir Zapolskiy 2017-01-10 13:47 ` Vladimir Murzin 2017-01-10 13:47 ` Vladimir Murzin 2017-01-11 15:16 ` Linus Walleij 2017-01-11 15:16 ` Linus Walleij 2017-01-12 0:05 ` Vladimir Zapolskiy 2017-01-12 0:05 ` Vladimir Zapolskiy 2017-01-12 8:27 ` Linus Walleij 2017-01-12 8:27 ` Linus Walleij 2017-01-12 21:26 ` Vladimir Zapolskiy 2017-01-12 21:26 ` Vladimir Zapolskiy 2017-01-13 11:08 ` Bartlomiej Zolnierkiewicz 2017-01-13 11:08 ` Bartlomiej Zolnierkiewicz 2017-01-17 1:57 ` Vladimir Zapolskiy 2017-01-17 1:57 ` Vladimir Zapolskiy 2017-01-18 12:22 ` Linus Walleij 2017-01-18 12:22 ` Linus Walleij [not found] ` <CGME20170130152340epcas5p3f68349ef89c5ec902186ae71011c0c4b@epcas5p3.samsung.com> 2017-01-30 15:23 ` Bartlomiej Zolnierkiewicz 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: linkBe 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.