From 406764aec681ff58f3293bf24a1b9f08e0f590ae Mon Sep 17 00:00:00 2001 From: Sadik Ozer Date: Wed, 10 Jan 2024 13:28:53 +0300 Subject: [PATCH] soc: Add the MAX32672 SoC Add MAX32672 Kconfig and dts files Co-authored-by: Maureen Helm Signed-off-by: Sadik Ozer --- dts/arm/adi/max32/max32672-pinctrl.dtsi | 522 +++++++++++++++++++++++ dts/arm/adi/max32/max32672.dtsi | 83 ++++ soc/adi/max32/Kconfig | 3 + soc/adi/max32/Kconfig.defconfig.max32672 | 14 + soc/adi/max32/Kconfig.soc | 5 + soc/adi/max32/soc.yml | 1 + 6 files changed, 628 insertions(+) create mode 100644 dts/arm/adi/max32/max32672-pinctrl.dtsi create mode 100644 dts/arm/adi/max32/max32672.dtsi create mode 100644 soc/adi/max32/Kconfig.defconfig.max32672 diff --git a/dts/arm/adi/max32/max32672-pinctrl.dtsi b/dts/arm/adi/max32/max32672-pinctrl.dtsi new file mode 100644 index 00000000000..bbc737cc4d3 --- /dev/null +++ b/dts/arm/adi/max32/max32672-pinctrl.dtsi @@ -0,0 +1,522 @@ +/* + * Copyright (c) 2024 Analog Devices, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +/ { + soc { + pinctrl: pin-controller@40008000 { + + /omit-if-no-ref/ swdio_p0_0: swdio_p0_0 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr0c_ia_p0_0: tmr0c_ia_p0_0 { + pinmux = ; + }; + + /omit-if-no-ref/ swdclk_p0_1: swdclk_p0_1 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr0c_oa_p0_1: tmr0c_oa_p0_1 { + pinmux = ; + }; + + /omit-if-no-ref/ spi0a_miso_p0_2: spi0a_miso_p0_2 { + pinmux = ; + }; + + /omit-if-no-ref/ uart1b_rx_p0_2: uart1b_rx_p0_2 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr1c_ia_p0_2: tmr1c_ia_p0_2 { + pinmux = ; + }; + + /omit-if-no-ref/ spi0a_mosi_p0_3: spi0a_mosi_p0_3 { + pinmux = ; + }; + + /omit-if-no-ref/ uart1b_tx_p0_3: uart1b_tx_p0_3 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr1c_oa_p0_3: tmr1c_oa_p0_3 { + pinmux = ; + }; + + /omit-if-no-ref/ spi0a_sck_p0_4: spi0a_sck_p0_4 { + pinmux = ; + }; + + /omit-if-no-ref/ uart1b_cts_p0_4: uart1b_cts_p0_4 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr2c_ia_p0_4: tmr2c_ia_p0_4 { + pinmux = ; + }; + + /omit-if-no-ref/ spi0a_ss0_p0_5: spi0a_ss0_p0_5 { + pinmux = ; + }; + + /omit-if-no-ref/ uart1b_rts_p0_5: uart1b_rts_p0_5 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr2c_oa_p0_5: tmr2c_oa_p0_5 { + pinmux = ; + }; + + /omit-if-no-ref/ hfx_clk_out_p0_5: hfx_clk_out_p0_5 { + pinmux = ; + }; + + /omit-if-no-ref/ i2c0a_scl_p0_6: i2c0a_scl_p0_6 { + pinmux = ; + }; + + /omit-if-no-ref/ lptmr0b_ia_p0_6: lptmr0b_ia_p0_6 { + pinmux = ; + }; + + /omit-if-no-ref/ spi0c_ss1_p0_6: spi0c_ss1_p0_6 { + pinmux = ; + }; + + /omit-if-no-ref/ qea_p0_6: qea_p0_6 { + pinmux = ; + }; + + /omit-if-no-ref/ i2c0a_sda_p0_7: i2c0a_sda_p0_7 { + pinmux = ; + }; + + /omit-if-no-ref/ lptmr0b_oa_p0_7: lptmr0b_oa_p0_7 { + pinmux = ; + }; + + /omit-if-no-ref/ spi0c_ss2_p0_7: spi0c_ss2_p0_7 { + pinmux = ; + }; + + /omit-if-no-ref/ qeb_p0_7: qeb_p0_7 { + pinmux = ; + }; + + /omit-if-no-ref/ uart0a_rx_p0_8: uart0a_rx_p0_8 { + pinmux = ; + }; + + /omit-if-no-ref/ i2s0a_sdo_p0_8: i2s0a_sdo_p0_8 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr0c_ia_p0_8: tmr0c_ia_p0_8 { + pinmux = ; + }; + + /omit-if-no-ref/ ain0_p0_8: ain0_p0_8 { + pinmux = ; + }; + + /omit-if-no-ref/ uart0a_tx_p0_9: uart0a_tx_p0_9 { + pinmux = ; + }; + + /omit-if-no-ref/ i2s0a_lrclk_p0_9: i2s0a_lrclk_p0_9 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr0c_oa_p0_9: tmr0c_oa_p0_9 { + pinmux = ; + }; + + /omit-if-no-ref/ ain_c0_n_p0_9: ain_c0_n_p0_9 { + pinmux = ; + }; + + /omit-if-no-ref/ uart0a_cts_p0_10: uart0a_cts_p0_10 { + pinmux = ; + }; + + /omit-if-no-ref/ i2s0a_bcllk_p0_10: i2s0a_bcllk_p0_10 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr1c_ia_p0_10: tmr1c_ia_p0_10 { + pinmux = ; + }; + + /omit-if-no-ref/ ain_c0_n_p0_10: ain_c0_n_p0_10 { + pinmux = ; + }; + + /omit-if-no-ref/ uart0a_rts_p0_11: uart0a_rts_p0_11 { + pinmux = ; + }; + + /omit-if-no-ref/ i2s0a_sdi_p0_11: i2s0a_sdi_p0_11 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr1c_oa_p0_11: tmr1c_oa_p0_11 { + pinmux = ; + }; + + /omit-if-no-ref/ ain_c0_n_p0_11: ain_c0_n_p0_11 { + pinmux = ; + }; + + /omit-if-no-ref/ i2c1a_scl_p0_12: i2c1a_scl_p0_12 { + pinmux = ; + }; + + /omit-if-no-ref/ ext_clk2_p0_12: ext_clk2_p0_12 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr2c_ia_p0_12: tmr2c_ia_p0_12 { + pinmux = ; + }; + + /omit-if-no-ref/ ain_c0_p_p0_12: ain_c0_p_p0_12 { + pinmux = ; + }; + + /omit-if-no-ref/ i2c1a_sda_p0_13: i2c1a_sda_p0_13 { + pinmux = ; + }; + + /omit-if-no-ref/ cal32k_p0_13: cal32k_p0_13 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr2c_oa_p0_13: tmr2c_oa_p0_13 { + pinmux = ; + }; + + /omit-if-no-ref/ ain_c0_p_p0_13: ain_c0_p_p0_13 { + pinmux = ; + }; + + /omit-if-no-ref/ spi1a_miso_p0_14: spi1a_miso_p0_14 { + pinmux = ; + }; + + /omit-if-no-ref/ uart2b_rx_p0_14: uart2b_rx_p0_14 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr3c_ia_p0_14: tmr3c_ia_p0_14 { + pinmux = ; + }; + + /omit-if-no-ref/ ain_c0_p_p0_14: ain_c0_p_p0_14 { + pinmux = ; + }; + + /omit-if-no-ref/ spi1a_mosi_p0_15: spi1a_mosi_p0_15 { + pinmux = ; + }; + + /omit-if-no-ref/ uart2b_tx_p0_15: uart2b_tx_p0_15 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr3c_oa_p0_15: tmr3c_oa_p0_15 { + pinmux = ; + }; + + /omit-if-no-ref/ ain_c0_p_p0_15: ain_c0_p_p0_15 { + pinmux = ; + }; + + /omit-if-no-ref/ spi1a_sck_p0_16: spi1a_sck_p0_16 { + pinmux = ; + }; + + /omit-if-no-ref/ uart2b_cts_p0_16: uart2b_cts_p0_16 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr0c_ia_p0_16: tmr0c_ia_p0_16 { + pinmux = ; + }; + + /omit-if-no-ref/ ain8_p0_16: ain8_p0_16 { + pinmux = ; + }; + + /omit-if-no-ref/ spi1a_ss0_p0_17: spi1a_ss0_p0_17 { + pinmux = ; + }; + + /omit-if-no-ref/ uart2b_rts_p0_17: uart2b_rts_p0_17 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr0c_oa_p0_17: tmr0c_oa_p0_17 { + pinmux = ; + }; + + /omit-if-no-ref/ ain9_p0_17: ain9_p0_17 { + pinmux = ; + }; + + /omit-if-no-ref/ i2c2a_scl_p0_18: i2c2a_scl_p0_18 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr1c_ia_p0_18: tmr1c_ia_p0_18 { + pinmux = ; + }; + + /omit-if-no-ref/ ain10_p0_18: ain10_p0_18 { + pinmux = ; + }; + + /omit-if-no-ref/ i2c2a_sda_p0_19: i2c2a_sda_p0_19 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr1c_oa_p0_19: tmr1c_oa_p0_19 { + pinmux = ; + }; + + /omit-if-no-ref/ ain11_p0_19: ain11_p0_19 { + pinmux = ; + }; + + /omit-if-no-ref/ cm4_rx_p0_20: cm4_rx_p0_20 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr2c_ia_p0_20: tmr2c_ia_p0_20 { + pinmux = ; + }; + + /omit-if-no-ref/ cm4_tx_p0_21: cm4_tx_p0_21 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr2c_oa_p0_21: tmr2c_oa_p0_21 { + pinmux = ; + }; + + /omit-if-no-ref/ lptmr1a_ia_p0_22: lptmr1a_ia_p0_22 { + pinmux = ; + }; + + /omit-if-no-ref/ adc_trig_b_p0_22: adc_trig_b_p0_22 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr0c_ia_p0_22: tmr0c_ia_p0_22 { + pinmux = ; + }; + + /omit-if-no-ref/ lptmr1a_oa_p0_23: lptmr1a_oa_p0_23 { + pinmux = ; + }; + + /omit-if-no-ref/ spi0c_ss3_p0_23: spi0c_ss3_p0_23 { + pinmux = ; + }; + + /omit-if-no-ref/ qei_p0_23: qei_p0_23 { + pinmux = ; + }; + + /omit-if-no-ref/ lpuart0a_cts_p0_24: lpuart0a_cts_p0_24 { + pinmux = ; + }; + + /omit-if-no-ref/ uart0b_rx_p0_24: uart0b_rx_p0_24 { + pinmux = ; + }; + + /omit-if-no-ref/ i2s0a_sd0_p0_24: i2s0a_sd0_p0_24 { + pinmux = ; + }; + + /omit-if-no-ref/ qes_p0_24: qes_p0_24 { + pinmux = ; + }; + + /omit-if-no-ref/ lpuart0a_rts_p0_25: lpuart0a_rts_p0_25 { + pinmux = ; + }; + + /omit-if-no-ref/ uart0b_tx_p0_25: uart0b_tx_p0_25 { + pinmux = ; + }; + + /omit-if-no-ref/ i2s0a_lrclk_p0_25: i2s0a_lrclk_p0_25 { + pinmux = ; + }; + + /omit-if-no-ref/ qmatch_p0_25: qmatch_p0_25 { + pinmux = ; + }; + + /omit-if-no-ref/ lpuart0a_rx_p0_26: lpuart0a_rx_p0_26 { + pinmux = ; + }; + + /omit-if-no-ref/ uart0b_cts_p0_26: uart0b_cts_p0_26 { + pinmux = ; + }; + + /omit-if-no-ref/ i2s0c_bclk_p0_26: i2s0c_bclk_p0_26 { + pinmux = ; + }; + + /omit-if-no-ref/ qdir_p0_26: qdir_p0_26 { + pinmux = ; + }; + + /omit-if-no-ref/ lpuart0a_tx_p0_27: lpuart0a_tx_p0_27 { + pinmux = ; + }; + + /omit-if-no-ref/ uart0b_rts_p0_27: uart0b_rts_p0_27 { + pinmux = ; + }; + + /omit-if-no-ref/ i2s0c_sdi_p0_27: i2s0c_sdi_p0_27 { + pinmux = ; + }; + + /omit-if-no-ref/ qerr_p0_27: qerr_p0_27 { + pinmux = ; + }; + + /omit-if-no-ref/ uart1a_rx_p0_28: uart1a_rx_p0_28 { + pinmux = ; + }; + + /omit-if-no-ref/ ext_clk1_p0_28: ext_clk1_p0_28 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr3c_ia_p0_28: tmr3c_ia_p0_28 { + pinmux = ; + }; + + /omit-if-no-ref/ uart1a_tx_p0_29: uart1a_tx_p0_29 { + pinmux = ; + }; + + /omit-if-no-ref/ spi1_ss0_p0_29: spi1_ss0_p0_29 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr3c_oa_p0_29: tmr3c_oa_p0_29 { + pinmux = ; + }; + + /omit-if-no-ref/ adc_trig_d_p0_29: adc_trig_d_p0_29 { + pinmux = ; + }; + + /omit-if-no-ref/ uart1a_cts_p0_30: uart1a_cts_p0_30 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr3c_ia_p0_30: tmr3c_ia_p0_30 { + pinmux = ; + }; + + /omit-if-no-ref/ uart1a_rts_p0_31: uart1a_rts_p0_31 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr3c_oa_p0_31: tmr3c_oa_p0_31 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr1c_ia_p1_0: tmr1c_ia_p1_0 { + pinmux = ; + }; + + /omit-if-no-ref/ spi2a_miso_p1_1: spi2a_miso_p1_1 { + pinmux = ; + }; + + /omit-if-no-ref/ uart0b_rx_p1_1: uart0b_rx_p1_1 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr3c_oa_p1_1: tmr3c_oa_p1_1 { + pinmux = ; + }; + + /omit-if-no-ref/ spi2a_mosi_p1_2: spi2a_mosi_p1_2 { + pinmux = ; + }; + + /omit-if-no-ref/ uart0b_tx_p1_2: uart0b_tx_p1_2 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr3c_ia_p1_2: tmr3c_ia_p1_2 { + pinmux = ; + }; + + /omit-if-no-ref/ div_clk_out_p1_2: div_clk_out_p1_2 { + pinmux = ; + }; + + /omit-if-no-ref/ spi2a_sck_p1_3: spi2a_sck_p1_3 { + pinmux = ; + }; + + /omit-if-no-ref/ uart0b_cts_p1_3: uart0b_cts_p1_3 { + pinmux = ; + }; + + /omit-if-no-ref/ spi2a_ss0_p1_4: spi2a_ss0_p1_4 { + pinmux = ; + }; + + /omit-if-no-ref/ uart0b_rts_p1_4: uart0b_rts_p1_4 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr0c_oa_p1_4: tmr0c_oa_p1_4 { + pinmux = ; + }; + + /omit-if-no-ref/ adc_trig_d_p1_4: adc_trig_d_p1_4 { + pinmux = ; + }; + + /omit-if-no-ref/ uart2a_rx_p1_5: uart2a_rx_p1_5 { + pinmux = ; + }; + + /omit-if-no-ref/ uart2a_tx_p1_6: uart2a_tx_p1_6 { + pinmux = ; + }; + + /omit-if-no-ref/ uart2a_cts_p1_7: uart2a_cts_p1_7 { + pinmux = ; + }; + + /omit-if-no-ref/ uart2a_rts_p1_8: uart2a_rts_p1_8 { + pinmux = ; + }; + + /omit-if-no-ref/ tmr1c_oa_p1_9: tmr1c_oa_p1_9 { + pinmux = ; + }; + }; + }; +}; diff --git a/dts/arm/adi/max32/max32672.dtsi b/dts/arm/adi/max32/max32672.dtsi new file mode 100644 index 00000000000..0845075ccca --- /dev/null +++ b/dts/arm/adi/max32/max32672.dtsi @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2024 Analog Devices, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include + +&sram0 { + reg = <0x20000000 DT_SIZE_K(16)>; +}; + +&clk_inro { + clock-frequency = ; +}; + +/delete-node/ &clk_iso; + +/* MAX32672 extra peripherals. */ +/ { + soc { + sram1: memory@20004000 { + compatible = "mmio-sram"; + reg = <0x20004000 DT_SIZE_K(16)>; + }; + + sram2: memory@20008000 { + compatible = "mmio-sram"; + reg = <0x20008000 DT_SIZE_K(64)>; + }; + + sram3: memory@20018000 { + compatible = "mmio-sram"; + reg = <0x20018000 DT_SIZE_K(64)>; + }; + + sram4: memory@20028000 { + compatible = "mmio-sram"; + reg = <0x20028000 DT_SIZE_K(4)>; + }; + + sram5: memory@20029000 { + compatible = "mmio-sram"; + reg = <0x20029000 DT_SIZE_K(4)>; + }; + + sram6: memory@2002a000 { + compatible = "mmio-sram"; + reg = <0x2002a000 DT_SIZE_K(16)>; + }; + + sram7: memory@2002e000 { + compatible = "mmio-sram"; + reg = <0x2002e000 DT_SIZE_K(16)>; + }; + + flc1: flash_controller@40029400 { + compatible = "adi,max32-flash-controller"; + reg = <0x40029400 0x400>; + + #address-cells = <1>; + #size-cells = <1>; + status = "okay"; + + flash1: flash@10080000 { + compatible = "soc-nv-flash"; + reg = <0x10080000 DT_SIZE_K(512)>; + write-block-size = <16>; + erase-block-size = <8192>; + }; + }; + + uart3: serial@40145000 { + compatible = "adi,max32-uart"; + reg = <0x40145000 0x1000>; + clocks = <&gcr ADI_MAX32_CLOCK_BUS2 2>; + clock-source = ; + interrupts = <88 0>; + status = "disabled"; + }; + }; +}; diff --git a/soc/adi/max32/Kconfig b/soc/adi/max32/Kconfig index 9eb62daf6c3..7bfc9cff192 100644 --- a/soc/adi/max32/Kconfig +++ b/soc/adi/max32/Kconfig @@ -14,6 +14,9 @@ config SOC_FAMILY_MAX32 config SOC_MAX32655 select CPU_CORTEX_M4 +config SOC_MAX32672 + select CPU_CORTEX_M4 + config SOC_MAX32680 select CPU_CORTEX_M4 diff --git a/soc/adi/max32/Kconfig.defconfig.max32672 b/soc/adi/max32/Kconfig.defconfig.max32672 new file mode 100644 index 00000000000..2a7e1aad1c5 --- /dev/null +++ b/soc/adi/max32/Kconfig.defconfig.max32672 @@ -0,0 +1,14 @@ +# Analog Devices MAX32672 MCU + +# Copyright (c) 2024 Analog Devices, Inc. +# SPDX-License-Identifier: Apache-2.0 + +if SOC_MAX32672 + +config SYS_CLOCK_HW_CYCLES_PER_SEC + default $(dt_node_int_prop_int,/clocks/clk_ipo,clock-frequency) + +config NUM_IRQS + default 108 + +endif # SOC_MAX32672 diff --git a/soc/adi/max32/Kconfig.soc b/soc/adi/max32/Kconfig.soc index 5d7baca5582..53a4548fcaa 100644 --- a/soc/adi/max32/Kconfig.soc +++ b/soc/adi/max32/Kconfig.soc @@ -17,6 +17,10 @@ config SOC_MAX32655_M4 bool select SOC_MAX32655 +config SOC_MAX32672 + bool + select SOC_FAMILY_MAX32 + config SOC_MAX32680 bool select SOC_FAMILY_MAX32 @@ -35,5 +39,6 @@ config SOC_MAX32690_M4 config SOC default "max32655" if SOC_MAX32655 + default "max32672" if SOC_MAX32672 default "max32680" if SOC_MAX32680 default "max32690" if SOC_MAX32690 diff --git a/soc/adi/max32/soc.yml b/soc/adi/max32/soc.yml index 5b2c70d086f..dd6f42d6860 100644 --- a/soc/adi/max32/soc.yml +++ b/soc/adi/max32/soc.yml @@ -7,6 +7,7 @@ family: - name: max32655 cpuclusters: - name: m4 + - name: max32672 - name: max32680 cpuclusters: - name: m4