Skip to content

Commit 59435df

Browse files
committed
[WIP] treewide: Upstream remaining features
1 parent 6f72dca commit 59435df

File tree

13 files changed

+1737
-119174
lines changed

13 files changed

+1737
-119174
lines changed

fpga/control_pulp-txilzu9eg/tcl/control_pulp_exilzcu102.tcl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,11 @@ connect_bd_intf_net [get_bd_intf_pins i_pms_top_fpga/pl_axi_slv] \
8282
connect_bd_net [get_bd_pins i_pms_top_fpga/soc_clk_o] [get_bd_pins i_zynq_ps/maxihpm0_fpd_aclk]
8383
connect_bd_net [get_bd_pins i_pms_top_fpga/soc_clk_o] [get_bd_pins i_zynq_ps/saxihp0_fpd_aclk]
8484

85+
86+
# connect Completion interrupt from PL to PS
87+
connect_bd_net [get_bd_pins i_pms_top_fpga/out_completion_irq] [get_bd_pins i_zynq_ps/pl_ps_irq0]
88+
89+
8590
# make pad pins external
8691
source tcl/zcu102_pins_bd.tcl
8792

hw/ips/axi_scmi_mailbox/Makefile

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,24 @@
55

66
# Generate C header file
77

8-
NUM_CHANNELS = 64
8+
PYTHON_VER = python3.6
9+
10+
NUM_CHANNELS = 1
911

1012
REGTOOL=../register_interface/vendor/lowrisc_opentitan/util/regtool.py
1113

12-
all: rtl/axi_scmi_mailbox.sv scmi.hjson headers
14+
all: rtl/axi_scmi_mailbox.sv scmi.hjson headers registers
1315

1416
rtl/axi_scmi_mailbox.sv: rtl/axi_scmi_mailbox.sv.tpl
15-
python3.6 scmi.py -s $(NUM_CHANNELS) < $< > $@
17+
$(PYTHON_VER) scmi.py -s $(NUM_CHANNELS) < $< > $@
1618

1719
scmi.hjson: scmi.hjson.tpl
18-
python3.6 scmi.py -s $(NUM_CHANNELS) < $< > $@
20+
$(PYTHON_VER) scmi.py -s $(NUM_CHANNELS) < $< > $@
1921

2022
headers: scmi.h
2123

2224
scmi.h: scmi.hjson
2325
$(REGTOOL) --cdefines $< > $@
2426

27+
registers: scmi.hjson
28+
$(REGTOOL) -r -t rtl/ $<

hw/ips/axi_scmi_mailbox/rtl/axi_scmi_mailbox.sv

Lines changed: 2 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -74,134 +74,8 @@ module axi_scmi_mailbox
7474

7575
scmi_reg_pkg::scmi_reg2hw_t reg2hw;
7676

