+
+ # Combinatorial
+ comb += gpio_oe_list[gpio_addr].eq(csrbus.oe)
+ comb += gpio_ie_list[gpio_addr].eq(csrbus.ie)
+ # Check to prevent output being set if GPIO configured as input
+ # TODO: Is this necessary? PAD might deal with this
+ # check GPIO is in output mode and NOT input (oe high, ie low)
+ #with m.If(csrbus.oe & (~csrbus.ie)):
+ with m.If(gpio_oe_list[gpio_addr] & (~gpio_ie_list[gpio_addr])):
+ comb += gpio_o_list[gpio_addr].eq(csrbus.io)
+ comb += puen_list[gpio_addr].eq(csrbus.puen)
+ comb += pden_list[gpio_addr].eq(csrbus.pden)
+ comb += bank_sel[gpio_addr].eq(csrbus.bank_sel)