On Tue, May 2, 2023 at 10:44 AM Michael Walle <michael@xxxxxxxx> wrote: > I'm not sure about the direction though. Technically speaking there is > no direction register. I'm not familiar with how open drain output are > modeled in linux. I'd expect the above is enough. Bartosz/Linus/Andy? Linux has no special concept of open drain/source, it just sees the .set(), .set_multiple() callbacks in gpio_chip to set the output value(s). How that happens physically is an electrical question, Linux just expects it to happen. .get_direction() is however partly a software concept here, so you might need to maintain a state in the driver for this. Linux will emulate open drain when requested by simply putting the line into input (high-impedance) mode for a high output, but only actively drive it low, which in most cases is physically the same as open drain. I imagine the direction would be unknown at probe() and only go into a definitive input/output state after .set_direction() is called so some tri-state enum? .set_config() can be called with the special parameter PIN_CONFIG_DRIVE_OPEN_DRAIN if the driver on the line can be put explicitly into open drain state. If the hardware is permanently like that, there is not much point in implementing it. Yours, Linus Walleij