// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
 * Copyright (C) 2020
 * Author(s): Giulio Benetti <giulio.benetti@benettiengineering.com>
 */

/dts-v1/;
#include "imxrt1020.dtsi"
#include "imxrt1020-pinfunc.h"

/ {
	model = "NXP IMXRT1020-evk board";
	compatible = "fsl,imxrt1020-evk", "fsl,imxrt1020";

	chosen {
		bootargs = "root=/dev/ram";
		stdout-path = "serial0:115200n8";
		tick-timer = &gpt1;
	};

	memory {
		device_type = "memory";
		reg = <0x80000000 0x2000000>;
	};
};

&lpuart1 { /* console */
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_lpuart1>;
	status = "okay";
};

&semc {
	/*
	 * Memory configuration from sdram datasheet IS42S16160J-6TLI
	 */
	fsl,sdram-mux = /bits/ 8 <MUX_A8_SDRAM_A8
				MUX_CSX0_SDRAM_CS1
				0
				0
				0
				0>;
	fsl,sdram-control = /bits/ 8 <MEM_WIDTH_16BITS
					BL_8
					COL_9BITS
					CL_3>;
	fsl,sdram-timing = /bits/ 8 <0x2
				     0x2
				     0x9
				     0x1
				     0x5
				     0x6

				     0x20
				     0x09
				     0x01
				     0x00

				     0x04
				     0x0A
				     0x21
				     0x50>;

	bank1: bank@0 {
		fsl,base-address = <0x80000000>;
		fsl,memory-size = <MEM_SIZE_32M>;
	};
};

