// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright (C) 2019-20 Sean Anderson <seanga2@gmail.com>
 */

/dts-v1/;

#include "k210.dtsi"

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

/ {
	model = "Sipeed Maix Bit 2.0";
	compatible = "sipeed,maix-bitm", "sipeed,maix-bit", "kendryte,k210";

	chosen {
		stdout-path = "serial0:115200";
	};

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

		green {
			gpios = <&gpio1_0 4 GPIO_ACTIVE_LOW>;
		};

		red {
			gpios = <&gpio1_0 5 GPIO_ACTIVE_LOW>;
		};

		blue {
			gpios = <&gpio1_0 6 GPIO_ACTIVE_LOW>;
		};
	};

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

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

	sound {
		compatible = "simple-audio-card";
		simple-audio-card,format = "i2s";
		status = "disabled";

		simple-audio-card,cpu {
			sound-dai = <&i2s0 0>;
		};

		simple-audio-card,codec {
			sound-dai = <&mic>;
		};
	};

	mic: mic {
		#sound-dai-cells = <0>;
		compatible = "memsensing,msm61s4030h0";
		status = "disabled";
	};
};

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

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

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

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

&fpioa {
	status = "okay";

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

	fpioa_gpio: gpio {
		pinmux = <K210_FPIOA(8, K210_PCF_GPIO0)>,
			 <K210_FPIOA(9, K210_PCF_GPIO1)>,
			 <K210_FPIOA(10, K210_PCF_GPIO2)>,
			 <K210_FPIOA(11, K210_PCF_GPIO3)>,
			 <K210_FPIOA(12, K210_PCF_GPIO4)>,
			 <K210_FPIOA(13, K210_PCF_GPIO5)>,
			 <K210_FPIOA(14, K210_PCF_GPIO6)>,
			 <K210_FPIOA(15, K210_PCF_GPIO7)>;
	};

	fpioa_gpiohs: gpiohs {
		pinmux = <K210_FPIOA(16, K210_PCF_GPIOHS0)>,
			 <K210_FPIOA(17, K210_PCF_GPIOHS1)>,
			 <K210_FPIOA(21, K210_PCF_GPIOHS5)>,
			 <K210_FPIOA(22, K210_PCF_GPIOHS6)>,
			 <K210_FPIOA(23, K210_PCF_GPIOHS7)>,
			 <K210_FPIOA(24, K210_PCF_GPIOHS8)>,
			 <K210_FPIOA(25, K210_PCF_GPIOHS9)>,
			 <K210_FPIOA(30, K210_PCF_GPIOHS14)>,
			 <K210_FPIOA(31, K210_PCF_GPIOHS15)>,
			 <K210_FPIOA(32, K210_PCF_GPIOHS16)>,
			 <K210_FPIOA(33, K210_PCF_GPIOHS17)>,
			 <K210_FPIOA(34, K210_PCF_GPIOHS18)>,
			 <K210_FPIOA(35, K210_PCF_GPIOHS19)>;
	};

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

	fpioa_dvp: dvp {
		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)>;
	};

	fpioa_spi0: spi0 {
		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 */
	};

	fpioa_spi1: spi1 {
		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_GPIOHS13)>; /* cs */
	};
};

&dvp0 {
	pinctrl-0 = <&fpioa_dvp>;
	pinctrl-names = "default";
};

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

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

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

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

&spi3 {
	status = "okay";

	spi-flash@0 {
		compatible = "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <50000000>;
		spi-tx-bus-width = <4>;
		spi-rx-bus-width = <4>;
		m25p,fast-read;
		broken-flash-reset;
	};
};
