1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
name: MIMX93
trm: https://www.nxp.com/docs/en/reference-manual/IMX93RM.pdf
ap: ca55
interrupt_parent: gic
cp:
- name: cm33
variant: remote
remoteproc:
cm33:
# From mainline `imx93.dtsi` (`cm33: remoteproc-cm33`), the FRDM board's
# `imx93-11x11-frdm.dts`, and the loader's address-translation table
# (`imx_rproc_att_imx93` in `drivers/remoteproc/imx_rproc.c`).
#
# Unlike the i.MX 95 CM7, which is loaded into a DDR carveout, the i.MX 93
# CM33 runs from TCM. The addresses below are the *device* (CM33) view that
# the firmware links against, in the non-secure alias the NXP SDK uses:
#
# TCM CODE device 0x0FFE0000, 0x20000 (secure alias 0x1FFE0000)
# TCM SYS device 0x20000000, 0x20000 (secure alias 0x30000000)
#
# Within TCM SYS the layout follows NXP's
# `rpmsg_lite_pingpong_rtos_linux_remote` reference ELF:
#
# 0x20000000 0x3000 SDK-reserved (`.m33_suspend` starts here) -- left alone
# 0x20003000 0x1B000 `.data`/`.bss`/stack, top 0x2001E000 -- `ram`
# 0x2001E000 0x1000 resource table (`__RscTblStart`) -- `shmem`
#
# The loader's translation windows are wider (0x0FFC0000/0x1FFC0000 and
# 0x20000000/0x30000000, 0x40000 each), but only the top 128 KiB of the
# code window is TCM: the SDK reference firmware places `.interrupts` at
# 0x0FFE0000, and linking at the window base puts `.text` in no memory.
#
# `reserve` is false on all three TCM windows: they are not DRAM, so there
# is nothing to carve out of the kernel's memory map. The vendor tree does
# declare `rsc-table@2021e000` as `no-map` reserved memory -- that is the
# *system* address of the shmem window below (0x20200000 + 0x1E000), and the
# board DTS already reserves it, so re-emitting it here would duplicate the
# node.
compatible: fsl,imx93-cm33
vector_section: .interrupts
vector_placement: flash
vector:
name: m_interrupts
read: true
write: false
execute: true
window:
origin: 0x0FFE0000
length: 0x00001000
reserve: false
flash:
origin: 0x0FFE1000
length: 0x0001F000
reserve: false
shmem:
# `.resource_table`, at the device address matching the board's
# `rsc-table@2021e000` system carveout.
name: m_rsc_tbl_in_tcm
read: true
write: true
execute: false
window:
origin: 0x2001E000
length: 0x00001000
reserve: false
ram:
# TCM SYS between the SDK's suspend areas and the resource table.
origin: 0x20003000
length: 0x0001B000
reserve: false
memory:
trm_page:
aliases:
- offset: 0x20000000
secure: false
- offset: 0x30000000
secure: true
regions:
- name: OCRAM
type: sram
base: 0x00480000
length: 0x00040000
visible:
peripheral:
aliases:
- address: 0x50000000
secure: true
- address: 0x40000000
secure: false
doorbells:
- name: MU1
page: 585
type: mu
clock:
provider: clk
id: IMX93_CLK_MU1_A_GATE
length: 0x00020000
window_length: 0x00010000
parties:
- core: linux
window: a
irq: 21
page_memory: 62
page_irq: 93
memory: 0x04220000
- core: optee
window: a
irq: 21
page_memory: 62
page_irq: 93
memory: 0x04220000
- core: cm33
window: b
irq: 22
page_memory: 62
page_irq: 93
memory: 0x04230000
- core: cm33-s
window: b
irq: 22
page_memory: 62
page_irq: 93
memory: 0x04230000
party_page: 585
channels: 8
channel_page: 586
- name: MU2
page: 585
type: mu
clock:
provider: clk
id: IMX93_CLK_MU2_A_GATE
length: 0x00020000
window_length: 0x00010000
parties:
- core: linux
window: a
irq: 23
page_memory: 75
page_irq: 93
memory: 0x02430000
- core: optee
window: a
irq: 23
page_memory: 75
page_irq: 93
memory: 0x02430000
- core: cm33
window: b
irq: 24
page_memory: 75
page_irq: 93
memory: 0x02440000
- core: cm33-s
window: b
irq: 24
page_memory: 75
page_irq: 93
memory: 0x02440000
party_page: 585
channels: 8
channel_page: 586