Skip to content

Commit e358713

Browse files
decsnykartben
authored andcommitted
drivers: Move flexram to misc driver
Flexram is really not a memory controller, and does not belong in memc namespace or directory. Move it to it's own misc directory and remove memc_ from the namespace. Signed-off-by: Declan Snyder <[email protected]>
1 parent db63e56 commit e358713

File tree

11 files changed

+69
-53
lines changed

11 files changed

+69
-53
lines changed

doc/releases/migration-guide-4.2.rst

+2
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,8 @@ Misc
236236
file can be included using ``<zephyr/drivers/misc/flexram/nxp_flexram.h>``.
237237
Modification to CMakeList.txt to use include this driver is no longer
238238
required.
239+
* All memc_flexram_* namespaced things including kconfigs and C API
240+
have been changed to just flexram_*.
239241

240242
Bluetooth
241243
*********

drivers/memc/CMakeLists.txt

-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ zephyr_library_sources_ifdef(CONFIG_MEMC_MCUX_FLEXSPI_S27KS0641 memc_mcux_flexsp
1515
zephyr_library_sources_ifdef(CONFIG_MEMC_MCUX_FLEXSPI_APS6408L memc_mcux_flexspi_aps6408l.c)
1616
zephyr_library_sources_ifdef(CONFIG_MEMC_MCUX_FLEXSPI_APS6404L memc_mcux_flexspi_aps6404l.c)
1717
zephyr_library_sources_ifdef(CONFIG_MEMC_MCUX_FLEXSPI_IS66WVQ8M4 memc_mcux_flexspi_is66wvq8m4.c)
18-
zephyr_library_sources_ifdef(CONFIG_MEMC_NXP_FLEXRAM memc_nxp_flexram.c)
1918
zephyr_library_sources_ifdef(CONFIG_MEMC_RENESAS_RA_SDRAM memc_renesas_ra_sdram.c)
2019

2120
zephyr_library_sources_ifdef(CONFIG_MEMC_SAM_SMC memc_sam_smc.c)

drivers/memc/Kconfig.mcux

-19
Original file line numberDiff line numberDiff line change
@@ -66,22 +66,3 @@ choice MEMC_LOG_LEVEL_CHOICE
6666
endchoice
6767

6868
endif # DT_HAS_NXP_IMX_FLEXSPI_ENABLED
69-
70-
71-
if DT_HAS_NXP_FLEXRAM_ENABLED
72-
73-
config MEMC_NXP_FLEXRAM
74-
bool
75-
default y
76-
77-
config MEMC_NXP_FLEXRAM_MAGIC_ADDR_API
78-
bool "NXP FlexRAM magic addr API"
79-
help
80-
Enable API to use flexRAM magic address functionality
81-
82-
config MEMC_NXP_FLEXRAM_ERROR_INTERRUPT
83-
bool "NXP FlexRAM error interrupt"
84-
help
85-
Allow flexram to generate error interrupts
86-
87-
endif # DT_HAS_NXP_FLEXRAM_ENABLED

drivers/misc/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ add_subdirectory_ifdef(CONFIG_ARM_ETHOS_U ethos_u)
44
add_subdirectory_ifdef(CONFIG_FT800 ft8xx)
55
add_subdirectory_ifdef(CONFIG_GROVE_LCD_RGB grove_lcd_rgb)
66
add_subdirectory_ifdef(CONFIG_PIO_RPI_PICO pio_rpi_pico)
7+
add_subdirectory_ifdef(CONFIG_NXP_FLEXRAM nxp_flexram)
78
add_subdirectory_ifdef(CONFIG_NXP_S32_EMIOS nxp_s32_emios)
89
add_subdirectory_ifdef(CONFIG_TIMEAWARE_GPIO timeaware_gpio)
910
add_subdirectory_ifdef(CONFIG_DEVMUX devmux)

drivers/misc/Kconfig

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ menu "Miscellaneous Drivers"
88
source "drivers/misc/ft8xx/Kconfig"
99
source "drivers/misc/grove_lcd_rgb/Kconfig"
1010
source "drivers/misc/pio_rpi_pico/Kconfig"
11+
source "drivers/misc/nxp_flexram/Kconfig"
1112
source "drivers/misc/nxp_s32_emios/Kconfig"
1213
source "drivers/misc/timeaware_gpio/Kconfig"
1314
source "drivers/misc/devmux/Kconfig"
+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Copyright 2025 NXP
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
zephyr_library()
5+
6+
zephyr_library_sources(
7+
nxp_flexram.c
8+
)

drivers/misc/nxp_flexram/Kconfig

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Copyright (c) 2021 Basalte bv
2+
# Copyright (c) 2023, ithinx GmbH
3+
# Copyright (c) 2023, Tonies GmbH
4+
# Copyright 2020-2023, 2025 NXP
5+
# SPDX-License-Identifier: Apache-2.0
6+
7+
config NXP_FLEXRAM
8+
bool
9+
default y if DT_HAS_NXP_FLEXRAM_ENABLED
10+
11+
if NXP_FLEXRAM
12+
13+
config NXP_FLEXRAM_MAGIC_ADDR_API
14+
bool "NXP FlexRAM magic addr API"
15+
depends on SOC_SERIES_IMXRT11XX
16+
help
17+
Enable API to use flexRAM magic address functionality
18+
19+
config NXP_FLEXRAM_ERROR_INTERRUPT
20+
bool "NXP FlexRAM error interrupt"
21+
help
22+
Allow flexram to generate error interrupts
23+
24+
endif # NXP_FLEXRAM

drivers/memc/memc_nxp_flexram.c renamed to drivers/misc/nxp_flexram/nxp_flexram.c

+15-15
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
#include "fsl_device_registers.h"
1616

1717

18-
#if defined(CONFIG_MEMC_NXP_FLEXRAM_MAGIC_ADDR_API)
18+
#if defined(CONFIG_NXP_FLEXRAM_MAGIC_ADDR_API)
1919
BUILD_ASSERT(DT_PROP(FLEXRAM_DT_NODE, flexram_has_magic_addr),
2020
"SOC does not support magic flexram addresses");
2121
#endif
@@ -92,7 +92,7 @@ static FLEXRAM_Type *const base = (FLEXRAM_Type *) DT_REG_ADDR(FLEXRAM_DT_NODE);
9292
static flexram_callback_t flexram_callback;
9393
static void *flexram_user_data;
9494

95-
void memc_flexram_register_callback(flexram_callback_t callback, void *user_data)
95+
void flexram_register_callback(flexram_callback_t callback, void *user_data)
9696
{
9797
flexram_callback = callback;
9898
flexram_user_data = user_data;
@@ -106,7 +106,7 @@ static void nxp_flexram_isr(void *arg)
106106
return;
107107
}
108108

109-
#if defined(CONFIG_MEMC_NXP_FLEXRAM_ERROR_INTERRUPT)
109+
#if defined(CONFIG_NXP_FLEXRAM_ERROR_INTERRUPT)
110110
if (base->INT_STATUS & FLEXRAM_INT_STATUS_OCRAM_ERR_STATUS_MASK) {
111111
base->INT_STATUS |= FLEXRAM_INT_STATUS_OCRAM_ERR_STATUS_MASK;
112112
flexram_callback(flexram_ocram_access_error, flexram_user_data);
@@ -119,9 +119,9 @@ static void nxp_flexram_isr(void *arg)
119119
base->INT_STATUS |= FLEXRAM_INT_STATUS_ITCM_ERR_STATUS_MASK;
120120
flexram_callback(flexram_itcm_access_error, flexram_user_data);
121121
}
122-
#endif /* CONFIG_MEMC_NXP_FLEXRAM_ERROR_INTERRUPT */
122+
#endif /* CONFIG_NXP_FLEXRAM_ERROR_INTERRUPT */
123123

124-
#if defined(CONFIG_MEMC_NXP_FLEXRAM_MAGIC_ADDR_API)
124+
#if defined(CONFIG_NXP_FLEXRAM_MAGIC_ADDR_API)
125125
if (base->INT_STATUS & FLEXRAM_INT_STATUS_OCRAM_MAM_STATUS_MASK) {
126126
base->INT_STATUS |= FLEXRAM_INT_STATUS_OCRAM_MAM_STATUS_MASK;
127127
flexram_callback(flexram_ocram_magic_addr, flexram_user_data);
@@ -134,11 +134,11 @@ static void nxp_flexram_isr(void *arg)
134134
base->INT_STATUS |= FLEXRAM_INT_STATUS_ITCM_MAM_STATUS_MASK;
135135
flexram_callback(flexram_itcm_magic_addr, flexram_user_data);
136136
}
137-
#endif /* CONFIG_MEMC_NXP_FLEXRAM_MAGIC_ADDR_API */
137+
#endif /* CONFIG_NXP_FLEXRAM_MAGIC_ADDR_API */
138138
}
139139

