{
int fd;
char buf[64];
-
+
if (create)
return drmOpenDevice(makedev(DRM_MAJOR, minor), minor, type);
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 = 0; i < DRM_MAX_MINOR; i++) {
+ for (i = 1; i < DRM_MAX_MINOR; i++) {
fd = drmOpenMinor(i, 1, DRM_NODE_RENDER);
drmMsg("drmOpenByBusid: drmOpenMinor returns %d\n", fd);
if (fd >= 0) {
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 = 0; i < DRM_MAX_MINOR; i++) {
+ for (i = 1; i < DRM_MAX_MINOR; i++) {
if ((fd = drmOpenMinor(i, 1, DRM_NODE_RENDER)) >= 0) {
if ((version = drmGetVersion(fd))) {
if (!strcmp(version->name, name)) {
printf("Starting test\n");
- fd = drmOpenControl(0);
+ fd = drmOpen("i915", NULL);
if (fd < 0) {
printf("Failed to open the card fb (%d)\n",fd);
-
+#define CLEAN_FBDEV
#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"
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;
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");
testCursor(driver->fd, driver->screens[i].crtc->crtc_id);
}
- sleep(2);
- printf("ok\n");
- return 0;
+#ifdef CLEAN_FBDEV
+ if (ioctl(fbdev_fd, FBIOPUT_VSCREENINFO, &var))
+ printf("var %s\n", strerror(errno));
+#endif
+
+ printf("ok\n");
+ return 0;
}
int demoCreateScreens(struct demo_driver *driver)
memset(driver, 0, sizeof(struct demo_driver));
- driver->fd = drmOpenControl(0);
+ driver->fd = drmOpen("i915", NULL);
if (driver->fd < 0) {
printf("Failed to open the card fb\n");
char name[100];
int i,d;
int fd;
- int drmfd = drmOpenControl(0);
+ int drmfd = drmOpen("i915", NULL);
/* try four devices */
for (d = 0; d < 4; d++) {