The GPIO utils in FPP use a combination of /sys/devices/platform/ocp/ocp:%s_pinmux/state and /sys/class/gpio/gpio%u/ locations to configure the pin in various ways. See:
https://github.com/FalconChristmas/fpp/blob/master/src/util/BBBUtils.cpp#L228
Some of it is a bit complex as some pins may need to boot up in i2c mode but then be flipped to gpio/out.
The idea of using libgpiod is “ok” but doesn’t allow configuring the internal pull ups for the input (at least until kernel 5.4 and a newer version of libgpiod)
Dan