/*
 * Copyright (c) 2021 Tokita, Hiroshi <tokita.hiroshi@gmail.com>
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <zephyr/dt-bindings/input/input-event-codes.h>

/ {
	chosen {
		zephyr,console = &usart0;
		zephyr,shell-uart = &usart0;
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,display = &lcd0;
		sdhc0 = &sdhc0;
	};

	leds {
		compatible = "gpio-leds";
		led_red: led_red {
			gpios = <&gpioc 13 GPIO_ACTIVE_LOW>;
			label = "LED_R";
		};
		led_green: led_green {
			gpios = <&gpioa 1 GPIO_ACTIVE_LOW>;
			label = "LED_G";
		};
		led_blue: led_blue {
			gpios = <&gpioa 2 GPIO_ACTIVE_LOW>;
			label = "LED_B";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		button_boot0: button_boot0 {
			label = "BUTTON_BOOT0";
			gpios = <&gpioa 8 GPIO_ACTIVE_HIGH>;
			zephyr,code = <INPUT_KEY_0>;
		};
	};

	pwmleds {
		compatible = "pwm-leds";

		/* NOTE: bridge TIMER1_CH1 and LED_GREEN (PA1) */
		pwm_led_green: pwm_led_green {
			pwms = <&pwm1 1 PWM_MSEC(20) PWM_POLARITY_NORMAL>;
			label = "PWM_LED_G";
		};
		/* NOTE: bridge TIMER1_CH2 and LED_BLUE (PA2) */
		pwm_led_blue: pwm_led_blue {
			pwms = <&pwm1 2 PWM_MSEC(20) PWM_POLARITY_NORMAL>;
			label = "PWM_LED_B";
		};
	};

	aliases {
		led0 = &led_red;
		led1 = &led_green;
		led2 = &led_blue;
		pwm-led0 = &pwm_led_green;
		pwm-led1 = &pwm_led_blue;
		sw0 = &button_boot0;
		watchdog0 = &fwdgt;
	};
};

&gpioa {
	status = "okay";
};

&gpiob {
	status = "okay";
};

&gpioc {
	status = "okay";
};

&usart0 {
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&usart0_default>;
	pinctrl-names = "default";
};

&timer1 {
	status = "okay";
	prescaler = <4096>;

	pwm1: pwm {
		status = "okay";
		pinctrl-0 = <&pwm1_default>;
		pinctrl-names = "default";
	};
};

&dac {
	status = "okay";
	pinctrl-0 = <&dac_default>;
	pinctrl-names = "default";
};

&spi0 {
	status = "okay";
	pinctrl-0 = <&spi0_default>;
	pinctrl-names = "default";

	cs-gpios = <&gpiob 2 GPIO_ACTIVE_LOW>;

	/* longan nano has LCD with st7735s controller.
	 * It can use with st7735r driver.
	 */
	lcd0: lcd@0 {
		compatible = "sitronix,st7735r";
		reg = <0>;
		status = "okay";
		reset-gpios = <&gpiob 1 GPIO_ACTIVE_LOW>;
		cmd-data-gpios = <&gpiob 0 GPIO_ACTIVE_LOW>;
		width = <160>;
		height = <80>;
		inversion-on;
		rgb-is-inverted;
		x-offset = <1>;
		y-offset = <26>;
		pwctr1 = [62 02 04];
		pwctr2 = [C0];
		pwctr3 = [0D 00];
		pwctr4 = [8D 6A];
		pwctr5 = [8D EE];
		invctr = <3>;
		frmctr1 = [05 3A 3A];
		frmctr2 = [05 3A 3A];
		frmctr3 = [05 3A 3A 05 3A 3A];
		vmctr1 = <14>;
		gamctrp1 = [10 0E 02 03 0E 07 02 07 0A 12 27 37 00 0D 0E 10];
		gamctrn1 = [10 0E 03 03 0F 06 02 08 0A 13 26 36 00 0D 0E 10];
		colmod = <5>;
		madctl = <120>;
		caset = [00 01 00 a0];
		raset = [00 1a 00 69];

		spi-max-frequency = <4000000>;
	};
};

&spi1 {
	status = "okay";
	pinctrl-0 = <&spi1_default>;
	pinctrl-names = "default";

	cs-gpios = <&gpiob 12 GPIO_ACTIVE_LOW>;

	sdhc0: sdhc@0 {
		compatible = "zephyr,sdhc-spi-slot";
		reg = <0>;
		status = "okay";
		spi-max-frequency = <24000000>;
		mmc {
			compatible = "zephyr,sdmmc-disk";
			status = "okay";
		};
	};
};

&adc0 {
	status = "okay";
	pinctrl-0 = <&adc0_default>;
	pinctrl-names = "default";
};

&fwdgt {
	status = "okay";
};
