| // SPDX-License-Identifier: GPL-2.0+ |
| // Copyright 2019 Jonathan Neuschäfer |
| // |
| // The Kobo Aura e-book reader, model N514. The mainboard is marked as E606F0B. |
| |
| /dts-v1/; |
| #include "imx50.dtsi" |
| #include <dt-bindings/input/input.h> |
| #include <dt-bindings/interrupt-controller/irq.h> |
| |
| / { |
| model = "Kobo Aura (N514)"; |
| compatible = "kobo,aura", "fsl,imx50"; |
| |
| chosen { |
| stdout-path = "serial1:115200n8"; |
| }; |
| |
| memory@70000000 { |
| device_type = "memory"; |
| reg = <0x70000000 0x10000000>; |
| }; |
| |
| gpio-leds { |
| compatible = "gpio-leds"; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&pinctrl_leds>; |
| |
| on { |
| label = "kobo_aura:orange:on"; |
| gpios = <&gpio6 24 GPIO_ACTIVE_LOW>; |
| panic-indicator; |
| }; |
| }; |
| |
| gpio-keys { |
| compatible = "gpio-keys"; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&pinctrl_gpiokeys>; |
| |
| power { |
| label = "Power Button"; |
| gpios = <&gpio4 10 GPIO_ACTIVE_LOW>; |
| linux,code = <KEY_POWER>; |
| }; |
| |
| hallsensor { |
| label = "Hallsensor"; |
| gpios = <&gpio5 15 GPIO_ACTIVE_LOW>; |
| linux,code = <KEY_RESERVED>; |
| linux,input-type = <EV_SW>; |
| }; |
| |
| frontlight { |
| label = "Frontlight"; |
| gpios = <&gpio4 1 GPIO_ACTIVE_LOW>; |
| linux,code = <KEY_DISPLAYTOGGLE>; |
| }; |
| }; |
| |
| sd2_pwrseq: pwrseq { |
| compatible = "mmc-pwrseq-simple"; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&pinctrl_sd2_reset>; |
| reset-gpios = <&gpio4 17 GPIO_ACTIVE_LOW>; |
| }; |
| |
| sd2_vmmc: gpio-regulator { |
| compatible = "regulator-gpio"; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&pinctrl_sd2_vmmc>; |
| regulator-name = "vmmc"; |
| states = <3300000 0>; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| enable-gpio = <&gpio4 12 GPIO_ACTIVE_LOW>; |
| startup-delay-us = <100000>; |
| }; |
| }; |
| |
| &esdhc1 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&pinctrl_sd1>; |
| max-frequency = <50000000>; |
| bus-width = <4>; |
| cd-gpios = <&gpio5 17 GPIO_ACTIVE_LOW>; |
| disable-wp; |
| status = "okay"; |
| |
| /* External µSD card */ |
| }; |
| |
| &esdhc2 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&pinctrl_sd2>; |
| bus-width = <4>; |
| max-frequency = <50000000>; |
| disable-wp; |
| mmc-pwrseq = <&sd2_pwrseq>; |
| vmmc-supply = <&sd2_vmmc>; |
| status = "okay"; |
| |
| /* CyberTan WC121 SDIO WiFi (BCM43362) */ |
| }; |
| |
| &esdhc3 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&pinctrl_sd3>; |
| bus-width = <8>; |
| non-removable; |
| max-frequency = <50000000>; |
| disable-wp; |
| status = "okay"; |
| |
| /* Internal eMMC */ |
| }; |
| |
| &i2c1 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&pinctrl_i2c1>; |
| status = "okay"; |
| |
| touchscreen@15 { |
| reg = <0x15>; |
| compatible = "elan,ektf2132"; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&pinctrl_ts>; |
| power-gpios = <&gpio4 9 GPIO_ACTIVE_HIGH>; |
| interrupts-extended = <&gpio5 13 IRQ_TYPE_EDGE_FALLING>; |
| }; |
| }; |
| |
| &i2c2 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&pinctrl_i2c2>; |
| status = "okay"; |
| |
| /* TODO: TPS65185 PMIC for E Ink at 0x68 */ |
| }; |
| |
| &i2c3 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&pinctrl_i2c3>; |
| status = "okay"; |
| |
| /* TODO: embedded controller at 0x43 */ |
| }; |
| |
| &iomuxc { |
| pinctrl_gpiokeys: gpiokeysgrp { |
| fsl,pins = < |
| MX50_PAD_CSPI_MISO__GPIO4_10 0x0 |
| MX50_PAD_SD2_D7__GPIO5_15 0x0 |
| MX50_PAD_KEY_ROW0__GPIO4_1 0x0 |
| >; |
| }; |
| |
| pinctrl_i2c1: i2c1grp { |
| fsl,pins = < |
| MX50_PAD_I2C1_SCL__I2C1_SCL 0x400001fd |
| MX50_PAD_I2C1_SDA__I2C1_SDA 0x400001fd |
| >; |
| }; |
| |
| pinctrl_i2c2: i2c2grp { |
| fsl,pins = < |
| MX50_PAD_I2C2_SCL__I2C2_SCL 0x400001fd |
| MX50_PAD_I2C2_SDA__I2C2_SDA 0x400001fd |
| >; |
| }; |
| |
| pinctrl_i2c3: i2c3grp { |
| fsl,pins = < |
| MX50_PAD_I2C3_SCL__I2C3_SCL 0x400001fd |
| MX50_PAD_I2C3_SDA__I2C3_SDA 0x400001fd |
| >; |
| }; |
| |
| pinctrl_leds: ledsgrp { |
| fsl,pins = < |
| MX50_PAD_PWM1__GPIO6_24 0x0 |
| >; |
| }; |
| |
| pinctrl_sd1: sd1grp { |
| fsl,pins = < |
| MX50_PAD_SD1_CMD__ESDHC1_CMD 0x1e4 |
| MX50_PAD_SD1_CLK__ESDHC1_CLK 0xd4 |
| MX50_PAD_SD1_D0__ESDHC1_DAT0 0x1d4 |
| MX50_PAD_SD1_D1__ESDHC1_DAT1 0x1d4 |
| MX50_PAD_SD1_D2__ESDHC1_DAT2 0x1d4 |
| MX50_PAD_SD1_D3__ESDHC1_DAT3 0x1d4 |
| |
| MX50_PAD_SD2_CD__GPIO5_17 0x0 |
| >; |
| }; |
| |
| pinctrl_sd2: sd2grp { |
| fsl,pins = < |
| MX50_PAD_SD2_CMD__ESDHC2_CMD 0x1e4 |
| MX50_PAD_SD2_CLK__ESDHC2_CLK 0xd4 |
| MX50_PAD_SD2_D0__ESDHC2_DAT0 0x1d4 |
| MX50_PAD_SD2_D1__ESDHC2_DAT1 0x1d4 |
| MX50_PAD_SD2_D2__ESDHC2_DAT2 0x1d4 |
| MX50_PAD_SD2_D3__ESDHC2_DAT3 0x1d4 |
| >; |
| }; |
| |
| pinctrl_sd2_reset: sd2-resetgrp { |
| fsl,pins = < |
| MX50_PAD_ECSPI2_MOSI__GPIO4_17 0x0 |
| >; |
| }; |
| |
| pinctrl_sd2_vmmc: sd2-vmmcgrp { |
| fsl,pins = < |
| MX50_PAD_ECSPI1_SCLK__GPIO4_12 0x0 |
| >; |
| }; |
| |
| pinctrl_sd3: sd3grp { |
| fsl,pins = < |
| MX50_PAD_SD3_CMD__ESDHC3_CMD 0x1e4 |
| MX50_PAD_SD3_CLK__ESDHC3_CLK 0xd4 |
| MX50_PAD_SD3_D0__ESDHC3_DAT0 0x1d4 |
| MX50_PAD_SD3_D1__ESDHC3_DAT1 0x1d4 |
| MX50_PAD_SD3_D2__ESDHC3_DAT2 0x1d4 |
| MX50_PAD_SD3_D3__ESDHC3_DAT3 0x1d4 |
| MX50_PAD_SD3_D4__ESDHC3_DAT4 0x1d4 |
| MX50_PAD_SD3_D5__ESDHC3_DAT5 0x1d4 |
| MX50_PAD_SD3_D6__ESDHC3_DAT6 0x1d4 |
| MX50_PAD_SD3_D7__ESDHC3_DAT7 0x1d4 |
| >; |
| }; |
| |
| pinctrl_ts: tsgrp { |
| fsl,pins = < |
| MX50_PAD_CSPI_MOSI__GPIO4_9 0x0 |
| MX50_PAD_SD2_D5__GPIO5_13 0x0 |
| >; |
| }; |
| |
| pinctrl_uart2: uart2grp { |
| fsl,pins = < |
| MX50_PAD_UART2_TXD__UART2_TXD_MUX 0x1e4 |
| MX50_PAD_UART2_RXD__UART2_RXD_MUX 0x1e4 |
| >; |
| }; |
| |
| pinctrl_usbphy: usbphygrp { |
| fsl,pins = < |
| MX50_PAD_ECSPI2_SS0__GPIO4_19 0x0 |
| >; |
| }; |
| }; |
| |
| &uart2 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&pinctrl_uart2>; |
| status = "okay"; |
| }; |
| |
| &usbotg { |
| phy_type = "utmi_wide"; |
| dr_mode = "peripheral"; |
| status = "okay"; |
| }; |
| |
| &usbphy0 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&pinctrl_usbphy>; |
| vbus-detect-gpio = <&gpio4 19 GPIO_ACTIVE_LOW>; |
| }; |