linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] dts: ARM: add kobo glo hd ebook reader
@ 2021-01-26 17:31 Armin Preiml
  2021-01-26 18:23 ` Andreas Kemnade
  2021-01-26 18:34 ` Andreas Kemnade
  0 siblings, 2 replies; 4+ messages in thread
From: Armin Preiml @ 2021-01-26 17:31 UTC (permalink / raw)
  To: Rob Herring; +Cc: devicetree, linux-kernel, Andreas Kemnade, Armin Preiml

This patch adds basic support for the kobo glo hd reader. It defines CPU, 
memory, UART and storage.Also add pin control settings for i2c and sdhc. 

All values where extracted from the vendor kernel and u-boot sources.

Signed-off-by: Armin Preiml <apreiml@strohwolke.at>

---
 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6sl-kobo-glo-hd.dts | 164 +++++++++++++++++++++++
 2 files changed, 165 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6sl-kobo-glo-hd.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 3d1ea0b25..ba608414e 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -598,6 +598,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
 	imx6qp-zii-rdu2.dtb
 dtb-$(CONFIG_SOC_IMX6SL) += \
 	imx6sl-evk.dtb \
+	imx6sl-kobo-glo-hd.dtb \
 	imx6sl-tolino-shine2hd.dtb \
 	imx6sl-tolino-shine3.dtb \
 	imx6sl-warp.dtb
