// 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";

	aliases {
		serial0 = &uarths0;
	};

	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";

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

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

	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";
	status = "okay";
};

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

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

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

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