// SPDX-License-Identifier: (GPL-2.0) /* * Common part for Kobo Clara 2e device tree * Copyright 2024 Andreas Kemnade */ /dts-v1/; #include #include #include #include "imx6sll.dtsi" / { aliases { mmc0 = &usdhc2; mmc1 = &usdhc3; }; chosen { stdout-path = &uart1; }; gpio-keys { compatible = "gpio-keys"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_gpio_keys>; key-cover { label = "Cover"; gpios = <&gpio4 23 GPIO_ACTIVE_LOW>; linux,code = ; linux,input-type = ; wakeup-source; }; }; leds { compatible = "gpio-leds"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_led>; led { color = ; function = LED_FUNCTION_POWER; gpios = <&gpio4 17 GPIO_ACTIVE_LOW>; linux,default-trigger = "timer"; }; }; memory@80000000 { device_type = "memory"; reg = <0x80000000 0x20000000>; }; reg_wifi: regulator-wifi { compatible = "regulator-fixed"; regulator-name = "SD3_SPWR"; regulator-min-microvolt = <3000000>; regulator-max-microvolt = <3000000>; gpio = <&gpio4 29 GPIO_ACTIVE_HIGH>; enable-active-high; }; }; &clks { assigned-clocks = <&clks IMX6SLL_CLK_PLL4_AUDIO_DIV>; assigned-clock-rates = <393216000>; }; &cpu0 { arm-supply = <&buck1>; soc-supply = <&buck2>; }; &i2c1 { pinctrl-names = "default","sleep"; pinctrl-0 = <&pinctrl_i2c1>; pinctrl-1 = <&pinctrl_i2c1_sleep>; clock-frequency = <100000>; status = "okay"; /* backlight aw99703 at 0x36 */ }; &i2c2 { pinctrl-names = "default","sleep"; pinctrl-0 = <&pinctrl_i2c2>; pinctrl-1 = <&pinctrl_i2c2_sleep>; clock-frequency = <100000>; status = "okay"; /* backlight aw99703 at 0x36 */ touchscreen@38 { compatible = "focaltech,ft5426"; reg = <0x38>; pinctrl-names = "default", "suspend"; pinctrl-0 = <&pinctrl_touch_gpio>; pinctrl-1 = <&pinctrl_touch_gpio_sleep>; interrupt-parent = <&gpio4>; interrupts = <24 IRQ_TYPE_EDGE_FALLING>; reset-gpios = <&gpio4 18 GPIO_ACTIVE_LOW>; touchscreen-size-x = <1072>; touchscreen-size-y = <1448>; touchscreen-swapped-x-y; }; }; &i2c3 { /* Bus seems to be in bad state after boot, allow full recovery */ pinctrl-names = "default", "gpio"; pinctrl-0 = <&pinctrl_i2c3>; pinctrl-1 = <&pinctrl_i2c3_gpio>; sda-gpios = <&gpio3 22 GPIO_ACTIVE_HIGH>; scl-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>; clock-frequency = <100000>; status = "okay"; pmic@4b { compatible = "rohm,bd71879", "rohm,bd71828"; reg = <0x4b>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_bd71828>; interrupt-parent = <&gpio4>; interrupts = <19 IRQ_TYPE_LEVEL_LOW>; system-power-controller; clocks = <&clks 0>; #clock-cells = <0>; clock-output-names = "bd71828-32k-out"; gpio-controller; #gpio-cells = <2>; gpio-reserved-ranges = <0 1>, <2 1>; /* charge sense resistor is 30 milli-ohm */ regulators { LDO1 { name = "LDO1"; regulator-name = "ldo1"; regulator-min-microvolt = <800000>; regulator-max-microvolt = <3300000>; }; LDO2 { name = "LDO2"; regulator-name = "ldo2"; regulator-min-microvolt = <800000>; regulator-max-microvolt = <3300000>; }; LDO3 { name = "LDO3"; regulator-name = "ldo3"; regulator-min-microvolt = <800000>; regulator-max-microvolt = <3300000>; }; ldo4: LDO4 { name = "LDO4"; regulator-name = "ldo4"; regulator-always-on; regulator-min-microvolt = <1100000>; regulator-max-microvolt = <1100000>; }; LDO5 { name = "LDO5"; regulator-name = "ldo5"; regulator-always-on; regulator-min-microvolt = <800000>; regulator-max-microvolt = <3300000>; }; LDO6 { name = "LDO6"; regulator-name = "ldo6"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; }; LDO7 { name = "LDO7"; regulator-name = "ldo7"; regulator-always-on; regulator-min-microvolt = <800000>; regulator-max-microvolt = <3300000>; regulator-boot-on; }; buck1: BUCK1 { name = "BUCK1"; regulator-name = "buck1"; regulator-always-on; regulator-min-microvolt = <500000>; regulator-max-microvolt = <1400000>; regulator-boot-on; }; buck2: BUCK2 { name = "BUCK2"; regulator-name = "buck2"; regulator-always-on; regulator-min-microvolt = <500000>; regulator-max-microvolt = <2000000>; regulator-boot-on; }; BUCK3 { name = "BUCK3"; regulator-name = "buck3"; regulator-always-on; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1800000>; regulator-boot-on; }; BUCK4 { name = "BUCK4"; regulator-name = "buck4"; regulator-always-on; regulator-min-microvolt = <1000000>; regulator-max-microvolt = <1200000>; regulator-boot-on; }; BUCK5 { name = "BUCK5"; regulator-name = "buck5"; regulator-always-on; regulator-min-microvolt = <2500000>; regulator-max-microvolt = <3300000>; regulator-boot-on; }; BUCK6 { name = "BUCK6"; regulator-name = "buck6"; regulator-min-microvolt = <500000>; regulator-max-microvolt = <2000000>; }; BUCK7 { name = "BUCK7"; regulator-name = "buck7"; regulator-min-microvolt = <500000>; regulator-max-microvolt = <2000000>; }; }; }; }; &iomuxc { pinctrl_bd71828: bd71828-gpiogrp { fsl,pins = < MX6SLL_PAD_KEY_COL0__GPIO3_IO24 0x1b8b1 MX6SLL_PAD_GPIO4_IO19__GPIO4_IO19 0x1b8b1 >; }; pinctrl_gpio_keys: gpio-keysgrp { fsl,pins = < MX6SLL_PAD_GPIO4_IO25__GPIO4_IO25 0x17059 /* PWR_SW */ MX6SLL_PAD_GPIO4_IO23__GPIO4_IO23 0x17059 /* HALL_EN */ >; }; pinctrl_i2c1: i2c1grp { fsl,pins = < MX6SLL_PAD_I2C1_SCL__I2C1_SCL 0x4001f8b1 MX6SLL_PAD_I2C1_SDA__I2C1_SDA 0x4001f8b1 >; }; pinctrl_i2c1_sleep: i2c1-sleepgrp { fsl,pins = < MX6SLL_PAD_I2C1_SCL__I2C1_SCL 0x400108b1 MX6SLL_PAD_I2C1_SDA__I2C1_SDA 0x400108b1 >; }; pinctrl_i2c2: i2c2grp { fsl,pins = < MX6SLL_PAD_I2C2_SCL__I2C2_SCL 0x4001f8b1 MX6SLL_PAD_I2C2_SDA__I2C2_SDA 0x4001f8b1 >; }; pinctrl_i2c2_sleep: i2c2-sleepgrp { fsl,pins = < MX6SLL_PAD_I2C2_SCL__I2C2_SCL 0x400108b1 MX6SLL_PAD_I2C2_SDA__I2C2_SDA 0x400108b1 >; }; pinctrl_i2c3: i2c3grp { fsl,pins = < MX6SLL_PAD_REF_CLK_24M__I2C3_SCL 0x4001f8b1 MX6SLL_PAD_REF_CLK_32K__I2C3_SDA 0x4001f8b1 >; }; pinctrl_i2c3_gpio: i2c3-gpiogrp { fsl,pins = < MX6SLL_PAD_REF_CLK_24M__GPIO3_IO21 0x4001f8b1 MX6SLL_PAD_REF_CLK_32K__GPIO3_IO22 0x4001f8b1 >; }; pinctrl_led: ledgrp { fsl,pins = < MX6SLL_PAD_GPIO4_IO17__GPIO4_IO17 0x10059 >; }; pinctrl_touch_gpio: touch-gpiogrp { fsl,pins = < MX6SLL_PAD_GPIO4_IO24__GPIO4_IO24 0x17059 /* TP_INT */ MX6SLL_PAD_GPIO4_IO18__GPIO4_IO18 0x10059 /* TP_RST */ >; }; pinctrl_touch_gpio_sleep: touch-gpio-sleepgrp { fsl,pins = < MX6SLL_PAD_GPIO4_IO24__GPIO4_IO24 0x10059 /* TP_INT */ MX6SLL_PAD_GPIO4_IO18__GPIO4_IO18 0x10059 /* TP_RST */ >; }; pinctrl_uart1: uart1grp { fsl,pins = < MX6SLL_PAD_UART1_TXD__UART1_DCE_TX 0x1b0b1 MX6SLL_PAD_UART1_RXD__UART1_DCE_RX 0x1b0b1 >; }; pinctrl_uart2: uart2grp { fsl,pins = < MX6SLL_PAD_LCD_ENABLE__UART2_DCE_RX 0x41b0b1 MX6SLL_PAD_LCD_HSYNC__UART2_DCE_TX 0x41b0b1 MX6SLL_PAD_LCD_VSYNC__UART2_DCE_RTS 0x41b0b1 MX6SLL_PAD_LCD_RESET__UART2_DCE_CTS 0x41b0b1 >; }; pinctrl_uart2_sleep: uart2-sleepgrp { fsl,pins = < MX6SLL_PAD_LCD_ENABLE__GPIO2_IO16 0x10059 MX6SLL_PAD_LCD_HSYNC__GPIO2_IO17 0x10059 MX6SLL_PAD_LCD_VSYNC__GPIO2_IO18 0x10059 MX6SLL_PAD_LCD_RESET__GPIO2_IO19 0x10059 >; }; pinctrl_usbotg1: usbotg1grp { fsl,pins = < MX6SLL_PAD_EPDC_PWR_COM__USB_OTG1_ID 0x17059 >; }; pinctrl_usdhc2: usdhc2grp { fsl,pins = < MX6SLL_PAD_SD2_CMD__SD2_CMD 0x17059 MX6SLL_PAD_SD2_CLK__SD2_CLK 0x13059 MX6SLL_PAD_SD2_DATA0__SD2_DATA0 0x17059 MX6SLL_PAD_SD2_DATA1__SD2_DATA1 0x17059 MX6SLL_PAD_SD2_DATA2__SD2_DATA2 0x17059 MX6SLL_PAD_SD2_DATA3__SD2_DATA3 0x17059 >; }; pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp { fsl,pins = < MX6SLL_PAD_SD2_CMD__SD2_CMD 0x170b9 MX6SLL_PAD_SD2_CLK__SD2_CLK 0x130b9 MX6SLL_PAD_SD2_DATA0__SD2_DATA0 0x170b9 MX6SLL_PAD_SD2_DATA1__SD2_DATA1 0x170b9 MX6SLL_PAD_SD2_DATA2__SD2_DATA2 0x170b9 MX6SLL_PAD_SD2_DATA3__SD2_DATA3 0x170b9 >; }; pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp { fsl,pins = < MX6SLL_PAD_SD2_CMD__SD2_CMD 0x170f9 MX6SLL_PAD_SD2_CLK__SD2_CLK 0x130f9 MX6SLL_PAD_SD2_DATA0__SD2_DATA0 0x170f9 MX6SLL_PAD_SD2_DATA1__SD2_DATA1 0x170f9 MX6SLL_PAD_SD2_DATA2__SD2_DATA2 0x170f9 MX6SLL_PAD_SD2_DATA3__SD2_DATA3 0x170f9 >; }; pinctrl_usdhc2_sleep: usdhc2-sleepgrp { fsl,pins = < MX6SLL_PAD_SD2_CMD__GPIO5_IO04 0x100f9 MX6SLL_PAD_SD2_CLK__GPIO5_IO05 0x100f9 MX6SLL_PAD_SD2_DATA0__GPIO5_IO01 0x100f9 MX6SLL_PAD_SD2_DATA1__GPIO4_IO30 0x100f9 MX6SLL_PAD_SD2_DATA2__GPIO5_IO03 0x100f9 MX6SLL_PAD_SD2_DATA3__GPIO4_IO28 0x100f9 >; }; pinctrl_usdhc3: usdhc3grp { fsl,pins = < MX6SLL_PAD_SD3_CMD__SD3_CMD 0x11059 MX6SLL_PAD_SD3_CLK__SD3_CLK 0x11059 MX6SLL_PAD_SD3_DATA0__SD3_DATA0 0x11059 MX6SLL_PAD_SD3_DATA1__SD3_DATA1 0x11059 MX6SLL_PAD_SD3_DATA2__SD3_DATA2 0x11059 MX6SLL_PAD_SD3_DATA3__SD3_DATA3 0x11059 >; }; pinctrl_usdhc3_100mhz: usdhc3-100mhzgrp { fsl,pins = < MX6SLL_PAD_SD3_CMD__SD3_CMD 0x170b9 MX6SLL_PAD_SD3_CLK__SD3_CLK 0x170b9 MX6SLL_PAD_SD3_DATA0__SD3_DATA0 0x170b9 MX6SLL_PAD_SD3_DATA1__SD3_DATA1 0x170b9 MX6SLL_PAD_SD3_DATA2__SD3_DATA2 0x170b9 MX6SLL_PAD_SD3_DATA3__SD3_DATA3 0x170b9 >; }; pinctrl_usdhc3_200mhz: usdhc3-200mhzgrp { fsl,pins = < MX6SLL_PAD_SD3_CMD__SD3_CMD 0x170f9 MX6SLL_PAD_SD3_CLK__SD3_CLK 0x170f9 MX6SLL_PAD_SD3_DATA0__SD3_DATA0 0x170f9 MX6SLL_PAD_SD3_DATA1__SD3_DATA1 0x170f9 MX6SLL_PAD_SD3_DATA2__SD3_DATA2 0x170f9 MX6SLL_PAD_SD3_DATA3__SD3_DATA3 0x170f9 >; }; pinctrl_usdhc3_sleep: usdhc3-sleepgrp { fsl,pins = < MX6SLL_PAD_SD3_CMD__GPIO5_IO21 0x100c1 MX6SLL_PAD_SD3_CLK__GPIO5_IO18 0x100c1 MX6SLL_PAD_SD3_DATA0__GPIO5_IO19 0x100c1 MX6SLL_PAD_SD3_DATA1__GPIO5_IO20 0x100c1 MX6SLL_PAD_SD3_DATA2__GPIO5_IO16 0x100c1 MX6SLL_PAD_SD3_DATA3__GPIO5_IO17 0x100c1 >; }; pinctrl_wifi_power: wifi-powergrp { fsl,pins = < MX6SLL_PAD_SD2_DATA6__GPIO4_IO29 0x10059 >; }; }; &snvs_rtc { /* we are using the rtc in the pmic, not disabled in imx6sll.dtsi */ status = "disabled"; }; &uart1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart1>; status = "okay"; }; &uart2 { pinctrl-names = "default", "sleep"; pinctrl-0 = <&pinctrl_uart2>; pinctrl-1 = <&pinctrl_uart2_sleep>; status = "okay"; /* requires LDO4 + power enable gpio */ bluetooth { compatible = "nxp,88w8987-bt"; fw-init-baudrate = <1500000>; }; }; &usbotg1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usbotg1>; disable-over-current; srp-disable; hnp-disable; adp-disable; status = "okay"; }; &usdhc2 { pinctrl-names = "default", "state_100mhz", "state_200mhz","sleep"; pinctrl-0 = <&pinctrl_usdhc2>; pinctrl-1 = <&pinctrl_usdhc2_100mhz>; pinctrl-2 = <&pinctrl_usdhc2_200mhz>; pinctrl-3 = <&pinctrl_usdhc2_sleep>; non-removable; status = "okay"; }; &usdhc3 { pinctrl-names = "default", "state_100mhz", "state_200mhz","sleep"; pinctrl-0 = <&pinctrl_usdhc3>; pinctrl-1 = <&pinctrl_usdhc3_100mhz>; pinctrl-2 = <&pinctrl_usdhc3_200mhz>; pinctrl-3 = <&pinctrl_usdhc3_sleep>; /* card requires also ldo4 */ vmmc-supply = <®_wifi>; cap-power-off-card; non-removable; status = "okay"; };