140-
#if defined(CONFIG_MEMC_NXP_FLEXRAM_MAGIC_ADDR_API)
141-
int memc_flexram_set_ocram_magic_addr(uint32_t ocram_addr)
140+
#if defined(CONFIG_NXP_FLEXRAM_MAGIC_ADDR_API)
141+
int flexram_set_ocram_magic_addr(uint32_t ocram_addr)
142142
{
143143
#ifdef OCRAM_DT_NODE
144144
ocram_addr -= DT_REG_ADDR(OCRAM_DT_NODE);
@@ -156,7 +156,7 @@ int memc_flexram_set_ocram_magic_addr(uint32_t ocram_addr)
156156
#endif
157157
}
158158

159-
int memc_flexram_set_itcm_magic_addr(uint32_t itcm_addr)
159+
int flexram_set_itcm_magic_addr(uint32_t itcm_addr)
160160
{
161161
#ifdef ITCM_DT_NODE
162162
itcm_addr -= DT_REG_ADDR(ITCM_DT_NODE);
@@ -174,7 +174,7 @@ int memc_flexram_set_itcm_magic_addr(uint32_t itcm_addr)
174174
#endif
175175
}
176176

177-
int memc_flexram_set_dtcm_magic_addr(uint32_t dtcm_addr)
177+
int flexram_set_dtcm_magic_addr(uint32_t dtcm_addr)
178178
{
179179
#ifdef DTCM_DT_NODE
180180
dtcm_addr -= DT_REG_ADDR(DTCM_DT_NODE);
@@ -191,7 +191,7 @@ int memc_flexram_set_dtcm_magic_addr(uint32_t dtcm_addr)
191191
return -ENODEV;
192192
#endif
193193
}
194-
#endif /* CONFIG_MEMC_NXP_FLEXRAM_MAGIC_ADDR_API */
194+
#endif /* CONFIG_NXP_FLEXRAM_MAGIC_ADDR_API */
195195

