[PATCH v5 04/23] modetest: Add a command line parameter to select the driver

2013-06-15 Thread Laurent Pinchart
If the -M parameter is specified, modetest will use the requested device
name instead of trying its builtin list of device names.

Signed-off-by: Laurent Pinchart 
Reviewed-by: Jani Nikula 
---
 tests/modetest/modetest.c | 50 ---
 1 file changed, 34 insertions(+), 16 deletions(-)

diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c
index 2bb4b19..f7ebd63 100644
--- a/tests/modetest/modetest.c
+++ b/tests/modetest/modetest.c
@@ -894,7 +894,7 @@ static int parse_plane(struct plane *p, const char *arg)

 static void usage(char *name)
 {
-   fprintf(stderr, "usage: %s [-cefmPpsv]\n", name);
+   fprintf(stderr, "usage: %s [-cefMmPpsv]\n", name);

fprintf(stderr, "\n Query options:\n\n");
fprintf(stderr, "\t-c\tlist connectors\n");
@@ -908,6 +908,9 @@ static void usage(char *name)
fprintf(stderr, "\t-s [@]:[@]\tset 
a mode\n");
fprintf(stderr, "\t-v\ttest vsynced page flipping\n");

+   fprintf(stderr, "\n Generic options:\n\n");
+   fprintf(stderr, "\t-M module\tuse the given driver\n");
+
fprintf(stderr, "\n\tDefault is to dump all info.\n");
exit(0);
 }
@@ -935,7 +938,7 @@ static int page_flipping_supported(void)
 #endif
 }

-static char optstr[] = "cefmP:ps:v";
+static char optstr[] = "cefM:mP:ps:v";

 int main(int argc, char **argv)
 {
@@ -943,6 +946,7 @@ int main(int argc, char **argv)
int encoders = 0, connectors = 0, crtcs = 0, planes = 0, framebuffers = 
0;
int test_vsync = 0;
const char *modules[] = { "i915", "radeon", "nouveau", "vmwgfx", 
"omapdrm", "exynos" };
+   char *module = NULL;
unsigned int i;
int count = 0, plane_count = 0;
struct connector con_args[2];
@@ -960,6 +964,9 @@ int main(int argc, char **argv)
case 'f':
framebuffers = 1;
break;
+   case 'M':
+   module = optarg;
+   break;
case 'm':
modes = 1;
break;
@@ -986,30 +993,41 @@ int main(int argc, char **argv)
}
}

