// SPDX-License-Identifier: GPL-2.0
/*
 * WinLink E850-96 board device tree source
 *
 * Copyright (C) 2018 Samsung Electronics Co., Ltd.
 * Copyright (C) 2021 Linaro Ltd.
 *
 * Device tree source file for WinLink's E850-96 board which is based on
 * Samsung Exynos850 SoC.
 */

/dts-v1/;

#include "exynos850.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>

/ {
	model = "WinLink E850-96 board";
	compatible = "winlink,e850-96", "samsung,exynos850";

	aliases {
		mmc0 = &mmc_0;
		serial0 = &serial_0;
	};

	chosen {
		stdout-path = &serial_0;
	};

	/*
	 * RAM: 4 GiB (eMCP):
	 *   - 2 GiB at 0x80000000
	 *   - 2 GiB at 0x880000000
	 *
	 * 0xbab00000..0xbfffffff: secure memory (85 MiB).
	 */
	memory@80000000 {
		device_type = "memory";
		reg = <0x0 0x80000000 0x3ab00000>,
		      <0x0 0xc0000000 0x40000000>,
		      <0x8 0x80000000 0x80000000>;
	};

	gpio-keys {
		compatible = "gpio-keys";
		pinctrl-names = "default";
		pinctrl-0 = <&key_voldown_pins &key_volup_pins>;

		volume-down-key {
			label = "Volume Down";
			linux,code = <KEY_VOLUMEDOWN>;
			gpios = <&gpa1 0 GPIO_ACTIVE_LOW>;
		};

		volume-up-key {
			label = "Volume Up";
			linux,code = <KEY_VOLUMEUP>;
			gpios = <&gpa0 7 GPIO_ACTIVE_LOW>;
		};
	};

	leds {
		compatible = "gpio-leds";

		/* HEART_BEAT_LED */
		user_led1: led-1 {
			label = "yellow:user1";
			gpios = <&gpg2 2 GPIO_ACTIVE_HIGH>;
			color = <LED_COLOR_ID_YELLOW>;
			function = LED_FUNCTION_HEARTBEAT;
			linux,default-trigger = "heartbeat";
		};

		/* eMMC_LED */
		user_led2: led-2 {
			label = "yellow:user2";
			gpios = <&gpg2 3 GPIO_ACTIVE_HIGH>;
			color = <LED_COLOR_ID_YELLOW>;
			linux,default-trigger = "mmc0";
		};

		/* SD_LED */
		user_led3: led-3 {
			label = "white:user3";
			gpios = <&gpg2 4 GPIO_ACTIVE_HIGH>;
			color = <LED_COLOR_ID_WHITE>;
			function = LED_FUNCTION_SD;
			linux,default-trigger = "mmc2";
		};

		/* WIFI_LED */
		wlan_active_led: led-4 {
			label = "yellow:wlan";
			gpios = <&gpg2 6 GPIO_ACTIVE_HIGH>;
			color = <LED_COLOR_ID_YELLOW>;
			function = LED_FUNCTION_WLAN;
			linux,default-trigger = "phy0tx";
			default-state = "off";
		};

		/* BLUETOOTH_LED */
		bt_active_led: led-5 {
			label = "blue:bt";
			gpios = <&gpg2 7 GPIO_ACTIVE_HIGH>;
			color = <LED_COLOR_ID_BLUE>;
			function = LED_FUNCTION_BLUETOOTH;
			linux,default-trigger = "hci0rx";
			default-state = "off";
		};
	};

	/*
	 * RTC clock (XrtcXTI); external, must be 32.768 kHz.
	 *
	 * TODO: Remove this once RTC clock is implemented properly as part of
	 *       PMIC driver.
	 */
	rtcclk: clock-rtcclk {
		compatible = "fixed-clock";
		clock-output-names = "rtcclk";
		#clock-cells = <0>;
		clock-frequency = <32768>;
	};
};

&cmu_hsi {
	clocks = <&oscclk>, <&rtcclk>,
		 <&cmu_top CLK_DOUT_HSI_BUS>,
		 <&cmu_top CLK_DOUT_HSI_MMC_CARD>,
		 <&cmu_top CLK_DOUT_HSI_USB20DRD>;
	clock-names = "oscclk", "rtcclk", "dout_hsi_bus",
		      "dout_hsi_mmc_card", "dout_hsi_usb20drd";
};

&mmc_0 {
	status = "okay";
	mmc-hs200-1_8v;
	mmc-hs400-1_8v;
	cap-mmc-highspeed;
	non-removable;
	mmc-hs400-enhanced-strobe;
	card-detect-delay = <200>;
	clock-frequency = <800000000>;
	bus-width = <8>;
	samsung,dw-mshc-ciu-div = <3>;
	samsung,dw-mshc-sdr-timing = <0 4>;
	samsung,dw-mshc-ddr-timing = <2 4>;
	samsung,dw-mshc-hs400-timing = <0 2>;

	pinctrl-names = "default";
	pinctrl-0 = <&sd0_clk_pins &sd0_cmd_pins &sd0_rdqs_pins &sd0_nreset_pins
		     &sd0_bus1_pins &sd0_bus4_pins &sd0_bus8_pins>;
};

&oscclk {
	clock-frequency = <26000000>;
};

&pinctrl_alive {
	key_voldown_pins: key-voldown-pins {
		samsung,pins = "gpa1-0";
		samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
	};

	key_volup_pins: key-volup-pins {
		samsung,pins = "gpa0-7";
		samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
	};
};

&rtc {
	status = "okay";
	clocks = <&cmu_apm CLK_GOUT_RTC_PCLK>, <&rtcclk>;
	clock-names = "rtc", "rtc_src";
};

&serial_0 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&uart1_pins>;
};

&usi_uart {
	samsung,clkreq-on; /* needed for UART mode */
	status = "okay";
};

&watchdog_cl0 {
	status = "okay";
};

&watchdog_cl1 {
	status = "okay";
};
