/*
 * 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 = "riscv,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 = <1804800>;
};

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

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