{
int pin;
struct ti_gpio_softc *sc;
- uint32_t flags, reg_oe, rev;
+ uint32_t flags, reg_oe, reg_set, rev;
clk_ident_t clk;
sc = device_get_softc(dev);
/* Init OE register based on pads configuration. */
reg_oe = 0xffffffff;
+ reg_set = 0;
for (pin = 0; pin < PINS_PER_BANK; pin++) {
TI_GPIO_GET_FLAGS(dev, pin, &flags);
- if (flags & GPIO_PIN_OUTPUT)
+ if (flags & GPIO_PIN_OUTPUT) {
reg_oe &= ~(1UL << pin);
+ if (flags & GPIO_PIN_PULLUP)
+ reg_set |= (1UL << pin);
+ }
}
ti_gpio_write_4(sc, TI_GPIO_OE, reg_oe);
+ if (reg_set)
+ ti_gpio_write_4(sc, TI_GPIO_SETDATAOUT, reg_set);
return (0);
}