package sifive.blocks.devices.spi
import Chisel._
-import config.Field
-import diplomacy.{LazyModule,LazyMultiIOModuleImp}
-import rocketchip.HasSystemNetworks
-import uncore.tilelink2.{TLFragmenter,TLWidthWidget}
-import util.HeterogeneousBag
+import freechips.rocketchip.config.Field
+import freechips.rocketchip.diplomacy.{LazyModule,LazyMultiIOModuleImp}
+import freechips.rocketchip.chip.HasSystemNetworks
+import freechips.rocketchip.tilelink.{TLFragmenter,TLWidthWidget}
+import freechips.rocketchip.util.HeterogeneousBag
case object PeripherySPIKey extends Field[Seq[SPIParams]]
}
trait HasPeripherySPIBundle {
- val spis: HeterogeneousBag[SPIPortIO]
+ val spi: HeterogeneousBag[SPIPortIO]
- def SPItoGPIOPins(dummy: Int = 1): Seq[SPIGPIOPort] = spis.map { s =>
- val pin = Module(new SPIGPIOPort(s.c))
- pin.io.spi <> s
- pin
- }
}
trait HasPeripherySPIModuleImp extends LazyMultiIOModuleImp with HasPeripherySPIBundle {
val outer: HasPeripherySPI
- val spis = IO(HeterogeneousBag(outer.spiParams.map(new SPIPortIO(_))))
+ val spi = IO(HeterogeneousBag(outer.spiParams.map(new SPIPortIO(_))))
- (spis zip outer.spis).foreach { case (io, device) =>
+ (spi zip outer.spis).foreach { case (io, device) =>
io <> device.module.io.port
}
}
trait HasPeripherySPIFlash extends HasSystemNetworks {
val spiFlashParams = p(PeripherySPIFlashKey)
- val qspi = spiFlashParams map { params =>
+ val qspis = spiFlashParams map { params =>
val qspi = LazyModule(new TLSPIFlash(peripheryBusBytes, params))
qspi.rnode := TLFragmenter(peripheryBusBytes, cacheBlockBytes)(peripheryBus.node)
qspi.fnode := TLFragmenter(1, cacheBlockBytes)(TLWidthWidget(peripheryBusBytes)(peripheryBus.node))
trait HasPeripherySPIFlashBundle {
val qspi: HeterogeneousBag[SPIPortIO]
+
}
trait HasPeripherySPIFlashModuleImp extends LazyMultiIOModuleImp with HasPeripherySPIFlashBundle {
val outer: HasPeripherySPIFlash
val qspi = IO(HeterogeneousBag(outer.spiFlashParams.map(new SPIPortIO(_))))
- (qspi zip outer.qspi) foreach { case (io, device) =>
+ (qspi zip outer.qspis) foreach { case (io, device) =>
io <> device.module.io.port
}
}