diff --git a/pigpio.c b/pigpio.c index 4e2f9fa..2f43b95 100644 --- a/pigpio.c +++ b/pigpio.c @@ -786,7 +786,8 @@ Assumes two counters per block. Each counter 4 * 16 (16^4=65536) #define MB_IOCTL _IOWR(MB_DEV_MAJOR, 0, char *) -#define MB_DEV "/dev/pigpio-mb" +#define MB_DEV1 "/dev/vcio" +#define MB_DEV2 "/dev/pigpio-mb" #define BUS_TO_PHYS(x) ((x)&~0xC0000000) @@ -2284,20 +2285,29 @@ static void myGpioSetServo(unsigned gpio, int oldVal, int newVal) https://github.com/raspberrypi/firmware/wiki/Mailbox-property-interface */ -static int mbCreate(void) +static int mbCreate(char *dev) { /* <0 error */ - unlink(MB_DEV); + unlink(dev); - return mknod(MB_DEV, S_IFCHR|0600, makedev(MB_DEV_MAJOR, 0)); + return mknod(dev, S_IFCHR|0600, makedev(MB_DEV_MAJOR, 0)); } static int mbOpen(void) { /* <0 error */ - return open(MB_DEV, 0); + int fd; + + fd = open(MB_DEV1, 0); + + if (fd < 0) + { + mbCreate(MB_DEV2); + fd = open(MB_DEV2, 0); + } + return fd; } static void mbClose(int fd) @@ -6471,9 +6481,6 @@ static int initAllocDMAMem(void) if (dmaMboxBlk == MAP_FAILED) SOFT_ERROR(PI_INIT_FAILED, "mmap mbox block failed (%m)"); - if (mbCreate() < 0) - SOFT_ERROR(PI_INIT_FAILED, "mbox create failed(%m)"); - fdMbox = mbOpen(); if (fdMbox < 0) diff --git a/pigpio.h b/pigpio.h index a13d3be..99948e7 100644 --- a/pigpio.h +++ b/pigpio.h @@ -31,7 +31,7 @@ For more information, please refer to #include #include -#define PIGPIO_VERSION 35 +#define PIGPIO_VERSION 36 /*TEXT