// 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";

	embedded-controller@43 {
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_ec>;
		compatible = "netronix,ntxec";
		reg = <0x43>;
		system-power-controller;
		interrupts-extended = <&gpio4 11 IRQ_TYPE_EDGE_FALLING>;
		#pwm-cells = <2>;
	};
};

&iomuxc {
	pinctrl_ec: ecgrp {
		fsl,pins = <
			MX50_PAD_CSPI_SS0__GPIO4_11		0x0	/* INT */
		>;
	};

	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>;
};
