Linux Audio

Check our new training course

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

#include <arm/armv7-m.dtsi>
#include <mem.h>
#include <freq.h>
#include <zephyr/dt-bindings/i2c/i2c.h>
#include <zephyr/dt-bindings/gpio/gpio.h>

/ {
	clocks {
		uartclk: apb-pclk {
			compatible = "fixed-clock";
			clock-frequency = <DT_FREQ_M(24)>;
			#clock-cells = <0>;
		};
	};

	cpus {
		#address-cells = <1>;
		#size-cells = <0>;

		cpu0: cpu@0 {
			compatible = "arm,cortex-m4f";
			reg = <0>;
		};
	};

	/* TCM */
	tcm: tcm@10000000 {
		compatible = "zephyr,memory-region";
		reg = <0x10000000 0x10000>;
		zephyr,memory-region = "ITCM";
	};

	/* SRAM */
	sram0: memory@10010000 {
		compatible = "mmio-sram";
		reg = <0x10010000 0xB0000>;
	};

	xip0: memory@52000000 {
		compatible = "zephyr,memory-region";
		reg = <0x52000000 0x2000000>;
		zephyr,memory-region = "XIP0";
	};

	xip1: memory@54000000 {
		compatible = "zephyr,memory-region";
		reg = <0x54000000 0x2000000>;
		zephyr,memory-region = "XIP1";
	};

	xip2: memory@56000000 {
		compatible = "zephyr,memory-region";
		reg = <0x56000000 0x2000000>;
		zephyr,memory-region = "XIP2";
	};

	soc {
		compatible = "ambiq,apollo3p-blue", "ambiq,apollo3x", "simple-bus";

		flash: flash-controller@c000 {
			compatible = "ambiq,flash-controller";
			reg = <0x0000c000 0x1f4000>;

			#address-cells = <1>;
			#size-cells = <1>;

			/* Flash region */
			flash0: flash@c000 {
				compatible = "soc-nv-flash";
				reg = <0x0000c000 0x1f4000>;
			};
		};

		pwrcfg: pwrcfg@40021000 {
			compatible = "ambiq,pwrctrl";
			reg = <0x40021000 0x400>;
			#pwrcfg-cells = <2>;
		};

		stimer0: stimer@40008140 {
			compatible = "ambiq,stimer";
			reg = <0x40008140 0x80>;
			interrupts = <23 0>;
			status = "okay";
		};

		counter0: counter@40008000 {
			compatible = "ambiq,counter";
			reg = <0x40008000 0x20>;
			interrupts = <14 0>;
			clock-frequency = <DT_FREQ_M(3)>;
			clk-source = <2>;
			status = "disabled";
		};

		counter1: counter@40008020 {
			compatible = "ambiq,counter";
			reg = <0x40008020 0x20>;
			interrupts = <14 0>;
			clock-frequency = <DT_FREQ_M(3)>;
			clk-source = <2>;
			status = "disabled";
		};

		counter2: counter@40008040 {
			compatible = "ambiq,counter";
			reg = <0x40008040 0x20>;
			interrupts = <14 0>;
			clock-frequency = <DT_FREQ_M(3)>;
			clk-source = <2>;
			status = "disabled";
		};

		counter3: counter@40008060 {
			compatible = "ambiq,counter";
			reg = <0x40008060 0x20>;
			interrupts = <14 0>;
			clock-frequency = <DT_FREQ_M(3)>;
			clk-source = <2>;
			status = "disabled";
		};

		counter4: counter@40008080 {
			compatible = "ambiq,counter";
			reg = <0x40008080 0x20>;
			interrupts = <14 0>;
			clock-frequency = <DT_FREQ_M(3)>;
			clk-source = <2>;
			status = "disabled";
		};

		counter5: counter@400080a0 {
			compatible = "ambiq,counter";
			reg = <0x400080A0 0x20>;
			interrupts = <14 0>;
			clock-frequency = <DT_FREQ_M(3)>;
			clk-source = <2>;
			status = "disabled";
		};

		counter6: counter@400080c0 {
			compatible = "ambiq,counter";
			reg = <0x400080C0 0x20>;
			interrupts = <14 0>;
			clock-frequency = <DT_FREQ_M(3)>;
			clk-source = <2>;
			status = "disabled";
		};

		counter7: counter@400080e0 {
			compatible = "ambiq,counter";
			reg = <0x400080E0 0x20>;
			interrupts = <14 0>;
			clock-frequency = <DT_FREQ_M(3)>;
			clk-source = <2>;
			status = "disabled";
		};

		uart0: uart@4001c000 {
			compatible = "ambiq,uart", "arm,pl011";
			reg = <0x4001c000 0x1000>;
			interrupts = <15 0>;
			interrupt-names = "UART0";
			status = "disabled";
			clocks = <&uartclk>;
			ambiq,pwrcfg = <&pwrcfg 0x8 0x80>;
		};

		uart1: uart@4001d000 {
			compatible = "ambiq,uart", "arm,pl011";
			reg = <0x4001d000 0x1000>;
			interrupts = <16 0>;
			interrupt-names = "UART1";
			status = "disabled";
			clocks = <&uartclk>;
			ambiq,pwrcfg = <&pwrcfg 0x8 0x100>;
		};

		spi0: spi@50004000 {
			reg = <0x50004000 0x1000>;
			#address-cells = <1>;
			#size-cells = <0>;
			interrupts = <6 0>;
			status = "disabled";
			ambiq,pwrcfg = <&pwrcfg 0x8 0x2>;
		};

		spi1: spi@50005000 {
			reg = <0x50005000 0x1000>;
			#address-cells = <1>;
			#size-cells = <0>;
			interrupts = <7 0>;
			status = "disabled";
			ambiq,pwrcfg = <&pwrcfg 0x8 0x4>;
		};

		spi2: spi@50006000 {
			reg = <0x50006000 0x1000>;
			#address-cells = <1>;
			#size-cells = <0>;
			interrupts = <8 0>;
			status = "disabled";
			ambiq,pwrcfg = <&pwrcfg 0x8 0x8>;
		};

		spi3: spi@50007000 {
			reg = <0x50007000 0x1000>;
			#address-cells = <1>;
			#size-cells = <0>;
			interrupts = <9 0>;
			status = "disabled";
			ambiq,pwrcfg = <&pwrcfg 0x8 0x10>;
		};

		spi4: spi@50008000 {
			reg = <0x50008000 0x1000>;
			#address-cells = <1>;
			#size-cells = <0>;
			interrupts = <10 0>;
			status = "disabled";
			ambiq,pwrcfg = <&pwrcfg 0x8 0x20>;
		};

		spi5: spi@50009000 {
			reg = <0x50009000 0x1000>;
			#address-cells = <1>;
			#size-cells = <0>;
			interrupts = <11 0>;
			status = "disabled";
			ambiq,pwrcfg = <&pwrcfg 0x8 0x40>;
		};

		i2c0: i2c@50004000 {
			reg = <0x50004000 0x1000>;
			#address-cells = <1>;
			#size-cells = <0>;
			interrupts = <6 0>;
			status = "disabled";
			ambiq,pwrcfg = <&pwrcfg 0x8 0x2>;
		};

		i2c1: i2c@50005000 {
			reg = <0x50005000 0x1000>;
			#address-cells = <1>;
			#size-cells = <0>;
			interrupts = <7 0>;
			status = "disabled";
			ambiq,pwrcfg = <&pwrcfg 0x8 0x4>;
		};

		i2c2: i2c@50006000 {
			reg = <0x50006000 0x1000>;
			#address-cells = <1>;
			#size-cells = <0>;
			interrupts = <8 0>;
			status = "disabled";
			ambiq,pwrcfg = <&pwrcfg 0x8 0x8>;
		};

		i2c3: i2c@50007000 {
			reg = <0x50007000 0x1000>;
			#address-cells = <1>;
			#size-cells = <0>;
			interrupts = <9 0>;
			status = "disabled";
			ambiq,pwrcfg = <&pwrcfg 0x8 0x10>;
		};

		i2c4: i2c@50008000 {
			reg = <0x50008000 0x1000>;
			#address-cells = <1>;
			#size-cells = <0>;
			interrupts = <10 0>;
			status = "disabled";
			ambiq,pwrcfg = <&pwrcfg 0x8 0x20>;
		};

		i2c5: i2c@50009000 {
			reg = <0x50009000 0x1000>;
			#address-cells = <1>;
			#size-cells = <0>;
			interrupts = <11 0>;
			status = "disabled";
			ambiq,pwrcfg = <&pwrcfg 0x8 0x40>;
		};

		mspi0: mspi@50014000 {
			compatible = "ambiq,mspi-controller";
			reg = <0x50014000 0x400>,<0x52000000 0x2000000>;
			clock-frequency = <48000000>;
			interrupts = <20 0>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
			ambiq,pwrcfg = <&pwrcfg 0x8 0x800>;
		};

		mspi1: mspi@50015000 {
			compatible = "ambiq,mspi-controller";
			reg = <0x50015000 0x400>,<0x54000000 0x2000000>;
			clock-frequency = <48000000>;
			interrupts = <32 0>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
			ambiq,pwrcfg = <&pwrcfg 0x8 0x1000>;
		};

		mspi2: mspi@50016000 {
			compatible = "ambiq,mspi-controller";
			clock-frequency = <48000000>;
			reg = <0x50016000 0x400>,<0x56000000 0x2000000>;
			interrupts = <33 0>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
			ambiq,pwrcfg = <&pwrcfg 0x8 0x2000>;
		};

		bleif: bleif@5000c000 {
			compatible = "ambiq,spi-bleif";
			reg = <0x5000c000 0x414>;
			interrupts = <12 1>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
			ambiq,pwrcfg = <&pwrcfg 0x8 0x8000>;

			bt_hci_apollo: bt-hci@0 {
				compatible = "ambiq,bt-hci-spi";
				reg = <0>;
			};
		};

		pinctrl: pin-controller@40010000 {
			compatible = "ambiq,apollo3-pinctrl";
			reg = <0x40010000 0x800>;
			#address-cells = <1>;
			#size-cells = <0>;

			gpio: gpio@40010000 {
				compatible = "ambiq,gpio";
				gpio-map-mask = <0xffffffe0 0xffffffc0>;
				gpio-map-pass-thru = <0x1f 0x3f>;
				gpio-map = <
					0x00 0x0 &gpio0_31 0x0 0x0
					0x20 0x0 &gpio32_63 0x0 0x0
					0x40 0x0 &gpio64_95 0x0 0x0
				>;
				reg = <0x40010000>;
				#gpio-cells = <2>;
				#address-cells = <1>;
				#size-cells = <0>;
				ranges;

				gpio0_31: gpio0_31@0 {
					compatible = "ambiq,gpio-bank";
					gpio-controller;
					#gpio-cells = <2>;
					reg = <0>;
					interrupts = <13 0>;
					status = "disabled";
				};

				gpio32_63: gpio32_63@20 {
					compatible = "ambiq,gpio-bank";
					gpio-controller;
					#gpio-cells = <2>;
					reg = <0x20>;
					interrupts = <13 0>;
					status = "disabled";
				};

				gpio64_95: gpio64_95@40 {
					compatible = "ambiq,gpio-bank";
					gpio-controller;
					#gpio-cells = <2>;
					reg = <0x40>;
					interrupts = <13 0>;
					status = "disabled";
					ngpios = <10>;
				};
			};
		};

		wdt0: watchdog@40024000 {
			compatible = "ambiq,watchdog";
			reg = <0x40024000 0x400>;
			interrupts = <1 0>;
			clock-frequency = <16>;
			status = "disabled";
		};
	};
};

&nvic {
	arm,num-irq-priority-bits = <3>;
};