linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 1/3] video: ssd1307fb: Use gpiod_set_value_cansleep() for reset
@ 2018-09-19 13:17 Michal Vokáč
  2018-09-19 13:17 ` [PATCH v2 2/3] video: ssd1307fb: Do not hard code active-low reset sequence Michal Vokáč
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Michal Vokáč @ 2018-09-19 13:17 UTC (permalink / raw)
  To: Bartlomiej Zolnierkiewicz, Shawn Guo
  Cc: Fabio Estevam, Rob Herring, devicetree, linux-kernel,
	linux-fbdev, Michal Vokáč

The reset signal can be produced by GPIO expander that can sleep.
In that case the probe function fails. Allow using GPIO expanders for
the reset signal by using the non-atomic gpiod_set_value_cansleep()
function.

Signed-off-by: Michal Vokáč <michal.vokac@ysoft.com>
---
v2 changes: none

 drivers/video/fbdev/ssd1307fb.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/video/fbdev/ssd1307fb.c b/drivers/video/fbdev/ssd1307fb.c
index ba66c02..e7ae135 100644
--- a/drivers/video/fbdev/ssd1307fb.c
+++ b/drivers/video/fbdev/ssd1307fb.c
@@ -728,9 +728,9 @@ static int ssd1307fb_probe(struct i2c_client *client,
 
 	if (par->reset) {
 		/* Reset the screen */
-		gpiod_set_value(par->reset, 0);
+		gpiod_set_value_cansleep(par->reset, 0);
 		udelay(4);
-		gpiod_set_value(par->reset, 1);
+		gpiod_set_value_cansleep(par->reset, 1);
 		udelay(4);
 	}
 
-- 
2.1.4


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

* [PATCH v2 2/3] video: ssd1307fb: Do not hard code active-low reset sequence
  2018-09-19 13:17 [PATCH v2 1/3] video: ssd1307fb: Use gpiod_set_value_cansleep() for reset Michal Vokáč
@ 2018-09-19 13:17 ` Michal Vokáč
  2018-09-19 13:17 ` [PATCH v2 3/3] ARM: dts: imx28-cfa10036: Fix the reset gpio signal polarity Michal Vokáč
  2018-09-20  7:47 ` [PATCH v2 1/3] video: ssd1307fb: Use gpiod_set_value_cansleep() for reset Michal Vokáč
  2 siblings, 0 replies; 4+ messages in thread
From: Michal Vokáč @ 2018-09-19 13:17 UTC (permalink / raw)
  To: Bartlomiej Zolnierkiewicz, Shawn Guo
  Cc: Fabio Estevam, Rob Herring, devicetree, linux-kernel,
	linux-fbdev, Michal Vokáč

The SSD130x OLED display reset signal is active low. Now the reset
sequence is implemented in such a way that users are forced to
define reset-gpios as GPIO_ACTIVE_HIGH in DT to make the reset work.

Do not hard code the active-low sequence into the driver but instead
allow the user to specify the gpio as GPIO_ACTIVE_LOW to reflect
the real world.

Signed-off-by: Michal Vokáč <michal.vokac@ysoft.com>
---
v2 changes: Split the DT changes into separate patch.

 drivers/video/fbdev/ssd1307fb.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/video/fbdev/ssd1307fb.c b/drivers/video/fbdev/ssd1307fb.c
