Easyest, and may only way, of programming low level inputs like this is via the device tree. It lives in the pocket beagle under "/proc/device-tree" but can't program much from there its usually done in uboot.
First learn what you can set in the device tree, I'd suggest reading:
https://github.com/torvalds/linux/blob/master/arch/arm/boot/dts/am335x-pocketbeagle.dtshttps://github.com/torvalds/linux/blob/master/arch/arm/boot/dts/am33xx.dtsihttps://github.com/torvalds/linux/blob/master/arch/arm/boot/dts/am335x-osd335x-common.dtsihttps://github.com/torvalds/linux/blob/master/arch/arm/boot/dts/tps65217.dtsiAnd look at settings. You may just need to bitbash external ports to set up something external. So you'll probably have to check the wiring. I don't think the pocketbeagle has any significant external chips (quick look at mine, and big metal can I'd guess is a cystal - but would need to look closer to be sure - but some of the hardware inside the main osd device, you may need to bit bash.
To set things in the device tree (and probably similar for bitbash) look at /boot/boot.txt, you'll want to add text that looks like:
$this->bbcode_second_pass_code('', 'if load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} /boot/Image; then
if load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} /boot/dtbs/${fdtfile}; then
fdt addr ${fdt_addr_r}
fdt set /soc/apb@d0000000/mmc@74000 max-frequency <0x08f0d180>
if load ${devtype} ${devnum}:${distro_bootpart} ${ramdisk_addr_r} /boot/initramfs-linux.img; then
booti ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r};
else
booti ${kernel_addr_r} - ${fdt_addr_r};
fi;
fi;
fi
')
So the setting of the device tree address and then changing parameters - above came from an odroid-c2 (setting flash speed), so it will be different on the pocketbeagle, IIRC most interesting stuff on the pocket beagle lives under ocp. You'll then need to make it into /boot/boot.scr - and thats what uboot will read on boot up, and set before linux is loaded ...
And looking at the address on my pocket beagle, looks like the tps is attached via i2c:
$this->bbcode_second_pass_code('', '/proc/device-tree/ocp/interconnect@44c00000/segment@200000/target-module@b000/i2c@0/tps@24')
So you may be able to change things via i2c, but read the documentation, as its password protected.
And check what the kernel is doing and how it does the password:
https://github.com/torvalds/linux/blob/master/drivers/mfd/tps65217.cAnd see this thread:
https://groups.google.com/g/beagleboard/c/g_HbV8Gn3WEAnd could try P1.7 which *may* be VIN.USB
And from that last link, that points to TI slva901 which pretty much explains the problem and way round
https://www.ti.com/lit/an/slva901/slva901.pdf