Skip to content

Commit f990dbf

Browse files
TriNguyenduynguyenxa
authored andcommitted
hal: renesas: Add BSP config RA4M1
Initial support bsp config for RA4M1 board Signed-off-by: TriNguyen <[email protected]> Signed-off-by: TriNguyen <[email protected]>
1 parent 6c50f71 commit f990dbf

File tree

10 files changed

+21033
-0
lines changed

10 files changed

+21033
-0
lines changed

drivers/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/R7FA4M1AB.h

Lines changed: 20034 additions & 0 deletions
Large diffs are not rendered by default.

drivers/ra/fsp/src/bsp/mcu/ra4m1/bsp_elc.h

Lines changed: 254 additions & 0 deletions
Large diffs are not rendered by default.

drivers/ra/fsp/src/bsp/mcu/ra4m1/bsp_feature.h

Lines changed: 443 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
* Copyright (c) 2020 - 2024 Renesas Electronics Corporation and/or its affiliates
3+
*
4+
* SPDX-License-Identifier: BSD-3-Clause
5+
*/
6+
7+
#ifndef BSP_FEATURE_GEN_H
8+
#define BSP_FEATURE_GEN_H
9+
10+
/***********************************************************************************************************************
11+
* Includes <System Includes> , "Project Includes"
12+
**********************************************************************************************************************/
13+
14+
/***********************************************************************************************************************
15+
* Macro definitions
16+
**********************************************************************************************************************/
17+
18+
/***********************************************************************************************************************
19+
* Typedef definitions
20+
**********************************************************************************************************************/
21+
22+
/***********************************************************************************************************************
23+
* Exported global variables (to be accessed by other files)
24+
**********************************************************************************************************************/
25+
26+
/***********************************************************************************************************************
27+
* Private global variables and functions
28+
**********************************************************************************************************************/
29+
30+
// *UNCRUSTIFY-OFF*
31+
#define BSP_FEATURE_GPT_AD_DIRECT_START_CHANNEL_MASK (0)
32+
#define BSP_FEATURE_GPT_AD_DIRECT_START_SUPPORTED (0)
33+
#define BSP_FEATURE_GPT_GPTE_CHANNEL_MASK (0)
34+
#define BSP_FEATURE_GPT_GPTE_SUPPORTED (0)
35+
#define BSP_FEATURE_GPT_GPTEH_CHANNEL_MASK (0)
36+
#define BSP_FEATURE_GPT_GPTEH_SUPPORTED (0)
37+
#define BSP_FEATURE_GPT_OPS_CHANNEL_MASK (0)
38+
#define BSP_FEATURE_GPT_OPS_SUPPORTED (0)
39+
// *UNCRUSTIFY-ON*
40+
#endif
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*
2+
* Copyright (c) 2020 - 2024 Renesas Electronics Corporation and/or its affiliates
3+
*
4+
* SPDX-License-Identifier: BSD-3-Clause
5+
*/
6+
7+
/*******************************************************************************************************************//**
8+
* @ingroup BSP_MCU
9+
* @defgroup BSP_MCU_RA4M1 RA4M1
10+
* @includedoc config_bsp_ra4m1_fsp.html
11+
* @{
12+
**********************************************************************************************************************/
13+
14+
/** @} (end defgroup BSP_MCU_RA4M1) */
15+
16+
#ifndef BSP_MCU_INFO_H
17+
#define BSP_MCU_INFO_H
18+
19+
/***********************************************************************************************************************
20+
* Includes <System Includes> , "Project Includes"
21+
**********************************************************************************************************************/
22+
23+
/* BSP MCU Specific Includes. */
24+
#include "bsp_elc.h"
25+
#include "bsp_feature.h"
26+
27+
/***********************************************************************************************************************
28+
* Macro definitions
29+
**********************************************************************************************************************/
30+
31+
/***********************************************************************************************************************
32+
* Typedef definitions
33+
**********************************************************************************************************************/
34+
typedef elc_event_t bsp_interrupt_event_t;
35+
36+
/***********************************************************************************************************************
37+
* Exported global variables
38+
**********************************************************************************************************************/
39+
40+
/***********************************************************************************************************************
41+
* Exported global functions (to be accessed by other files)
42+
**********************************************************************************************************************/
43+
44+
#endif
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*
2+
* Copyright (c) 2020 - 2024 Renesas Electronics Corporation and/or its affiliates
3+
*
4+
* SPDX-License-Identifier: BSD-3-Clause
5+
*/
6+
7+
#ifndef BSP_CFG_H_
8+
#define BSP_CFG_H_
9+
10+
#include "soc.h"
11+
#include "bsp_clock_cfg.h"
12+
#include "bsp_mcu_family_cfg.h"
13+
14+
#define SUBCLOCK_STABILIZATION_MAX(x) ((x < 10000) ? x : 10000)
15+
16+
/* Disable BSP_CFG_PARAM_CHECKING_ENABLE as default to reduce code size */
17+
#define BSP_CFG_PARAM_CHECKING_ENABLE (0)
18+
19+
/* Add for zephyr porting */
20+
#define BSP_CFG_INTERRUPT_INIT 0
21+
#define BSP_CFG_SP_MON_INIT 0
22+
23+
#ifndef BSP_CLOCK_CFG_MAIN_OSC_POPULATED
24+
#define BSP_CLOCK_CFG_MAIN_OSC_POPULATED (DT_NODE_HAS_STATUS(DT_NODELABEL(xtal), okay))
25+
#endif
26+
27+
#ifndef BSP_CLOCK_CFG_MAIN_OSC_CLOCK_SOURCE
28+
#define BSP_CLOCK_CFG_MAIN_OSC_CLOCK_SOURCE (DT_PROP_OR(DT_NODELABEL(xtal), mosel, 0))
29+
#endif
30+
31+
/* Keep 0 as default as LPM is not supported */
32+
#ifndef BSP_CLOCK_CFG_SUBCLOCK_DRIVE
33+
#define BSP_CLOCK_CFG_SUBCLOCK_DRIVE (DT_PROP_OR(DT_NODELABEL(subclk), drive_capability, 0))
34+
#endif
35+
36+
#ifndef BSP_CLOCK_CFG_SUBCLOCK_POPULATED
37+
#define BSP_CLOCK_CFG_SUBCLOCK_POPULATED (DT_NODE_HAS_STATUS(DT_NODELABEL(subclk), okay))
38+
#endif
39+
#ifndef BSP_CLOCK_CFG_SUBCLOCK_STABILIZATION_MS
40+
#define BSP_CLOCK_CFG_SUBCLOCK_STABILIZATION_MS \
41+
SUBCLOCK_STABILIZATION_MAX((DT_PROP_OR(DT_NODELABEL(subclk), stabilization_time, 1000)))
42+
#endif
43+
44+
#define BSP_CFG_PFS_PROTECT (1)
45+
46+
#endif /* BSP_CFG_H_ */
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
/*
2+
* Copyright (c) 2020 - 2024 Renesas Electronics Corporation and/or its affiliates
3+
*
4+
* SPDX-License-Identifier: BSD-3-Clause
5+
*/
6+
7+
#include <zephyr/devicetree.h>
8+
#include <zephyr/dt-bindings/clock/ra_clock.h>
9+
10+
#ifndef BSP_CLOCK_CFG_H_
11+
#define BSP_CLOCK_CFG_H_
12+
13+
#define BSP_CFG_CLOCKS_SECURE (0)
14+
#define BSP_CFG_CLOCKS_OVERRIDE (0)
15+
16+
#define BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(node_id, prop, default_value) \
17+
(COND_CODE_1(DT_NODE_HAS_STATUS(node_id, okay), (DT_PROP(node_id, prop)), (default_value)))
18+
19+
#define BSP_CFG_XTAL_HZ BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(xtal), clock_frequency, 0)
20+
21+
#if DT_PROP(DT_NODELABEL(hoco), clock_frequency) == 24000000
22+
#define BSP_CFG_HOCO_FREQUENCY 0 /* HOCO 24MHz */
23+
#elif DT_PROP(DT_NODELABEL(hoco), clock_frequency) == 32000000
24+
#define BSP_CFG_HOCO_FREQUENCY 2 /* HOCO 32MHz */
25+
#elif DT_PROP(DT_NODELABEL(hoco), clock_frequency) == 48000000
26+
#define BSP_CFG_HOCO_FREQUENCY 4 /* HOCO 48MHz */
27+
#elif DT_PROP(DT_NODELABEL(hoco), clock_frequency) == 64000000
28+
#define BSP_CFG_HOCO_FREQUENCY 5 /* HOCO 64MHz */
29+
#else
30+
#error "Invalid HOCO frequency, only can be set to 24MHz, 32MHz, 48MHz and 64MHz"
31+
#endif
32+
33+
#define BSP_CFG_PLL_SOURCE \
34+
BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(pll), source, RA_PLL_SOURCE_DISABLE)
35+
#define BSP_CFG_PLL_DIV BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(pll), div, RA_PLL_DIV_2)
36+
#define BSP_CFG_PLL_MUL \
37+
DT_NODE_HAS_STATUS(DT_NODELABEL(pll), okay) \
38+
? BSP_CLOCKS_PLL_MUL(DT_PROP_BY_IDX(DT_NODELABEL(pll), mul, 0), \
39+
DT_PROP_BY_IDX(DT_NODELABEL(pll), mul, 1)) \
40+
: BSP_CLOCKS_PLL_MUL(0, 0)
41+
42+
#define BSP_CFG_CLOCK_SOURCE \
43+
BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(pclkblock), sysclock_src, \
44+
RA_PLL_SOURCE_DISABLE)
45+
46+
#define BSP_CFG_ICLK_DIV \
47+
BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(iclk), clk_div, RA_SYS_CLOCK_DIV_1)
48+
#define BSP_CFG_PCLKA_DIV \
49+
BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(pclka), clk_div, RA_SYS_CLOCK_DIV_1)
50+
#define BSP_CFG_PCLKB_DIV \
51+
BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(pclkb), clk_div, RA_SYS_CLOCK_DIV_2)
52+
#define BSP_CFG_PCLKC_DIV \
53+
BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(pclkc), clk_div, RA_SYS_CLOCK_DIV_1)
54+
#define BSP_CFG_PCLKD_DIV \
55+
BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(pclkd), clk_div, RA_SYS_CLOCK_DIV_1)
56+
#define BSP_CFG_FCLK_DIV \
57+
BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(fclk), clk_div, RA_SYS_CLOCK_DIV_2)
58+
59+
#define BSP_CFG_UCK_SOURCE \
60+
BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(uclk), clk_src, RA_CLOCK_SOURCE_DISABLE)
61+
#define BSP_CFG_UCK_DIV BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(uclk), clk_div, 0)
62+
#define BSP_CFG_CLKOUT_SOURCE \
63+
BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(clkout), clk_src, RA_CLOCK_SOURCE_DISABLE)
64+
#define BSP_CFG_CLKOUT_DIV BSP_CLOCK_PROP_HAS_STATUS_OKAY_OR(DT_NODELABEL(clkout), clk_div, 0)
65+
66+
#endif /* BSP_CLOCK_CFG_H_ */
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/*
2+
* Copyright (c) 2020 - 2024 Renesas Electronics Corporation and/or its affiliates
3+
*
4+
* SPDX-License-Identifier: BSD-3-Clause
5+
*/
6+
7+
#ifndef BSP_MCU_DEVICE_CFG_H_
8+
#define BSP_MCU_DEVICE_CFG_H_
9+
#define BSP_CFG_MCU_PART_SERIES (4)
10+
#endif /* BSP_MCU_DEVICE_CFG_H_ */
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/*
2+
* Copyright (c) 2020 - 2024 Renesas Electronics Corporation and/or its affiliates
3+
*
4+
* SPDX-License-Identifier: BSD-3-Clause
5+
*/
6+
7+
#ifndef BSP_MCU_DEVICE_PN_CFG_H_
8+
#define BSP_MCU_DEVICE_PN_CFG_H_
9+
#define BSP_PACKAGE_PINS (100)
10+
#endif /* BSP_MCU_DEVICE_PN_CFG_H_ */
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
/*
2+
* Copyright (c) 2020 - 2024 Renesas Electronics Corporation and/or its affiliates
3+
*
4+
* SPDX-License-Identifier: BSD-3-Clause
5+
*/
6+
7+
#ifndef BSP_MCU_FAMILY_CFG_H_
8+
#define BSP_MCU_FAMILY_CFG_H_
9+
#include "bsp_mcu_device_pn_cfg.h"
10+
#include "bsp_mcu_device_cfg.h"
11+
#include "bsp_mcu_info.h"
12+
#include "bsp_clock_cfg.h"
13+
#define BSP_MCU_GROUP_RA4M1 (1)
14+
#define BSP_LOCO_HZ (DT_PROP_OR(DT_NODELABEL(loco), clock_frequency, 0))
15+
#define BSP_MOCO_HZ (DT_PROP_OR(DT_NODELABEL(moco), clock_frequency, 0))
16+
#define BSP_SUB_CLOCK_HZ (DT_PROP_OR(DT_NODELABEL(subclk), clock_frequency, 0))
17+
#if BSP_CFG_HOCO_FREQUENCY == 0
18+
#define BSP_HOCO_HZ (24000000)
19+
#elif BSP_CFG_HOCO_FREQUENCY == 2
20+
#define BSP_HOCO_HZ (32000000)
21+
#elif BSP_CFG_HOCO_FREQUENCY == 4
22+
#define BSP_HOCO_HZ (48000000)
23+
#elif BSP_CFG_HOCO_FREQUENCY == 5
24+
#define BSP_HOCO_HZ (64000000)
25+
#else
26+
#error "Invalid HOCO frequency chosen (BSP_CFG_HOCO_FREQUENCY) in bsp_clock_cfg.h"
27+
#endif
28+
#define BSP_CORTEX_VECTOR_TABLE_ENTRIES (16U)
29+
#define BSP_VECTOR_TABLE_MAX_ENTRIES (48U)
30+
#define BSP_CFG_INLINE_IRQ_FUNCTIONS (1)
31+
32+
#define OFS_SEQ1 0xA001A001 | (1 << 1) | (3 << 2)
33+
#define OFS_SEQ2 (15 << 4) | (3 << 8) | (3 << 10)
34+
#define OFS_SEQ3 (1 << 12) | (1 << 14) | (1 << 17)
35+
#define OFS_SEQ4 (3 << 18) | (15 << 20) | (3 << 24) | (3 << 26)
36+
#define OFS_SEQ5 (1 << 28) | (1 << 30)
37+
#define BSP_CFG_ROM_REG_OFS0 (OFS_SEQ1 | OFS_SEQ2 | OFS_SEQ3 | OFS_SEQ4 | OFS_SEQ5)
38+
#define BSP_CFG_ROM_REG_OFS1 (0xFFFFFEC3 | (1 << 2) | (3 << 3) | (0 << 8))
39+
#define BSP_CFG_USE_LOW_VOLTAGE_MODE ((0))
40+
#define BSP_CFG_ROM_REG_MPU_PC0_ENABLE (1)
41+
#define BSP_CFG_ROM_REG_MPU_PC0_START (0x00FFFFFC)
42+
#define BSP_CFG_ROM_REG_MPU_PC0_END (0x00FFFFFF)
43+
#define BSP_CFG_ROM_REG_MPU_PC1_ENABLE (1)
44+
#define BSP_CFG_ROM_REG_MPU_PC1_START (0x00FFFFFC)
45+
#define BSP_CFG_ROM_REG_MPU_PC1_END (0x00FFFFFF)
46+
#define BSP_CFG_ROM_REG_MPU_REGION0_ENABLE (1)
47+
#define BSP_CFG_ROM_REG_MPU_REGION0_START (0x00FFFFFC)
48+
#define BSP_CFG_ROM_REG_MPU_REGION0_END (0x00FFFFFF)
49+
#define BSP_CFG_ROM_REG_MPU_REGION1_ENABLE (1)
50+
#define BSP_CFG_ROM_REG_MPU_REGION1_START (0x200FFFFC)
51+
#define BSP_CFG_ROM_REG_MPU_REGION1_END (0x200FFFFF)
52+
#define BSP_CFG_ROM_REG_MPU_REGION2_ENABLE (1)
53+
#define BSP_CFG_ROM_REG_MPU_REGION2_START (0x407FFFFC)
54+
#define BSP_CFG_ROM_REG_MPU_REGION2_END (0x407FFFFF)
55+
#define BSP_CFG_ROM_REG_MPU_REGION3_ENABLE (1)
56+
#define BSP_CFG_ROM_REG_MPU_REGION3_START (0x400DFFFC)
57+
#define BSP_CFG_ROM_REG_MPU_REGION3_END (0x400DFFFF)
58+
#ifndef BSP_CLOCK_CFG_MAIN_OSC_WAIT
59+
#define BSP_CLOCK_CFG_MAIN_OSC_WAIT (9)
60+
#endif
61+
/* Used to create IELS values for the interrupt initialization
62+
* table g_interrupt_event_link_select.
63+
*/
64+
#define BSP_PRV_IELS_ENUM(vector) (ELC_ ## vector)
65+
66+
/*
67+
* ID Code
68+
* Note: To permanently lock and disable the debug interface
69+
* define the BSP_ID_CODE_PERMANENTLY_LOCKED in the compiler settings.
70+
* WARNING: This will disable debug access to the part and cannot
71+
* be reversed by a debug probe.
72+
*/
73+
#if defined(BSP_ID_CODE_PERMANENTLY_LOCKED)
74+
#define BSP_CFG_ID_CODE_LONG_1 (0x00000000)
75+
#define BSP_CFG_ID_CODE_LONG_2 (0x00000000)
76+
#define BSP_CFG_ID_CODE_LONG_3 (0x00000000)
77+
#define BSP_CFG_ID_CODE_LONG_4 (0x00000000)
78+
#else
79+
/* ID CODE: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF */
80+
#define BSP_CFG_ID_CODE_LONG_1 (0xFFFFFFFF)
81+
#define BSP_CFG_ID_CODE_LONG_2 (0xFFFFFFFF)
82+
#define BSP_CFG_ID_CODE_LONG_3 (0xFFFFFFFF)
83+
#define BSP_CFG_ID_CODE_LONG_4 (0xffFFFFFF)
84+
#endif
85+
86+
#endif /* BSP_MCU_FAMILY_CFG_H_ */

0 commit comments

Comments
 (0)