spi: add dts ranges field for memory mapped spi (#19)
[sifive-blocks.git] / src / main / scala / devices / spi / TLSPI.scala
index 5c5b9bfe5409fd91a1bd411e16d5cbc420a14283..5833fad7a9669c85d2c8b1a6cdce9d3282f63d7c 100644 (file)
@@ -109,7 +109,15 @@ class SPITopModule[B <: SPITopBundle](c: SPIParamsBase, bundle: => B, outer: TLS
 
 abstract class TLSPIBase(w: Int, c: SPIParamsBase)(implicit p: Parameters) extends LazyModule {
   require(isPow2(c.rSize))
-  val device = new SimpleDevice("spi", Seq("sifive,spi0"))
+  val device = new SimpleDevice("spi", Seq("sifive,spi0")) {
+    override def describe(resources: ResourceBindings): Description = {
+      val Description(name, mapping) = super.describe(resources)
+      val rangesSeq = resources("ranges").map(_.value)
+      val ranges = if (rangesSeq.isEmpty) Map() else Map("ranges" -> rangesSeq)
+      Description(name, mapping ++ ranges)
+    }
+  }
+
   val rnode = TLRegisterNode(address = Seq(AddressSet(c.rAddress, c.rSize-1)), device = device, beatBytes = w)
   val intnode = IntSourceNode(IntSourcePortSimple(resources = device.int))
 }