diff --git a/arch/arm/boot/dts/imx6sl-kobo-glo-hd.dts b/arch/arm/boot/dts/imx6sl-kobo-glo-hd.dts
new file mode 100644
index 000000000..759699e9e
--- /dev/null
+++ b/arch/arm/boot/dts/imx6sl-kobo-glo-hd.dts
@@ -0,0 +1,164 @@
+// SPDX-License-Identifier: (GPL-2.0)
+/*
+ * Device tree for the Kobo Glo HD ebook reader.
+ *
+ * Name on mainboard is: 37NB-E60Q90+4A1
+ * Board name in uboot sources: E60Q90  
+ *
+ * Copyright 2021 Armin Preiml
+ * based on works
+ * Copyright 2015 Freescale Semiconductor, Inc.
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/gpio/gpio.h>
+#include "imx6sl.dtsi"
+
+/ {
+	model = "Kobo Glo HD";
+	compatible = "kobo,glohd", "fsl,imx6sl";
+
+	chosen {
+		stdout-path = "serial1:115200n8";
+	};
+
+	gpio_keys: gpio-keys {
+		compatible = "gpio-keys";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_gpio_keys>;
+
+		power {
+			label = "Power";
+			gpios = <&gpio5 8 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_POWER>;
+			wakeup-source;
+		};
+	};
+
+	memory@80000000 {
+		device_type = "memory";
+		reg = <0x80000000 0x20000000>;
+	};
+};
+
+&iomuxc {
+        i2c1grp {
+                fsl,pins = <
+			MX6SL_PAD_I2C1_SCL__I2C1_SCL 0x1f8b1
+			MX6SL_PAD_I2C1_SDA__I2C1_SDA 0x1f8b1
+		>;
+	};
+
+	i2c2grp {
+                fsl,pins = <
+			MX6SL_PAD_I2C2_SCL__I2C2_SCL 0x1f8b1
+			MX6SL_PAD_I2C2_SDA__I2C2_SDA 0x1f8b1
+		>;
+	};
+
+        i2c3grp {
+                fsl,pins = <
+			MX6SL_PAD_REF_CLK_32K__I2C3_SDA 0x1f8b1
+			MX6SL_PAD_REF_CLK_24M__I2C3_SCL 0x1f8b1
+		>;
+	};
+
+        pinctrl_gpio_keys: gpio_keysgrp {
+                fsl,pins = <
+			MX6SL_PAD_SD1_DAT1__GPIO5_IO08 0x110b0
+		>;
+	};
+
+        pinctrl_uart1: uart1grp {
+                fsl,pins = <
+			MX6SL_PAD_UART1_TXD__UART1_TX_DATA 0x1b0b1
+			MX6SL_PAD_UART1_RXD__UART1_RX_DATA 0x1b0b1
+		>;
+	};
+
+	pinctrl_usdhc1: usdhc1grp { /* 50MHZ (>50MHZ: 0x1f0f9) */
+                fsl,pins = <
+			MX6SL_PAD_SD1_CLK__SD1_CLK 0x1f071
+			MX6SL_PAD_SD1_CMD__SD1_CMD 0x1f071
+			MX6SL_PAD_SD1_DAT0__SD1_DATA0 0x1f071
+			MX6SL_PAD_SD1_DAT1__SD1_DATA1 0x1f071
+			MX6SL_PAD_SD1_DAT2__SD1_DATA2 0x1f071
+			MX6SL_PAD_SD1_DAT3__SD1_DATA3 0x1f071
+			MX6SL_PAD_SD1_DAT4__SD1_DATA4 0x1f071
+			MX6SL_PAD_SD1_DAT5__SD1_DATA5 0x1f071
+			MX6SL_PAD_SD1_DAT6__SD1_DATA6 0x1f071
+			MX6SL_PAD_SD1_DAT7__SD1_DATA7 0x1f071
+		>;
+	};
+
+        pinctrl_usdhc2: usdhc2grp { 
+                fsl,pins = <
+			MX6SL_PAD_SD2_CLK__SD2_CLK 0x1f071
+			MX6SL_PAD_SD2_CMD__SD2_CMD 0x1f071
+			MX6SL_PAD_SD2_DAT0__SD2_DATA0 0x1f071
+			MX6SL_PAD_SD2_DAT1__SD2_DATA1 0x1f071
+			MX6SL_PAD_SD2_DAT2__SD2_DATA2 0x1f071
+			MX6SL_PAD_SD2_DAT3__SD2_DATA3 0x1f071
+		>;
+	};
+
+        pinctrl_usdhc3: usdhc3grp {
+                fsl,pins = <
+			MX6SL_PAD_SD3_CLK__SD3_CLK 0x1f071
+			MX6SL_PAD_SD3_CMD__SD3_CMD 0x1f071
+			MX6SL_PAD_SD3_DAT0__SD3_DATA0 0x1f071
+			MX6SL_PAD_SD3_DAT1__SD3_DATA1 0x1f071
+			MX6SL_PAD_SD3_DAT2__SD3_DATA2 0x1f071
+			MX6SL_PAD_SD3_DAT3__SD3_DATA3 0x1f071
+		>;
+	};
+
+	pinctrl_usdhc4: usdhc4grp {
+		fsl,pins = <
+			MX6SL_PAD_FEC_MDIO__SD4_CLK 0x1f071
+			MX6SL_PAD_FEC_TX_CLK__SD4_CMD 0x1f071
+			MX6SL_PAD_FEC_RX_ER__SD4_DATA0 0x1f071
+			MX6SL_PAD_FEC_CRS_DV__SD4_DATA1 0x1f071
+			MX6SL_PAD_FEC_RXD1__SD4_DATA2 0x1f071
+			MX6SL_PAD_FEC_TXD0__SD4_DATA3 0x1f071
+			MX6SL_PAD_FEC_MDC__SD4_DATA4 0x1f071
+			MX6SL_PAD_FEC_RXD0__SD4_DATA5 0x1f071
+			MX6SL_PAD_FEC_TX_EN__SD4_DATA6 0x1f071
+			MX6SL_PAD_FEC_TXD1__SD4_DATA7 0x1f071
+		>;
+	};
+};
+
+&uart1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_uart1>;
+	status = "okay";
+};
+
+&usdhc1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usdhc1>;
+	status = "okay";
+};
+
+&usdhc2 {
+	non-removable;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usdhc2>;
+	status = "okay";
+};
+
+&usdhc3 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usdhc3>;
+	status = "okay";
+};
+
+&usdhc4 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usdhc4>;
+	status = "okay";
+};
-- 
2.30.0


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

* Re: [PATCH] dts: ARM: add kobo glo hd ebook reader
  2021-01-26 17:31 [PATCH] dts: ARM: add kobo glo hd ebook reader Armin Preiml
@ 2021-01-26 18:23 ` Andreas Kemnade
  2021-01-26 18:34 ` Andreas Kemnade
  1 sibling, 0 replies; 4+ messages in thread
From: Andreas Kemnade @ 2021-01-26 18:23 UTC (permalink / raw)
  To: Armin Preiml; +Cc: Rob Herring, devicetree, linux-kernel

Hi,