index e7ae135..7b5bc42 100644
--- a/drivers/video/fbdev/ssd1307fb.c
+++ b/drivers/video/fbdev/ssd1307fb.c
@@ -728,10 +728,10 @@ static int ssd1307fb_probe(struct i2c_client *client,
 
 	if (par->reset) {
 		/* Reset the screen */
-		gpiod_set_value_cansleep(par->reset, 0);
-		udelay(4);
 		gpiod_set_value_cansleep(par->reset, 1);
 		udelay(4);
+		gpiod_set_value_cansleep(par->reset, 0);
+		udelay(4);
 	}
 
 	if (par->vbat_reg) {
-- 
2.1.4


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

* [PATCH v2 3/3] ARM: dts: imx28-cfa10036: Fix the reset gpio signal polarity
  2018-09-19 13:17 [PATCH v2 1/3] video: ssd1307fb: Use gpiod_set_value_cansleep() for reset Michal Vokáč
  2018-09-19 13:17 ` [PATCH v2 2/3] video: ssd1307fb: Do not hard code active-low reset sequence Michal Vokáč
@ 2018-09-19 13:17 ` Michal Vokáč
  2018-09-20  7:47 ` [PATCH v2 1/3] video: ssd1307fb: Use gpiod_set_value_cansleep() for reset Michal Vokáč
  2 siblings, 0 replies; 4+ messages in thread
From: Michal Vokáč @ 2018-09-19 13:17 UTC (permalink / raw)
  To: Bartlomiej Zolnierkiewicz, Shawn Guo
  Cc: Fabio Estevam, Rob Herring, devicetree, linux-kernel,
	linux-fbdev, Michal Vokáč

The reset signal of the SSD1306 OLED display is actually active-low.
Adapt the DT to reflect the real world.

Signed-off-by: Michal Vokáč <michal.vokac@ysoft.com>
---
v2 changes: New patch in the series

 arch/arm/boot/dts/imx28-cfa10036.dts | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/imx28-cfa10036.dts b/arch/arm/boot/dts/imx28-cfa10036.dts
index e54f5ab..be3406e 100644
--- a/arch/arm/boot/dts/imx28-cfa10036.dts
+++ b/arch/arm/boot/dts/imx28-cfa10036.dts
@@ -11,6 +11,7 @@
 
 /dts-v1/;
 #include "imx28.dtsi"
+#include <dt-bindings/gpio/gpio.h>
 
 / {
 	model = "Crystalfontz CFA-10036 Board";
@@ -95,7 +96,7 @@
 					pinctrl-names = "default";
 					pinctrl-0 = <&ssd1306_cfa10036>;
 					reg = <0x3c>;
-					reset-gpios = <&gpio2 7 0>;
+					reset-gpios = <&gpio2 7 GPIO_ACTIVE_LOW>;
 					solomon,height = <32>;
 					solomon,width = <128>;
 					solomon,page-offset = <0>;
-- 
2.1.4


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

* Re: [PATCH v2 1/3] video: ssd1307fb: Use gpiod_set_value_cansleep() for reset
  2018-09-19 13:17 [PATCH v2 1/3] video: ssd1307fb: Use gpiod_set_value_cansleep() for reset Michal Vokáč
  2018-09-19 13:17 ` [PATCH v2 2/3] video: ssd1307fb: Do not hard code active-low reset sequence Michal Vokáč
  2018-09-19 13:17 ` [PATCH v2 3/3] ARM: dts: imx28-cfa10036: Fix the reset gpio signal polarity Michal Vokáč
@ 2018-09-20  7:47 ` Michal Vokáč
  2 siblings, 0 replies; 4+ messages in thread
From: Michal Vokáč @ 2018-09-20  7:47 UTC (permalink / raw)
  To: Bartlomiej Zolnierkiewicz, Shawn Guo
  Cc: Fabio Estevam, Rob Herring, devicetree, linux-kernel, linux-fbdev

On 19.9.2018 15:17, Michal Vokáč wrote:
> The reset signal can be produced by GPIO expander that can sleep.
> In that case the probe function fails. Allow using GPIO expanders for
> the reset signal by using the non-atomic gpiod_set_value_cansleep()
> function.
> 
> Signed-off-by: Michal Vokáč <michal.vokac@ysoft.com>

I forgot to add R-by from Fabio from v1, sorry.
I made the respin in a hurry and skipped my pre-submission checklist..

Michal

> ---
> v2 changes: none
> 
>   drivers/video/fbdev/ssd1307fb.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/video/fbdev/ssd1307fb.c b/drivers/video/fbdev/ssd1307fb.c
> index ba66c02..e7ae135 100644
> --- a/drivers/video/fbdev/ssd1307fb.c
> +++ b/drivers/video/fbdev/ssd1307fb.c
> @@ -728,9 +728,9 @@ static int ssd1307fb_probe(struct i2c_client *client,
>   
>   	if (par->reset) {
>   		/* Reset the screen */
> -		gpiod_set_value(par->reset, 0);
> +		gpiod_set_value_cansleep(par->reset, 0);
>   		udelay(4);
> -		gpiod_set_value(par->reset, 1);
> +		gpiod_set_value_cansleep(par->reset, 1);
>   		udelay(4);
>   	}
>   
> 


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

end of thread, other threads:[~2018-09-20  7:47 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-19 13:17 [PATCH v2 1/3] video: ssd1307fb: Use gpiod_set_value_cansleep() for reset Michal Vokáč
2018-09-19 13:17 ` [PATCH v2 2/3] video: ssd1307fb: Do not hard code active-low reset sequence Michal Vokáč
2018-09-19 13:17 ` [PATCH v2 3/3] ARM: dts: imx28-cfa10036: Fix the reset gpio signal polarity Michal Vokáč
2018-09-20  7:47 ` [PATCH v2 1/3] video: ssd1307fb: Use gpiod_set_value_cansleep() for reset Michal Vokáč

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