/*
 * Copyright (c) ITE, All Rights Reserved
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include <zephyr/dt-bindings/gpio/gpio.h>
#include <ite/it82xx2.dtsi>
#include <ite/it8xxx2-pinctrl-map.dtsi>

/ {
	model = "IT82XX2 EV-Board";
	compatible = "ite,it82xx2-evb";

	aliases {
		i2c-0 = &i2c0;
		peci-0 = &peci0;
		led0 = &led0;
		kscan0 = &kscan0;
		watchdog0 = &twd0;
		pwm-0 = &pwm0;
	};

	chosen {
		zephyr,console = &uart1;
		zephyr,shell-uart = &uart1;
		zephyr,bt-uart = &uart2;
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,flash-controller = &flashctrl;
		zephyr,code-partition = &slot0_partition;
		zephyr,keyboard-scan = &kscan0;
	};

	leds {
		compatible = "gpio-leds";
		led0: led_0 {
			gpios = <&gpioc 0 GPIO_ACTIVE_HIGH>;
			label = "Green LED";
		};
	};
};

&adc0 {
	status = "okay";
	pinctrl-0 = <&adc0_ch3_gpi3_default>;
	pinctrl-names = "default";
};

/* voltage comparator for test */
&vcmp0 {
	status = "okay";
	scan-period = <IT8XXX2_VCMP_SCAN_PERIOD_600US>;
	comparison = <IT8XXX2_VCMP_GREATER>;
	threshold-mv = <2000>;
	io-channels = <&adc0 3>;
};

&i2c0 {
	status = "okay";
	clock-frequency = <I2C_BITRATE_STANDARD>;
	pinctrl-0 = <&i2c0_clk_gpb3_default
		     &i2c0_data_gpb4_default>;
	pinctrl-names = "default";
};

&i2c1 {
	status = "okay";
	clock-frequency = <I2C_BITRATE_STANDARD>;
	pinctrl-0 = <&i2c1_clk_gpc1_default
		     &i2c1_data_gpc2_default>;
	pinctrl-names = "default";
};

&i2c2 {
	status = "okay";
	clock-frequency = <I2C_BITRATE_STANDARD>;
	pinctrl-0 = <&i2c2_clk_gpf6_default
		     &i2c2_data_gpf7_default>;
	pinctrl-names = "default";
};

&i2c3 {
	status = "okay";
	clock-frequency = <I2C_BITRATE_STANDARD>;
	pinctrl-0 = <&i2c3_clk_gph1_default
		     &i2c3_data_gph2_default>;
	pinctrl-names = "default";
};

&i2c4 {
	status = "okay";
	clock-frequency = <I2C_BITRATE_STANDARD>;
	pinctrl-0 = <&i2c4_clk_gpe0_default
		     &i2c4_data_gpe7_default>;
	pinctrl-names = "default";
};

&i2c5 {
	status = "okay";
	clock-frequency = <I2C_BITRATE_STANDARD>;
	pinctrl-0 = <&i2c5_clk_gpa4_default
		     &i2c5_data_gpa5_default>;
	pinctrl-names = "default";
};

&uart1 {
	status = "okay";
	current-speed = <115200>;
	clock-frequency = <1843200>;
};

&uart2 {
	status = "okay";
	current-speed = <460800>;
	clock-frequency = <1843200>;
};

&ite_uart1_wrapper {
	status = "okay";
	pinctrl-0 = <&uart1_rx_gpb0_default
		     &uart1_tx_gpb1_default>;
	pinctrl-names = "default";
};

&ite_uart2_wrapper {
	status = "okay";
	pinctrl-0 = <&uart2_rx_gpf0_default
		     &uart2_tx_gpf1_default>;
	pinctrl-names = "default";
};

/* pwm for test */
&pwm0 {
	status = "okay";
	prescaler-cx = <PWM_PRESCALER_C6>;
	/*
	 * If we need pwm output in ITE chip power saving mode,
	 * then we should set frequency <=324Hz.
	 */
	pwm-output-frequency = <324>;
	pinctrl-0 = <&pwm0_gpa0_default>;
	pinctrl-names = "default";
};

/* pwm for fan */
&pwm7 {
	status = "okay";
	prescaler-cx = <PWM_PRESCALER_C4>;
	pwm-output-frequency = <30000>;
	pinctrl-0 = <&pwm7_gpa7_default>;
	pinctrl-names = "default";
};

/* fan tachometer sensor */
&tach0 {
	status = "okay";
	channel = <IT8XXX2_TACH_CHANNEL_A>;
	pulses-per-round = <2>;
	pinctrl-0 = <&tach0a_gpd6_default>;
	pinctrl-names = "default";
};

&kscan0 {
	status = "okay";
	pinctrl-0 = <&ksi0_default
		     &ksi1_default
		     &ksi2_default
		     &ksi3_default
		     &ksi4_default
		     &ksi5_default
		     &ksi6_default
		     &ksi7_default
		     &kso0_default
		     &kso1_default
		     &kso2_default
		     &kso3_default
		     &kso4_default
		     &kso5_default
		     &kso6_default
		     &kso7_default
		     &kso8_default
		     &kso9_default
		     &kso10_default
		     &kso11_default
		     &kso12_default
		     &kso13_default
		     &kso14_default
		     &kso15_default>;
	pinctrl-names = "default";
};

&peci0 {
	status = "okay";
	pinctrl-0 = <&peci_gpf6_default>;
	pinctrl-names = "default";
};

zephyr_udc0: &usb0 {
	status = "okay";
	pinctrl-0 = <&usb0_dm_gph5_default
		     &usb0_dp_gph6_default>;
	pinctrl-names = "default";
};

&flash0 {
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;
		slot0_partition: partition@0 {
			label = "image-0";
			reg = <0x00000000 DT_SIZE_K(128)>;
		};
		slot1_partition: partition@20000 {
			label = "image-1";
			reg = <0x00020000 DT_SIZE_K(128)>;
		};
		storage_partition: partition@40000 {
			label = "storage";
			reg = <0x00040000 DT_SIZE_K(256)>;
		};
	};
};