196196
#endif /* FLEXRAM_INTERRUPTS_USED */
197197

@@ -204,20 +204,20 @@ static int nxp_flexram_init(void)
204204
base->TCM_CTRL |= FLEXRAM_TCM_CTRL_TCM_RWAIT_EN_MASK;
205205
}
206206

207-
#if defined(CONFIG_MEMC_NXP_FLEXRAM_ERROR_INTERRUPT)
207+
#if defined(CONFIG_NXP_FLEXRAM_ERROR_INTERRUPT)
208208
base->INT_SIG_EN |= FLEXRAM_INT_SIG_EN_OCRAM_ERR_SIG_EN_MASK;
209209
base->INT_SIG_EN |= FLEXRAM_INT_SIG_EN_DTCM_ERR_SIG_EN_MASK;
210210
base->INT_SIG_EN |= FLEXRAM_INT_SIG_EN_ITCM_ERR_SIG_EN_MASK;
211211
base->INT_STAT_EN |= FLEXRAM_INT_STAT_EN_OCRAM_ERR_STAT_EN_MASK;
212212
base->INT_STAT_EN |= FLEXRAM_INT_STAT_EN_DTCM_ERR_STAT_EN_MASK;
213213
base->INT_STAT_EN |= FLEXRAM_INT_STAT_EN_ITCM_ERR_STAT_EN_MASK;
214-
#endif /* CONFIG_MEMC_NXP_FLEXRAM_ERROR_INTERRUPT */
214+
#endif /* CONFIG_NXP_FLEXRAM_ERROR_INTERRUPT */
215215