&iomuxc {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_lpuart1>;

	imxrt1020-evk {
		pinctrl_lpuart1: lpuart1grp {
			fsl,pins = <
				MXRT1020_IOMUXC_GPIO_AD_B0_06_LPUART1_TX
					0xf1
				MXRT1020_IOMUXC_GPIO_AD_B0_07_LPUART1_RX
					0xf1
			>;
		};

		pinctrl_semc: semcgrp {
			fsl,pins = <
				MXRT1020_IOMUXC_GPIO_EMC_00_SEMC_DA00
					0xf1	/* SEMC_D0 */
				MXRT1020_IOMUXC_GPIO_EMC_01_SEMC_DA01
					0xf1	/* SEMC_D1 */
				MXRT1020_IOMUXC_GPIO_EMC_02_SEMC_DA02
					0xf1	/* SEMC_D2 */
				MXRT1020_IOMUXC_GPIO_EMC_03_SEMC_DA03
					0xf1	/* SEMC_D3 */
				MXRT1020_IOMUXC_GPIO_EMC_04_SEMC_DA04
					0xf1	/* SEMC_D4 */
				MXRT1020_IOMUXC_GPIO_EMC_05_SEMC_DA05
					0xf1	/* SEMC_D5 */
				MXRT1020_IOMUXC_GPIO_EMC_06_SEMC_DA06
					0xf1	/* SEMC_D6 */
				MXRT1020_IOMUXC_GPIO_EMC_07_SEMC_DA07
					0xf1	/* SEMC_D7 */
				MXRT1020_IOMUXC_GPIO_EMC_08_SEMC_DM00
					0xf1	/* SEMC_DM0 */
				MXRT1020_IOMUXC_GPIO_EMC_09_SEMC_ADDR00
					0xf1	/* SEMC_A0 */
				MXRT1020_IOMUXC_GPIO_EMC_10_SEMC_CAS
					0xf1	/* SEMC_CAS */
				MXRT1020_IOMUXC_GPIO_EMC_11_SEMC_RAS
					0xf1	/* SEMC_RAS */
				MXRT1020_IOMUXC_GPIO_EMC_12_SEMC_CS0
					0xf1	/* SEMC_CS0 */
				MXRT1020_IOMUXC_GPIO_EMC_13_SEMC_BA0
					0xf1	/* SEMC_BA0 */
				MXRT1020_IOMUXC_GPIO_EMC_14_SEMC_BA1
					0xf1	/* SEMC_BA1 */
				MXRT1020_IOMUXC_GPIO_EMC_15_SEMC_ADDR10
					0xf1	/* SEMC_A10 */
				MXRT1020_IOMUXC_GPIO_EMC_16_SEMC_ADDR00
					0xf1	/* SEMC_A0 */
				MXRT1020_IOMUXC_GPIO_EMC_17_SEMC_ADDR01
					0xf1	/* SEMC_A1 */
				MXRT1020_IOMUXC_GPIO_EMC_18_SEMC_ADDR02
					0xf1	/* SEMC_A2 */
				MXRT1020_IOMUXC_GPIO_EMC_19_SEMC_ADDR03
					0xf1	/* SEMC_A3 */
				MXRT1020_IOMUXC_GPIO_EMC_20_SEMC_ADDR04
					0xf1	/* SEMC_A4 */
				MXRT1020_IOMUXC_GPIO_EMC_21_SEMC_ADDR05
					0xf1	/* SEMC_A5 */
				MXRT1020_IOMUXC_GPIO_EMC_22_SEMC_ADDR06
					0xf1	/* SEMC_A6 */
				MXRT1020_IOMUXC_GPIO_EMC_23_SEMC_ADDR07
					0xf1	/* SEMC_A7 */
				MXRT1020_IOMUXC_GPIO_EMC_24_SEMC_ADDR08
					0xf1	/* SEMC_A8 */
				MXRT1020_IOMUXC_GPIO_EMC_25_SEMC_ADDR09
					0xf1	/* SEMC_A9 */
				MXRT1020_IOMUXC_GPIO_EMC_26_SEMC_ADDR11
					0xf1	/* SEMC_A11 */
				MXRT1020_IOMUXC_GPIO_EMC_27_SEMC_ADDR12
					0xf1	/* SEMC_A12 */
				MXRT1020_IOMUXC_GPIO_EMC_28_SEMC_DQS
					(IMX_PAD_SION | 0xf1)	/* SEMC_DQS */
				MXRT1020_IOMUXC_GPIO_EMC_29_SEMC_CKE
					0xf1	/* SEMC_CKE */
				MXRT1020_IOMUXC_GPIO_EMC_30_SEMC_CLK
					0xf1	/* SEMC_CLK */
				MXRT1020_IOMUXC_GPIO_EMC_31_SEMC_DM01
					0xf1	/* SEMC_DM01 */
				MXRT1020_IOMUXC_GPIO_EMC_32_SEMC_DATA08
					0xf1	/* SEMC_D8 */
				MXRT1020_IOMUXC_GPIO_EMC_33_SEMC_DATA09
					0xf1	/* SEMC_D9 */
				MXRT1020_IOMUXC_GPIO_EMC_34_SEMC_DATA10
					0xf1	/* SEMC_D10 */
				MXRT1020_IOMUXC_GPIO_EMC_35_SEMC_DATA11
					0xf1	/* SEMC_D11 */
				MXRT1020_IOMUXC_GPIO_EMC_36_SEMC_DATA12
					0xf1	/* SEMC_D12 */
				MXRT1020_IOMUXC_GPIO_EMC_37_SEMC_DATA13
					0xf1	/* SEMC_D13 */
				MXRT1020_IOMUXC_GPIO_EMC_38_SEMC_DATA14
					0xf1	/* SEMC_D14 */
				MXRT1020_IOMUXC_GPIO_EMC_39_SEMC_DATA15
					0xf1	/* SEMC_D15 */
			>;
		};

		pinctrl_usdhc0: usdhc0grp {
			fsl,pins = <
				MXRT1020_IOMUXC_GPIO_SD_B0_06_USDHC1_CD_B
					0x1B000
				MXRT1020_IOMUXC_GPIO_SD_B0_02_USDHC1_CMD
					0x17061
				MXRT1020_IOMUXC_GPIO_SD_B0_03_USDHC1_CLK
					0x17061
				MXRT1020_IOMUXC_GPIO_SD_B0_01_USDHC1_DATA3
					0x17061
				MXRT1020_IOMUXC_GPIO_SD_B0_00_USDHC1_DATA2
					0x17061
				MXRT1020_IOMUXC_GPIO_SD_B0_05_USDHC1_DATA1
					0x17061
				MXRT1020_IOMUXC_GPIO_SD_B0_04_USDHC1_DATA0
					0x17061
			>;
		};
	};
};

&gpt1 {
	status = "okay";
};

&usdhc1 {
	pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
	pinctrl-0 = <&pinctrl_usdhc0>;
	pinctrl-1 = <&pinctrl_usdhc0>;
	pinctrl-2 = <&pinctrl_usdhc0>;
	pinctrl-3 = <&pinctrl_usdhc0>;
	status = "okay";

	cd-gpios = <&gpio3 19 GPIO_ACTIVE_LOW>;
};
