X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmain%2Fscala%2Fdevices%2Fuart%2FUARTPeriphery.scala;h=58c61f5d0825a4f0d3c6df0d8e320b4208584215;hb=4d74e8f67f871df93f7bb2dfb2fa8bffb641fc4a;hp=1f8011ee5e6cb8967689a01a46db5d3984495409;hpb=b06b80dccdf4e71b37866cc0e32a800a2b1a62d1;p=sifive-blocks.git diff --git a/src/main/scala/devices/uart/UARTPeriphery.scala b/src/main/scala/devices/uart/UARTPeriphery.scala index 1f8011e..58c61f5 100644 --- a/src/main/scala/devices/uart/UARTPeriphery.scala +++ b/src/main/scala/devices/uart/UARTPeriphery.scala @@ -2,12 +2,11 @@ package sifive.blocks.devices.uart import Chisel._ -import config.Field -import diplomacy.{LazyModule, LazyMultiIOModuleImp} -import rocketchip.HasSystemNetworks -import uncore.tilelink2.TLFragmenter - -import sifive.blocks.devices.gpio.{GPIOPin, GPIOOutputPinCtrl, GPIOInputPinCtrl} +import freechips.rocketchip.config.Field +import freechips.rocketchip.diplomacy.{LazyModule, LazyMultiIOModuleImp} +import freechips.rocketchip.chip.HasSystemNetworks +import freechips.rocketchip.tilelink.TLFragmenter +import sifive.blocks.devices.pinctrl.{Pin, PinCtrl} import sifive.blocks.util.ShiftRegisterInit case object PeripheryUARTKey extends Field[Seq[UARTParams]] @@ -29,11 +28,6 @@ trait HasPeripheryUARTBundle { uarts.foreach { _.rxd := UInt(1) } } - def UARTtoGPIOPins(syncStages: Int = 0): Seq[UARTGPIOPort] = uarts.map { u => - val pin = Module(new UARTGPIOPort(syncStages)) - pin.io.uart <> u - pin - } } trait HasPeripheryUARTModuleImp extends LazyMultiIOModuleImp with HasPeripheryUARTBundle { @@ -45,18 +39,14 @@ trait HasPeripheryUARTModuleImp extends LazyMultiIOModuleImp with HasPeripheryUA } } -class UARTPinsIO extends Bundle { - val rxd = new GPIOPin - val txd = new GPIOPin -} +class UARTPins(pingen: () => Pin) extends Bundle { + val rxd = pingen() + val txd = pingen() -class UARTGPIOPort(syncStages: Int = 0) extends Module { - val io = new Bundle{ - val uart = new UARTPortIO().flip() - val pins = new UARTPinsIO + def fromUARTPort(uart: UARTPortIO, syncStages: Int = 0) { + txd.outputPin(uart.txd) + val rxd_t = rxd.inputPin() + uart.rxd := ShiftRegisterInit(rxd_t, syncStages, Bool(true)) } - - GPIOOutputPinCtrl(io.pins.txd, io.uart.txd) - val rxd = GPIOInputPinCtrl(io.pins.rxd) - io.uart.rxd := ShiftRegisterInit(rxd, syncStages, Bool(true)) } +