LazyModule: provide Parameters
[sifive-blocks.git] / src / main / scala / devices / gpio / GPIOPeriphery.scala
1 // See LICENSE for license details.
2 package sifive.blocks.devices.gpio
3
4 import Chisel._
5 import diplomacy.LazyModule
6 import rocketchip.{TopNetwork,TopNetworkModule}
7 import uncore.tilelink2.TLFragmenter
8
9 trait PeripheryGPIO {
10 this: TopNetwork { val gpioConfig: GPIOConfig } =>
11 val gpio = LazyModule(new TLGPIO(gpioConfig))
12 gpio.node := TLFragmenter(peripheryBusConfig.beatBytes, cacheBlockBytes)(peripheryBus.node)
13 intBus.intnode := gpio.intnode
14 }
15
16 trait PeripheryGPIOBundle {
17 this: { val gpioConfig: GPIOConfig } =>
18 val gpio = new GPIOPortIO(gpioConfig)
19 }
20
21 trait PeripheryGPIOModule {
22 this: TopNetworkModule {
23 val gpioConfig: GPIOConfig
24 val outer: PeripheryGPIO
25 val io: PeripheryGPIOBundle
26 } =>
27 io.gpio <> outer.gpio.module.io.port
28 }