LazyModule: provide Parameters
authorWesley W. Terpstra <wesley@sifive.com>
Wed, 7 Dec 2016 21:21:20 +0000 (13:21 -0800)
committerWesley W. Terpstra <wesley@sifive.com>
Wed, 7 Dec 2016 21:21:20 +0000 (13:21 -0800)
This tracks PR #478 in rocketchip.

src/main/scala/devices/gpio/GPIO.scala
src/main/scala/devices/gpio/GPIOPeriphery.scala
src/main/scala/devices/mockaon/MockAON.scala
src/main/scala/devices/mockaon/MockAONWrapper.scala
src/main/scala/devices/pwm/PWM.scala
src/main/scala/devices/spi/TLSPI.scala
src/main/scala/devices/uart/UART.scala

index 73ba3d0d6564cdcb506c15e18da0d42e2a6486e8..4a0b3fcaf8e728dfe5b40bfb1a9d5fe3faab8edf 100644 (file)
@@ -11,9 +11,9 @@ import util.AsyncResetRegVec
 case class GPIOConfig(address: BigInt, width: Int)
 
 trait HasGPIOParameters {
-  val params: Tuple2[Parameters, GPIOConfig]
-  implicit val p = params._1
-  val c = params._2
+  implicit val p: Parameters
+  val params: GPIOConfig
+  val c = params
 }
 
 // YAGNI: Make the PUE, DS, and
@@ -289,7 +289,7 @@ object GPIOInputPinCtrl {
 }
 
 // Magic TL2 Incantation to create a TL2 Slave
-class TLGPIO(p: Parameters, c: GPIOConfig)
+class TLGPIO(c: GPIOConfig)(implicit p: Parameters)
   extends TLRegisterRouter(c.address, interrupts = c.width, beatBytes = p(PeripheryBusConfig).beatBytes)(
-  new TLRegBundle(Tuple2(p, c), _)    with GPIOBundle)(
-  new TLRegModule(Tuple2(p, c), _, _) with GPIOModule)
+  new TLRegBundle(c, _)    with GPIOBundle)(
+  new TLRegModule(c, _, _) with GPIOModule)
index 414e7130f58a5de4dc081be45a4071f7e7919b17..f2fe5869201ce660e00bde8bf187cb5aadd5996c 100644 (file)
@@ -8,7 +8,7 @@ import uncore.tilelink2.TLFragmenter
 
 trait PeripheryGPIO {
   this: TopNetwork { val gpioConfig: GPIOConfig } =>
-  val gpio = LazyModule(new TLGPIO(p, gpioConfig))
+  val gpio = LazyModule(new TLGPIO(gpioConfig))
   gpio.node := TLFragmenter(peripheryBusConfig.beatBytes, cacheBlockBytes)(peripheryBus.node)
   intBus.intnode := gpio.intnode
 }
index 914a92c7aef6c1bd4e7ca6c907d66dce0c4cdda8..15af109f15b592611aa2883e1ddd5933f96d2505 100644 (file)
@@ -21,9 +21,9 @@ case class MockAONConfig(
 }
 
 trait HasMockAONParameters {
-  val params: (MockAONConfig, Parameters)
-  val c = params._1
-  implicit val p = params._2
+  implicit val p: Parameters
+  val params: MockAONConfig
+  val c = params
 }
 
 class MockAONPMUIO extends Bundle {
@@ -99,7 +99,7 @@ trait MockAONModule extends Module with HasRegMap with HasMockAONParameters {
 
 }
 
-class MockAON(c: MockAONConfig)(implicit val p: Parameters)
+class MockAON(c: MockAONConfig)(implicit p: Parameters)
   extends TLRegisterRouter(c.address, interrupts = 2, size = c.size, beatBytes = p(PeripheryBusConfig).beatBytes, concurrency = 1)(
-  new TLRegBundle((c, p), _)    with MockAONBundle)(
-  new TLRegModule((c, p), _, _) with MockAONModule)
+  new TLRegBundle(c, _)    with MockAONBundle)(
+  new TLRegModule(c, _, _) with MockAONModule)
index 15d755d7afc5d8fa0337e0e71e8576601fac2a01..62afb894d7a4065a62542ea3a1d878174cc2166b 100644 (file)
@@ -27,7 +27,7 @@ class MockAONWrapperBundle extends Bundle {
   val rsts = new MockAONMOffRstIO()
 }
 
