/*
 * Copyright (c) 2020 Antmicro <www.antmicro.com>
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <quicklogic/quicklogic_eos_s3.dtsi>
#include <zephyr/dt-bindings/pinctrl/quicklogic-eos-s3-pinctrl.h>
#include <zephyr/dt-bindings/input/input-event-codes.h>

/ {
	model = "QuickLogic Quick Feather board";
	compatible = "quicklogic,eos_s3";

	chosen {
		zephyr,sram = &sram0;
		zephyr,console = &uart0;
		zephyr,shell-uart = &uart0;
		zephyr,uart-pipe = &uart0;
	};

	aliases {
		led0 = &blue_led;
		led1 = &green_led;
		led2 = &red_led;
		sw0 = &button0;
	};

	leds {
		compatible = "gpio-leds";
		blue_led: led_0 {
			gpios = <&gpio 4 GPIO_ACTIVE_HIGH>;
			label = "LED 0";
		};

		green_led: led_1 {
			gpios = <&gpio 5 GPIO_ACTIVE_HIGH>;
			label = "LED 1";
		};

		red_led: led_2 {
			gpios = <&gpio 6 GPIO_ACTIVE_HIGH>;
			label = "LED 2";
		};
	};

	buttons {
		compatible = "gpio-keys";
		button0: button_0 {
			gpios = <&gpio 0 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "User Push Button 0";
			zephyr,code = <INPUT_KEY_0>;
		};
	};

	fpga0: fpga {
		status = "okay";
	};
};

&pinctrl {
	uart_rx_default: uart_rx_default {
		pinmux = <UART_RX_PAD45>;
		input-enable;
	};
	uart_tx_default: uart_tx_default {
		pinmux = <UART_TX_PAD44>;
		output-enable;
	};
};

&cpu0 {
	clock-frequency = <61440000>;
};

&gpio {
	status = "okay";
};

&uart0 {
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&uart_rx_default &uart_tx_default>;
	pinctrl-names = "default";
};
