X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmain%2Fscala%2Fdevices%2Fpwm%2FPWMPeriphery.scala;h=00043ab97abd245c014fa5cc5127e23b7de2f99f;hb=4fcf349adb9e66ea7d8cc5394de5d3e0a2340985;hp=5ff9ccfe8f5b23dc17c79886c6afd2722a493070;hpb=9ae6413273bcb498af3a9542e0f4dffe084eee83;p=sifive-blocks.git diff --git a/src/main/scala/devices/pwm/PWMPeriphery.scala b/src/main/scala/devices/pwm/PWMPeriphery.scala index 5ff9ccf..00043ab 100644 --- a/src/main/scala/devices/pwm/PWMPeriphery.scala +++ b/src/main/scala/devices/pwm/PWMPeriphery.scala @@ -4,27 +4,15 @@ package sifive.blocks.devices.pwm import Chisel._ import freechips.rocketchip.config.Field import freechips.rocketchip.coreplex.{HasPeripheryBus, HasInterruptBus} -import freechips.rocketchip.diplomacy.{LazyModule, LazyMultiIOModuleImp} +import freechips.rocketchip.diplomacy.{LazyModule, LazyModuleImp} import freechips.rocketchip.util.HeterogeneousBag -import sifive.blocks.devices.gpio._ +import sifive.blocks.devices.pinctrl.{Pin} class PWMPortIO(val c: PWMParams) extends Bundle { val port = Vec(c.ncmp, Bool()).asOutput override def cloneType: this.type = new PWMPortIO(c).asInstanceOf[this.type] } -class PWMPinsIO(val c: PWMParams) extends Bundle { - val pwm = Vec(c.ncmp, new GPIOPin) -} - -class PWMGPIOPort(val c: PWMParams) extends Module { - val io = new Bundle { - val pwm = new PWMPortIO(c).flip() - val pins = new PWMPinsIO(c) - } - - GPIOOutputPinCtrl(io.pins.pwm, io.pwm.port.asUInt) -} case object PeripheryPWMKey extends Field[Seq[PWMParams]] @@ -39,20 +27,15 @@ trait HasPeripheryPWM extends HasPeripheryBus with HasInterruptBus { } trait HasPeripheryPWMBundle { - val pwms: HeterogeneousBag[PWMPortIO] + val pwm: HeterogeneousBag[PWMPortIO] - def PWMtoGPIOPins(dummy: Int = 1): Seq[PWMPinsIO] = pwms.map { p => - val pins = Module(new PWMGPIOPort(p.c)) - pins.io.pwm <> p - pins.io.pins - } } -trait HasPeripheryPWMModuleImp extends LazyMultiIOModuleImp with HasPeripheryPWMBundle { +trait HasPeripheryPWMModuleImp extends LazyModuleImp with HasPeripheryPWMBundle { val outer: HasPeripheryPWM - val pwms = IO(HeterogeneousBag(outer.pwmParams.map(new PWMPortIO(_)))) + val pwm = IO(HeterogeneousBag(outer.pwmParams.map(new PWMPortIO(_)))) - (pwms zip outer.pwms) foreach { case (io, device) => + (pwm zip outer.pwms) foreach { case (io, device) => io.port := device.module.io.gpio } }