-class MockAONWrapper(c: MockAONConfig)(implicit val p: Parameters) extends LazyModule {
+class MockAONWrapper(c: MockAONConfig)(implicit p: Parameters) extends LazyModule {
 
   val node = TLAsyncInputNode()
   val intnode = IntOutputNode()
index 2fd870c6797b239dcf8fb636337a707e0f2acc23..c649e7e376eec6cf7e48737a50291bf123ddb69a 100644 (file)
@@ -56,9 +56,9 @@ case class PWMBundleConfig(
 }
 
 trait HasPWMParameters {
-  val params: (PWMConfig, Parameters)
-  val c = params._1
-  implicit val p = params._2
+  implicit val p: Parameters
+  val params: PWMConfig
+  val c = params
 }
 
 trait PWMBundle extends Bundle with HasPWMParameters {
@@ -76,7 +76,7 @@ trait PWMModule extends Module with HasRegMap with HasPWMParameters {
   regmap((GenericTimer.timerRegMap(pwm, 0, c.regBytes)):_*)
 }
 
-class TLPWM(c: PWMConfig)(implicit val p: Parameters)
+class TLPWM(c: PWMConfig)(implicit p: Parameters)
   extends TLRegisterRouter(c.address, interrupts = c.ncmp, size = c.size, beatBytes = p(PeripheryBusConfig).beatBytes)(
-  new TLRegBundle((c, p), _)    with PWMBundle)(
-  new TLRegModule((c, p), _, _) with PWMModule)
+  new TLRegBundle(c, _)    with PWMBundle)(
+  new TLRegModule(c, _, _) with PWMModule)
index bc920ea3c1e7283d80f20d4c9ed2fdb7d54c3daf..f9954ce7c58d8189e135061388d1eb1871586e5f 100644 (file)
@@ -118,7 +118,7 @@ class SPITopModule[B <: SPITopBundle](c: SPIConfigBase, bundle: => B, outer: TLS
       RegField.r(1, ip.rxwm)))
 }
 
-abstract class TLSPIBase(c: SPIConfigBase)(implicit val p: Parameters) extends LazyModule {
+abstract class TLSPIBase(c: SPIConfigBase)(implicit p: Parameters) extends LazyModule {
   require(isPow2(c.rSize))
   val rnode = TLRegisterNode(address = AddressSet(c.rAddress, c.rSize-1), beatBytes = p(PeripheryBusConfig).beatBytes)
   val intnode = IntSourceNode(1)
index 68b47feff5ec2215166d6009326d1fe976c00fb8..e69689270db7830269a4f21e8650b776c4ca838d 100644 (file)
@@ -46,9 +46,9 @@ class UARTPortIO extends Bundle {
 }
 
 trait MixUARTParameters {
-  val params: (UARTConfig, Parameters)
-  val c = params._1
-  implicit val p = params._2
+  implicit val p: Parameters
+  val params: UARTConfig
+  val c = params
 }
 
 trait UARTTopBundle extends Bundle with MixUARTParameters with HasUARTParameters {
@@ -269,7 +269,7 @@ class Majority(in: Set[Bool]) {
 }
 
 // Magic TL2 Incantation to create a TL2 Slave
-class UART(c: UARTConfig)(implicit val p: Parameters)
+class UART(c: UARTConfig)(implicit p: Parameters)
   extends TLRegisterRouter(c.address, interrupts = 1, beatBytes = p(PeripheryBusConfig).beatBytes)(
-  new TLRegBundle((c, p), _)    with UARTTopBundle)(
-  new TLRegModule((c, p), _, _) with UARTTopModule)
+  new TLRegBundle(c, _)    with UARTTopBundle)(
+  new TLRegModule(c, _, _) with UARTTopModule)