/* Open a page at the SYSCFG base address */ fd = open("/dev/mem", O_RDWR | O_SYNC); if (fd < 0) { printf("Open /dev/mem failed - %s\n", strerror(errno)); return -1; } syscfg_addr = (char *)mmap( 0, page_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, syscfg_phys); if (syscfg_addr == (char *)MAP_FAILED) { printf("Error: syscfg mmap failed\n"); close(fd); return -1; } devcfg = (unsigned int *)(syscfg_addr + 0x80); swlock = (unsigned int *)(syscfg_addr + 0xC0); if (*devcfg & 0x60000000) { printf("DEVCFG = %.8X: DMA on EGPIO was enabled, disabling ...\n", *devcfg); *swlock = 0xAA; *devcfg &= ~0x60000000; printf("DEVCFG = %.8X\n", *devcfg); } munmap((void *)syscfg_addr, page_size); close(fd);