X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmain%2Fscala%2Fdevices%2Fjtag%2FJTAGPins.scala;h=5112faa65de207e7b1247865a35d7744fa402fdb;hb=81e301f9f75bfdb495d72951f33cada08786d83a;hp=342f2b9a1c8e27bfc921d24fe0d676dc113a520e;hpb=86010395adffd9ee4a42f5240b08bb0f243972ff;p=sifive-blocks.git diff --git a/src/main/scala/devices/jtag/JTAGPins.scala b/src/main/scala/devices/jtag/JTAGPins.scala index 342f2b9..5112faa 100644 --- a/src/main/scala/devices/jtag/JTAGPins.scala +++ b/src/main/scala/devices/jtag/JTAGPins.scala @@ -13,21 +13,25 @@ import freechips.rocketchip.config._ import freechips.rocketchip.jtag.{JTAGIO} import sifive.blocks.devices.pinctrl.{Pin, PinCtrl} -class JTAGPins[T <: Pin](pingen: () => T, hasTRSTn: Boolean = true) extends Bundle { - +class JTAGSignals[T <: Data](pingen: () => T, hasTRSTn: Boolean = true) extends Bundle { val TCK = pingen() val TMS = pingen() val TDI = pingen() val TDO = pingen() val TRSTn = if (hasTRSTn) Option(pingen()) else None +} + +class JTAGPins[T <: Pin](pingen: () => T, hasTRSTn: Boolean = true) extends JTAGSignals[T](pingen, hasTRSTn) + +object JTAGPinsFromPort { - def fromPort(jtag: JTAGIO): Unit = { - jtag.TCK := TCK.inputPin (pue = Bool(true)).asClock - jtag.TMS := TMS.inputPin (pue = Bool(true)) - jtag.TDI := TDI.inputPin(pue = Bool(true)) - jtag.TRSTn.foreach{t => t := TRSTn.get.inputPin(pue = Bool(true))} + def apply[T <: Pin] (pins: JTAGSignals[T], jtag: JTAGIO): Unit = { + jtag.TCK := pins.TCK.inputPin (pue = Bool(true)).asClock + jtag.TMS := pins.TMS.inputPin (pue = Bool(true)) + jtag.TDI := pins.TDI.inputPin(pue = Bool(true)) + jtag.TRSTn.foreach{t => t := pins.TRSTn.get.inputPin(pue = Bool(true))} - TDO.outputPin(jtag.TDO.data) - TDO.o.oe := jtag.TDO.driven + pins.TDO.outputPin(jtag.TDO.data) + pins.TDO.o.oe := jtag.TDO.driven } }