-   if (argc == 1)
-   encoders = connectors = crtcs = planes = modes = framebuffers = 
1;
+   if (module) {
+   fd = drmOpen(module, NULL);
+   if (fd < 0) {
+   fprintf(stderr, "failed to open device '%s'.\n", 
module);
+   return 1;
+   }
+
+   /* Preserve the default behaviour or dumping all information. */
+   argc--;
+   } else {
+   for (i = 0; i < ARRAY_SIZE(modules); i++) {
+   printf("trying to open device '%s'...", modules[i]);
+   fd = drmOpen(modules[i], NULL);
+   if (fd < 0) {
+   printf("failed.\n");
+   } else {
+   printf("success.\n");
+   break;
+   }
+   }

-   for (i = 0; i < ARRAY_SIZE(modules); i++) {
-   printf("trying to load module %s...", modules[i]);
-   fd = drmOpen(modules[i], NULL);
if (fd < 0) {
-   printf("failed.\n");
-   } else {
-   printf("success.\n");
-   break;
+   fprintf(stderr, "no device found.\n");
+   return 1;
}
}

+   if (argc == 1)
+   encoders = connectors = crtcs = planes = modes = framebuffers = 
1;
+
if (test_vsync && !page_flipping_supported()) {
fprintf(stderr, "page flipping not supported by drm.\n");
return -1;
}

-   if (i == ARRAY_SIZE(modules)) {
-   fprintf(stderr, "failed to load any modules, aborting.\n");
-   return -1;
-   }
-
resources = drmModeGetResources(fd);
if (!resources) {
fprintf(stderr, "drmModeGetResources failed: %s\n",
-- 
1.8.1.5



[PATCH v5 04/23] modetest: Add a command line parameter to select the driver

2013-06-14 Thread Laurent Pinchart
If the -M parameter is specified, modetest will use the requested device
name instead of trying its builtin list of device names.

Signed-off-by: Laurent Pinchart laurent.pinch...@ideasonboard.com
Reviewed-by: Jani Nikula jani.nik...@intel.com
---
 tests/modetest/modetest.c | 50 ---
 1 file changed, 34 insertions(+), 16 deletions(-)

diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c
index 2bb4b19..f7ebd63 100644
--- a/tests/modetest/modetest.c
+++ b/tests/modetest/modetest.c
@@ -894,7 +894,7 @@ static int parse_plane(struct plane *p, const char *arg)
 
 static void usage(char *name)
 {
-   fprintf(stderr, usage: %s [-cefmPpsv]\n, name);
+   fprintf(stderr, usage: %s [-cefMmPpsv]\n, name);
 
fprintf(stderr, \n Query options:\n\n);
fprintf(stderr, \t-c\tlist connectors\n);
@@ -908,6 +908,9 @@ static void usage(char *name)
fprintf(stderr, \t-s connector_id[@crtc_id]:mode[@format]\tset 
a mode\n);
fprintf(stderr, \t-v\ttest vsynced page flipping\n);
 
+   fprintf(stderr, \n Generic options:\n\n);
+   fprintf(stderr, \t-M module\tuse the given driver\n);
+
fprintf(stderr, \n\tDefault is to dump all info.\n);
exit(0);
 }
@@ -935,7 +938,7 @@ static int page_flipping_supported(void)
 #endif
 }
 
-static char optstr[] = cefmP:ps:v;
+static char optstr[] = cefM:mP:ps:v;
 
 int main(int argc, char **argv)
 {
@@ -943,6 +946,7 @@ int main(int argc, char **argv)
int encoders = 0, connectors = 0, crtcs = 0, planes = 0, framebuffers = 
0;
int test_vsync = 0;
const char *modules[] = { i915, radeon, nouveau, vmwgfx, 
omapdrm, exynos };
+   char *module = NULL;
unsigned int i;
int count = 0, plane_count = 0;
struct connector con_args[2];
@@ -960,6 +964,9 @@ int main(int argc, char **argv)
case 'f':
framebuffers = 1;
break;
+   case 'M':
+   module = optarg;
+   break;
case 'm':
modes = 1;
break;
@@ -986,30 +993,41 @@ int main(int argc, char **argv)
}
}
 
-   if (argc == 1)
-   encoders = connectors = crtcs = planes = modes = framebuffers = 
1;
+   if (module) {
+   fd = drmOpen(module, NULL);
+   if (fd  0) {
+   fprintf(stderr, failed to open device '%s'.\n, 
module);
+   return 1;
+   }
+
+   /* Preserve the default behaviour or dumping all information. */
+   argc--;
+   } else {
+   for (i = 0; i  ARRAY_SIZE(modules); i++) {
+   printf(trying to open device '%s'..., modules[i]);
+   fd = drmOpen(modules[i], NULL);
+   if (fd  0) {
+   printf(failed.\n);
+   } else {
+   printf(success.\n);
+   break;
+   }
+   }
 
-   for (i = 0; i  ARRAY_SIZE(modules); i++) {
-   printf(trying to load module %s..., modules[i]);
-   fd = drmOpen(modules[i], NULL);
if (fd  0) {
-   printf(failed.\n);
-   } else {
-   printf(success.\n);
-   break;
+   fprintf(stderr, no device found.\n);
+   return 1;
}
}
 
+   if (argc == 1)
+   encoders = connectors = crtcs = planes = modes = framebuffers = 
1;
+
if (test_vsync  !page_flipping_supported()) {
fprintf(stderr, page flipping not supported by drm.\n);
return -1;
}
 
-   if (i == ARRAY_SIZE(modules)) {
-   fprintf(stderr, failed to load any modules, aborting.\n);
-   return -1;
-   }
-
resources = drmModeGetResources(fd);
if (!resources) {
fprintf(stderr, drmModeGetResources failed: %s\n,
-- 
1.8.1.5

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel