* [PATCH v2 0/4] Fix ssd1307fb OLED driver reset
@ 2018-12-20 12:13 ` Vokáč Michal
0 siblings, 0 replies; 18+ messages in thread
From: Vokáč Michal @ 2018-12-20 12:13 UTC (permalink / raw)
To: Rob Herring, Bartlomiej Zolnierkiewicz
Cc: Shawn Guo, Fabio Estevam, Alexandre Belloni, Maxime Ripard,
linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org, Vokáč Michal
SGkgYWxsLA0KDQp0aGlzIGlzIG15IHRoaXJkIGF0dGVtcHQgdG8gZml4IHRoZSBzc2QxMzA3ZmIg
T0xFRCBkcml2ZXIgcmVzZXQuIEluIHRoZQ0Kc2Vjb25kIGF0dGVtcHQgWzFdIFJvYiBzdWdnZXN0
ZWQgdG8gdGFrZSBkaWZmZXJlbnQgYXByb2FjaC4gVGhhdCBpcyB0bw0KYXBwbHkgd2hhdCB3YXMg
b3JpZ2luYWx5IHBhcnQgb2YgdGhlIGZpcnN0IHJvdW5kIGFuZCBldmVudHVhbGx5IG1lcmdlZA0K
YnV0IHJldmVydGVkIGxhdGVyIG9uIFsyXVszXS4NCg0KTmV4dCBzdGVwIGlzIHRvIGFwcGx5IGEg
Zml4dXAgZm9yIHRoZSBzaW5nbGUgdXNlciAoaW4tdHJlZSkgdGhhdCB1c2VzDQp0aGlzIE9MRUQu
IEFzIFJvYiBzdWdnZXN0ZWQsIHRoZSBmaXh1cCBtYXkgYmUgYXBwbGllZCBvbmx5IGFmdGVyDQpz
b21lb25lIGNvbXBsYWlucyB0aGVpciBkaXNwbGF5IGJyb2tlLg0KDQpJIGFtIG5vdCByZWFsbHkg
c3VyZSB3aGF0IGlzIHRoZSBwcm9wcGVyIHdheSB0byBoYW5kbGUgdGhpcyBzbyB0aGUNCnNlcmll
cyBjb250YWlucyB0aGUgb3JpZ2luYWwgcGF0Y2hlcyArIGEgbWlub3IgZml4IGluIHRoZSBkb2Nz
IGFuZA0KdGhlIGZpeHVwIGFzIHRoZSBsYXN0IHBhdGNoLg0KDQpBZGRpbmcgQWxleGFuZHJlIGFu
ZCBNYXhpbWUgZnJvbSBCb290bGluIHRvIHRoZSBDYyBsaXN0IGFzIHlvdSBzZWVtDQp0byBiZSB0
aGUgbGFzdCBvbmVzIHdobyB0b3VjaGVkIHRoZSBDcnlzdGFsZm9udHogcGxhdGZvcm0uIFlvdXIg
Y29tZW50DQpyZWdhcmRpbmcgdGhlIHN0YXR1cyBvZiB0aGUgcGxhdGZvcm0gYW5kIHdoZXRoZXIg
dGhlIGZpeHVwIHNob3VsZCBiZQ0KYXBwbGllZCBzdHJhaWdodCBhd2F5IG9yIG5vdCBhdCBhbGwg
d2lsbCBiZSBhcHByZWNpYXRlZC4NCg0KVGhhbmsgeW91LA0KTWljaGFsDQoNClsxXSBodHRwczov
L3BhdGNod29yay5rZXJuZWwub3JnL3BhdGNoLzEwNjY1NTk3LyMyMjMyNzIyNw0KWzJdIGh0dHBz
Oi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvMTA2MTc3MjkvDQpbM10gaHR0cHM6Ly9wYXRj
aHdvcmsua2VybmVsLm9yZy9wYXRjaC8xMDYxNzczMS8jMjIyNTcxNzUNCg0KTWljaGFsIFZva8Oh
xI0gKDQpOg0KICBkdC1iaW5kaW5nczogZGlzcGxheTogc3NkMTMwN2ZiOiBSZW1vdmUgcmVzZXQt
YWN0aXZlLWxvdyBmcm9tIGV4YW1wbGVzDQogIHZpZGVvOiBzc2QxMzA3ZmI6IERvIG5vdCBoYXJk
IGNvZGUgYWN0aXZlLWxvdyByZXNldCBzZXF1ZW5jZQ0KICBBUk06IGR0czogaW14MjgtY2ZhMTAw
MzY6IEZpeCB0aGUgcmVzZXQgZ3BpbyBzaWduYWwgcG9sYXJpdHkNCiAgQVJNOiBteHM6IGNmYTEw
MDM2OiBGaXh1cCBPTEVEwqBkaXNwbGF5IHJlc2V0IHBvbGFyaXR5DQoNCiAuLi4vZGV2aWNldHJl
ZS9iaW5kaW5ncy9kaXNwbGF5L3NzZDEzMDdmYi50eHQgICAgICB8ICAyIC0NCiBhcmNoL2FybS9i
b290L2R0cy9pbXgyOC1jZmExMDAzNi5kdHMgICAgICAgICAgICAgICB8ICAzICstDQogYXJjaC9h
cm0vbWFjaC1teHMvbWFjaC1teHMuYyAgICAgICAgICAgICAgICAgICAgICAgfCA0NCArKysrKysr
KysrKysrKysrKysrKysrDQogZHJpdmVycy92aWRlby9mYmRldi9zc2QxMzA3ZmIuYyAgICAgICAg
ICAgICAgICAgICAgfCAgNCArLQ0KIDQgZmlsZXMgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygrKSwg
NSBkZWxldGlvbnMoLSkNCg0KLS0gDQoyLjEuNA0KDQo
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH v2 0/4] Fix ssd1307fb OLED driver reset
@ 2018-12-20 12:13 ` Vokáč Michal
0 siblings, 0 replies; 18+ messages in thread
From: Vokáč Michal @ 2018-12-20 12:13 UTC (permalink / raw)
To: Rob Herring, Bartlomiej Zolnierkiewicz
Cc: Shawn Guo, Fabio Estevam, Alexandre Belloni, Maxime Ripard,
linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org, Vokáč Michal
Hi all,
this is my third attempt to fix the ssd1307fb OLED driver reset. In the
second attempt [1] Rob suggested to take different aproach. That is to
apply what was originaly part of the first round and eventually merged
but reverted later on [2][3].
Next step is to apply a fixup for the single user (in-tree) that uses
this OLED. As Rob suggested, the fixup may be applied only after
someone complains their display broke.
I am not really sure what is the propper way to handle this so the
series contains the original patches + a minor fix in the docs and
the fixup as the last patch.
Adding Alexandre and Maxime from Bootlin to the Cc list as you seem
to be the last ones who touched the Crystalfontz platform. Your coment
regarding the status of the platform and whether the fixup should be
applied straight away or not at all will be appreciated.
Thank you,
Michal
[1] https://patchwork.kernel.org/patch/10665597/#22327227
[2] https://patchwork.kernel.org/patch/10617729/
[3] https://patchwork.kernel.org/patch/10617731/#22257175
Michal Vokáč (4):
dt-bindings: display: ssd1307fb: Remove reset-active-low from examples
video: ssd1307fb: Do not hard code active-low reset sequence
ARM: dts: imx28-cfa10036: Fix the reset gpio signal polarity
ARM: mxs: cfa10036: Fixup OLED display reset polarity
.../devicetree/bindings/display/ssd1307fb.txt | 2 -
arch/arm/boot/dts/imx28-cfa10036.dts | 3 +-
arch/arm/mach-mxs/mach-mxs.c | 44 ++++++++++++++++++++++
drivers/video/fbdev/ssd1307fb.c | 4 +-
4 files changed, 48 insertions(+), 5 deletions(-)
--
2.1.4
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH v2 1/4] dt-bindings: display: ssd1307fb: Remove reset-active-low from examples
2018-12-20 12:13 ` Vokáč Michal
@ 2018-12-20 12:13 ` Vokáč Michal
-1 siblings, 0 replies; 18+ messages in thread
From: Vokáč Michal @ 2018-12-20 12:13 UTC (permalink / raw)
To: Rob Herring, Bartlomiej Zolnierkiewicz
Cc: Shawn Guo, Fabio Estevam, Alexandre Belloni, Maxime Ripard,
linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org, Vokáč Michal
VGhlIHJlc2V0LWFjdGl2ZS1sb3cgcHJvcGVydHkgaGFzIGJlZW4gcmVtb3ZlZCBicm9tIHRoZSBi
aW5kaW5nIGEgd2hpbGUNCmFnby4gU28gcmVtb3ZlIGl0IGZyb20gdGhlIGV4YW1wbGVzIGFzIHdl
bGwuDQoNCkZpeGVzOiA1MTliNGRiICgiZmJkZXY6IHNzZDEzMDdmYjogUmVtb3ZlIHJlc2V0LWFj
dGl2ZS1sb3cgZnJvbSB0aGUgRFQgYmluZGluZyBkb2N1bWVudCIpDQpSZXZpZXdlZC1ieTogUm9i
IEhlcnJpbmcgPHJvYmhAa2VybmVsLm9yZz4NClNpZ25lZC1vZmYtYnk6IE1pY2hhbCBWb2vDocSN
IDxtaWNoYWwudm9rYWNAeXNvZnQuY29tPg0KLS0tDQpDaGFuZ2VzIGZyb20gdjE6DQogLSBBZGQg
Ui1ieSBmcm9tIFJvYg0KDQogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3Bs
YXkvc3NkMTMwN2ZiLnR4dCB8IDIgLS0NCiAxIGZpbGUgY2hhbmdlZCwgMiBkZWxldGlvbnMoLSkN
Cg0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5
L3NzZDEzMDdmYi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxh
eS9zc2QxMzA3ZmIudHh0DQppbmRleCAyMDlkOTMxLi5iNjdmOGNhIDEwMDY0NA0KLS0tIGEvRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvc3NkMTMwN2ZiLnR4dA0KKysr
IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvc3NkMTMwN2ZiLnR4
dA0KQEAgLTM2LDcgKzM2LDYgQEAgc3NkMTMwNzogb2xlZEAzYyB7DQogICAgICAgICByZWcgPSA8
MHgzYz47DQogICAgICAgICBwd21zID0gPCZwd20gNCAzMDAwPjsNCiAgICAgICAgIHJlc2V0LWdw
aW9zID0gPCZncGlvMiA3PjsNCi0gICAgICAgIHJlc2V0LWFjdGl2ZS1sb3c7DQogfTsNCiANCiBz
c2QxMzA2OiBvbGVkQDNjIHsNCkBAIC00NCw3ICs0Myw2IEBAIHNzZDEzMDY6IG9sZWRAM2Mgew0K
ICAgICAgICAgcmVnID0gPDB4M2M+Ow0KICAgICAgICAgcHdtcyA9IDwmcHdtIDQgMzAwMD47DQog
ICAgICAgICByZXNldC1ncGlvcyA9IDwmZ3BpbzIgNz47DQotICAgICAgICByZXNldC1hY3RpdmUt
bG93Ow0KICAgICAgICAgc29sb21vbixjb20tbHJyZW1hcDsNCiAgICAgICAgIHNvbG9tb24sY29t
LWludmRpcjsNCiAgICAgICAgIHNvbG9tb24sY29tLW9mZnNldCA9IDwzMj47DQotLSANCjIuMS40
DQoNCg=
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH v2 1/4] dt-bindings: display: ssd1307fb: Remove reset-active-low from examples
@ 2018-12-20 12:13 ` Vokáč Michal
0 siblings, 0 replies; 18+ messages in thread
From: Vokáč Michal @ 2018-12-20 12:13 UTC (permalink / raw)
To: Rob Herring, Bartlomiej Zolnierkiewicz
Cc: Shawn Guo, Fabio Estevam, Alexandre Belloni, Maxime Ripard,
linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org, Vokáč Michal
The reset-active-low property has been removed brom the binding a while
ago. So remove it from the examples as well.
Fixes: 519b4db ("fbdev: ssd1307fb: Remove reset-active-low from the DT binding document")
Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Michal Vokáč <michal.vokac@ysoft.com>
---
Changes from v1:
- Add R-by from Rob
Documentation/devicetree/bindings/display/ssd1307fb.txt | 2 --
1 file changed, 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/display/ssd1307fb.txt b/Documentation/devicetree/bindings/display/ssd1307fb.txt
index 209d931..b67f8ca 100644
--- a/Documentation/devicetree/bindings/display/ssd1307fb.txt
+++ b/Documentation/devicetree/bindings/display/ssd1307fb.txt
@@ -36,7 +36,6 @@ ssd1307: oled@3c {
reg = <0x3c>;
pwms = <&pwm 4 3000>;
reset-gpios = <&gpio2 7>;
- reset-active-low;
};
ssd1306: oled@3c {
@@ -44,7 +43,6 @@ ssd1306: oled@3c {
reg = <0x3c>;
pwms = <&pwm 4 3000>;
reset-gpios = <&gpio2 7>;
- reset-active-low;
solomon,com-lrremap;
solomon,com-invdir;
solomon,com-offset = <32>;
--
2.1.4
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v2 2/4] video: ssd1307fb: Do not hard code active-low reset sequence
2018-12-20 12:13 ` Vokáč Michal
@ 2018-12-20 12:13 ` Vokáč Michal
-1 siblings, 0 replies; 18+ messages in thread
From: Vokáč Michal @ 2018-12-20 12:13 UTC (permalink / raw)
To: Rob Herring, Bartlomiej Zolnierkiewicz
Cc: Shawn Guo, Fabio Estevam, Alexandre Belloni, Maxime Ripard,
linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org, Vokáč Michal
VGhlIFNTRDEzMHggT0xFRMKgZGlzcGxheSByZXNldCBzaWduYWwgaXMgYWN0aXZlIGxvdy4gTm93
IHRoZSByZXNldA0Kc2VxdWVuY2UgaXMgaW1wbGVtZW50ZWQgaW4gc3VjaCBhIHdheSB0aGF0IHVz
ZXJzIGFyZSBmb3JjZWQgdG8NCmRlZmluZSByZXNldC1ncGlvcyBhcyBHUElPX0FDVElWRV9ISUdI
IGluIERUIHRvIG1ha2UgdGhlIHJlc2V0IHdvcmsuDQoNCkRvIG5vdCBoYXJkIGNvZGUgdGhlIGFj
dGl2ZS1sb3cgc2VxdWVuY2UgaW50byB0aGUgZHJpdmVyIGJ1dCBpbnN0ZWFkDQphbGxvdyB0aGUg
dXNlciB0byBzcGVjaWZ5IHRoZSBncGlvIGFzIEdQSU9fQUNUSVZFX0xPVyB0byByZWZsZWN0DQp0
aGUgcmVhbCB3b3JsZC4NCg0KUmV2aWV3ZWQtYnk6IFJvYiBIZXJyaW5nIDxyb2JoQGtlcm5lbC5v
cmc+DQpTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgVm9rw6HEjSA8bWljaGFsLnZva2FjQHlzb2Z0LmNv
bT4NCi0tLQ0KQ2hhbmdlcyBmcm9tIHYxOg0KIC0gQWRkIFItYnkgZnJvbSBSb2INCg0KIGRyaXZl
cnMvdmlkZW8vZmJkZXYvc3NkMTMwN2ZiLmMgfCA0ICsrLS0NCiAxIGZpbGUgY2hhbmdlZCwgMiBp
bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRl
by9mYmRldi9zc2QxMzA3ZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvc3NkMTMwN2ZiLmMNCmlu
ZGV4IDQwNjFhMjAuLjNiMzYxYmMgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3Nz
ZDEzMDdmYi5jDQorKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NzZDEzMDdmYi5jDQpAQCAtNjY3
LDEwICs2NjcsMTAgQEAgc3RhdGljIGludCBzc2QxMzA3ZmJfcHJvYmUoc3RydWN0IGkyY19jbGll
bnQgKmNsaWVudCwNCiANCiAJaWYgKHBhci0+cmVzZXQpIHsNCiAJCS8qIFJlc2V0IHRoZSBzY3Jl
ZW4gKi8NCi0JCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChwYXItPnJlc2V0LCAwKTsNCi0JCXVk
ZWxheSg0KTsNCiAJCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChwYXItPnJlc2V0LCAxKTsNCiAJ
CXVkZWxheSg0KTsNCisJCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChwYXItPnJlc2V0LCAwKTsN
CisJCXVkZWxheSg0KTsNCiAJfQ0KIA0KIAlpZiAocGFyLT52YmF0X3JlZykgew0KLS0gDQoyLjEu
NA0KDQo
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH v2 2/4] video: ssd1307fb: Do not hard code active-low reset sequence
@ 2018-12-20 12:13 ` Vokáč Michal
0 siblings, 0 replies; 18+ messages in thread
From: Vokáč Michal @ 2018-12-20 12:13 UTC (permalink / raw)
To: Rob Herring, Bartlomiej Zolnierkiewicz
Cc: Shawn Guo, Fabio Estevam, Alexandre Belloni, Maxime Ripard,
linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org, Vokáč Michal
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.
Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Michal Vokáč <michal.vokac@ysoft.com>
---
Changes from v1:
- Add R-by from Rob
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 4061a20..3b361bc 100644
--- a/drivers/video/fbdev/ssd1307fb.c
+++ b/drivers/video/fbdev/ssd1307fb.c
@@ -667,10 +667,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] 18+ messages in thread
* [PATCH v2 3/4] ARM: dts: imx28-cfa10036: Fix the reset gpio signal polarity
2018-12-20 12:13 ` Vokáč Michal
@ 2018-12-20 12:13 ` Vokáč Michal
-1 siblings, 0 replies; 18+ messages in thread
From: Vokáč Michal @ 2018-12-20 12:13 UTC (permalink / raw)
To: Rob Herring, Bartlomiej Zolnierkiewicz
Cc: Shawn Guo, Fabio Estevam, Alexandre Belloni, Maxime Ripard,
linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org, Vokáč Michal
VGhlIHJlc2V0IHNpZ25hbCBvZiB0aGUgU1NEMTMwNiBPTEVEIGRpc3BsYXkgaXMgYWN0dWFsbHkg
YWN0aXZlLWxvdy4NCkFkYXB0IHRoZSBEVCB0byByZWZsZWN0IHRoZSByZWFsIHdvcmxkLg0KDQpS
ZXZpZXdlZC1ieTogUm9iIEhlcnJpbmcgPHJvYmhAa2VybmVsLm9yZz4NClNpZ25lZC1vZmYtYnk6
IE1pY2hhbCBWb2vDocSNIDxtaWNoYWwudm9rYWNAeXNvZnQuY29tPg0KLS0tDQpDaGFuZ2VzIGZy
b20gdjE6DQogLSBBZGQgUi1ieSBmcm9tIFJvYg0KDQogYXJjaC9hcm0vYm9vdC9kdHMvaW14Mjgt
Y2ZhMTAwMzYuZHRzIHwgMyArKy0NCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAx
IGRlbGV0aW9uKC0pDQoNCmRpZmYgLS1naXQgYS9hcmNoL2FybS9ib290L2R0cy9pbXgyOC1jZmEx
MDAzNi5kdHMgYi9hcmNoL2FybS9ib290L2R0cy9pbXgyOC1jZmExMDAzNi5kdHMNCmluZGV4IDgz
MzdjYTIuLmQ2ZWNhMzEgMTAwNjQ0DQotLS0gYS9hcmNoL2FybS9ib290L2R0cy9pbXgyOC1jZmEx
MDAzNi5kdHMNCisrKyBiL2FyY2gvYXJtL2Jvb3QvZHRzL2lteDI4LWNmYTEwMDM2LmR0cw0KQEAg
LTExLDYgKzExLDcgQEANCiANCiAvZHRzLXYxLzsNCiAjaW5jbHVkZSAiaW14MjguZHRzaSINCisj
aW5jbHVkZSA8ZHQtYmluZGluZ3MvZ3Bpby9ncGlvLmg+DQogDQogLyB7DQogCW1vZGVsID0gIkNy
eXN0YWxmb250eiBDRkEtMTAwMzYgQm9hcmQiOw0KQEAgLTk1LDcgKzk2LDcgQEANCiAJCQkJCXBp
bmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7DQogCQkJCQlwaW5jdHJsLTAgPSA8JnNzZDEzMDZfY2Zh
MTAwMzY+Ow0KIAkJCQkJcmVnID0gPDB4M2M+Ow0KLQkJCQkJcmVzZXQtZ3Bpb3MgPSA8JmdwaW8y
IDcgMD47DQorCQkJCQlyZXNldC1ncGlvcyA9IDwmZ3BpbzIgNyBHUElPX0FDVElWRV9MT1c+Ow0K
IAkJCQkJc29sb21vbixoZWlnaHQgPSA8MzI+Ow0KIAkJCQkJc29sb21vbix3aWR0aCA9IDwxMjg+
Ow0KIAkJCQkJc29sb21vbixwYWdlLW9mZnNldCA9IDwwPjsNCi0tIA0KMi4xLjQNCg0K
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH v2 3/4] ARM: dts: imx28-cfa10036: Fix the reset gpio signal polarity
@ 2018-12-20 12:13 ` Vokáč Michal
0 siblings, 0 replies; 18+ messages in thread
From: Vokáč Michal @ 2018-12-20 12:13 UTC (permalink / raw)
To: Rob Herring, Bartlomiej Zolnierkiewicz
Cc: Shawn Guo, Fabio Estevam, Alexandre Belloni, Maxime Ripard,
linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org, Vokáč Michal
The reset signal of the SSD1306 OLED display is actually active-low.
Adapt the DT to reflect the real world.
Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Michal Vokáč <michal.vokac@ysoft.com>
---
Changes from v1:
- Add R-by from Rob
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 8337ca2..d6eca31 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] 18+ messages in thread
* [PATCH v2 4/4] ARM: mxs: cfa10036: Fixup OLED display reset polarity
2018-12-20 12:13 ` Vokáč Michal
@ 2018-12-20 12:13 ` Vokáč Michal
-1 siblings, 0 replies; 18+ messages in thread
From: Vokáč Michal @ 2018-12-20 12:13 UTC (permalink / raw)
To: Rob Herring, Bartlomiej Zolnierkiewicz
Cc: Shawn Guo, Fabio Estevam, Alexandre Belloni, Maxime Ripard,
linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org, Vokáč Michal
VGhlcmUgd2FzIGEgYnVnIGluIHJlc2V0IHNpZ25hbCBnZW5lcmF0aW9uIGluIHNzZDEzMDdmYiBP
TEVEIGRyaXZlci4NClRoZSBkaXNwbGF5IG5lZWRzIGFuIGFjdGl2ZS1sb3cgcmVzZXQgc2lnbmFs
IGJ1dCB0aGUgZHJpdmVyIHByb2R1Y2VkDQp0aGUgY29ycmVjdCBzZXF1ZW5jZSBvbmx5IGlmIHRo
ZSBHUElPIHVzZWQgZm9yIHJlc2V0IHdhcyBzcGVjaWZpZWQgYXMNCkdQSU9fQUNUSVZFX0hJR0gu
DQoNCk5vdyBhcyB0aGUgT0xFRCBkcml2ZXIgaXMgZml4ZWQgaXQgaXMgYWxzbyBuZWNlc3NhcnJ5
IHRvIGltcGxlbWVudA0KYSBmaXh1cCBmb3IgYWxsIGN1cnJlbnQgdXNlcnMgb2YgdGhlIG9sZCBE
VCBBQkkuIFRoZXJlIGlzIG9ubHkgb25lDQppbi10cmVlIHVzZXIgYW5kIHRoYXQgaXMgdGhlIENy
eXN0YWxmb250eiBDRkEtMTAwMzYgYm9hcmQuIEluIGNhc2UNCnRoaXMgYm9hcmQgaXMgYm9vdGlu
ZyBhbmQgR1BJT19BQ1RJVkVfSElHSCBpcyB1c2VkIGZvciByZXNldCB3ZQ0Kb3ZlcnJpZGUgaXQg
dG8gR1BJT19BQ1RJVkVfTE9XLg0KDQpSZXZpZXdlZC1ieTogUm9iIEhlcnJpbmcgPHJvYmhAa2Vy
bmVsLm9yZz4NClNpZ25lZC1vZmYtYnk6IE1pY2hhbCBWb2vDocSNIDxtaWNoYWwudm9rYWNAeXNv
ZnQuY29tPg0KLS0tDQpDaGFuZ2VzIGZyb20gdjE6DQogLSBBZGQgUi1ieSBmcm9tIFJvYg0KIC0g
VXNlIG9mX3Byb3BlcnR5X3JlYWRfdmFyaWFibGVfdTMyX2FycmF5IHRvIHJlYWQgdGhlIEdQSU8g
c3BlY2lmaWVyDQogICBhcnJheSBpbnN0ZWFkIG9mIHJlYWRpbmcgaXQgbWFudWFseSBpbiBmb3Ig
Y3ljbGUuIChSb2IpDQoNCiBhcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jIHwgNDQgKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiAxIGZpbGUgY2hhbmdlZCwg
NDQgaW5zZXJ0aW9ucygrKQ0KDQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1t
eHMuYyBiL2FyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMNCmluZGV4IDFjNjA2MmQuLjUwMDM4
ZDYgMTAwNjQ0DQotLS0gYS9hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jDQorKysgYi9hcmNo
L2FybS9tYWNoLW14cy9tYWNoLW14cy5jDQpAQCAtMjEsNiArMjEsNyBAQA0KICNpbmNsdWRlIDxs
aW51eC9yZWJvb3QuaD4NCiAjaW5jbHVkZSA8bGludXgvbWljcmVsX3BoeS5oPg0KICNpbmNsdWRl
IDxsaW51eC9vZl9hZGRyZXNzLmg+DQorI2luY2x1ZGUgPGxpbnV4L29mX2dwaW8uaD4NCiAjaW5j
bHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4NCiAjaW5jbHVkZSA8bGludXgvcGh5Lmg+DQogI2lu
Y2x1ZGUgPGxpbnV4L3BpbmN0cmwvY29uc3VtZXIuaD4NCkBAIC0yNjgsOSArMjY5LDUyIEBAIHN0
YXRpYyB2b2lkIF9faW5pdCBhcHg0ZGV2a2l0X2luaXQodm9pZCkNCiAJCQkJCSAgIGFweDRkZXZr
aXRfcGh5X2ZpeHVwKTsNCiB9DQogDQorI2RlZmluZSBPTEVEX1JFU0VUX0dQSU9fTEVOCTMNCisj
ZGVmaW5lIE9MRURfUkVTRVRfR1BJT19TSVpFCShPTEVEX1JFU0VUX0dQSU9fTEVOICogc2l6ZW9m
KHUzMikpDQorDQorc3RhdGljIHZvaWQgX19pbml0IGNyeXN0YWxmb250el9vbGVkX3Jlc2V0X2Zp
eHVwKHZvaWQpDQorew0KKwlzdHJ1Y3QgcHJvcGVydHkgKm5ld2dwaW87DQorCXN0cnVjdCBkZXZp
Y2Vfbm9kZSAqbnA7DQorCXUzMiAqZ3Bpb3NwZWM7DQorCWludCByZXQ7DQorDQorCW5wID0gb2Zf
ZmluZF9jb21wYXRpYmxlX25vZGUoTlVMTCwgTlVMTCwgInNvbG9tb24sc3NkMTMwNmZiLWkyYyIp
Ow0KKwlpZiAoIW5wKQ0KKwkJcmV0dXJuOw0KKw0KKwluZXdncGlvID0ga3phbGxvYyhzaXplb2Yo
Km5ld2dwaW8pICsgT0xFRF9SRVNFVF9HUElPX1NJWkUsIEdGUF9LRVJORUwpOw0KKwlpZiAoIW5l
d2dwaW8pDQorCQlyZXR1cm47DQorDQorCW5ld2dwaW8tPnZhbHVlID0gbmV3Z3BpbyArIDE7DQor
CW5ld2dwaW8tPmxlbmd0aCA9IE9MRURfUkVTRVRfR1BJT19TSVpFOw0KKwluZXdncGlvLT5uYW1l
ID0ga3N0cmR1cCgicmVzZXQtZ3Bpb3MiLCBHRlBfS0VSTkVMKTsNCisJaWYgKCFuZXdncGlvLT5u
YW1lKSB7DQorCQlrZnJlZShuZXdncGlvKTsNCisJCXJldHVybjsNCisJfQ0KKw0KKwlncGlvc3Bl
YyA9IG5ld2dwaW8tPnZhbHVlOw0KKwlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3ZhcmlhYmxlX3Uz
Ml9hcnJheShucCwgInJlc2V0LWdwaW9zIiwgZ3Bpb3NwZWMsDQorCQkJCQkJICBPTEVEX1JFU0VU
X0dQSU9fTEVOLCAwKTsNCisNCisJaWYgKHJldCA8IDApIHsNCisJCWtmcmVlKG5ld2dwaW8pOw0K
KwkJcmV0dXJuOw0KKwl9DQorDQorCWlmICghKGdwaW9zcGVjWzJdICYgT0ZfR1BJT19BQ1RJVkVf
TE9XKSkgew0KKwkJZ3Bpb3NwZWNbMl0gfD0gT0ZfR1BJT19BQ1RJVkVfTE9XOw0KKwkJY3B1X3Rv
X2JlMzJfYXJyYXkoZ3Bpb3NwZWMsIGdwaW9zcGVjLCBPTEVEX1JFU0VUX0dQSU9fTEVOKTsNCisJ
CW9mX3VwZGF0ZV9wcm9wZXJ0eShucCwgbmV3Z3Bpbyk7DQorCX0NCit9DQorDQogc3RhdGljIHZv
aWQgX19pbml0IGNyeXN0YWxmb250el9pbml0KHZvaWQpDQogew0KIAl1cGRhdGVfZmVjX21hY19w
cm9wKE9VSV9DUllTVEFMRk9OVFopOw0KKwljcnlzdGFsZm9udHpfb2xlZF9yZXNldF9maXh1cCgp
Ow0KIH0NCiANCiBzdGF0aWMgdm9pZCBfX2luaXQgZHVja2JpbGxfaW5pdCh2b2lkKQ0KLS0gDQoy
LjEuNA0KDQo
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH v2 4/4] ARM: mxs: cfa10036: Fixup OLED display reset polarity
@ 2018-12-20 12:13 ` Vokáč Michal
0 siblings, 0 replies; 18+ messages in thread
From: Vokáč Michal @ 2018-12-20 12:13 UTC (permalink / raw)
To: Rob Herring, Bartlomiej Zolnierkiewicz
Cc: Shawn Guo, Fabio Estevam, Alexandre Belloni, Maxime Ripard,
linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org, Vokáč Michal
There was a bug in reset signal generation in ssd1307fb OLED driver.
The display needs an active-low reset signal but the driver produced
the correct sequence only if the GPIO used for reset was specified as
GPIO_ACTIVE_HIGH.
Now as the OLED driver is fixed it is also necessarry to implement
a fixup for all current users of the old DT ABI. There is only one
in-tree user and that is the Crystalfontz CFA-10036 board. In case
this board is booting and GPIO_ACTIVE_HIGH is used for reset we
override it to GPIO_ACTIVE_LOW.
Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Michal Vokáč <michal.vokac@ysoft.com>
---
Changes from v1:
- Add R-by from Rob
- Use of_property_read_variable_u32_array to read the GPIO specifier
array instead of reading it manualy in for cycle. (Rob)
arch/arm/mach-mxs/mach-mxs.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)
diff --git a/arch/arm/mach-mxs/mach-mxs.c b/arch/arm/mach-mxs/mach-mxs.c
index 1c6062d..50038d6 100644
--- a/arch/arm/mach-mxs/mach-mxs.c
+++ b/arch/arm/mach-mxs/mach-mxs.c
@@ -21,6 +21,7 @@
#include <linux/reboot.h>
#include <linux/micrel_phy.h>
#include <linux/of_address.h>
+#include <linux/of_gpio.h>
#include <linux/of_platform.h>
#include <linux/phy.h>
#include <linux/pinctrl/consumer.h>
@@ -268,9 +269,52 @@ static void __init apx4devkit_init(void)
apx4devkit_phy_fixup);
}
+#define OLED_RESET_GPIO_LEN 3
+#define OLED_RESET_GPIO_SIZE (OLED_RESET_GPIO_LEN * sizeof(u32))
+
+static void __init crystalfontz_oled_reset_fixup(void)
+{
+ struct property *newgpio;
+ struct device_node *np;
+ u32 *gpiospec;
+ int ret;
+
+ np = of_find_compatible_node(NULL, NULL, "solomon,ssd1306fb-i2c");
+ if (!np)
+ return;
+
+ newgpio = kzalloc(sizeof(*newgpio) + OLED_RESET_GPIO_SIZE, GFP_KERNEL);
+ if (!newgpio)
+ return;
+
+ newgpio->value = newgpio + 1;
+ newgpio->length = OLED_RESET_GPIO_SIZE;
+ newgpio->name = kstrdup("reset-gpios", GFP_KERNEL);
+ if (!newgpio->name) {
+ kfree(newgpio);
+ return;
+ }
+
+ gpiospec = newgpio->value;
+ ret = of_property_read_variable_u32_array(np, "reset-gpios", gpiospec,
+ OLED_RESET_GPIO_LEN, 0);
+
+ if (ret < 0) {
+ kfree(newgpio);
+ return;
+ }
+
+ if (!(gpiospec[2] & OF_GPIO_ACTIVE_LOW)) {
+ gpiospec[2] |= OF_GPIO_ACTIVE_LOW;
+ cpu_to_be32_array(gpiospec, gpiospec, OLED_RESET_GPIO_LEN);
+ of_update_property(np, newgpio);
+ }
+}
+
static void __init crystalfontz_init(void)
{
update_fec_mac_prop(OUI_CRYSTALFONTZ);
+ crystalfontz_oled_reset_fixup();
}
static void __init duckbill_init(void)
--
2.1.4
^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PATCH v2 1/4] dt-bindings: display: ssd1307fb: Remove reset-active-low from examples
2018-12-20 12:13 ` Vokáč Michal
@ 2018-12-20 12:33 ` Alexandre Belloni
-1 siblings, 0 replies; 18+ messages in thread
From: Alexandre Belloni @ 2018-12-20 12:33 UTC (permalink / raw)
To: Vokáč Michal
Cc: Rob Herring, Bartlomiej Zolnierkiewicz, Shawn Guo, Fabio Estevam,
Maxime Ripard, linux-fbdev@vger.kernel.org,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org
On 20/12/2018 12:13:54+0000, Vokáč Michal wrote:
> The reset-active-low property has been removed brom the binding a while
> ago. So remove it from the examples as well.
>
> Fixes: 519b4db ("fbdev: ssd1307fb: Remove reset-active-low from the DT binding document")
> Reviewed-by: Rob Herring <robh@kernel.org>
> Signed-off-by: Michal Vokáč <michal.vokac@ysoft.com>
Reviewed-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
> ---
> Changes from v1:
> - Add R-by from Rob
>
> Documentation/devicetree/bindings/display/ssd1307fb.txt | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/display/ssd1307fb.txt b/Documentation/devicetree/bindings/display/ssd1307fb.txt
> index 209d931..b67f8ca 100644
> --- a/Documentation/devicetree/bindings/display/ssd1307fb.txt
> +++ b/Documentation/devicetree/bindings/display/ssd1307fb.txt
> @@ -36,7 +36,6 @@ ssd1307: oled@3c {
> reg = <0x3c>;
> pwms = <&pwm 4 3000>;
> reset-gpios = <&gpio2 7>;
> - reset-active-low;
> };
>
> ssd1306: oled@3c {
> @@ -44,7 +43,6 @@ ssd1306: oled@3c {
> reg = <0x3c>;
> pwms = <&pwm 4 3000>;
> reset-gpios = <&gpio2 7>;
> - reset-active-low;
> solomon,com-lrremap;
> solomon,com-invdir;
> solomon,com-offset = <32>;
> --
> 2.1.4
>
--
Alexandre Belloni, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 1/4] dt-bindings: display: ssd1307fb: Remove reset-active-low from examples
@ 2018-12-20 12:33 ` Alexandre Belloni
0 siblings, 0 replies; 18+ messages in thread
From: Alexandre Belloni @ 2018-12-20 12:33 UTC (permalink / raw)
To: Vokáč Michal
Cc: Rob Herring, Bartlomiej Zolnierkiewicz, Shawn Guo, Fabio Estevam,
Maxime Ripard, linux-fbdev@vger.kernel.org,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org
On 20/12/2018 12:13:54+0000, Vokáč Michal wrote:
> The reset-active-low property has been removed brom the binding a while
> ago. So remove it from the examples as well.
>
> Fixes: 519b4db ("fbdev: ssd1307fb: Remove reset-active-low from the DT binding document")
> Reviewed-by: Rob Herring <robh@kernel.org>
> Signed-off-by: Michal Vokáč <michal.vokac@ysoft.com>
Reviewed-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
> ---
> Changes from v1:
> - Add R-by from Rob
>
> Documentation/devicetree/bindings/display/ssd1307fb.txt | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/display/ssd1307fb.txt b/Documentation/devicetree/bindings/display/ssd1307fb.txt
> index 209d931..b67f8ca 100644
> --- a/Documentation/devicetree/bindings/display/ssd1307fb.txt
> +++ b/Documentation/devicetree/bindings/display/ssd1307fb.txt
> @@ -36,7 +36,6 @@ ssd1307: oled@3c {
> reg = <0x3c>;
> pwms = <&pwm 4 3000>;
> reset-gpios = <&gpio2 7>;
> - reset-active-low;
> };
>
> ssd1306: oled@3c {
> @@ -44,7 +43,6 @@ ssd1306: oled@3c {
> reg = <0x3c>;
> pwms = <&pwm 4 3000>;
> reset-gpios = <&gpio2 7>;
> - reset-active-low;
> solomon,com-lrremap;
> solomon,com-invdir;
> solomon,com-offset = <32>;
> --
> 2.1.4
>
--
Alexandre Belloni, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 2/4] video: ssd1307fb: Do not hard code active-low reset sequence
2018-12-20 12:13 ` Vokáč Michal
@ 2018-12-20 12:33 ` Alexandre Belloni
-1 siblings, 0 replies; 18+ messages in thread
From: Alexandre Belloni @ 2018-12-20 12:33 UTC (permalink / raw)
To: Vokáč Michal
Cc: Rob Herring, Bartlomiej Zolnierkiewicz, Shawn Guo, Fabio Estevam,
Maxime Ripard, linux-fbdev@vger.kernel.org,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org
On 20/12/2018 12:13:55+0000, Vokáč Michal wrote:
> 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.
>
> Reviewed-by: Rob Herring <robh@kernel.org>
> Signed-off-by: Michal Vokáč <michal.vokac@ysoft.com>
Reviewed-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
> ---
> Changes from v1:
> - Add R-by from Rob
>
> 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 4061a20..3b361bc 100644
> --- a/drivers/video/fbdev/ssd1307fb.c
> +++ b/drivers/video/fbdev/ssd1307fb.c
> @@ -667,10 +667,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
>
--
Alexandre Belloni, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 2/4] video: ssd1307fb: Do not hard code active-low reset sequence
@ 2018-12-20 12:33 ` Alexandre Belloni
0 siblings, 0 replies; 18+ messages in thread
From: Alexandre Belloni @ 2018-12-20 12:33 UTC (permalink / raw)
To: Vokáč Michal
Cc: Rob Herring, Bartlomiej Zolnierkiewicz, Shawn Guo, Fabio Estevam,
Maxime Ripard, linux-fbdev@vger.kernel.org,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org
On 20/12/2018 12:13:55+0000, Vokáč Michal wrote:
> 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.
>
> Reviewed-by: Rob Herring <robh@kernel.org>
> Signed-off-by: Michal Vokáč <michal.vokac@ysoft.com>
Reviewed-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
> ---
> Changes from v1:
> - Add R-by from Rob
>
> 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 4061a20..3b361bc 100644
> --- a/drivers/video/fbdev/ssd1307fb.c
> +++ b/drivers/video/fbdev/ssd1307fb.c
> @@ -667,10 +667,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
>
--
Alexandre Belloni, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 3/4] ARM: dts: imx28-cfa10036: Fix the reset gpio signal polarity
2018-12-20 12:13 ` Vokáč Michal
@ 2018-12-20 12:34 ` Alexandre Belloni
-1 siblings, 0 replies; 18+ messages in thread
From: Alexandre Belloni @ 2018-12-20 12:34 UTC (permalink / raw)
To: Vokáč Michal
Cc: Rob Herring, Bartlomiej Zolnierkiewicz, Shawn Guo, Fabio Estevam,
Maxime Ripard, linux-fbdev@vger.kernel.org,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org
On 20/12/2018 12:13:56+0000, Vokáč Michal wrote:
> The reset signal of the SSD1306 OLED display is actually active-low.
> Adapt the DT to reflect the real world.
>
> Reviewed-by: Rob Herring <robh@kernel.org>
> Signed-off-by: Michal Vokáč <michal.vokac@ysoft.com>
Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
> ---
> Changes from v1:
> - Add R-by from Rob
>
> 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 8337ca2..d6eca31 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
>
--
Alexandre Belloni, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 3/4] ARM: dts: imx28-cfa10036: Fix the reset gpio signal polarity
@ 2018-12-20 12:34 ` Alexandre Belloni
0 siblings, 0 replies; 18+ messages in thread
From: Alexandre Belloni @ 2018-12-20 12:34 UTC (permalink / raw)
To: Vokáč Michal
Cc: Rob Herring, Bartlomiej Zolnierkiewicz, Shawn Guo, Fabio Estevam,
Maxime Ripard, linux-fbdev@vger.kernel.org,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org
On 20/12/2018 12:13:56+0000, Vokáč Michal wrote:
> The reset signal of the SSD1306 OLED display is actually active-low.
> Adapt the DT to reflect the real world.
>
> Reviewed-by: Rob Herring <robh@kernel.org>
> Signed-off-by: Michal Vokáč <michal.vokac@ysoft.com>
Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
> ---
> Changes from v1:
> - Add R-by from Rob
>
> 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 8337ca2..d6eca31 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
>
--
Alexandre Belloni, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 4/4] ARM: mxs: cfa10036: Fixup OLED display reset polarity
2018-12-20 12:13 ` Vokáč Michal
@ 2018-12-20 12:35 ` Alexandre Belloni
-1 siblings, 0 replies; 18+ messages in thread
From: Alexandre Belloni @ 2018-12-20 12:35 UTC (permalink / raw)
To: Vokáč Michal
Cc: Rob Herring, Bartlomiej Zolnierkiewicz, Shawn Guo, Fabio Estevam,
Maxime Ripard, linux-fbdev@vger.kernel.org,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org
On 20/12/2018 12:13:57+0000, Vokáč Michal wrote:
> There was a bug in reset signal generation in ssd1307fb OLED driver.
> The display needs an active-low reset signal but the driver produced
> the correct sequence only if the GPIO used for reset was specified as
> GPIO_ACTIVE_HIGH.
>
> Now as the OLED driver is fixed it is also necessarry to implement
> a fixup for all current users of the old DT ABI. There is only one
> in-tree user and that is the Crystalfontz CFA-10036 board. In case
> this board is booting and GPIO_ACTIVE_HIGH is used for reset we
> override it to GPIO_ACTIVE_LOW.
>
Honestly, the platform has been discontinued and I don't really think
it is worth having that fixup in the tree forever.
> Reviewed-by: Rob Herring <robh@kernel.org>
> Signed-off-by: Michal Vokáč <michal.vokac@ysoft.com>
> ---
> Changes from v1:
> - Add R-by from Rob
> - Use of_property_read_variable_u32_array to read the GPIO specifier
> array instead of reading it manualy in for cycle. (Rob)
>
> arch/arm/mach-mxs/mach-mxs.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 44 insertions(+)
>
> diff --git a/arch/arm/mach-mxs/mach-mxs.c b/arch/arm/mach-mxs/mach-mxs.c
> index 1c6062d..50038d6 100644
> --- a/arch/arm/mach-mxs/mach-mxs.c
> +++ b/arch/arm/mach-mxs/mach-mxs.c
> @@ -21,6 +21,7 @@
> #include <linux/reboot.h>
> #include <linux/micrel_phy.h>
> #include <linux/of_address.h>
> +#include <linux/of_gpio.h>
> #include <linux/of_platform.h>
> #include <linux/phy.h>
> #include <linux/pinctrl/consumer.h>
> @@ -268,9 +269,52 @@ static void __init apx4devkit_init(void)
> apx4devkit_phy_fixup);
> }
>
> +#define OLED_RESET_GPIO_LEN 3
> +#define OLED_RESET_GPIO_SIZE (OLED_RESET_GPIO_LEN * sizeof(u32))
> +
> +static void __init crystalfontz_oled_reset_fixup(void)
> +{
> + struct property *newgpio;
> + struct device_node *np;
> + u32 *gpiospec;
> + int ret;
> +
> + np = of_find_compatible_node(NULL, NULL, "solomon,ssd1306fb-i2c");
> + if (!np)
> + return;
> +
> + newgpio = kzalloc(sizeof(*newgpio) + OLED_RESET_GPIO_SIZE, GFP_KERNEL);
> + if (!newgpio)
> + return;
> +
> + newgpio->value = newgpio + 1;
> + newgpio->length = OLED_RESET_GPIO_SIZE;
> + newgpio->name = kstrdup("reset-gpios", GFP_KERNEL);
> + if (!newgpio->name) {
> + kfree(newgpio);
> + return;
> + }
> +
> + gpiospec = newgpio->value;
> + ret = of_property_read_variable_u32_array(np, "reset-gpios", gpiospec,
> + OLED_RESET_GPIO_LEN, 0);
> +
> + if (ret < 0) {
> + kfree(newgpio);
> + return;
> + }
> +
> + if (!(gpiospec[2] & OF_GPIO_ACTIVE_LOW)) {
> + gpiospec[2] |= OF_GPIO_ACTIVE_LOW;
> + cpu_to_be32_array(gpiospec, gpiospec, OLED_RESET_GPIO_LEN);
> + of_update_property(np, newgpio);
> + }
> +}
> +
> static void __init crystalfontz_init(void)
> {
> update_fec_mac_prop(OUI_CRYSTALFONTZ);
> + crystalfontz_oled_reset_fixup();
> }
>
> static void __init duckbill_init(void)
> --
> 2.1.4
>
--
Alexandre Belloni, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 4/4] ARM: mxs: cfa10036: Fixup OLED display reset polarity
@ 2018-12-20 12:35 ` Alexandre Belloni
0 siblings, 0 replies; 18+ messages in thread
From: Alexandre Belloni @ 2018-12-20 12:35 UTC (permalink / raw)
To: Vokáč Michal
Cc: Rob Herring, Bartlomiej Zolnierkiewicz, Shawn Guo, Fabio Estevam,
Maxime Ripard, linux-fbdev@vger.kernel.org,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org
On 20/12/2018 12:13:57+0000, Vokáč Michal wrote:
> There was a bug in reset signal generation in ssd1307fb OLED driver.
> The display needs an active-low reset signal but the driver produced
> the correct sequence only if the GPIO used for reset was specified as
> GPIO_ACTIVE_HIGH.
>
> Now as the OLED driver is fixed it is also necessarry to implement
> a fixup for all current users of the old DT ABI. There is only one
> in-tree user and that is the Crystalfontz CFA-10036 board. In case
> this board is booting and GPIO_ACTIVE_HIGH is used for reset we
> override it to GPIO_ACTIVE_LOW.
>
Honestly, the platform has been discontinued and I don't really think
it is worth having that fixup in the tree forever.
> Reviewed-by: Rob Herring <robh@kernel.org>
> Signed-off-by: Michal Vokáč <michal.vokac@ysoft.com>
> ---
> Changes from v1:
> - Add R-by from Rob
> - Use of_property_read_variable_u32_array to read the GPIO specifier
> array instead of reading it manualy in for cycle. (Rob)
>
> arch/arm/mach-mxs/mach-mxs.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 44 insertions(+)
>
> diff --git a/arch/arm/mach-mxs/mach-mxs.c b/arch/arm/mach-mxs/mach-mxs.c
> index 1c6062d..50038d6 100644
> --- a/arch/arm/mach-mxs/mach-mxs.c
> +++ b/arch/arm/mach-mxs/mach-mxs.c
> @@ -21,6 +21,7 @@
> #include <linux/reboot.h>
> #include <linux/micrel_phy.h>
> #include <linux/of_address.h>
> +#include <linux/of_gpio.h>
> #include <linux/of_platform.h>
> #include <linux/phy.h>
> #include <linux/pinctrl/consumer.h>
> @@ -268,9 +269,52 @@ static void __init apx4devkit_init(void)
> apx4devkit_phy_fixup);
> }
>
> +#define OLED_RESET_GPIO_LEN 3
> +#define OLED_RESET_GPIO_SIZE (OLED_RESET_GPIO_LEN * sizeof(u32))
> +
> +static void __init crystalfontz_oled_reset_fixup(void)
> +{
> + struct property *newgpio;
> + struct device_node *np;
> + u32 *gpiospec;
> + int ret;
> +
> + np = of_find_compatible_node(NULL, NULL, "solomon,ssd1306fb-i2c");
> + if (!np)
> + return;
> +
> + newgpio = kzalloc(sizeof(*newgpio) + OLED_RESET_GPIO_SIZE, GFP_KERNEL);
> + if (!newgpio)
> + return;
> +
> + newgpio->value = newgpio + 1;
> + newgpio->length = OLED_RESET_GPIO_SIZE;
> + newgpio->name = kstrdup("reset-gpios", GFP_KERNEL);
> + if (!newgpio->name) {
> + kfree(newgpio);
> + return;
> + }
> +
> + gpiospec = newgpio->value;
> + ret = of_property_read_variable_u32_array(np, "reset-gpios", gpiospec,
> + OLED_RESET_GPIO_LEN, 0);
> +
> + if (ret < 0) {
> + kfree(newgpio);
> + return;
> + }
> +
> + if (!(gpiospec[2] & OF_GPIO_ACTIVE_LOW)) {
> + gpiospec[2] |= OF_GPIO_ACTIVE_LOW;
> + cpu_to_be32_array(gpiospec, gpiospec, OLED_RESET_GPIO_LEN);
> + of_update_property(np, newgpio);
> + }
> +}
> +
> static void __init crystalfontz_init(void)
> {
> update_fec_mac_prop(OUI_CRYSTALFONTZ);
> + crystalfontz_oled_reset_fixup();
> }
>
> static void __init duckbill_init(void)
> --
> 2.1.4
>
--
Alexandre Belloni, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2018-12-20 12:35 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-12-20 12:13 [PATCH v2 0/4] Fix ssd1307fb OLED driver reset Vokáč Michal
2018-12-20 12:13 ` Vokáč Michal
2018-12-20 12:13 ` [PATCH v2 1/4] dt-bindings: display: ssd1307fb: Remove reset-active-low from examples Vokáč Michal
2018-12-20 12:13 ` Vokáč Michal
2018-12-20 12:33 ` Alexandre Belloni
2018-12-20 12:33 ` Alexandre Belloni
2018-12-20 12:13 ` [PATCH v2 2/4] video: ssd1307fb: Do not hard code active-low reset sequence Vokáč Michal
2018-12-20 12:13 ` Vokáč Michal
2018-12-20 12:33 ` Alexandre Belloni
2018-12-20 12:33 ` Alexandre Belloni
2018-12-20 12:13 ` [PATCH v2 3/4] ARM: dts: imx28-cfa10036: Fix the reset gpio signal polarity Vokáč Michal
2018-12-20 12:13 ` Vokáč Michal
2018-12-20 12:34 ` Alexandre Belloni
2018-12-20 12:34 ` Alexandre Belloni
2018-12-20 12:13 ` [PATCH v2 4/4] ARM: mxs: cfa10036: Fixup OLED display reset polarity Vokáč Michal
2018-12-20 12:13 ` Vokáč Michal
2018-12-20 12:35 ` Alexandre Belloni
2018-12-20 12:35 ` Alexandre Belloni
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.