// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright (C) 2019-20 Sean Anderson <seanga2@gmail.com>
 * Copyright (C) 2020 Western Digital Corporation or its affiliates.
 */

/dts-v1/;

#include "k210.dtsi"

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>

/ {
	model = "SiPeed MAIXDUINO";
	compatible = "sipeed,maixduino", "canaan,kendryte-k210";

	chosen {
		bootargs = "earlycon console=ttySIF0";
		stdout-path = "serial0:115200n8";
	};

	gpio-keys {
		compatible = "gpio-keys";

		boot {
			label = "BOOT";
			linux,code = <BTN_0>;
			gpios = <&gpio0 0 GPIO_ACTIVE_LOW>;
		};
	};

	vcc_3v3: regulator-3v3 {
		compatible = "regulator-fixed";
		regulator-name = "3v3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};
};

&fpioa {
	status = "okay";

	uarths_pinctrl: uarths-pinmux {
		pinmux = <K210_FPIOA(4, K210_PCF_UARTHS_RX)>, /* Header "0" */
			 <K210_FPIOA(5, K210_PCF_UARTHS_TX)>; /* Header "1" */
	};

	gpio_pinctrl: gpio-pinmux {
		pinmux = <K210_FPIOA(8, K210_PCF_GPIO0)>,
			 <K210_FPIOA(9, K210_PCF_GPIO1)>;
	};

	gpiohs_pinctrl: gpiohs-pinmux {
		pinmux = <K210_FPIOA(16, K210_PCF_GPIOHS0)>,  /* BOOT */
			 <K210_FPIOA(21, K210_PCF_GPIOHS2)>,  /* Header "2" */
			 <K210_FPIOA(22, K210_PCF_GPIOHS3)>,  /* Header "3" */
			 <K210_FPIOA(23, K210_PCF_GPIOHS4)>,  /* Header "4" */
			 <K210_FPIOA(24, K210_PCF_GPIOHS5)>,  /* Header "5" */
			 <K210_FPIOA(32, K210_PCF_GPIOHS6)>,  /* Header "6" */
			 <K210_FPIOA(15, K210_PCF_GPIOHS7)>,  /* Header "7" */
			 <K210_FPIOA(14, K210_PCF_GPIOHS8)>,  /* Header "8" */
			 <K210_FPIOA(13, K210_PCF_GPIOHS9)>,  /* Header "9" */
			 <K210_FPIOA(12, K210_PCF_GPIOHS10)>, /* Header "10" */
			 <K210_FPIOA(11, K210_PCF_GPIOHS11)>, /* Header "11" */
			 <K210_FPIOA(10, K210_PCF_GPIOHS12)>, /* Header "12" */
			 <K210_FPIOA(3,  K210_PCF_GPIOHS13)>; /* Header "13" */
	};

	i2s0_pinctrl: i2s0-pinmux {
		pinmux = <K210_FPIOA(18, K210_PCF_I2S0_SCLK)>,
			 <K210_FPIOA(19, K210_PCF_I2S0_WS)>,
			 <K210_FPIOA(20, K210_PCF_I2S0_IN_D0)>;
	};

	spi1_pinctrl: spi1-pinmux {
		pinmux = <K210_FPIOA(26, K210_PCF_SPI1_D1)>,
			 <K210_FPIOA(27, K210_PCF_SPI1_SCLK)>,
			 <K210_FPIOA(28, K210_PCF_SPI1_D0)>,
			 <K210_FPIOA(29, K210_PCF_GPIO2)>; /* cs */
	};

	i2c1_pinctrl: i2c1-pinmux {
		pinmux = <K210_FPIOA(30, K210_PCF_I2C1_SCLK)>, /* Header "scl" */
			 <K210_FPIOA(31, K210_PCF_I2C1_SDA)>;  /* Header "sda" */
	};

	i2s1_pinctrl: i2s1-pinmux {
		pinmux = <K210_FPIOA(33, K210_PCF_I2S1_WS)>,
			 <K210_FPIOA(34, K210_PCF_I2S1_IN_D0)>,
			 <K210_FPIOA(35, K210_PCF_I2S1_SCLK)>;
	};

	spi0_pinctrl: spi0-pinmux {
		pinmux = <K210_FPIOA(36, K210_PCF_GPIOHS20)>,  /* cs */
			 <K210_FPIOA(37, K210_PCF_GPIOHS21)>,  /* rst */
			 <K210_FPIOA(38, K210_PCF_GPIOHS22)>,  /* dc */
			 <K210_FPIOA(39, K210_PCF_SPI0_SCLK)>; /* wr */
	};

	dvp_pinctrl: dvp-pinmux {
		pinmux = <K210_FPIOA(40, K210_PCF_SCCB_SDA)>,
			 <K210_FPIOA(41, K210_PCF_SCCB_SCLK)>,
			 <K210_FPIOA(42, K210_PCF_DVP_RST)>,
			 <K210_FPIOA(43, K210_PCF_DVP_VSYNC)>,
			 <K210_FPIOA(44, K210_PCF_DVP_PWDN)>,
			 <K210_FPIOA(45, K210_PCF_DVP_HSYNC)>,
			 <K210_FPIOA(46, K210_PCF_DVP_XCLK)>,
			 <K210_FPIOA(47, K210_PCF_DVP_PCLK)>;
	};
};

&uarths0 {
	pinctrl-0 = <&uarths_pinctrl>;
	pinctrl-names = "default";
	status = "okay";
};

&gpio0 {
	pinctrl-0 = <&gpiohs_pinctrl>;
	pinctrl-names = "default";
	status = "okay";
};

&gpio1 {
	pinctrl-0 = <&gpio_pinctrl>;
	pinctrl-names = "default";
	status = "okay";
};

&i2s0 {
	#sound-dai-cells = <1>;
	pinctrl-0 = <&i2s0_pinctrl>;
	pinctrl-names = "default";
};

&i2c1 {
	pinctrl-0 = <&i2c1_pinctrl>;
	pinctrl-names = "default";
	clock-frequency = <400000>;
	status = "okay";
};

&spi0 {
	pinctrl-0 = <&spi0_pinctrl>;
	pinctrl-names = "default";
	num-cs = <1>;
	cs-gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;

	panel@0 {
		compatible = "sitronix,st7789v";
		reg = <0>;
		reset-gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
		dc-gpios = <&gpio0 22 0>;
		spi-max-frequency = <15000000>;
		power-supply = <&vcc_3v3>;
	};
};

&spi1 {
	pinctrl-0 = <&spi1_pinctrl>;
	pinctrl-names = "default";
	num-cs = <1>;
	cs-gpios = <&gpio1_0 2 GPIO_ACTIVE_LOW>;
	status = "okay";

	slot@0 {
		compatible = "mmc-spi-slot";
		reg = <0>;
		voltage-ranges = <3300 3300>;
		spi-max-frequency = <25000000>;
		broken-cd;
	};
};

&spi3 {
	spi-flash@0 {
		compatible = "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <50000000>;
		m25p,fast-read;
		broken-flash-reset;
	};
};