216-
#if defined(CONFIG_MEMC_NXP_FLEXRAM_MAGIC_ADDR_API)
216+
#if defined(CONFIG_NXP_FLEXRAM_MAGIC_ADDR_API)
217217
base->INT_SIG_EN |= FLEXRAM_INT_SIG_EN_OCRAM_MAM_SIG_EN_MASK;
218218
base->INT_SIG_EN |= FLEXRAM_INT_SIG_EN_DTCM_MAM_SIG_EN_MASK;
219219
base->INT_SIG_EN |= FLEXRAM_INT_SIG_EN_ITCM_MAM_SIG_EN_MASK;
220-
#endif /* CONFIG_MEMC_NXP_FLEXRAM_MAGIC_ADDR_API */
220+
#endif /* CONFIG_NXP_FLEXRAM_MAGIC_ADDR_API */
221221

222222
#ifdef FLEXRAM_INTERRUPTS_USED
223223
IRQ_CONNECT(DT_IRQN(FLEXRAM_DT_NODE), DT_IRQ(FLEXRAM_DT_NODE, priority),

include/zephyr/drivers/misc/flexram/nxp_flexram.h

+14-14
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
#define FLEXRAM_DT_NODE DT_INST(0, nxp_flexram)
1111
#define IOMUXC_GPR_DT_NODE DT_NODELABEL(iomuxcgpr)
1212

13-
#if defined(CONFIG_MEMC_NXP_FLEXRAM_MAGIC_ADDR_API) || \
14-
defined(CONFIG_MEMC_NXP_FLEXRAM_ERROR_INTERRUPT)
13+
#if defined(CONFIG_NXP_FLEXRAM_MAGIC_ADDR_API) || \
14+
defined(CONFIG_NXP_FLEXRAM_ERROR_INTERRUPT)
1515
#define FLEXRAM_INTERRUPTS_USED
1616
#endif
1717

@@ -20,22 +20,22 @@
2020
#endif
2121

2222
#ifdef FLEXRAM_INTERRUPTS_USED
23-
enum memc_flexram_interrupt_cause {
24-
#ifdef CONFIG_MEMC_NXP_FLEXRAM_ERROR_INTERRUPT
23+
enum flexram_interrupt_cause {
24+
#ifdef CONFIG_NXP_FLEXRAM_ERROR_INTERRUPT
2525
flexram_ocram_access_error,
2626
flexram_itcm_access_error,
2727
flexram_dtcm_access_error,
2828
#endif
29-
#ifdef CONFIG_MEMC_NXP_FLEXRAM_MAGIC_ADDR_API
29+
#ifdef CONFIG_NXP_FLEXRAM_MAGIC_ADDR_API
3030
flexram_ocram_magic_addr,
3131
flexram_itcm_magic_addr,
3232
flexram_dtcm_magic_addr,
33-
#endif /* CONFIG_MEMC_NXP_FLEXRAM_MAGIC_ADDR_API */
33+
#endif /* CONFIG_NXP_FLEXRAM_MAGIC_ADDR_API */
3434
};
3535

36-
typedef void (*flexram_callback_t)(enum memc_flexram_interrupt_cause, void *user_data);
36+
typedef void (*flexram_callback_t)(enum flexram_interrupt_cause, void *user_data);
3737

38-
void memc_flexram_register_callback(flexram_callback_t callback, void *user_data);
38+
void flexram_register_callback(flexram_callback_t callback, void *user_data);
3939
#endif /* FLEXRAM_INTERRUPTS_USED */
4040

4141
#ifdef FLEXRAM_RUNTIME_BANKS_USED
@@ -46,7 +46,7 @@ void memc_flexram_register_callback(flexram_callback_t callback, void *user_data
4646
*/
4747
#define GPR_FLEXRAM_REG_FILL(node_id, prop, idx) \
4848
(((uint32_t)DT_PROP_BY_IDX(node_id, prop, idx)) << (2 * idx))
49-
static inline void memc_flexram_dt_partition(void)
49+
static inline void flexram_dt_partition(void)
5050
{
5151
/* iomuxc_gpr must be const (in ROM region) because used in reconfiguring ram */
5252
static IOMUXC_GPR_Type *const iomuxc_gpr =
@@ -65,7 +65,7 @@ static inline void memc_flexram_dt_partition(void)
6565
}
6666
#endif /* FLEXRAM_RUNTIME_BANKS_USED */
6767

68-
#ifdef CONFIG_MEMC_NXP_FLEXRAM_MAGIC_ADDR_API
68+
#ifdef CONFIG_NXP_FLEXRAM_MAGIC_ADDR_API
6969
/** @brief Sets magic address for OCRAM
7070
*
7171
* Magic address allows core interrupt from FlexRAM when address
@@ -76,7 +76,7 @@ static inline void memc_flexram_dt_partition(void)
7676
* @retval -EINVAL if ocram_addr is not in OCRAM
7777
* @retval -ENODEV if there is no OCRAM allocation in flexram
7878
*/
79-
int memc_flexram_set_ocram_magic_addr(uint32_t ocram_addr);
79+
int flexram_set_ocram_magic_addr(uint32_t ocram_addr);
8080

8181
/** @brief Sets magic address for ITCM
8282
*
@@ -88,7 +88,7 @@ int memc_flexram_set_ocram_magic_addr(uint32_t ocram_addr);
8888
* @retval -EINVAL if itcm_addr is not in ITCM
8989
* @retval -ENODEV if there is no ITCM allocation in flexram
9090
*/
91-
int memc_flexram_set_itcm_magic_addr(uint32_t itcm_addr);
91+
int flexram_set_itcm_magic_addr(uint32_t itcm_addr);
9292

9393
/** @brief Sets magic address for DTCM
9494
*
@@ -100,6 +100,6 @@ int memc_flexram_set_itcm_magic_addr(uint32_t itcm_addr);
100100
* @retval -EINVAL if dtcm_addr is not in DTCM
101101
* @retval -ENODEV if there is no DTCM allocation in flexram
102102
*/
103-
int memc_flexram_set_dtcm_magic_addr(uint32_t dtcm_addr);
103+
int flexram_set_dtcm_magic_addr(uint32_t dtcm_addr);
104104

105-
#endif /* CONFIG_MEMC_NXP_FLEXRAM_MAGIC_ADDR_API */
105+
#endif /* CONFIG_NXP_FLEXRAM_MAGIC_ADDR_API */
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
CONFIG_MEMC_NXP_FLEXRAM_MAGIC_ADDR_API=y
1+
CONFIG_NXP_FLEXRAM_MAGIC_ADDR_API=y
22
CONFIG_CONSOLE_SUBSYS=y
33
CONFIG_CONSOLE_GETCHAR=y

samples/boards/nxp/mimxrt1170_evk_cm7/magic_addr/src/main.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ K_SEM_DEFINE(dtcm_magic, 0, 1);
1616
__dtcm_bss_section uint8_t var;
1717
int cnt;
1818

19-
void flexram_magic_addr_isr_cb(enum memc_flexram_interrupt_cause cause,
19+
void flexram_magic_addr_isr_cb(enum flexram_interrupt_cause cause,
2020
void *data)
2121
{
2222
ARG_UNUSED(data);
@@ -29,7 +29,7 @@ void flexram_magic_addr_isr_cb(enum memc_flexram_interrupt_cause cause,
2929

3030
int main(void)
3131
{
32-
memc_flexram_register_callback(flexram_magic_addr_isr_cb, NULL);
32+
flexram_register_callback(flexram_magic_addr_isr_cb, NULL);
3333

3434
console_init();
3535

@@ -38,7 +38,7 @@ int main(void)
3838

3939
uint32_t dtcm_addr = (uint32_t)&var;
4040

41-
memc_flexram_set_dtcm_magic_addr(dtcm_addr);
41+
flexram_set_dtcm_magic_addr(dtcm_addr);
4242

4343
uint8_t tmp;
4444

0 commit comments

Comments
 (0)