/*
 * Copyright (c) 2018, Intel Corporation
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include "mec1501modular_assy6885-pinctrl.dtsi"

/ {
	model = "Microchip MEC1501MODULAR_ASSY6885 evaluation board";
	compatible = "microchip,mec1501modular_assy6885",
		     "microchip,mec1501hsz";

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

	aliases {
		pwm-0 = &pwm0;
		peci-0 = &peci0;

		i2c0 = &i2c_smb_0;
		i2c1 = &i2c_smb_1;
		kscan0 = &kscan0;
		watchdog0 = &wdog;
	};

	power-states {
		idle: idle {
			compatible = "zephyr,power-state";
			power-state-name = "suspend-to-idle";
			min-residency-us = <1000000>;
		};

		suspend_to_ram: suspend_to_ram {
			compatible = "zephyr,power-state";
			power-state-name = "suspend-to-ram";
			min-residency-us = <2000000>;
		};
	};
};

&cpu0 {
	cpu-power-states = <&idle &suspend_to_ram>;
};

&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 = <&adc04_gpio204 &adc05_gpio205
		     &adc06_gpio206 &adc07_gpio207
		     &vref2_adc_gpio067 >;
	pinctrl-names = "default";
};

&i2c_smb_0 {
	status = "okay";
	port_sel = <0>;
	sda-gpios = <MCHP_GPIO_DECODE_003 0>;
	scl-gpios = <MCHP_GPIO_DECODE_004 0>;
	pinctrl-0 = < &i2c00_scl_gpio004 &i2c00_sda_gpio003 >;
	pinctrl-names = "default";
};

&i2c_smb_1 {
	status = "okay";
	port_sel = <1>;
	sda-gpios = <MCHP_GPIO_DECODE_130 0>;
	scl-gpios = <MCHP_GPIO_DECODE_131 0>;
	pinctrl-0 = < &i2c01_scl_gpio131 &i2c01_sda_gpio130 >;
	pinctrl-names = "default";
};

&espi0 {
	status = "okay";
	io_girq = <19>;
	vw_girqs = <24 25>;
	pc_girq = <15>;
	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";
};

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

&ps2_1 {
	status = "okay";
	pinctrl-0 = <&ps2_clk1b_gpio154 &ps2_dat1b_gpio155>;
	pinctrl-names = "default";
};

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

&kscan0 {
	status = "okay";

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

&peci0 {
	status = "okay";
	pinctrl-0 = <&peci_dat_gpio042 &vref_vtt_gpio044>;
	pinctrl-1 = <&peci_dat_gpio042_sleep &vref_vtt_gpio044_sleep>;
	pinctrl-names = "default", "sleep";
};

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