diff mbox

[v2,3/3] modetest: Add a command line parameter to select the driver

Message ID 1360613625-4718-4-git-send-email-laurent.pinchart@ideasonboard.com (mailing list archive)
State New, archived
Headers show

Commit Message

Laurent Pinchart Feb. 11, 2013, 8:13 p.m. UTC
If the -M parameter is specific, modetest will use the requested device
name instead of trying its builtin list of device names.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 tests/modetest/modetest.c | 41 ++++++++++++++++++++++++++++-------------
 1 file changed, 28 insertions(+), 13 deletions(-)

Comments

Laurent Pinchart Feb. 11, 2013, 8:33 p.m. UTC | #1
On Monday 11 February 2013 21:13:45 Laurent Pinchart wrote:
> If the -M parameter is specific, modetest will use the requested device
> name instead of trying its builtin list of device names.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
>  tests/modetest/modetest.c | 41 ++++++++++++++++++++++++++++-------------
>  1 file changed, 28 insertions(+), 13 deletions(-)
> 
> diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c
> index 34457e2..9a2d1f8 100644
> --- a/tests/modetest/modetest.c
> +++ b/tests/modetest/modetest.c

[snip]

> @@ -989,14 +996,27 @@ int main(int argc, char **argv)
>  	if (argc == 1)
>  		encoders = connectors = crtcs = planes = modes = framebuffers = 1;
> 
> -	for (i = 0; i < ARRAY_SIZE(modules); i++) {
> -		printf("trying to load module %s...", modules[i]);
> -		fd = drmOpen(modules[i], NULL);
> +	if (module) {
> +		fd = drmOpen(module, NULL);
>  		if (fd < 0) {
> -			printf("failed.\n");
> -		} else {
> -			printf("success.\n");
> -			break;
> +			fprintf(stderr, "failed to open device '%s'.\n", module);
> +			return 1;
> +		}
> +	} 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;
> +			}
> +		}
> +
> +		if (fd < 0) {
> +			fprintf(stderr, "no device found.\n", module);

I should sleep before sending patches... Sorry for the noise, v3 will fix 
that.

> +			return 1;
>  		}
>  	}
Jani Nikula Feb. 12, 2013, 7:43 a.m. UTC | #2
On Mon, 11 Feb 2013, Laurent Pinchart <laurent.pinchart@ideasonboard.com> wrote:
> On Monday 11 February 2013 21:13:45 Laurent Pinchart wrote:
>> If the -M parameter is specific, modetest will use the requested device
>> name instead of trying its builtin list of device names.
>> 
>> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>> ---
>>  tests/modetest/modetest.c | 41 ++++++++++++++++++++++++++++-------------
>>  1 file changed, 28 insertions(+), 13 deletions(-)
>> 
>> diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c
>> index 34457e2..9a2d1f8 100644
>> --- a/tests/modetest/modetest.c
>> +++ b/tests/modetest/modetest.c
>
> [snip]
>
>> @@ -989,14 +996,27 @@ int main(int argc, char **argv)
>>  	if (argc == 1)
>>  		encoders = connectors = crtcs = planes = modes = framebuffers = 1;
>> 
>> -	for (i = 0; i < ARRAY_SIZE(modules); i++) {
>> -		printf("trying to load module %s...", modules[i]);
>> -		fd = drmOpen(modules[i], NULL);
>> +	if (module) {
>> +		fd = drmOpen(module, NULL);
>>  		if (fd < 0) {
>> -			printf("failed.\n");
>> -		} else {
>> -			printf("success.\n");
>> -			break;
>> +			fprintf(stderr, "failed to open device '%s'.\n", module);
>> +			return 1;
>> +		}
>> +	} 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;
>> +			}
>> +		}
>> +
>> +		if (fd < 0) {
>> +			fprintf(stderr, "no device found.\n", module);
>
> I should sleep before sending patches... Sorry for the noise, v3 will fix 
> that.

If you fix that bit, you can slam my

Reviewed-by: Jani Nikula <jani.nikula@intel.com>

on the series.
diff mbox

Patch

diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c
index 34457e2..9a2d1f8 100644
--- a/tests/modetest/modetest.c
+++ b/tests/modetest/modetest.c
@@ -908,6 +908,9 @@  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;
 	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;
@@ -989,14 +996,27 @@  int main(int argc, char **argv)
 	if (argc == 1)
 		encoders = connectors = crtcs = planes = modes = framebuffers = 1;
 
-	for (i = 0; i < ARRAY_SIZE(modules); i++) {
-		printf("trying to load module %s...", modules[i]);
-		fd = drmOpen(modules[i], NULL);
+	if (module) {
+		fd = drmOpen(module, NULL);
 		if (fd < 0) {
-			printf("failed.\n");
-		} else {
-			printf("success.\n");
-			break;
+			fprintf(stderr, "failed to open device '%s'.\n", module);
+			return 1;
+		}
+	} 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;
+			}
+		}
+
+		if (fd < 0) {
+			fprintf(stderr, "no device found.\n", module);
+			return 1;
 		}
 	}
 
@@ -1005,11 +1025,6 @@  int main(int argc, char **argv)
 		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",