#include #include #include #include #include #define DCONIOC_SOURCE _IOW('d', 0, int) #define DCONIOC_OUTPUT _IOW('d', 1, int) #define DCONIOC_SETREG _IOW('d', 2, int) #define DCONIOC_DUMPREG _IOW('d', 3, int) #define DCONIOC_GETREG _IOW('d', 4, int) int main(int argc, char **argv) { int fd; int cmd, arg; if (argc < 2) { usage: printf("Usage: %s (source|output) (0|1)\n", argv[0]); return 1; } if (!strcasecmp(argv[1], "source")) cmd = DCONIOC_SOURCE; else if (!strcasecmp(argv[1], "output")) cmd = DCONIOC_OUTPUT; else if (!strcasecmp(argv[1], "setreg")) cmd = DCONIOC_SETREG; else if (!strcasecmp(argv[1], "dumpreg")) cmd = DCONIOC_DUMPREG; else if (!strcasecmp(argv[1], "getreg")) cmd = DCONIOC_GETREG; else goto usage; if (cmd != DCONIOC_DUMPREG) { if (argc < 3) goto usage; arg = strtol(argv[2], NULL, 0); } if (cmd == DCONIOC_SETREG) { if (argc != 4) { printf("Need arg, val\n"); return 1; } arg <<= 16; arg += strtol(argv[3], NULL, 0); } fd = open("/dev/fb", O_RDWR); if (fd < 0) { perror("open"); return 1; } if (ioctl(fd, cmd, &arg) < 0) perror("ioctl"); else if (cmd == DCONIOC_SOURCE || cmd == DCONIOC_OUTPUT || cmd == DCONIOC_GETREG) printf("Result: %d 0x%x\n", arg, arg); return arg; }