/*
 * Copyright 2018 Foundries.io Ltd
 * SPDX-License-Identifier: Apache-2.0
 */

#include <riscv/rv32m1.dtsi>

/ {
	aliases {
		intmux = &intmux0;
		system-lptmr = &lptmr0;
	};

	cpus {
		/delete-node/ cpu@1;
	};
};

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

		/* This configuration assumes the Arm cores are disabled, as
		 * these base addresses contain the Arm core vector tables if
		 * they are used.
		 */

		ri5cy_code_partition: partition@0 {
			label = "ri5cy-code";
			reg = <0x00000000 0x000fff00>;
		};

		ri5cy_vector_partition: partition@fff00 {
			label = "ri5cy-vector";
			reg = <0x000fff00 0x100>;
		};
	};
};

/*
 * INTMUX channels below are somewhat arbitrary.
 *
 * The system timer (assumed at LPTMR0) is placed on channel 0, and peripherals
 * are in channel 1. This can be overridden with overlays, e.g. to manage IRQ
 * priorities, and it will Just Work, but using fewer channels here allows
 * disabling unused ones in Kconfig, making the binary smaller.
 *
 * Each enabled channel requires 256 bytes in _sw_isr_table, so the savings for
 * disabling channels can add up.
 */

&intmux0 {
	interrupt-parent = <&event0>;
	interrupts = <INTMUX_CH0_IRQ>, <INTMUX_CH1_IRQ>, <INTMUX_CH2_IRQ>, <INTMUX_CH3_IRQ>, <INTMUX_CH4_IRQ>, <INTMUX_CH5_IRQ>, <INTMUX_CH6_IRQ>, <INTMUX_CH7_IRQ>;
	status = "okay";
};

&lptmr0 {
	interrupt-parent = <&intmux0>;
	interrupts = <INTMUX_LEVEL2_IRQ(INTMUX_CH0, 7)>;
};

&lptmr1 {
	interrupt-parent = <&intmux0>;
	interrupts = <INTMUX_LEVEL2_IRQ(INTMUX_CH1, 8)>;
};

&lptmr2 {
	interrupt-parent = <&intmux0>;
	interrupts = <INTMUX_LEVEL2_IRQ(INTMUX_CH1, 22)>;
};

&gpioa {
	interrupt-parent = <&event0>;
	interrupts = <18>;
};

&gpiob {
	interrupt-parent = <&intmux0>;
	interrupts = <INTMUX_LEVEL2_IRQ(INTMUX_CH1, 15)>;
};

&gpioc {
	interrupt-parent = <&intmux0>;
	interrupts = <INTMUX_LEVEL2_IRQ(INTMUX_CH1, 16)>;
};

&gpiod {
	interrupt-parent = <&intmux0>;
	interrupts = <INTMUX_LEVEL2_IRQ(INTMUX_CH1, 17)>;
};

&gpioe {
	interrupt-parent = <&intmux0>;
	interrupts = <INTMUX_LEVEL2_IRQ(INTMUX_CH1, 27)>;
};

&uart0 {
	interrupt-parent = <&event0>;
	interrupts = <17>;
};

&uart1 {
	interrupt-parent = <&intmux0>;
	interrupts = <INTMUX_LEVEL2_IRQ(INTMUX_CH1, 13)>;
};

&uart2 {
	interrupt-parent = <&intmux0>;
	interrupts = <INTMUX_LEVEL2_IRQ(INTMUX_CH1, 14)>;
};

&uart3 {
	interrupt-parent = <&intmux0>;
	interrupts = <INTMUX_LEVEL2_IRQ(INTMUX_CH1, 26)>;
};

&i2c0 {
	interrupt-parent = <&event0>;
	interrupts = <15>;
};

&i2c1 {
	interrupt-parent = <&event0>;
	interrupts = <16>;
};

&i2c2 {
	interrupt-parent = <&intmux0>;
	interrupts = <INTMUX_LEVEL2_IRQ(INTMUX_CH1, 11)>;
};

&i2c3 {
	interrupt-parent = <&intmux0>;
	interrupts = <INTMUX_LEVEL2_IRQ(INTMUX_CH1, 24)>;
};
