Skip to content

Commit

Permalink
Add MAX78000 to Zephyr folder
Browse files Browse the repository at this point in the history
This commit adds MAX78000 SoC into
the zephyr build system

Signed-off-by: Yasin Ustuner <[email protected]>
  • Loading branch information
yasinustunerg committed Dec 23, 2024
1 parent 1cad008 commit ecbdf92
Show file tree
Hide file tree
Showing 12 changed files with 238 additions and 14 deletions.
5 changes: 3 additions & 2 deletions Libraries/zephyr/MAX/Include/wrap_max32_adc.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,11 @@ typedef enum {
#define ADI_MAX32_ADC_REF_VDD_1_2 2

/*
* MAX32655, MAX32665, MAX32666 related mapping
* MAX32655, MAX32665, MAX32666, MAX32680, MAX78000 related mapping
*/
#if defined(CONFIG_SOC_MAX32655) || defined(CONFIG_SOC_MAX32665) || \
defined(CONFIG_SOC_MAX32666) || defined(CONFIG_SOC_MAX32680)
defined(CONFIG_SOC_MAX32666) || defined(CONFIG_SOC_MAX32680) || \
defined(CONFIG_SOC_MAX78000)

#define WRAP_MXC_F_ADC_CONV_DONE_IE MXC_F_ADC_INTR_DONE_IE
#define WRAP_MXC_F_ADC_CONV_DONE_IF MXC_F_ADC_INTR_DONE_IF
Expand Down
4 changes: 3 additions & 1 deletion Libraries/zephyr/MAX/Include/wrap_max32_i2c.h
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,9 @@ static inline void Wrap_MXC_I2C_Stop(mxc_i2c_regs_t *i2c)
#elif defined(CONFIG_SOC_MAX32690) || defined(CONFIG_SOC_MAX32655) || \
defined(CONFIG_SOC_MAX32670) || defined(CONFIG_SOC_MAX32672) || \
defined(CONFIG_SOC_MAX32662) || defined(CONFIG_SOC_MAX32675) || \
defined(CONFIG_SOC_MAX32680) || defined(CONFIG_SOC_MAX32657) || defined(CONFIG_SOC_MAX78002)
defined(CONFIG_SOC_MAX32680) || defined(CONFIG_SOC_MAX32657) || \
defined(CONFIG_SOC_MAX78002) || defined(CONFIG_SOC_MAX78000)

/*
* Control register bits
*/
Expand Down
3 changes: 2 additions & 1 deletion Libraries/zephyr/MAX/Include/wrap_max32_lp.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,8 @@ static inline void Wrap_MXC_LP_EnterPowerDownMode(void)
* MAX32690, MAX32655 related mapping
*/
#elif defined(CONFIG_SOC_MAX32690) || defined(CONFIG_SOC_MAX32655) || \
defined(CONFIG_SOC_MAX32680) || defined(CONFIG_SOC_MAX32657) || defined(CONFIG_SOC_MAX78002)
defined(CONFIG_SOC_MAX32680) || defined(CONFIG_SOC_MAX32657) || \
defined(CONFIG_SOC_MAX78002) || defined(CONFIG_SOC_MAX78000)

static inline void Wrap_MXC_LP_EnterLowPowerMode(void)
{
Expand Down
2 changes: 1 addition & 1 deletion Libraries/zephyr/MAX/Include/wrap_max32_owm.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ static inline int Wrap_MXC_OWM_Init(const mxc_owm_cfg_t *cfg)
* MAX32690, MAX32655 related mapping
*/
#elif defined(CONFIG_SOC_MAX32690) || defined(CONFIG_SOC_MAX32655) || \
defined(CONFIG_SOC_MAX32680) || defined(CONFIG_SOC_MAX78002)
defined(CONFIG_SOC_MAX32680) || defined(CONFIG_SOC_MAX78002) || defined(CONFIG_SOC_MAX78000)

static inline int Wrap_MXC_OWM_Init(const mxc_owm_cfg_t *cfg)
{
Expand Down
4 changes: 3 additions & 1 deletion Libraries/zephyr/MAX/Include/wrap_max32_spi.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,9 @@ static inline int Wrap_MXC_SPI_Init(mxc_spi_regs_t *spi, int masterMode, int qua
#elif defined(CONFIG_SOC_MAX32690) || defined(CONFIG_SOC_MAX32655) || \
defined(CONFIG_SOC_MAX32670) || defined(CONFIG_SOC_MAX32672) || \
defined(CONFIG_SOC_MAX32662) || defined(CONFIG_SOC_MAX32675) || \
defined(CONFIG_SOC_MAX32680) || defined(CONFIG_SOC_MAX32657) || defined(CONFIG_SOC_MAX78002)
defined(CONFIG_SOC_MAX32680) || defined(CONFIG_SOC_MAX32657) || \
defined(CONFIG_SOC_MAX78002) || defined(CONFIG_SOC_MAX78000)

#if defined(CONFIG_SOC_MAX32657)
#define ADI_MAX32_SPI_CTRL_MASTER_MODE MXC_F_SPI_CTRL0_CONT_MODE
#else
Expand Down
3 changes: 2 additions & 1 deletion Libraries/zephyr/MAX/Include/wrap_max32_sys.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,8 @@ static inline void Wrap_MXC_SYS_SetClockDiv(int div)
#elif defined(CONFIG_SOC_MAX32690) || defined(CONFIG_SOC_MAX32655) || \
defined(CONFIG_SOC_MAX32670) || defined(CONFIG_SOC_MAX32672) || \
defined(CONFIG_SOC_MAX32662) || defined(CONFIG_SOC_MAX32675) || \
defined(CONFIG_SOC_MAX32680) || defined(CONFIG_SOC_MAX32657) || defined(CONFIG_SOC_MAX78002)
defined(CONFIG_SOC_MAX32680) || defined(CONFIG_SOC_MAX32657) || \
defined(CONFIG_SOC_MAX78002) || defined(CONFIG_SOC_MAX78000)

#define ADI_MAX32_CLK_IPO MXC_SYS_CLOCK_IPO
#if defined(CONFIG_SOC_MAX78002)
Expand Down
7 changes: 4 additions & 3 deletions Libraries/zephyr/MAX/Include/wrap_max32_tmr.h
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,8 @@ int Wrap_MXC_TMR_GetPendingInt(mxc_tmr_regs_t *tmr)
#elif defined(CONFIG_SOC_MAX32690) || defined(CONFIG_SOC_MAX32655) || \
defined(CONFIG_SOC_MAX32670) || defined(CONFIG_SOC_MAX32672) || \
defined(CONFIG_SOC_MAX32662) || defined(CONFIG_SOC_MAX32675) || \
defined(CONFIG_SOC_MAX32680) || defined(CONFIG_SOC_MAX32657) || defined(CONFIG_SOC_MAX78002)
defined(CONFIG_SOC_MAX32680) || defined(CONFIG_SOC_MAX32657) || \
defined(CONFIG_SOC_MAX78002) || defined(CONFIG_SOC_MAX78000)

#if defined(CONFIG_SOC_MAX32672) || defined(CONFIG_SOC_MAX32675) || \
defined(CONFIG_SOC_MAX32657) || defined(CONFIG_SOC_MAX32670)
Expand Down Expand Up @@ -144,7 +145,7 @@ static inline int Wrap_MXC_TMR_GetClockIndex(int z_clock)
return MXC_TMR_EXT_CLK;
case 2: // ADI_MAX32_PRPH_CLK_SRC_IBRO
return MXC_TMR_8M_CLK;
#if !defined(CONFIG_SOC_MAX78002)
#if !defined(CONFIG_SOC_MAX78002) && !defined(CONFIG_SOC_MAX778000)
case 3: //ADI_MAX32_PRPH_CLK_SRC_ERFO
return MXC_TMR_32M_CLK;
#endif
Expand All @@ -153,7 +154,7 @@ static inline int Wrap_MXC_TMR_GetClockIndex(int z_clock)
case 5: //ADI_MAX32_PRPH_CLK_SRC_INRO
return MXC_TMR_INRO_CLK;
#if defined(CONFIG_SOC_MAX32655) || defined(CONFIG_SOC_MAX32680) || \
defined(CONFIG_SOC_MAX32690) || defined(CONFIG_SOC_MAX78002)
defined(CONFIG_SOC_MAX32690) || defined(CONFIG_SOC_MAX78002) || defined(CONFIG_SOC_MAX78000)
case 6: //ADI_MAX32_PRPH_CLK_SRC_ISO
return MXC_TMR_ISO_CLK;
#endif
Expand Down
3 changes: 2 additions & 1 deletion Libraries/zephyr/MAX/Include/wrap_max32_trng.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ static inline int Wrap_MXC_TRNG_RandomInt_NonBlocking(uint32_t *data)
#elif defined(CONFIG_SOC_MAX32690) || defined(CONFIG_SOC_MAX32655) || \
defined(CONFIG_SOC_MAX32670) || defined(CONFIG_SOC_MAX32672) || \
defined(CONFIG_SOC_MAX32662) || defined(CONFIG_SOC_MAX32675) || \
defined(CONFIG_SOC_MAX32680) || defined(CONFIG_SOC_MAX32657) || defined(CONFIG_SOC_MAX78002)
defined(CONFIG_SOC_MAX32680) || defined(CONFIG_SOC_MAX32657) || \
defined(CONFIG_SOC_MAX78002) || defined(CONFIG_SOC_MAX78000)

static inline int Wrap_MXC_TRNG_RandomInt_NonBlocking(uint32_t *data)
{
Expand Down
7 changes: 5 additions & 2 deletions Libraries/zephyr/MAX/Include/wrap_max32_uart.h
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,9 @@ static inline void Wrap_MXC_UART_DisableRxDMA(mxc_uart_regs_t *uart)
#elif defined(CONFIG_SOC_MAX32690) || defined(CONFIG_SOC_MAX32655) || \
defined(CONFIG_SOC_MAX32670) || defined(CONFIG_SOC_MAX32672) || \
defined(CONFIG_SOC_MAX32662) || defined(CONFIG_SOC_MAX32675) || \
defined(CONFIG_SOC_MAX32680) || defined(CONFIG_SOC_MAX32657) || defined(CONFIG_SOC_MAX78002)
defined(CONFIG_SOC_MAX32680) || defined(CONFIG_SOC_MAX32657) || \
defined(CONFIG_SOC_MAX78002) || defined(CONFIG_SOC_MAX78000)

// status flags
#define ADI_MAX32_UART_RX_EMPTY MXC_F_UART_STATUS_RX_EM
#define ADI_MAX32_UART_TX_EMPTY MXC_F_UART_STATUS_TX_EM
Expand Down Expand Up @@ -214,7 +216,8 @@ static inline mxc_uart_clock_t wrap_get_clock_source_instance(int clock_source)
break;
#endif
#if defined(CONFIG_SOC_MAX32655) || defined(CONFIG_SOC_MAX32670) || \
defined(CONFIG_SOC_MAX32672) || defined(CONFIG_SOC_MAX32690) || defined(CONFIG_SOC_MAX78002)
defined(CONFIG_SOC_MAX32672) || defined(CONFIG_SOC_MAX32690) || \
defined(CONFIG_SOC_MAX78002) || defined(CONFIG_SOC_MAX78000)
case 4: // ADI_MAX32_PRPH_CLK_SRC_ERTCO
clk_src = MXC_UART_ERTCO_CLK;
break;
Expand Down
3 changes: 2 additions & 1 deletion Libraries/zephyr/MAX/Include/wrap_max32_wdt.h
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,8 @@ static inline int Wrap_MXC_WDT_SelectClockSource(mxc_wdt_regs_t *wdt, uint32_t c
#elif defined(CONFIG_SOC_MAX32690) || defined(CONFIG_SOC_MAX32655) || \
defined(CONFIG_SOC_MAX32670) || defined(CONFIG_SOC_MAX32672) || \
defined(CONFIG_SOC_MAX32662) || defined(CONFIG_SOC_MAX32675) || \
defined(CONFIG_SOC_MAX32680) || defined(CONFIG_SOC_MAX32657) || defined(CONFIG_SOC_MAX78002)
defined(CONFIG_SOC_MAX32680) || defined(CONFIG_SOC_MAX32657) || \
defined(CONFIG_SOC_MAX78002) || defined(CONFIG_SOC_MAX78000)

#define WRAP_MXC_F_WDT_CTRL_EN MXC_F_WDT_CTRL_EN

Expand Down
187 changes: 187 additions & 0 deletions Libraries/zephyr/MAX/Source/MAX78000/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
##############################################################################
#
# Copyright (C) 2024 Analog Devices, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
##############################################################################


if(NOT TARGET_REV)
# Default version A1, not actively use in driver but requires to be defined.
zephyr_compile_definitions(-DTARGET_REV=0x4131)
endif()

zephyr_include_directories(
${MSDK_PERIPH_SRC_DIR}/ADC
${MSDK_PERIPH_SRC_DIR}/AES
${MSDK_PERIPH_SRC_DIR}/CAMERAIF
${MSDK_PERIPH_SRC_DIR}/CRC
${MSDK_PERIPH_SRC_DIR}/DMA
${MSDK_PERIPH_SRC_DIR}/FLC
${MSDK_PERIPH_SRC_DIR}/GPIO
${MSDK_PERIPH_SRC_DIR}/I2C
${MSDK_PERIPH_SRC_DIR}/I2S
${MSDK_PERIPH_SRC_DIR}/ICC
${MSDK_PERIPH_SRC_DIR}/LP
${MSDK_PERIPH_SRC_DIR}/LPCMP
${MSDK_PERIPH_SRC_DIR}/OWM
${MSDK_PERIPH_SRC_DIR}/PT
${MSDK_PERIPH_SRC_DIR}/RTC
${MSDK_PERIPH_SRC_DIR}/SEMA
${MSDK_PERIPH_SRC_DIR}/SPI
${MSDK_PERIPH_SRC_DIR}/SYS
${MSDK_PERIPH_SRC_DIR}/TMR
${MSDK_PERIPH_SRC_DIR}/TRNG
${MSDK_PERIPH_SRC_DIR}/UART
${MSDK_PERIPH_SRC_DIR}/WDT
${MSDK_PERIPH_SRC_DIR}/WUT
)

if(CONFIG_ARM)
zephyr_library_sources(${MSDK_CMSIS_DIR}/Source/system_max78000.c)
zephyr_library_sources(${MSDK_PERIPH_SRC_DIR}/SYS/mxc_lock.c)
elseif(CONFIG_RISCV)
zephyr_library_sources(${MSDK_CMSIS_DIR}/Source/system_riscv_max78000.c)
endif()

zephyr_library_sources(
./max78xxx_system.c

${MSDK_PERIPH_SRC_DIR}/CAMERAIF/cameraif_ai85.c
${MSDK_PERIPH_SRC_DIR}/CAMERAIF/cameraif_reva.c

${MSDK_PERIPH_SRC_DIR}/ICC/icc_me17.c
${MSDK_PERIPH_SRC_DIR}/ICC/icc_reva.c

${MSDK_PERIPH_SRC_DIR}/LP/lp_ai85.c

${MSDK_PERIPH_SRC_DIR}/LPCMP/lpcmp_ai85.c
${MSDK_PERIPH_SRC_DIR}/LPCMP/lpcmp_reva.c

${MSDK_PERIPH_SRC_DIR}/SYS/mxc_assert.c
${MSDK_PERIPH_SRC_DIR}/SYS/mxc_delay.c
${MSDK_PERIPH_SRC_DIR}/SYS/pins_ai85.c
${MSDK_PERIPH_SRC_DIR}/SYS/sys_ai85.c

${MSDK_PERIPH_SRC_DIR}/DMA/dma_me17.c
${MSDK_PERIPH_SRC_DIR}/DMA/dma_reva.c

${MSDK_PERIPH_SRC_DIR}/SEMA/sema_me17.c
${MSDK_PERIPH_SRC_DIR}/SEMA/sema_reva.c

${MSDK_PERIPH_SRC_DIR}/PT/pt_ai85.c
${MSDK_PERIPH_SRC_DIR}/PT/pt_reva.c

${MSDK_PERIPH_SRC_DIR}/WUT/wut_ai85.c
${MSDK_PERIPH_SRC_DIR}/WUT/wut_reva.c
)

if (CONFIG_ADC_MAX32)
zephyr_library_sources(
${MSDK_PERIPH_SRC_DIR}/ADC/adc_me17.c
${MSDK_PERIPH_SRC_DIR}/ADC/adc_reva.c
)
endif()

if (CONFIG_UART_MAX32)
zephyr_library_sources(
${MSDK_PERIPH_SRC_DIR}/UART/uart_common.c
${MSDK_PERIPH_SRC_DIR}/UART/uart_ai85.c
${MSDK_PERIPH_SRC_DIR}/UART/uart_revb.c
)
endif()

if (CONFIG_GPIO_MAX32)
zephyr_library_sources(
${MSDK_PERIPH_SRC_DIR}/GPIO/gpio_common.c
${MSDK_PERIPH_SRC_DIR}/GPIO/gpio_ai85.c
${MSDK_PERIPH_SRC_DIR}/GPIO/gpio_reva.c
)
endif()

if (CONFIG_SPI_MAX32)
zephyr_library_sources(
${MSDK_PERIPH_SRC_DIR}/SPI/spi_me17.c
${MSDK_PERIPH_SRC_DIR}/SPI/spi_reva1.c
)
endif()

if (CONFIG_I2C_MAX32)
zephyr_library_sources(
${MSDK_PERIPH_SRC_DIR}/I2C/i2c_me17.c
${MSDK_PERIPH_SRC_DIR}/I2C/i2c_reva.c
)
endif()

if (CONFIG_I2S_MAX32)
zephyr_library_sources(
${MSDK_PERIPH_SRC_DIR}/I2S/i2s_ai85.c
${MSDK_PERIPH_SRC_DIR}/I2S/i2s_reva.c
)
endif()

if (CONFIG_WDT_MAX32)
zephyr_library_sources(
${MSDK_PERIPH_SRC_DIR}/WDT/wdt_common.c
${MSDK_PERIPH_SRC_DIR}/WDT/wdt_me17.c
${MSDK_PERIPH_SRC_DIR}/WDT/wdt_revb.c
)
endif()

if (CONFIG_RTC_MAX32 OR CONFIG_COUNTER_RTC_MAX32)
zephyr_library_sources(
${MSDK_PERIPH_SRC_DIR}/RTC/rtc_me17.c
${MSDK_PERIPH_SRC_DIR}/RTC/rtc_reva.c
)
endif()

if (CONFIG_SOC_FLASH_MAX32)
zephyr_library_sources(
${MSDK_PERIPH_SRC_DIR}/FLC/flc_common.c
${MSDK_PERIPH_SRC_DIR}/FLC/flc_me17.c
${MSDK_PERIPH_SRC_DIR}/FLC/flc_reva.c
)
endif()

if (CONFIG_PWM_MAX32 OR CONFIG_TIMER_MAX32 OR CONFIG_COUNTER_TIMER_MAX32)
zephyr_library_sources(
${MSDK_PERIPH_SRC_DIR}/TMR/tmr_common.c
${MSDK_PERIPH_SRC_DIR}/TMR/tmr_ai85.c
${MSDK_PERIPH_SRC_DIR}/TMR/tmr_revb.c
)
endif()

if (CONFIG_ENTROPY_MAX32_TRNG)
zephyr_library_sources(
${MSDK_PERIPH_SRC_DIR}/TRNG/trng_ai85.c
${MSDK_PERIPH_SRC_DIR}/TRNG/trng_revb.c
)
endif()

if (CONFIG_CRYPTO_MAX32)
zephyr_library_sources(
${MSDK_PERIPH_SRC_DIR}/AES/aes_me17.c
${MSDK_PERIPH_SRC_DIR}/AES/aes_revb.c

${MSDK_PERIPH_SRC_DIR}/CRC/crc_me17.c
${MSDK_PERIPH_SRC_DIR}/CRC/crc_reva.c
)
endif()

if (CONFIG_W1_MAX32)
zephyr_library_sources(
${MSDK_PERIPH_SRC_DIR}/OWM/owm_me17.c
${MSDK_PERIPH_SRC_DIR}/OWM/owm_reva.c
)
endif()
24 changes: 24 additions & 0 deletions Libraries/zephyr/MAX/Source/MAX78000/max78xxx_system.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/******************************************************************************
*
* Copyright (C) 2024 Analog Devices, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************/

#include "max78000.h"

/*
* This function is called during boot up.
*/
void max32xx_system_init(void) {}

0 comments on commit ecbdf92

Please sign in to comment.