@@ -44,6 +44,8 @@ trait HasXDMABus {
44
44
45
45
// I
46
46
val interrupt_out = Output (Bool ())
47
+ val interrupt_out_msi_vec0to31 = Output (Bool ())
48
+ val interrupt_out_msi_vec32to63 = Output (Bool ())
47
49
48
50
// M.AW
49
51
val m_axib_awready = Input (Bool ())
@@ -244,6 +246,7 @@ class XDMABlackBox(c: XDMAParams) extends BlackBox
244
246
| CONFIG.ref_clk_freq {100_MHz} \\
245
247
| CONFIG.pl_link_cap_max_link_width {X ${c.lanes}} \\
246
248
| CONFIG.pl_link_cap_max_link_speed { ${pcieGTs}} \\
249
+ | CONFIG.msi_rx_pin_en {true} \\
247
250
| CONFIG.axisten_freq { ${axiMHzStr}} \\
248
251
| CONFIG.axi_addr_width { ${c.addrBits}} \\
249
252
| CONFIG.axi_data_width { ${busBytes* 8 }_bit} \\
@@ -258,7 +261,7 @@ class DiplomaticXDMA(c: XDMAParams)(implicit p:Parameters) extends LazyModule
258
261
{
259
262
val (busBytes, _) = XDMABlackBox .busConfig(c)
260
263
261
- val device = new SimpleDevice (" pci" , Seq (" xlnx,axi-pcie- host-1 .00.a " )) {
264
+ val device = new SimpleDevice (" pci" , Seq (" xlnx,xdma- host-3 .00" )) {
262
265
override def describe (resources : ResourceBindings ): Description = {
263
266
val Description (name, mapping) = super .describe(resources)
264
267
val intc = " pcie_intc"
@@ -269,6 +272,7 @@ class DiplomaticXDMA(c: XDMAParams)(implicit p:Parameters) extends LazyModule
269
272
" #size-cells" -> ofInt(2 ),
270
273
" #interrupt-cells" -> ofInt(1 ),
271
274
" device_type" -> Seq (ResourceString (" pci" )),
275
+ " interrupt-names" -> Seq (" misc" , " msi0" , " msi1" ).map(ResourceString .apply _),
272
276
" interrupt-map-mask" -> Seq (0 , 0 , 0 , 7 ).flatMap(ofInt),
273
277
" interrupt-map" -> Seq (1 , 2 , 3 , 4 ).flatMap(ofMap),
274
278
" ranges" -> resources(" ranges" ).map(x =>
@@ -306,7 +310,7 @@ class DiplomaticXDMA(c: XDMAParams)(implicit p:Parameters) extends LazyModule
306
310
id = IdRange (0 , 1 << c.mIDBits),
307
311
aligned = false )))))
308
312
309
- val intnode = IntSourceNode (IntSourcePortSimple (resources = device.int))
313
+ val intnode = IntSourceNode (IntSourcePortSimple (num = 3 , resources = device.int))
310
314
311
315
lazy val module = new LazyRawModuleImp (this ) {
312
316
// The master on the control port must be AXI-lite
@@ -343,6 +347,8 @@ class DiplomaticXDMA(c: XDMAParams)(implicit p:Parameters) extends LazyModule
343
347
344
348
// I
345
349
i(0 ) := blackbox.io.interrupt_out
350
+ i(1 ) := blackbox.io.interrupt_out_msi_vec0to31
351
+ i(2 ) := blackbox.io.interrupt_out_msi_vec32to63
346
352
347
353
// M.AW
348
354
blackbox.io.m_axib_awready := m.aw.ready
0 commit comments