// 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 = "Kendryte KD233";
	compatible = "canaan,kendryte-kd233", "canaan,kendryte-k210";

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

	gpio-leds {
		compatible = "gpio-leds";

		led0 {
			gpios = <&gpio0 8 GPIO_ACTIVE_LOW>;
		};

		led1 {
			gpios = <&gpio0 9 GPIO_ACTIVE_LOW>;
		};
	};

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

		key0 {
			label = "KEY0";
			linux,code = <BTN_0>;
			gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
		};
	};
};

&fpioa {
	pinctrl-0 = <&jtag_pinctrl>;
	pinctrl-names = "default";
	status = "okay";

	jtag_pinctrl: jtag-pinmux {
		pinmux = <K210_FPIOA(0, K210_PCF_JTAG_TCLK)>,
			 <K210_FPIOA(1, K210_PCF_JTAG_TDI)>,
			 <K210_FPIOA(2, K210_PCF_JTAG_TMS)>,
			 <K210_FPIOA(3, K210_PCF_JTAG_TDO)>;
	};

	uarths_pinctrl: uarths-pinmux {
		pinmux = <K210_FPIOA(4, K210_PCF_UARTHS_RX)>,
			 <K210_FPIOA(5, K210_PCF_UARTHS_TX)>;
	};

	spi0_pinctrl: spi0-pinmux {
		pinmux = <K210_FPIOA(6, K210_PCF_GPIOHS20)>,  /* cs */
			 <K210_FPIOA(7, K210_PCF_SPI0_SCLK)>, /* wr */
			 <K210_FPIOA(8, K210_PCF_GPIOHS21)>;  /* dc */
	};

	dvp_pinctrl: dvp-pinmux {
		pinmux = <K210_FPIOA(9, K210_PCF_SCCB_SCLK)>,
			 <K210_FPIOA(10, K210_PCF_SCCB_SDA)>,
			 <K210_FPIOA(11, K210_PCF_DVP_RST)>,
			 <K210_FPIOA(12, K210_PCF_DVP_VSYNC)>,
			 <K210_FPIOA(13, K210_PCF_DVP_PWDN)>,
			 <K210_FPIOA(14, K210_PCF_DVP_XCLK)>,
			 <K210_FPIOA(15, K210_PCF_DVP_PCLK)>,
			 <K210_FPIOA(17, K210_PCF_DVP_HSYNC)>;
	};

	gpiohs_pinctrl: gpiohs-pinmux {
		pinmux = <K210_FPIOA(16, K210_PCF_GPIOHS0)>,
			 <K210_FPIOA(20, K210_PCF_GPIOHS4)>, /* Rot. dip sw line 8 */
			 <K210_FPIOA(21, K210_PCF_GPIOHS5)>, /* Rot. dip sw line 4 */
			 <K210_FPIOA(22, K210_PCF_GPIOHS6)>, /* Rot. dip sw line 2 */
			 <K210_FPIOA(23, K210_PCF_GPIOHS7)>, /* Rot. dip sw line 1 */
			 <K210_FPIOA(24, K210_PCF_GPIOHS8)>,
			 <K210_FPIOA(25, K210_PCF_GPIOHS9)>,
			 <K210_FPIOA(26, K210_PCF_GPIOHS10)>;
	};

	spi1_pinctrl: spi1-pinmux {
		pinmux = <K210_FPIOA(29, K210_PCF_SPI1_SCLK)>,
			 <K210_FPIOA(30, K210_PCF_SPI1_D0)>,
			 <K210_FPIOA(31, K210_PCF_SPI1_D1)>,
			 <K210_FPIOA(32, K210_PCF_GPIOHS16)>; /* cs */
	};

	i2s0_pinctrl: i2s0-pinmux {
		pinmux = <K210_FPIOA(33, K210_PCF_I2S0_IN_D0)>,
			 <K210_FPIOA(34, K210_PCF_I2S0_WS)>,
			 <K210_FPIOA(35, K210_PCF_I2S0_SCLK)>;
	};
};

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

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

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

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

	panel@0 {
		compatible = "ilitek,ili9341";
		reg = <0>;
		dc-gpios = <&gpio0 21 GPIO_ACTIVE_HIGH>;
		spi-max-frequency = <15000000>;
		status = "disabled";
	};
};

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

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