X-Git-Url: https://git.libre-soc.org/?p=sifive-blocks.git;a=blobdiff_plain;f=src%2Fmain%2Fscala%2Fdevices%2Fspi%2FTLSPIFlash.scala;h=a66ca1c9a2f4b802f807765002883da898e8a88e;hp=e433fec05e39f94701dd1bba76532faecad2c065;hb=4fcf349adb9e66ea7d8cc5394de5d3e0a2340985;hpb=fe65a87c5c94466ce17896cfd896c8e7c127d79b diff --git a/src/main/scala/devices/spi/TLSPIFlash.scala b/src/main/scala/devices/spi/TLSPIFlash.scala index e433fec..a66ca1c 100644 --- a/src/main/scala/devices/spi/TLSPIFlash.scala +++ b/src/main/scala/devices/spi/TLSPIFlash.scala @@ -41,16 +41,13 @@ case class SPIFlashParams( require(sampleDelay >= 0) } -class SPIFlashTopBundle(i: HeterogeneousBag[Vec[Bool]], r: HeterogeneousBag[TLBundle], val f: HeterogeneousBag[TLBundle]) extends SPITopBundle(i, r) - -class SPIFlashTopModule[B <: SPIFlashTopBundle] - (c: SPIFlashParamsBase, bundle: => B, outer: TLSPIFlashBase) - extends SPITopModule(c, bundle, outer) { +class SPIFlashTopModule(c: SPIFlashParamsBase, outer: TLSPIFlashBase) + extends SPITopModule(c, outer) { val flash = Module(new SPIFlashMap(c)) val arb = Module(new SPIArbiter(c, 2)) - private val f = io.tl.f.head + private val (f, _) = outer.fnode.in(0) // Tie unused channels f.b.valid := Bool(false) f.c.ready := Bool(true) @@ -68,7 +65,7 @@ class SPIFlashTopModule[B <: SPIFlashTopBundle] flash.io.addr.valid := f.a.valid f.a.ready := flash.io.addr.ready - f.d.bits := outer.fnode.edgesIn.head.AccessAck(a, flash.io.data.bits) + f.d.bits := outer.fnode.edges.in.head.AccessAck(a, flash.io.data.bits) f.d.valid := flash.io.data.valid flash.io.data.ready := f.d.ready @@ -96,18 +93,19 @@ class SPIFlashTopModule[B <: SPIFlashTopBundle] abstract class TLSPIFlashBase(w: Int, c: SPIFlashParamsBase)(implicit p: Parameters) extends TLSPIBase(w,c)(p) { require(isPow2(c.fSize)) - val fnode = TLManagerNode(1, TLManagerParameters( - address = Seq(AddressSet(c.fAddress, c.fSize-1)), - resources = device.reg("mem"), - regionType = RegionType.UNCACHED, - executable = true, - supportsGet = TransferSizes(1, 1), - fifoId = Some(0))) + val fnode = TLManagerNode(Seq(TLManagerPortParameters( + managers = Seq(TLManagerParameters( + address = Seq(AddressSet(c.fAddress, c.fSize-1)), + resources = device.reg("mem"), + regionType = RegionType.UNCACHED, + executable = true, + supportsGet = TransferSizes(1, 1), + fifoId = Some(0))), + beatBytes = 1))) } class TLSPIFlash(w: Int, c: SPIFlashParams)(implicit p: Parameters) extends TLSPIFlashBase(w,c)(p) { - lazy val module = new SPIFlashTopModule(c, - new SPIFlashTopBundle(intnode.bundleOut, rnode.bundleIn, fnode.bundleIn), this) { + lazy val module = new SPIFlashTopModule(c, this) { arb.io.inner(0) <> flash.io.link arb.io.inner(1) <> fifo.io.link