/*
 * Copyright (c) 2021, Microchip Technology Inc.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include <microchip/mec172xnsz.dtsi>
#include <microchip/mec172x/mec172xnsz-pinctrl.dtsi>

/ {
	model = "Microchip MEC172XEVB_ASSY6906 evaluation board";
	compatible = "microchip,mec172xevb_assy6906", "microchip,mec172xnsz";

	chosen {
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,console = &uart1;
	};

	aliases {
		led0 = &led4;
		led1 = &led3;
		i2c0 = &i2c_smb_0;
		i2c-0 = &i2c_smb_0;
		i2c1 = &i2c_smb_1;
		i2c7 = &i2c_smb_2;
		pwm-0 = &pwm0;
	};

	leds {
		compatible = "gpio-leds";
		led4: led_0 {
			/* GPIO241/CMP_VOUT0/PWM0_ALT on schematic,
			 * LED4 on silkscreen.
			 */
			gpios = <&gpio_240_276 1 GPIO_ACTIVE_HIGH>;
			label = "LED 4";
		};
		led3: led_1 {
			/* GPIO175/CMP_VOUT1/PWM8_ALT on schematic,
			 * LED5 on silkscreen.
			 */
			gpios = <&gpio_140_176 29 GPIO_ACTIVE_HIGH>;
			label = "LED 5";
		};
	};
};

&cpu0 {
	clock-frequency = <96000000>;
	status = "okay";
};

/* Initialize ECIA. Does not initialize child devices */
&ecia {
	status = "okay";
};

/* Enable aggregated GIRQ24 and GIRQ25 for eSPI virtual wires interrupts */
&girq24 {
	status = "okay";
};

&girq25 {
	status = "okay";
};

&rtimer {
	status = "okay";
};

&pcr {
	status = "okay";
};

&uart1 {
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&uart1_tx_gpio170 &uart1_rx_gpio171>;
	pinctrl-names = "default";
};

&adc0 {
	status = "okay";
	pinctrl-0 = <&adc00_gpio200 &adc03_gpio203
		     &adc04_gpio204 &adc05_gpio205>;
	pinctrl-names = "default";
};

&espi0 {
	status = "okay";
	pinctrl-0 = < &espi_reset_n_gpio061 &espi_cs_n_gpio066
		      &espi_alert_n_gpio063 &espi_clk_gpio065
		      &espi_io0_gpio070 &espi_io1_gpio071
		      &espi_io2_gpio072 &espi_io3_gpio073 >;
	pinctrl-names = "default";
};

/* enable various eSPI child devices (host facing) */
&kbc0 {
	status = "okay";
};

&acpi_ec0 {
	status = "okay";
};

&acpi_ec1 {
	status = "okay";
};

&emi0 {
	status = "okay";
};

&p80bd0 {
	status = "okay";
};

/* I2C */
&i2c_smb_0 {
	status = "okay";
	label = "I2C0";
	port_sel = <0>;

	pinctrl-0 = < &i2c00_scl_gpio004 &i2c00_sda_gpio003 >;
	pinctrl-names = "default";

	pca9555@26 {
		compatible = "nxp,pca95xx";
		label = "GPIO_P0";

		/* Depends on JP53 for device address.
		 * Pin 1-2 = A0, pin 3-4 = A1, pin 5-6 = A2.
		 * Address is: 0100<A2><A1><A0>b.
		 *
		 * Default has pin 1-2 on JP53 connected,
		 * resulting in device address 0x26.
		 */
		reg = <0x26>;

		gpio-controller;
		#gpio-cells = <2>;
	};
};

&i2c00_scl_gpio004 {
	drive-open-drain;
	output-high;
};

&i2c00_sda_gpio003 {
	drive-open-drain;
	output-high;
};

&i2c_smb_1 {
	status = "okay";
	label = "I2C1";
	port_sel = <1>;
	pinctrl-0 = <&i2c01_scl_gpio131 &i2c01_sda_gpio130>;
	pinctrl-names = "default";
};

&i2c01_scl_gpio131 {
	drive-open-drain;
	output-high;
};

&i2c01_sda_gpio130 {
	drive-open-drain;
	output-high;
};

&i2c_smb_2 {
	status = "okay";
	label = "I2C7";
	port_sel = <7>;
	pinctrl-0 = <&i2c07_scl_gpio013 &i2c07_sda_gpio012>;
	pinctrl-names = "default";
};

&i2c07_scl_gpio013 {
	drive-open-drain;
	output-high;
};

&i2c07_sda_gpio012 {
	drive-open-drain;
	output-high;
};

&spi0 {
	status = "okay";
	clock-frequency = <4000000>;
	lines = <4>;
	chip-select = <0>;
	port-sel = <0>; /* Shared SPI */

	pinctrl-0 = < &shd_cs0_n_gpio055
		      &shd_clk_gpio056
		      &shd_io0_gpio223
		      &shd_io1_gpio224
		      &shd_io2_gpio227
		      &shd_io3_gpio016 >;
	pinctrl-names = "default";
};

&kscan0 {
	status = "okay";

	pinctrl-0 = < &ksi0_gpio017
		      &ksi1_gpio020
		      &ksi2_gpio021
		      &ksi3_gpio026
		      &ksi4_gpio027
		      &ksi5_gpio030
		      &ksi6_gpio031
		      &ksi7_gpio032
		      &kso00_gpio040
		      &kso01_gpio045
		      &kso02_gpio046
		      &kso03_gpio047
		      &kso04_gpio107
		      &kso05_gpio112
		      &kso06_gpio113
		      &kso07_gpio120
		      &kso08_gpio121
		      &kso09_gpio122
		      &kso10_gpio123
		      &kso11_gpio124
		      &kso12_gpio125
		      &kso13_gpio126 >;
	pinctrl-names = "default";
};

&pwm0 {
	status = "okay";
	pinctrl-0 = <&pwm0_gpio053>;
	pinctrl-names = "default";
};

&tach0 {
	status = "okay";
	pinctrl-0 = <&tach0_gpio050>;
	pinctrl-names = "default";
};

&ps2_0 {
	status = "okay";
	pinctrl-0 = <&ps2_clk0a_gpio114 &ps2_dat0a_gpio115>;
	pinctrl-names = "default";
};
