// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright 2021 Andreas Kemnade
 * based on works
 * Copyright 2016 Freescale Semiconductor, Inc.
 * and
 * Copyright (C) 2014 Ricoh Electronic Devices Co., Ltd
 *
 * Netronix E70K02 board common.
 * This board is equipped with different SoCs and
 * found in ebook-readers like the Kobo Clara HD (with i.MX6SLL) and
 * the Tolino Shine 3 (with i.MX6SL)
 */
#include <dt-bindings/input/input.h>

/ {
	aliases {
		mmc0 = &usdhc1;
		mmc1 = &usdhc3;
	};

	chosen {
		stdout-path = &uart1;
	};

	gpio_keys: gpio-keys {
		compatible = "gpio-keys";

		key-power {
			label = "Power";
			gpios = <&gpio4 25 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_POWER>;
			wakeup-source;
		};

		key-cover {
			label = "Cover";
			gpios = <&gpio4 23 GPIO_ACTIVE_LOW>;
			linux,code = <SW_LID>;
			linux,input-type = <EV_SW>;
			wakeup-source;
		};

		key-pageup {
			label = "PageUp";
			gpios = <&gpio4 0 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_PAGEUP>;
		};

		key-pagedown {
			label = "PageDown";
			gpios = <&gpio4 2 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_PAGEDOWN>;
		};
	};

	leds: leds {
		compatible = "gpio-leds";

		led {
			label = "e70k02:white:on";
			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;
	};

	wifi_pwrseq: wifi-pwrseq {
		compatible = "mmc-pwrseq-simple";
		post-power-on-delay-ms = <20>;
		reset-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
	};
};

&i2c1 {
	clock-frequency = <100000>;
	status = "okay";

	lm3630a: backlight@36 {
		reg = <0x36>;
		compatible = "ti,lm3630a";
		enable-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>;

		#address-cells = <1>;
		#size-cells = <0>;

		led@0 {
			reg = <0>;
			led-sources = <0>;
			label = "backlight_warm";
			default-brightness = <0>;
			max-brightness = <255>;
		};

		led@1 {
			reg = <1>;
			led-sources = <1>;
			label = "backlight_cold";
			default-brightness = <0>;
			max-brightness = <255>;
		};
	};

	/* TODO: KX122 acceleration sensor a 0x1e */

};

&i2c2 {
	clock-frequency = <100000>;
	status = "okay";

	touchscreen@24 {
		compatible = "cypress,tt21000";
		reg = <0x24>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_cyttsp5_gpio>;
		interrupt-parent = <&gpio4>;
		interrupts = <24 IRQ_TYPE_EDGE_FALLING>;
		reset-gpios = <&gpio4 18 GPIO_ACTIVE_LOW>;
		vdd-supply = <&ldo5_reg>;
	};

	/* TODO: SY7636 PMIC for E Ink at 0x62 */

};

&i2c3 {
	clock-frequency = <100000>;
	status = "okay";

	ricoh619: pmic@32 {
		compatible = "ricoh,rc5t619";
		reg = <0x32>;
		interrupt-parent = <&gpio4>;
		interrupts = <19 IRQ_TYPE_EDGE_FALLING>;
		system-power-controller;

		regulators {
			dcdc1_reg: DCDC1 {
				regulator-name = "DCDC1";
				regulator-min-microvolt = <300000>;
				regulator-max-microvolt = <1875000>;
				regulator-always-on;
				regulator-boot-on;

				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-max-microvolt = <900000>;
					regulator-suspend-min-microvolt = <900000>;
				};
			};

			/* Core3_3V3 */
			dcdc2_reg: DCDC2 {
				regulator-name = "DCDC2";
				regulator-always-on;
				regulator-boot-on;

				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-max-microvolt = <3300000>;
					regulator-suspend-min-microvolt = <3300000>;
				};
			};

			dcdc3_reg: DCDC3 {
				regulator-name = "DCDC3";
				regulator-min-microvolt = <300000>;
				regulator-max-microvolt = <1875000>;
				regulator-always-on;
				regulator-boot-on;

				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-max-microvolt = <1140000>;
					regulator-suspend-min-microvolt = <1140000>;
				};
			};

			/* Core4_1V2 */
			dcdc4_reg: DCDC4 {
				regulator-name = "DCDC4";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
				regulator-boot-on;

				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-max-microvolt = <1140000>;
					regulator-suspend-min-microvolt = <1140000>;
				};
			};

			/* Core4_1V8 */
			dcdc5_reg: DCDC5 {
				regulator-name = "DCDC5";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				regulator-boot-on;

				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-max-microvolt = <1700000>;
					regulator-suspend-min-microvolt = <1700000>;
				};
			};

			ldo1_reg: LDO1  {
				regulator-name = "LDO1";
				regulator-boot-on;
			};

			/* Core1_3V3 */
			ldo2_reg: LDO2  {
				regulator-name = "LDO2";
				regulator-always-on;
				regulator-boot-on;

				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-max-microvolt = <3000000>;
					regulator-suspend-min-microvolt = <3000000>;
				};
			};

			/* Core5_1V2 */
			ldo3_reg: LDO3  {
				regulator-name = "LDO3";
				regulator-always-on;
				regulator-boot-on;
			};

			ldo4_reg: LDO4 {
				regulator-name = "LDO4";
				regulator-boot-on;
			};

			/* SPD_3V3 */
			ldo5_reg: LDO5 {
				regulator-name = "LDO5";
				regulator-always-on;
				regulator-boot-on;
			};

			/* DDR_0V6 */
			ldo6_reg: LDO6 {
				regulator-name = "LDO6";
				regulator-always-on;
				regulator-boot-on;
			};

			/* VDD_PWM */
			ldo7_reg: LDO7 {
				regulator-name = "LDO7";
				regulator-boot-on;
			};

			/* ldo_1v8 */
			ldo8_reg: LDO8 {
				regulator-name = "LDO8";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-boot-on;
			};

			ldo9_reg: LDO9 {
				regulator-name = "LDO9";
				regulator-boot-on;
			};

			ldo10_reg: LDO10 {
				regulator-name = "LDO10";
				regulator-boot-on;
			};

			ldortc1_reg: LDORTC1  {
				regulator-name = "LDORTC1";
				regulator-boot-on;
			};
		};
	};
};

&snvs_rtc {
	/* we are using the rtc in the pmic, not disabled in imx6sll.dtsi */
	status = "disabled";
};

&uart1 {
	status = "okay";
};

&usdhc1 {
	non-removable;
	no-1-8-v;
	status = "okay";
};

&usdhc3 {
	vmmc-supply = <&reg_wifi>;
	mmc-pwrseq = <&wifi_pwrseq>;
	cap-power-off-card;
	non-removable;
	status = "okay";
};

&usbotg1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usbotg1>;
	disable-over-current;
	srp-disable;
	hnp-disable;
	adp-disable;
	status = "okay";
};
