/* SPDX-License-Identifier: Apache-2.0
 *
 * Copyright (c) 2020 Google, LLC
 *
 * SoC device tree include for STM32F103xG SoCs
 * where 'x' is replaced for specific SoCs like {R,V,Z}
 */

#include <mem.h>
#include <st/f1/stm32f103Xe.dtsi>

/ {
	sram0: memory@20000000 {
		reg = <0x20000000 DT_SIZE_K(96)>;
	};

	soc {
		flash-controller@40022000 {
			flash0: flash@8000000 {
				/* Note that there are actually two banks of
				 * flash (512KB each) and two flash controllers.
				 * This matters if you're doing in-application
				 * flash programming and you need the
				 * read-while-write capabilities, but is
				 * otherwise a non-issue.
				 */
				reg = <0x08000000 DT_SIZE_K(1024)>;
				erase-block-size = <DT_SIZE_K(2)>;
			};
		};

		timers9: timers@40014c00 {
			compatible = "st,stm32-timers";
			reg = <0x40014c00 0x400>;
			clocks = <&rcc STM32_CLOCK_BUS_APB2 0x00080000>;
			/* Shared with TIM1_BRK */
			interrupts = <24 0>;
			st,prescaler = <0>;
			status = "disabled";

			pwm {
				compatible = "st,stm32-pwm";
				status = "disabled";
				#pwm-cells = <3>;
			};
		};

		timers10: timers@40015000 {
			compatible = "st,stm32-timers";
			reg = <0x40015000 0x400>;
			clocks = <&rcc STM32_CLOCK_BUS_APB2 0x00100000>;
			/* Shared with TIM1_UP */
			interrupts = <25 0>;
			st,prescaler = <0>;
			status = "disabled";

			pwm {
				compatible = "st,stm32-pwm";
				status = "disabled";
				#pwm-cells = <3>;
			};
		};

		timers11: timers@40015400 {
			compatible = "st,stm32-timers";
			reg = <0x40015400 0x400>;
			clocks = <&rcc STM32_CLOCK_BUS_APB2 0x00200000>;
			/* Shared with TIM1_TRG_COM */
			interrupts = <26 0>;
			st,prescaler = <0>;
			status = "disabled";

			pwm {
				compatible = "st,stm32-pwm";
				status = "disabled";
				#pwm-cells = <3>;
			};
		};

		timers12: timers@40001800 {
			compatible = "st,stm32-timers";
			reg = <0x40001800 0x400>;
			clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00000040>;
			/* Shared with TIM8_BRK */
			interrupts = <43 0>;
			st,prescaler = <0>;
			status = "disabled";

			pwm {
				compatible = "st,stm32-pwm";
				status = "disabled";
				#pwm-cells = <3>;
			};
		};

		timers13: timers@40001c00 {
			compatible = "st,stm32-timers";
			reg = <0x40001c00 0x400>;
			clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00000080>;
			/* Shared with TIM8_UP */
			interrupts = <44 0>;
			st,prescaler = <0>;
			status = "disabled";

			pwm {
				compatible = "st,stm32-pwm";
				status = "disabled";
				#pwm-cells = <3>;
			};
		};

		timers14: timers@40002000 {
			compatible = "st,stm32-timers";
			reg = <0x40002000 0x400>;
			clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00000100>;
			/* Shared with TIM8_TRG_COM */
			interrupts = <45 0>;
			st,prescaler = <0>;
			status = "disabled";

			pwm {
				compatible = "st,stm32-pwm";
				status = "disabled";
				#pwm-cells = <3>;
			};
		};

	};
};
