/* SPDX-License-Identifier: Apache-2.0 */

/dts-v1/;

#include <mem.h>

#define DT_FLASH_SIZE		DT_SIZE_K(152)
#define DT_SRAM_SIZE		DT_SIZE_K(24)
#define DT_DCCM_SIZE		DT_SIZE_K(8)

#define DT_FLASH_ADDR		0x40000000

#include "quark_se_c1000_ss.dtsi"

/ {
	model = "quark_se_c1000_ss_devboard";
	compatible = "intel,quark_se_c1000_ss_devboard", "intel,quark_se_c1000";

	aliases {
		led0 = &led0;
		sw0 = &button0;
		sw1 = &button1;
		uart-0 = &uart0;
		uart-1 = &uart1;
	};

	chosen {
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,console = &uart1;
		zephyr,shell-uart = &uart1;
	};

	leds {
		compatible = "gpio-leds";
		led0: led_0 {
			gpios = <&gpio0 25 0>;
			label = "LED";
		};
	};

	buttons {
		/* Push button switch 0 KEY1 */
		compatible = "gpio-keys";
		button0: button_0 {
			/* gpio flags need validation */
			gpios = <&gpio1 4 GPIO_INT_ACTIVE_LOW>;
			label = "Push button switch 0";
		};
		button1: button_1 {
			/* gpio flags need validation */
			gpios = <&gpio0 5 GPIO_INT_ACTIVE_LOW>;
			label = "Push button switch 1";
		};
	};

};

&uart1 {
	status = "ok";
	current-speed = <115200>;
};

&i2c0 {
	status = "ok";
};

&i2c1 {
	status = "ok";
};

&i2c2 {
	status = "ok";
};

&i2c3 {
	status = "ok";
};

&adc0 {
	status = "ok";
};

&spi0 {
	status = "ok";
};

&spi1 {
	status = "ok";
};
