/*
 * Copyright (c) 2023 Nuvoton Technology Corporation.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include <nuvoton/npcx4m8f.dtsi>
#include "npcx4m8f_evb-pinctrl.dtsi"

/ {
	model = "Nuvoton NPCX4M8F evaluation board";

	chosen {
		zephyr,sram = &sram0;
		zephyr,console = &uart1;
		zephyr,flash = &flash0;
		zephyr,keyboard-scan = &kscan_input;
	};

	aliases {
		pwm-led0 = &pwm_led0_green;
		led0 = &gpio_led_red;
		pwm-0 = &pwm6;
		i2c-0 = &i2c0_0;
		watchdog0 = &twd0;
		peci-0 = &peci0;
		spi-flash0 = &int_flash;
		kscan0 = &kscan_input;
	};

	leds-pwm {
		compatible = "pwm-leds";
		pwm_led0_green: pwm_led_0 {
			pwms = <&pwm6 0 PWM_MSEC(20) PWM_POLARITY_INVERTED>;
			label = "User D7 green";
		};
	};

	leds-gpio {
		compatible = "gpio-leds";
		gpio_led_red: led_0 {
			gpios = <&gpio6 0 GPIO_ACTIVE_LOW>;
			label = "User D8 red";
		};
	};
};

/* Overwrite default device properties with overlays in board dt file here. */
&uart1 {
	status = "okay";
	current-speed = <115200>;
	/* Use UART1_SL2 ie. PIN64.65 */
	pinctrl-0 = <&uart1_2_sin_gp64 &uart1_2_sout_gp65>;
	pinctrl-names = "default";
};

&pwm6 {
	status = "okay";
	pinctrl-0 = <&pwm6_gpc0>;
	pinctrl-names = "default";
};

&adc0 {
	status = "okay";
	/* Use adc0 channel 0 and 2 for 'adc_api' driver tests */
	pinctrl-0 = <&adc0_chan0_gp45 &adc0_chan2_gp43>;
	pinctrl-names = "default";
};

&espi0 {
	status = "okay";
	pinctrl-0 = <&espi_lpc_gp46_47_51_52_53_54_55_57>;
	pinctrl-names = "default";
};

&i2c0_0 {
	status = "okay";
	pinctrl-0 = <&i2c0_0_sda_scl_gpb4_b5>;
	pinctrl-names = "default";
	clock-frequency = <I2C_BITRATE_FAST>;
};

&i2c_ctrl0 {
	status = "okay";
};

&tach1 {
	status = "okay";
	pinctrl-0 = <&ta1_1_in_gp40>;
	pinctrl-names = "default";
	port = <NPCX_TACH_PORT_A>;
	sample-clk = <NPCX_TACH_FREQ_LFCLK>;
	pulses-per-round = <1>;
};

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

&kbd {
	/* Demonstrate a 13 x 8 keyboard matrix on evb */
	pinctrl-0 = <&ksi0_gp31 &ksi1_gp30 &ksi2_gp27 &ksi3_gp26
		     &ksi4_gp25 &ksi5_gp24 &ksi6_gp23 &ksi7_gp22
		     &kso00_gp21 &kso01_gp20 &kso02_gp17 &kso03_gp16
		     &kso04_gp15 &kso05_gp14 &kso06_gp13 &kso07_gp12
		     &kso08_gp11 &kso09_gp10 &kso10_gp07 &kso11_gp06
		     &kso12_gp05>;
	pinctrl-names = "default";
	row-size = <8>;
	col-size = <13>;
	status = "okay";

	kscan_input: kscan-input {
		compatible = "zephyr,kscan-input";
	};
};
