1 // See LICENSE for license details.
2 package sifive.blocks.devices.i2c
5 import sifive.blocks.devices.gpio.{GPIOPin, GPIOOutputPinCtrl}
6 import sifive.blocks.util.ShiftRegisterInit
9 class I2CPinsIO extends Bundle {
14 class I2CGPIOPort(syncStages: Int = 0) extends Module {
16 val i2c = new I2CPort().flip()
17 val pins = new I2CPinsIO
20 GPIOOutputPinCtrl(io.pins.scl, io.i2c.scl.out, pue=true.B, ie = true.B)
21 io.pins.scl.o.oe := io.i2c.scl.oe
22 io.i2c.scl.in := ShiftRegisterInit(io.pins.scl.i.ival, syncStages, Bool(true))
24 GPIOOutputPinCtrl(io.pins.sda, io.i2c.sda.out, pue=true.B, ie = true.B)
25 io.pins.sda.o.oe := io.i2c.sda.oe
26 io.i2c.sda.in := ShiftRegisterInit(io.pins.sda.i.ival, syncStages, Bool(true))