On Tue, 26 Jan 2021 18:31:31 +0100
Armin Preiml <apreiml@strohwolke.at> wrote:

> This patch adds basic support for the kobo glo hd reader. It defines CPU, 
> memory, UART and storage.Also add pin control settings for i2c and sdhc. 
> 
> All values where extracted from the vendor kernel and u-boot sources.
> 
> Signed-off-by: Armin Preiml <apreiml@strohwolke.at>
> 
> ---
>  arch/arm/boot/dts/Makefile               |   1 +
>  arch/arm/boot/dts/imx6sl-kobo-glo-hd.dts | 164 +++++++++++++++++++++++
>  2 files changed, 165 insertions(+)
>  create mode 100644 arch/arm/boot/dts/imx6sl-kobo-glo-hd.dts
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index 3d1ea0b25..ba608414e 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -598,6 +598,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
>  	imx6qp-zii-rdu2.dtb
>  dtb-$(CONFIG_SOC_IMX6SL) += \
>  	imx6sl-evk.dtb \
> +	imx6sl-kobo-glo-hd.dtb \
>  	imx6sl-tolino-shine2hd.dtb \
>  	imx6sl-tolino-shine3.dtb \
>  	imx6sl-warp.dtb
> diff --git a/arch/arm/boot/dts/imx6sl-kobo-glo-hd.dts b/arch/arm/boot/dts/imx6sl-kobo-glo-hd.dts
> new file mode 100644
> index 000000000..759699e9e
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6sl-kobo-glo-hd.dts
> @@ -0,0 +1,164 @@
> +// SPDX-License-Identifier: (GPL-2.0)
> +/*
> + * Device tree for the Kobo Glo HD ebook reader.
> + *
> + * Name on mainboard is: 37NB-E60Q90+4A1
> + * Board name in uboot sources: E60Q90  
> + *
> + * Copyright 2021 Armin Preiml
> + * based on works
> + * Copyright 2015 Freescale Semiconductor, Inc.
> + */
> +
> +/dts-v1/;
> +
> +#include <dt-bindings/input/input.h>
> +#include <dt-bindings/gpio/gpio.h>
> +#include "imx6sl.dtsi"
> +
> +/ {
> +	model = "Kobo Glo HD";
> +	compatible = "kobo,glohd", "fsl,imx6sl";
> +

kobo,glohd should be added to
Documentation/devicetree/bindings/arm/fsl.yaml
[...]
> +        pinctrl_uart1: uart1grp {
> +                fsl,pins = <
> +			MX6SL_PAD_UART1_TXD__UART1_TX_DATA 0x1b0b1
> +			MX6SL_PAD_UART1_RXD__UART1_RX_DATA 0x1b0b1
> +		>;
> +	};
> +
hmm, pictures (we are talking about FCC ID NOIKBN437, right?) show two
uarts, next to each other. Which one is this? 
The other uart might be the same as in the tolino2-shinehd.

> +	pinctrl_usdhc1: usdhc1grp { /* 50MHZ (>50MHZ: 0x1f0f9) */
> +                fsl,pins = <
> +			MX6SL_PAD_SD1_CLK__SD1_CLK 0x1f071
> +			MX6SL_PAD_SD1_CMD__SD1_CMD 0x1f071
> +			MX6SL_PAD_SD1_DAT0__SD1_DATA0 0x1f071
> +			MX6SL_PAD_SD1_DAT1__SD1_DATA1 0x1f071
> +			MX6SL_PAD_SD1_DAT2__SD1_DATA2 0x1f071
> +			MX6SL_PAD_SD1_DAT3__SD1_DATA3 0x1f071
> +			MX6SL_PAD_SD1_DAT4__SD1_DATA4 0x1f071
> +			MX6SL_PAD_SD1_DAT5__SD1_DATA5 0x1f071
> +			MX6SL_PAD_SD1_DAT6__SD1_DATA6 0x1f071
> +			MX6SL_PAD_SD1_DAT7__SD1_DATA7 0x1f071
> +		>;
> +	};
> +
That is for emmc? And it is not populated, so probably better not
enable that here.

[...]

> +&uart1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart1>;
> +	status = "okay";
> +};
> +
> +&usdhc1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_usdhc1>;
> +	status = "okay";
> +};
> +
and also not add this.

