V36
authorjoan <joan@abyz.co.uk>
Fri, 7 Aug 2015 12:20:51 +0000 (13:20 +0100)
committerjoan <joan@abyz.co.uk>
Fri, 7 Aug 2015 12:20:51 +0000 (13:20 +0100)
pigpio.c
pigpio.h

index 4e2f9fa18bf9cf1314a0b581f55c17aa8d57524b..2f43b952eced235c09f04ad5f3f53e819d1373e0 100644 (file)
--- 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)
index a13d3be395eec4855a130e0446fc34d0dc610c5f..99948e7d77954f8d5a73e8edcb29153a7806b96d 100644 (file)
--- a/pigpio.h
+++ b/pigpio.h
@@ -31,7 +31,7 @@ For more information, please refer to <http://unlicense.org/>
 #include <stdint.h>
 #include <pthread.h>
 
-#define PIGPIO_VERSION 35
+#define PIGPIO_VERSION 36
 
 /*TEXT