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

#include <riscv/rv32m1.dtsi>

/ {
	aliases {
		intmux = &intmux1;
		system-lptmr = &lptmr2;
	};

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

&m0_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.
		 */

		zero_riscy_code_partition: partition@1000000 {
			label = "zero-riscy-code";
			reg = <0x01000000 0x0003ff00>;
		};

		zero_riscy_vector_partition: partition@3ff00 {
			label = "zero-riscy-vector";
			reg = <0x0003ff00 0x100>;
		};
	};
};

/*
 * INTMUX channels below are somewhat arbitrary.
 *
 * The peripherals are all placed in channel 0. 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.
 */

&intmux1 {
	interrupt-parent = <&event1>;
	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 = <&intmux1>;
	interrupts = <INTMUX_LEVEL2_IRQ(INTMUX_CH0, 6)>;
};

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

&lptmr2 {
	interrupt-parent = <&event1>;
	interrupts = <14>;
};

&gpioa {
	interrupt-parent = <&intmux1>;
	interrupts = <INTMUX_LEVEL2_IRQ(INTMUX_CH0, 25)>;
};

&gpiob {
	interrupt-parent = <&intmux1>;
	interrupts = <INTMUX_LEVEL2_IRQ(INTMUX_CH0, 26)>;
};

&gpioc {
	interrupt-parent = <&intmux1>;
	interrupts = <INTMUX_LEVEL2_IRQ(INTMUX_CH0, 27)>;
};

&gpiod {
	interrupt-parent = <&intmux1>;
	interrupts = <INTMUX_LEVEL2_IRQ(INTMUX_CH0, 28)>;
};

&gpioe {
	interrupt-parent = <&event1>;
	interrupts = <21>;
};

&uart0 {
	interrupt-parent = <&intmux1>;
	interrupts = <INTMUX_LEVEL2_IRQ(INTMUX_CH0, 21)>;
};

&uart1 {
	interrupt-parent = <&intmux1>;
	interrupts = <INTMUX_LEVEL2_IRQ(INTMUX_CH0, 22)>;
};

&uart2 {
	interrupt-parent = <&intmux1>;
	interrupts = <INTMUX_LEVEL2_IRQ(INTMUX_CH0, 23)>;
};

&uart3 {
	interrupt-parent = <&event1>;
	interrupts = <20>;
};

&i2c0 {
	interrupt-parent = <&intmux1>;
	interrupts = <INTMUX_LEVEL2_IRQ(INTMUX_CH0, 13)>;
};

&i2c1 {
	interrupt-parent = <&intmux1>;
	interrupts = <INTMUX_LEVEL2_IRQ(INTMUX_CH0, 14)>;
};

&i2c2 {
	interrupt-parent = <&intmux1>;
	interrupts = <INTMUX_LEVEL2_IRQ(INTMUX_CH0, 15)>;
};

&i2c3 {
	interrupt-parent = <&event1>;
	interrupts = <16>;
};
