GPIO not acting as expected

See my attached DT overlay for my custom cape on a BeagleBone Black with 6.12.92-bone61. It configures some gpio, uart1 and some devices on the i2c2 bus. I can communicate with the devices on the i2c2 bus and uart1 so I know the overlay is getting loaded, but I’m not seeing what I expect to see on some of the pins. For instance P8_12 is configured as an input with pullup resistor, but my scope shows it as low (0v) when nothing is driving it. If I pull the pin up to 3.3V using a 27kohm resistor, the voltage on the pin goes up about half way. That tells me the pin is most likely configured with a pulldown resistor.

Also ‘show-pins’, ‘gpioinfo’ and ‘cat /sys/kernel/debug/pinctrl/44e10800.pinmux-pinctrl-single/pins’ indicate that my gpio are NOT properly configured. But, the uart1 and i2c2 pins are properly configured.

Can anyone identify what I’m doing wrong here?

530-0966-00A0_b.dtso (2.9 KB)

Just a small change.. you can define one overlay with setting pinctrl-0 in am33xx_pinmux…

/*
 * Pinmux configuration
 */
&am33xx_pinmux {
	pinctrl-names = "default";
	pinctrl-0 = <&bb_input_pins &bb_output_pins>;

    bb_uart1_pins: pinmux_bb_uart1_pins {
        pinctrl-single,pins = <
            AM33XX_PADCONF(AM335X_PIN_UART1_TXD, PIN_OUTPUT, MUX_MODE0)
            AM33XX_PADCONF(AM335X_PIN_UART1_RXD, PIN_INPUT,  MUX_MODE0)
        >;
    };

    bb_input_pins: pinmux_bb_input_pins {

Thank you Robert. I knew I was getting close.

Is there a way to initialize my output pin at P8_19 to a high level? I’ve read about ‘hog’, but that didn’t sound like the way to do it if i wanted control in user space.

gpio-led allows for initial state…

Thank you! LED is blinking.

Is there a driver or method for a open-drain output? Somehow toggle between an output driving low and an input with or without a pullup?

Google yielded a wealth of information by searching for: libgpiod open-drain