I guess it might be a good idea to really compare it to the tolino2
shine hd. The boards seem to look similar, but not identical. Hmm,
different number of buttons?
The question is how similar they are. I think the Kobo Glo HD has a
good driver situation. 
The main PMIC RC5T619 (the rn5t618 driver supports that) is well
supported in mainline kernel. It should give regulators, RTC and battery
information.
The touchscreen (driver zforce_ts) should alse be supported. So
you might go further forward.

If you are really brave, you could add a complete devicetree on top
of my branch
kobo/drm-merged-5.10 of github.com/akemnade/linux. Besides of backlight,
it should give full hardware support (including a drm driver for the
display), so we can see what is different and whether we can use
a .dtsi file to define common things.
Picture of the Tolino2 internals:
https://misc.andi.de1.cc/tolino2.jpg

Regards,
Andreas

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

* Re: [PATCH] dts: ARM: add kobo glo hd ebook reader
  2021-01-26 17:31 [PATCH] dts: ARM: add kobo glo hd ebook reader Armin Preiml
  2021-01-26 18:23 ` Andreas Kemnade
@ 2021-01-26 18:34 ` Andreas Kemnade
  2021-01-27  8:57   ` Armin Preiml
  1 sibling, 1 reply; 4+ messages in thread
From: Andreas Kemnade @ 2021-01-26 18:34 UTC (permalink / raw)
  To: Armin Preiml
  Cc: Rob Herring, devicetree, linux-kernel, s.hauer, kernel, festevam,
	linux-imx, shawnguo, linux-arm-kernel

[resent with some more complete address list, get_maintainer.pl
provides more]

Hi,

On Tue, 26 Jan 2021 18:31:31 +0100
Armin Preiml <apreiml@strohwolke.at> wrote:

> This patch adds basic support for the kobo glo hd reader. It defines CPU, 
> memory, UART and storage.Also add pin control settings for i2c and sdhc. 
> 
> All values where extracted from the vendor kernel and u-boot sources.
> 
> Signed-off-by: Armin Preiml <apreiml@strohwolke.at>
> 
> ---
>  arch/arm/boot/dts/Makefile               |   1 +
>  arch/arm/boot/dts/imx6sl-kobo-glo-hd.dts | 164 +++++++++++++++++++++++
>  2 files changed, 165 insertions(+)
>  create mode 100644 arch/arm/boot/dts/imx6sl-kobo-glo-hd.dts
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index 3d1ea0b25..ba608414e 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -598,6 +598,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
>  	imx6qp-zii-rdu2.dtb
>  dtb-$(CONFIG_SOC_IMX6SL) += \
>  	imx6sl-evk.dtb \
> +	imx6sl-kobo-glo-hd.dtb \
>  	imx6sl-tolino-shine2hd.dtb \
>  	imx6sl-tolino-shine3.dtb \
>  	imx6sl-warp.dtb
> diff --git a/arch/arm/boot/dts/imx6sl-kobo-glo-hd.dts b/arch/arm/boot/dts/imx6sl-kobo-glo-hd.dts
> new file mode 100644
> index 000000000..759699e9e
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6sl-kobo-glo-hd.dts
> @@ -0,0 +1,164 @@
> +// SPDX-License-Identifier: (GPL-2.0)
> +/*
> + * Device tree for the Kobo Glo HD ebook reader.
> + *
> + * Name on mainboard is: 37NB-E60Q90+4A1
> + * Board name in uboot sources: E60Q90  
> + *
> + * Copyright 2021 Armin Preiml
> + * based on works
> + * Copyright 2015 Freescale Semiconductor, Inc.
> + */
> +
> +/dts-v1/;
> +
> +#include <dt-bindings/input/input.h>
> +#include <dt-bindings/gpio/gpio.h>
> +#include "imx6sl.dtsi"
> +
> +/ {
> +	model = "Kobo Glo HD";
> +	compatible = "kobo,glohd", "fsl,imx6sl";
> +

kobo,glohd should be added to
Documentation/devicetree/bindings/arm/fsl.yaml
[...]
> +        pinctrl_uart1: uart1grp {
> +                fsl,pins = <
> +			MX6SL_PAD_UART1_TXD__UART1_TX_DATA 0x1b0b1
> +			MX6SL_PAD_UART1_RXD__UART1_RX_DATA 0x1b0b1
> +		>;
> +	};
> +
hmm, pictures (we are talking about FCC ID NOIKBN437, right?) show two
uarts, next to each other. Which one is this? 
The other uart might be the same as in the tolino2-shinehd.

> +	pinctrl_usdhc1: usdhc1grp { /* 50MHZ (>50MHZ: 0x1f0f9) */
> +                fsl,pins = <
> +			MX6SL_PAD_SD1_CLK__SD1_CLK 0x1f071
> +			MX6SL_PAD_SD1_CMD__SD1_CMD 0x1f071
> +			MX6SL_PAD_SD1_DAT0__SD1_DATA0 0x1f071
> +			MX6SL_PAD_SD1_DAT1__SD1_DATA1 0x1f071
> +			MX6SL_PAD_SD1_DAT2__SD1_DATA2 0x1f071
> +			MX6SL_PAD_SD1_DAT3__SD1_DATA3 0x1f071
> +			MX6SL_PAD_SD1_DAT4__SD1_DATA4 0x1f071
> +			MX6SL_PAD_SD1_DAT5__SD1_DATA5 0x1f071
> +			MX6SL_PAD_SD1_DAT6__SD1_DATA6 0x1f071
> +			MX6SL_PAD_SD1_DAT7__SD1_DATA7 0x1f071
> +		>;
> +	};
> +
That is for emmc? And it is not populated, so probably better not
enable that here.

[...]

> +&uart1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart1>;
> +	status = "okay";
> +};
> +
> +&usdhc1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_usdhc1>;
> +	status = "okay";
> +};
> +
and also not add this.

I guess it might be a good idea to really compare it to the tolino2
shine hd. The boards seem to look similar, but not identical. Hmm,
different number of buttons?
The question is how similar they are. I think the Kobo Glo HD has a
good driver situation. 
The main PMIC RC5T619 (the rn5t618 driver supports that) is well
supported in mainline kernel. It should give regulators, RTC and battery
information.
The touchscreen (driver zforce_ts) should alse be supported. So
you might go further forward.

If you are really brave, you could add a complete devicetree on top
of my branch
kobo/drm-merged-5.10 of github.com/akemnade/linux. Besides of backlight,
it should give full hardware support (including a drm driver for the
display), so we can see what is different and whether we can use
a .dtsi file to define common things.
Picture of the Tolino2 internals:
https://misc.andi.de1.cc/tolino2.jpg

Regards,
Andreas

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

* Re: [PATCH] dts: ARM: add kobo glo hd ebook reader
  2021-01-26 18:34 ` Andreas Kemnade
