Revert "After the previous revert fix libdrm to start at minor 1"
authorDave Airlie <airlied@redhat.com>
Wed, 13 Feb 2008 02:20:02 +0000 (12:20 +1000)
committerDave Airlie <airlied@redhat.com>
Wed, 13 Feb 2008 02:20:02 +0000 (12:20 +1000)
This reverts commit f51dc37d75b0b1b8e5636f8f2c201e29986517ea.

Conflicts:

tests/modedemo/demo.c

libdrm/xf86drm.c
tests/mode/modetest.c
tests/modedemo/demo.c
tests/modefb/demo.c

index 8849f8b..39a849c 100644 (file)
@@ -355,7 +355,7 @@ static int drmOpenMinor(int minor, int create, int type)
 {
     int  fd;
     char buf[64];
-
+    
     if (create)
       return drmOpenDevice(makedev(DRM_MAJOR, minor), minor, type);
     
@@ -421,15 +421,8 @@ static int drmOpenByBusid(const char *busid)
     const char *buf;
     drmSetVersion sv;
 
-    /*
-     * Open the first minor number that matches the driver name and isn't
-     * already in use.  If it's in use it will have a busid assigned already.
-     *
-     * start at 1, as 0 is the control node, and we should use drmOpenControl
-     * for that.
-     */
     drmMsg("drmOpenByBusid: Searching for BusID %s\n", busid);
-    for (i = 1; i < DRM_MAX_MINOR; i++) {
+    for (i = 0; i < DRM_MAX_MINOR; i++) {
        fd = drmOpenMinor(i, 1, DRM_NODE_RENDER);
        drmMsg("drmOpenByBusid: drmOpenMinor returns %d\n", fd);
        if (fd >= 0) {
@@ -474,14 +467,24 @@ static int drmOpenByName(const char *name)
     drmVersionPtr version;
     char *        id;
     
+    if (!drmAvailable()) {
+       if (!drm_server_info) {
+           return -1;
+       }
+       else {
+           /* try to load the kernel module now */
+           if (!drm_server_info->load_module(name)) {
+               drmMsg("[drm] failed to load kernel module \"%s\"\n", name);
+               return -1;
+           }
+       }
+    }
+
     /*
      * Open the first minor number that matches the driver name and isn't
      * already in use.  If it's in use it will have a busid assigned already.
-     *
-     * start at 1, as 0 is the control node, and we should use drmOpenControl
-     * for that.
      */
-    for (i = 1; i < DRM_MAX_MINOR; i++) {
+    for (i = 0; i < DRM_MAX_MINOR; i++) {
        if ((fd = drmOpenMinor(i, 1, DRM_NODE_RENDER)) >= 0) {
            if ((version = drmGetVersion(fd))) {
                if (!strcmp(version->name, name)) {
index caa3d97..ab0cdc9 100644 (file)
@@ -351,7 +351,7 @@ int main(int argc, char **argv)
 
        printf("Starting test\n");
 
-       fd = drmOpen("i915", NULL);
+       fd = drmOpenControl(0);
 
        if (fd < 0) {
                printf("Failed to open the card fb (%d)\n",fd);
index 9eef902..474f04a 100644 (file)
 /* Pitch needs to be power of two */
 #define PITCH 2048
 
-
 #include <assert.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdint.h>
 #include <unistd.h>
 #include <string.h>
-#ifdef CLEAN_FBDEV
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <linux/fb.h>
-#endif
+
 #include "xf86drm.h"
 #include "xf86drmMode.h"
 
@@ -32,11 +26,6 @@ void testCursor(int fd, uint32_t crtc);
 void prettyColors(int fd, unsigned int handle);
 void prettyCursor(int fd, unsigned int handle, unsigned int color);
 
-#ifdef CLEAN_FBDEV
-struct fb_var_screeninfo var;
-struct fb_fix_screeninfo fix;
-#endif
-
 /* structs for the demo_driver */
 
 struct demo_driver;
@@ -111,19 +100,6 @@ int main(int argc, char **argv)
        struct demo_driver *driver;
        int num;
        int i;
-#ifdef CLEAN_FBDEV
-       int fbdev_fd;
-
-       fbdev_fd = open("/dev/fb0", O_RDWR);
-
-       memset(&var, 0, sizeof(struct fb_var_screeninfo));
-       memset(&fix, 0, sizeof(struct fb_fix_screeninfo));
-
-       if (ioctl(fbdev_fd, FBIOGET_VSCREENINFO, &var))
-               printf("var  %s\n", strerror(errno));
-       if      (ioctl(fbdev_fd, FBIOGET_FSCREENINFO, &fix))
-               printf("fix %s\n", strerror(errno));
-#endif
 
        printf("starting demo\n");
 
@@ -378,7 +354,7 @@ struct demo_driver* demoCreateDriver(void)
 
        memset(driver, 0, sizeof(struct demo_driver));
 
-       driver->fd = drmOpen("i915", NULL);
+       driver->fd = drmOpenControl(0);
 
        if (driver->fd < 0) {
                printf("Failed to open the card fb\n");
index 4d81e51..7fa3b93 100644 (file)
@@ -26,7 +26,7 @@ int main(int argc, char **argv)
        char name[100];
        int i,d;
        int fd;
-       int drmfd = drmOpen("i915", NULL);
+       int drmfd = drmOpenControl(0);
 
        /* try four devices */
        for (d = 0; d < 4; d++) {