/* * Set GPIO bits */ #include #include #include #include #include #include "saa713x_ioctl.h" int main(int argc, char **argv) { int fd; uint32_t dir, val; uint32_t mask, data; char *ep; if (argc != 3 || (mask = strtoul(argv[1], &ep, 0)) == 0 || *ep || (data = strtoul(argv[2], &ep, 0)) < 0 || *ep) errx(1, "Usage: %s mask value", *argv); if ((fd = open("/dev/saa0", O_RDONLY)) < 0) err(1, "Unable to open /dev/saa0"); if (ioctl(fd, GETGPIODIR, &dir) < 0) err(1, "ioctl(GETGPIODIR)"); printf("GETGPIODIR = 0x%08x\n", dir); if (ioctl(fd, GETGPIODATA, &val) < 0) err(1, "ioctl(GETGPIODATA)"); printf("GETGPIODATA = 0x%08x\n", val); dir = mask; val = (val & ~mask) | (data & mask); if (ioctl(fd, SETGPIODIR, &dir) < 0) err(1, "ioctl(SETGPIODIR)"); if (ioctl(fd, SETGPIODATA, &val) < 0) err(1, "ioctl(SETGPIODATA)"); return (0); }