Since I can't get the devicetree working on the 4.4.62 kernel, I'm trying
to set the GPIO pin configuration directly. I did this on the Beagle Board
a long time ago, and am trying to adapt that code.
So, I have this code :
int fd = open("/dev/mem", O_RDWR | O_SYNC);
volatile ulong *pinmux;
pinmux = (ulong*) mmap(NULL, 0x2000, PROT_READ | PROT_WRITE, MAP_SHARED,
fd, 0x44E10000);
if (pinmux == MAP_FAILED) {
printf("Pinmux Mapping failed\n");
close(fd);
}
pinmux[0x0880/4] = 0x0f; // P8.25 GPIO1.0 write, no pulls,
mode 7
pinmux[0x0884/4] = 0x0f; // P8.24 GPIO1.1 write, no pulls,
mode 7
and then try to write values to the set and clear registers :
fd = open("/dev/mem", O_RDWR | O_SYNC);
// GPIO Configuration: configure are input
volatile ushort *gpios;
gpios = (ushort*) mmap(NULL, 0x2000, PROT_READ | PROT_WRITE, MAP_SHARED,
fd, 0x4804C000);
if (gpios == MAP_FAILED) {
printf("Gpios Mapping failed\n");
close(fd);
}
gpios[gpios_clear] = 0xff;
gpios[gpios_set] = j;
But I don't see any response. More oddly, I don't see any change in
/sys/kernel/debug/pinctrl/44e10800.pinmux/pins
Which lists the above pins as :
pin 32 (44e10880.0) 00000032 pinctrl-single
pin 33 (44e10884.0) 00000032 pinctrl-single
I think I am writing 0x0f to those registers, and I still see 0x32, which
would indicate why the GPIOs are not getting through to the header pins.
If I read out the pinmux register in my program, it ALSO shows as 0x32, so
apparently the write to that register is silently ignored.
Has anybody done this and know where I'm going wrong?
Thanks much,
Jon
--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/beagleboard/4968e0eb-2054-4adb-9885-bf9a7f8c3e63%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.