77-
assign irq_doorbell_o[0] = reg2hw.doorbell_c0.intr.q;
78-
assign irq_completion_o[0] = reg2hw.completion_interrupt_c0.intr.q;
79-
assign irq_doorbell_o[1] = reg2hw.doorbell_c1.intr.q;
80-
assign irq_completion_o[1] = reg2hw.completion_interrupt_c1.intr.q;
81-
assign irq_doorbell_o[2] = reg2hw.doorbell_c2.intr.q;
82-
assign irq_completion_o[2] = reg2hw.completion_interrupt_c2.intr.q;
83-
assign irq_doorbell_o[3] = reg2hw.doorbell_c3.intr.q;
84-
assign irq_completion_o[3] = reg2hw.completion_interrupt_c3.intr.q;
85-
assign irq_doorbell_o[4] = reg2hw.doorbell_c4.intr.q;
86-
assign irq_completion_o[4] = reg2hw.completion_interrupt_c4.intr.q;
87-
assign irq_doorbell_o[5] = reg2hw.doorbell_c5.intr.q;
88-
assign irq_completion_o[5] = reg2hw.completion_interrupt_c5.intr.q;
89-
assign irq_doorbell_o[6] = reg2hw.doorbell_c6.intr.q;
90-
assign irq_completion_o[6] = reg2hw.completion_interrupt_c6.intr.q;
91-
assign irq_doorbell_o[7] = reg2hw.doorbell_c7.intr.q;
92-
assign irq_completion_o[7] = reg2hw.completion_interrupt_c7.intr.q;
93-
assign irq_doorbell_o[8] = reg2hw.doorbell_c8.intr.q;
94-
assign irq_completion_o[8] = reg2hw.completion_interrupt_c8.intr.q;
95-
assign irq_doorbell_o[9] = reg2hw.doorbell_c9.intr.q;
96-
assign irq_completion_o[9] = reg2hw.completion_interrupt_c9.intr.q;
97-
assign irq_doorbell_o[10] = reg2hw.doorbell_c10.intr.q;
98-
assign irq_completion_o[10] = reg2hw.completion_interrupt_c10.intr.q;
99-
assign irq_doorbell_o[11] = reg2hw.doorbell_c11.intr.q;
100-
assign irq_completion_o[11] = reg2hw.completion_interrupt_c11.intr.q;
101-
assign irq_doorbell_o[12] = reg2hw.doorbell_c12.intr.q;
102-
assign irq_completion_o[12] = reg2hw.completion_interrupt_c12.intr.q;
103-
assign irq_doorbell_o[13] = reg2hw.doorbell_c13.intr.q;
104-
assign irq_completion_o[13] = reg2hw.completion_interrupt_c13.intr.q;
105-
assign irq_doorbell_o[14] = reg2hw.doorbell_c14.intr.q;
106-
assign irq_completion_o[14] = reg2hw.completion_interrupt_c14.intr.q;
107-
assign irq_doorbell_o[15] = reg2hw.doorbell_c15.intr.q;
108-
assign irq_completion_o[15] = reg2hw.completion_interrupt_c15.intr.q;
109-
assign irq_doorbell_o[16] = reg2hw.doorbell_c16.intr.q;
110-
assign irq_completion_o[16] = reg2hw.completion_interrupt_c16.intr.q;
111-
assign irq_doorbell_o[17] = reg2hw.doorbell_c17.intr.q;
112-
assign irq_completion_o[17] = reg2hw.completion_interrupt_c17.intr.q;
113-
assign irq_doorbell_o[18] = reg2hw.doorbell_c18.intr.q;
114-
assign irq_completion_o[18] = reg2hw.completion_interrupt_c18.intr.q;
115-
assign irq_doorbell_o[19] = reg2hw.doorbell_c19.intr.q;
116-
assign irq_completion_o[19] = reg2hw.completion_interrupt_c19.intr.q;
117-
assign irq_doorbell_o[20] = reg2hw.doorbell_c20.intr.q;
118-
assign irq_completion_o[20] = reg2hw.completion_interrupt_c20.intr.q;
119-
assign irq_doorbell_o[21] = reg2hw.doorbell_c21.intr.q;
120-
assign irq_completion_o[21] = reg2hw.completion_interrupt_c21.intr.q;
121-
assign irq_doorbell_o[22] = reg2hw.doorbell_c22.intr.q;
122-
assign irq_completion_o[22] = reg2hw.completion_interrupt_c22.intr.q;
123-
assign irq_doorbell_o[23] = reg2hw.doorbell_c23.intr.q;
124-
assign irq_completion_o[23] = reg2hw.completion_interrupt_c23.intr.q;
125-
assign irq_doorbell_o[24] = reg2hw.doorbell_c24.intr.q;
126-
assign irq_completion_o[24] = reg2hw.completion_interrupt_c24.intr.q;
127-
assign irq_doorbell_o[25] = reg2hw.doorbell_c25.intr.q;
128-
assign irq_completion_o[25] = reg2hw.completion_interrupt_c25.intr.q;
129-
assign irq_doorbell_o[26] = reg2hw.doorbell_c26.intr.q;
130-
assign irq_completion_o[26] = reg2hw.completion_interrupt_c26.intr.q;
131-
assign irq_doorbell_o[27] = reg2hw.doorbell_c27.intr.q;
132-
assign irq_completion_o[27] = reg2hw.completion_interrupt_c27.intr.q;
133-
assign irq_doorbell_o[28] = reg2hw.doorbell_c28.intr.q;
134-
assign irq_completion_o[28] = reg2hw.completion_interrupt_c28.intr.q;
135-
assign irq_doorbell_o[29] = reg2hw.doorbell_c29.intr.q;
136-
assign irq_completion_o[29] = reg2hw.completion_interrupt_c29.intr.q;
137-
assign irq_doorbell_o[30] = reg2hw.doorbell_c30.intr.q;
138-
assign irq_completion_o[30] = reg2hw.completion_interrupt_c30.intr.q;
139-
assign irq_doorbell_o[31] = reg2hw.doorbell_c31.intr.q;
140-
assign irq_completion_o[31] = reg2hw.completion_interrupt_c31.intr.q;
141-
assign irq_doorbell_o[32] = reg2hw.doorbell_c32.intr.q;
142-
assign irq_completion_o[32] = reg2hw.completion_interrupt_c32.intr.q;
143-
assign irq_doorbell_o[33] = reg2hw.doorbell_c33.intr.q;
144-
assign irq_completion_o[33] = reg2hw.completion_interrupt_c33.intr.q;
145-
assign irq_doorbell_o[34] = reg2hw.doorbell_c34.intr.q;
146-
assign irq_completion_o[34] = reg2hw.completion_interrupt_c34.intr.q;
147-
assign irq_doorbell_o[35] = reg2hw.doorbell_c35.intr.q;
148-
assign irq_completion_o[35] = reg2hw.completion_interrupt_c35.intr.q;
149-
assign irq_doorbell_o[36] = reg2hw.doorbell_c36.intr.q;
150-
assign irq_completion_o[36] = reg2hw.completion_interrupt_c36.intr.q;
151-
assign irq_doorbell_o[37] = reg2hw.doorbell_c37.intr.q;
152-
assign irq_completion_o[37] = reg2hw.completion_interrupt_c37.intr.q;
153-
assign irq_doorbell_o[38] = reg2hw.doorbell_c38.intr.q;
154-
assign irq_completion_o[38] = reg2hw.completion_interrupt_c38.intr.q;
155-
assign irq_doorbell_o[39] = reg2hw.doorbell_c39.intr.q;
156-
assign irq_completion_o[39] = reg2hw.completion_interrupt_c39.intr.q;
157-
assign irq_doorbell_o[40] = reg2hw.doorbell_c40.intr.q;
158-
assign irq_completion_o[40] = reg2hw.completion_interrupt_c40.intr.q;
159-
assign irq_doorbell_o[41] = reg2hw.doorbell_c41.intr.q;
160-
assign irq_completion_o[41] = reg2hw.completion_interrupt_c41.intr.q;
161-
assign irq_doorbell_o[42] = reg2hw.doorbell_c42.intr.q;
162-
assign irq_completion_o[42] = reg2hw.completion_interrupt_c42.intr.q;
163-
assign irq_doorbell_o[43] = reg2hw.doorbell_c43.intr.q;
164-
assign irq_completion_o[43] = reg2hw.completion_interrupt_c43.intr.q;
165-
assign irq_doorbell_o[44] = reg2hw.doorbell_c44.intr.q;
166-
assign irq_completion_o[44] = reg2hw.completion_interrupt_c44.intr.q;
167-
assign irq_doorbell_o[45] = reg2hw.doorbell_c45.intr.q;
168-
assign irq_completion_o[45] = reg2hw.completion_interrupt_c45.intr.q;
169-
assign irq_doorbell_o[46] = reg2hw.doorbell_c46.intr.q;
170-
assign irq_completion_o[46] = reg2hw.completion_interrupt_c46.intr.q;
171-
assign irq_doorbell_o[47] = reg2hw.doorbell_c47.intr.q;
172-
assign irq_completion_o[47] = reg2hw.completion_interrupt_c47.intr.q;
173-
assign irq_doorbell_o[48] = reg2hw.doorbell_c48.intr.q;
174-
assign irq_completion_o[48] = reg2hw.completion_interrupt_c48.intr.q;
175-
assign irq_doorbell_o[49] = reg2hw.doorbell_c49.intr.q;
176-
assign irq_completion_o[49] = reg2hw.completion_interrupt_c49.intr.q;
177-
assign irq_doorbell_o[50] = reg2hw.doorbell_c50.intr.q;
178-
assign irq_completion_o[50] = reg2hw.completion_interrupt_c50.intr.q;
179-
assign irq_doorbell_o[51] = reg2hw.doorbell_c51.intr.q;
180-
assign irq_completion_o[51] = reg2hw.completion_interrupt_c51.intr.q;
181-
assign irq_doorbell_o[52] = reg2hw.doorbell_c52.intr.q;
182-
assign irq_completion_o[52] = reg2hw.completion_interrupt_c52.intr.q;
183-
assign irq_doorbell_o[53] = reg2hw.doorbell_c53.intr.q;
184-
assign irq_completion_o[53] = reg2hw.completion_interrupt_c53.intr.q;
185-
assign irq_doorbell_o[54] = reg2hw.doorbell_c54.intr.q;
186-
assign irq_completion_o[54] = reg2hw.completion_interrupt_c54.intr.q;
187-
assign irq_doorbell_o[55] = reg2hw.doorbell_c55.intr.q;
188-
assign irq_completion_o[55] = reg2hw.completion_interrupt_c55.intr.q;
189-
assign irq_doorbell_o[56] = reg2hw.doorbell_c56.intr.q;
190-
assign irq_completion_o[56] = reg2hw.completion_interrupt_c56.intr.q;
191-
assign irq_doorbell_o[57] = reg2hw.doorbell_c57.intr.q;
192-
assign irq_completion_o[57] = reg2hw.completion_interrupt_c57.intr.q;
193-
assign irq_doorbell_o[58] = reg2hw.doorbell_c58.intr.q;
194-
assign irq_completion_o[58] = reg2hw.completion_interrupt_c58.intr.q;
195-
assign irq_doorbell_o[59] = reg2hw.doorbell_c59.intr.q;
196-
assign irq_completion_o[59] = reg2hw.completion_interrupt_c59.intr.q;
197-
assign irq_doorbell_o[60] = reg2hw.doorbell_c60.intr.q;
198-
assign irq_completion_o[60] = reg2hw.completion_interrupt_c60.intr.q;
199-
assign irq_doorbell_o[61] = reg2hw.doorbell_c61.intr.q;
200-
assign irq_completion_o[61] = reg2hw.completion_interrupt_c61.intr.q;
201-
assign irq_doorbell_o[62] = reg2hw.doorbell_c62.intr.q;
202-
assign irq_completion_o[62] = reg2hw.completion_interrupt_c62.intr.q;
203-
assign irq_doorbell_o[63] = reg2hw.doorbell_c63.intr.q;
204-
assign irq_completion_o[63] = reg2hw.completion_interrupt_c63.intr.q;
77+
assign irq_doorbell_o[0] = |(reg2hw.doorbell_c0.q);
78+
assign irq_completion_o[0] = |(reg2hw.completion_interrupt_c0.q);
20579

20680
scmi_reg_top #(
20781
.reg_req_t(reg_req_t),

hw/ips/axi_scmi_mailbox/rtl/axi_scmi_mailbox.sv.tpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ module axi_scmi_mailbox
7575
scmi_reg_pkg::scmi_reg2hw_t reg2hw;
7676

7777
% for i in range(src):
78-
assign irq_doorbell_o[${i}] = reg2hw.doorbell_c${i}.intr.q;
79-
assign irq_completion_o[${i}] = reg2hw.completion_interrupt_c${i}.intr.q;
78+
assign irq_doorbell_o[${i}] = |(reg2hw.doorbell_c${i}.q);
79+
assign irq_completion_o[${i}] = |(reg2hw.completion_interrupt_c${i}.q);
8080
% endfor
8181

8282
scmi_reg_top #(

0 commit comments

Comments
 (0)