forked from jadonk/cape-firmware
-
Notifications
You must be signed in to change notification settings - Fork 27
/
BB-BONE-PRU-03-00A0.dts
213 lines (179 loc) · 5.54 KB
/
BB-BONE-PRU-03-00A0.dts
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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
/*
* Copyright (C) 2013 Pantelis Antoniou <panto@antoniou-consulting.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
/dts-v1/;
/plugin/;
/ {
compatible = "ti,beaglebone", "ti,beaglebone-black";
/* identification */
part-number = "BB-BONE-PRU-03";
version = "00A0";
/* state the resources this cape uses */
exclusive-use =
/* the pin header uses */
"P9.27", /* pru0: pr1_pru0_pru_r30_5 */
/* the hardware IP uses */
"pru0";
fragment@0 {
target = <&am33xx_pinmux>;
__overlay__ {
pru_gpio_pins: pinmux_pru_gpio_pins {
pinctrl-single,pins = <
0x1a4 0x0f /* P9 27 GPIO3_19: mcasp0_fsr.gpio3[19] | MODE7 | OUTPUT */
>;
};
pru_pru_pins: pinmux_pru_pru_pins {
pinctrl-single,pins = <
0x1a4 0x25 /* mcasp0_fsr.pr1_pru0_pru_r30_5, MODE5 | OUTPUT | PRU */
>;
};
};
};
fragment@2 {
target = <&ocp>;
__overlay__ {
/* avoid stupid warning */
#address-cells = <1>;
#size-cells = <1>;
prurproc {
compatible = "ti,pru-rproc";
pinctrl-names = "default";
pinctrl-0 = <&pru_pru_pins>;
reg = <0x4a300000 0x080000>;
status = "okay";
ti,hwmods = "pruss";
ti,deassert-hard-reset = "pruss", "pruss";
interrupt-parent = <&intc>;
/* interrupts on the host */
interrupts = <20 21 22 23 24 25 26 27>;
/* events these interrupts map to (host interrupt) */
events = <2 3 4 5 6 7 8 9>;
/* PRU interrupt controller offset */
pintc = <0x20000>;
/* 12K Shared Data RAM global, size, local */
pdram = <0x10000 0x03000 0x10000>;
/*
* SYSEVENT ids
*
* - PRU/ARM communication
* PRU0_PRU1 17
* PRU1_PRU0 18
* PRU0_ARM 19
* PRU1_ARM 20
* ARM_PRU0 21
* ARM_PRU1 22
*
* Full SYSEVENT list
*
* parity_err_intr_pend 0
* pru0_r31_status_cnt16 1
* pru1_r31_status_cnt16 2
* uart_urxevt_intr_req 4
* uart_utxevt_intr_req 5
* uart_uint_intr_req 6
* iep_tim_cap_cmp_pend 7
* ecap_intr_req 15
* pru_mst_intr[0-15]_intr_req 16-31
* nirq 32 (UART1)
* mcasp_x_intr_pend 33 (MCASP1)
* mcasp_r_intr_pend 34 (MCASP1)
* ecap_intr_intr_pend 35 (ECAP1)
* ecap_intr_intr_pend 36 (ECAP2)
* epwm_intr_intr_pend 37 (eHRPWM2)
* dcan_uerr 38 (DCAN0)
* dcan_int1 39 (DCAN0)
* dcan_intr 40 (DCAN0)
* POINTRPEND 41 (I2C0)
* ecap_intr_intr_pend 42 (ECAP0)
* epwm_intr_intr_pend 43 (eHRPWM0)
* SINTERRUPTN 44 (McSPI0)
* eqep_intr_intr_pend 45 (eQEP0)
* epwm_intr_intr_pend 46 (eHRPWM1)
* c0_misc_pend 47 3PGSW (GEMAC)
* c0_tx_pend 48 3PGSW (GEMAC)
* c0_rx_pend 49 3PGSW (GEMAC)
* c0_rx_thresh_pend 50 3PGSW (GEMAC)
* nirq 51 (UART0)
* nirq 52 (UART2)
* gen_intr_pend 53 (ADC_TSC)
* mcasp_r_intr_pend 54 (McASP0)
* mcasp_x_intr_pend 55 (McASP1)
* pwm_trip_zone 56 (eHRPWM0/eHRPWM1/eHRP WM2)
* POINTRPEND1 57 (GPIO0)
* Emulation Suspend Signal 58 (Debugss)
* initiator_sinterrupt_q_n2 59 (Mbox0 - mail_u2_irq (mailbox interrupt for pru1))
* initiator_sinterrupt_q_n1 60 (Mbox0 - mail_u1_irq (mailbox interrupt for pru0))
* tptc_erint_pend_po 61 (TPTC0 (EDMA))
* tpcc_errint_pend_po 62 (TPCC (EDMA))
* tpcc_int_pend_po1 63 (TPCC (EDMA))
*
* HOST interrupt ids
*
* PRU0 0
* PRU1 1
* EVTOUT0-7 2-9
*/
/* sysevent map to intc channel */
sysevent-to-channel-map =
<17 1>, /* PRU0_PRU1 -> CH1 */
<18 0>, /* PRU1_PRU0 -> CH0 */
<19 2>, /* PRU0_ARM -> CH2 */
<20 3>, /* PRU1_ARM -> CH3 */
<21 0>, /* ARM_PRU0 -> CH0 */
<22 1>, /* ARM_PRU1 -> CH1 */
<24 4>, /* VRING Host->PRU0 -> CH4 */
<25 5>, /* VRING PRU0->Host -> CH5 */
<26 6>, /* VRING Host->PRU1 -> CH6 */
<27 7>; /* VRING PRU1->Host -> CH7 */
/* channel to host interrupt map */
channel-to-host-interrupt-map =
<0 0>, /* CH0 -> PRU0 */
<1 1>, /* CH1 -> PRU1 */
<2 2>, /* CH2 -> EVTOUT0 */
<3 3>, /* CH3 -> EVTOUT1 */
<4 0>, /* CH4 -> PRU0 */
<5 6>, /* CH5 -> EVTOUT4 */
<6 1>, /* CH6 -> PRU1 */
<7 7>; /* CH7 -> EVTOUT5 */
/* indices are ARM=0, PRU0=1, PRU1=2 */
target-to-sysevent-map =
<0xffffffff 21 22>, /* ARM: DONTCARE, ARM_PRU0, ARM_PRU1 */
< 19 0xffffffff 17>, /* PRU0: PRU0_ARM, DONTCARE, PRU0_PRU1 */
< 20 18 0xffffffff>; /* PRU1: PRU1_ARM, PRU1_PRU0, DONTCARE */
/* both the PRUs have 200MHz frequency so period is 5ns */
clock-freq = <200000000>;
/* definition for the first PRU */
pru0 {
pru-index = <0>;
/* offset, size, local */
iram = <0x34000 0x02000 0x00000>; /* code ram (8K) */
/* offset, size, local, other */
dram = <0x00000 0x02000 0x00000 0x10000>; /* data ram (8K) */
pctrl = <0x22000>;
pdbg = <0x22400>;
firmware-elf;
firmware = "prutest.elf";
/* sysevents signaling ring activity (host, pru)*/
vring-sysev = <24 25>;
resource_table {
resource-table;
version = <1>;
pru0_rproc_serial: pru0_vdev_rproc_serial {
vdev-rproc-serial;
/* notification IDs are totally bogus */
/* rproc will idr_alloc anyway */
notifyid = <8>; /* <- bogus */
/* da align num notifyid */
vring-0 = <0 16 8 0>;
vring-1 = <0 16 8 0>;
};
};
};
};
};
};
};