@ 2021-01-27  8:57   ` Armin Preiml
  0 siblings, 0 replies; 4+ messages in thread
From: Armin Preiml @ 2021-01-27  8:57 UTC (permalink / raw)
  To: Andreas Kemnade
  Cc: Rob Herring, devicetree, linux-kernel, s.hauer, kernel, festevam,
	linux-imx, shawnguo, linux-arm-kernel

Thanks for the feedback. I will do the changes.

On 1/26/21 7:34 PM, Andreas Kemnade wrote:
> hmm, pictures (we are talking about FCC ID NOIKBN437, right?) show two
> uarts, next to each other. Which one is this?
It's the right one (above the Board Identifier String).
> That is for emmc? And it is not populated, so probably better not
> enable that here.
ok.
>> +&usdhc1 {
>> +	pinctrl-names = "default";
>> +	pinctrl-0 = <&pinctrl_usdhc1>;
>> +	status = "okay";
>> +};
>> +
> and also not add this.

ok.
> If you are really brave, you could add a complete devicetree on top
> of my branch
> kobo/drm-merged-5.10 of github.com/akemnade/linux. Besides of backlight,
> it should give full hardware support (including a drm driver for the
> display), so we can see what is different and whether we can use
> a .dtsi file to define common things.
This sounds great. I'll definitely check out your branch. Yes I've also
seen in the uboot and kernel sources, that they've stored the board
details as a group with flags and versions to the sd. There may be some
similarity between multiple boards.

Kind Regards
Armin

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

end of thread, other threads:[~2021-01-27  9:01 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-26 17:31 [PATCH] dts: ARM: add kobo glo hd ebook reader Armin Preiml
2021-01-26 18:23 ` Andreas Kemnade
2021-01-26 18:34 ` Andreas Kemnade
2021-01-27  8:57   ` Armin Preiml

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