/*
 * SPDX-License-Identifier: Apache-2.0
 *
 * Copyright (c) 2020 Linumiz
 * Author: Parthiban Nallathambi <parthiban@linumiz.com>
 *
 */

/dts-v1/;

#include <infineon/xmc4500_F100x1024.dtsi>
#include <infineon/xmc4500_F100x1024-intc.dtsi>
#include "xmc45_relax_kit-pinctrl.dtsi"

/ {
	model = "Infineon XMC4500 Relax Kit";
	compatible = "infineon,xm4500-relax-kit", "infineon,xmc4500",
						"infineon,xmc4xxx";

	aliases {
		led0 = &led1;
		die-temp0 = &die_temp;
	};

	leds {
		compatible = "gpio-leds";
		/* leds are labelled LED1 and LED2 in the relax kit documentation */
		led1: led1 {
			gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
		};
		led2: led2 {
			gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>;
		};
	};

	chosen {
		zephyr,sram = &dsram1;
		zephyr,flash = &flash0;
		zephyr,console = &usic1ch1;
		zephyr,shell-uart = &usic1ch1;
		zephyr,flash-controller = &flash_controller;
		zephyr,code-partition = &code_partition;
	};
};

&flash_controller {
	status = "okay";
};

&flash0 {
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		code_partition: partition@0 {
			reg = <0x0 0x80000>;
			read-only;
		};

		storage_partition: partition@80000 {
			label = "storage";
			reg = <0x80000 0x80000>;
		};
	};
};

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

&usic1ch1 {
	compatible = "infineon,xmc4xxx-uart";
	current-speed = <115200>;
	pinctrl-0 = <&uart_tx_p0_1_u1c1 &uart_rx_p0_0_u1c1>;
	pinctrl-names = "default";
	input-src = "DX0D";
	interrupts = <90 1 91 1>;
	interrupt-names = "tx", "rx";
	fifo-start-offset = <0>;
	fifo-tx-size = <16>;
	fifo-rx-size = <16>;
	status = "okay";
};

&adc0 {
	vref-internal-mv = <3300>;
};

&adc1 {
	vref-internal-mv = <3300>;
};

&adc2 {
	vref-internal-mv = <3300>;
};

&adc3 {
	vref-internal-mv = <3300>;
};

&gpio1 {
	status = "okay";
};
