On Sun, 23 Aug 2020 09:42:31 +0800 Shawn Guo <shawnguo@xxxxxxxxxx> wrote: > On Sat, Aug 15, 2020 at 09:33:36PM +0200, Andreas Kemnade wrote: > > This adds a devicetree for the Tolino Shine 2 HD Ebook reader. It is based > > on boards marked with "37NB-E60QF0+4A2". It is equipped with an i.MX6SL > > SoC. > > > > Expected to work: > > - Buttons > > - Wifi > > - Touchscreen > > - LED > > - uSD > > - USB > > - RTC > > > > Not working due to missing drivers: > > - Backlight (requires NTXEC driver) > > - EPD > > > > Not working due to unknown reasons: > > - deep sleep (echo standby >/sys/power/state works), > > wakeup fails when imx_gpc_pre_suspend(true) was called. > > > > Signed-off-by: Andreas Kemnade <andreas@xxxxxxxxxxxx> > > --- > > Reason for RFC: The suspend trouble might be caused by bad devicetree. > > But as the devicetree is already useful I decided to submit it. > > > > arch/arm/boot/dts/Makefile | 1 + > > arch/arm/boot/dts/imx6sl-tolino-shine2hd.dts | 582 +++++++++++++++++++ > > 2 files changed, 583 insertions(+) > > create mode 100644 arch/arm/boot/dts/imx6sl-tolino-shine2hd.dts > > > > diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile > > index e6a1cac0bfc7..c65fa3852246 100644 > > --- a/arch/arm/boot/dts/Makefile > > +++ b/arch/arm/boot/dts/Makefile > > @@ -581,6 +581,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \ > > imx6qp-zii-rdu2.dtb > > dtb-$(CONFIG_SOC_IMX6SL) += \ > > imx6sl-evk.dtb \ > > + imx6sl-tolino-shine2hd.dtb \ > > imx6sl-tolino-shine3.dtb \ > > imx6sl-warp.dtb > > dtb-$(CONFIG_SOC_IMX6SLL) += \ > > diff --git a/arch/arm/boot/dts/imx6sl-tolino-shine2hd.dts b/arch/arm/boot/dts/imx6sl-tolino-shine2hd.dts > > new file mode 100644 > > index 000000000000..7b28e19a1d98 > > --- /dev/null > > +++ b/arch/arm/boot/dts/imx6sl-tolino-shine2hd.dts > > @@ -0,0 +1,582 @@ > > +// SPDX-License-Identifier: (GPL-2.0) > > +/* > > + * Device tree for the Tolino Shine 2 HD ebook reader > > + * > > + * Name on mainboard is: 37NB-E60QF0+4A2 > > + * Serials start with: E60QF2 > > + * > > + * Copyright 2020 Andreas Kemnade > > + */ > > + > > +/dts-v1/; > > + > > +#include <dt-bindings/input/input.h> > > +#include <dt-bindings/gpio/gpio.h> > > +#include "imx6sl.dtsi" > > + > > +/ { > > + model = "Tolino Shine 2 HD"; > > + compatible = "kobo,tolino-shine2hd", "fsl,imx6sl"; > > + > > + chosen { > > + stdout-path = &uart1; > > + }; > > + > > + gpio_keys: gpio-keys { > > + compatible = "gpio-keys"; > > + pinctrl-names = "default"; > > + pinctrl-0 = <&pinctrl_gpio_keys>; > > + > > + cover { > > + label = "Cover"; > > + gpios = <&gpio5 12 GPIO_ACTIVE_LOW>; > > + linux,code = <SW_LID>; > > + linux,input-type = <EV_SW>; > > + wakeup-source; > > + }; > > + > > + fl { > > + label = "Frontlight"; > > + gpios = <&gpio3 26 GPIO_ACTIVE_LOW>; > > + linux,code = <KEY_BRIGHTNESS_CYCLE>; > > + }; > > + > > + home { > > + label = "Home"; > > + gpios = <&gpio3 25 GPIO_ACTIVE_LOW>; > > + linux,code = <KEY_HOME>; > > + }; > > + > > + power { > > + label = "Power"; > > + gpios = <&gpio5 8 GPIO_ACTIVE_LOW>; > > + linux,code = <KEY_POWER>; > > + wakeup-source; > > + }; > > + }; > > + > > + leds: leds { > > + compatible = "gpio-leds"; > > + pinctrl-names = "default"; > > + pinctrl-0 = <&pinctrl_led>; > > + > > + on { > > + label = "tolinoshine2hd:white:on"; > > + gpios = <&gpio5 13 GPIO_ACTIVE_LOW>; > > + linux,default-trigger = "timer"; > > + }; > > + }; > > + > > + memory@80000000 { > > + device_type = "memory"; > > + reg = <0x80000000 0x20000000>; > > + }; > > + > > + reg_wifi: regulator-wifi { > > + compatible = "regulator-fixed"; > > + pinctrl-names = "default"; > > + pinctrl-0 = <&pinctrl_wifi_power>; > > + regulator-name = "SD3_SPWR"; > > + regulator-min-microvolt = <3000000>; > > + regulator-max-microvolt = <3000000>; > > + gpio = <&gpio4 29 GPIO_ACTIVE_HIGH>; > > Missing enable-active-high? > no. I should rather use GPIO_ACTIVE_LOW to avoid that confusion. corresponding code in vendor kernel is the function _ntx_wifi_power_ctrl() Regards, Andreas