All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/3] modetest: Allow selecting a driver manually
@ 2013-02-11 20:13 Laurent Pinchart
  2013-02-11 20:13 ` [PATCH v2 1/3] modetest: Remove extern declarations of opt(arg|ind|err|opt) Laurent Pinchart
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Laurent Pinchart @ 2013-02-11 20:13 UTC (permalink / raw)
  To: dri-devel

Hello,

Here's the second version of a small patch set that adds an argument to the
modetest command line to specify the driver name instead of using the builtin
list of drivers. This is particularly handy during development of new DRM/KMS
drivers.

Changes from v1:

- Use the module name specified on the command line instead of a random module
  name (I'll blame a bad copy & paste).

Laurent Pinchart (3):
  modetest: Remove extern declarations of opt(arg|ind|err|opt)
  modetest: Sort command line arguments
  modetest: Add a command line parameter to select the driver

 tests/modetest/modetest.c | 88 ++++++++++++++++++++++++++++-------------------
 1 file changed, 53 insertions(+), 35 deletions(-)

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v2 1/3] modetest: Remove extern declarations of opt(arg|ind|err|opt)
  2013-02-11 20:13 [PATCH v2 0/3] modetest: Allow selecting a driver manually Laurent Pinchart
@ 2013-02-11 20:13 ` Laurent Pinchart
  2013-02-11 20:13 ` [PATCH v2 2/3] modetest: Sort command line arguments Laurent Pinchart
  2013-02-11 20:13 ` [PATCH v2 3/3] modetest: Add a command line parameter to select the driver Laurent Pinchart
  2 siblings, 0 replies; 6+ messages in thread
From: Laurent Pinchart @ 2013-02-11 20:13 UTC (permalink / raw)
  To: dri-devel

Those variables are declared in unistd.h, there's no need to redeclare
them here.

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

diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c
index c91bb9d..489918e 100644
--- a/tests/modetest/modetest.c
+++ b/tests/modetest/modetest.c
@@ -835,8 +835,6 @@ set_mode(struct connector *c, int count, struct plane *p, int plane_count,
 	kms_destroy(&kms);
 }
 
-extern char *optarg;
-extern int optind, opterr, optopt;
 static char optstr[] = "ecpmfs:P:v";
 
 #define min(a, b)	((a) < (b) ? (a) : (b))
-- 
1.7.12.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 2/3] modetest: Sort command line arguments
  2013-02-11 20:13 [PATCH v2 0/3] modetest: Allow selecting a driver manually Laurent Pinchart
  2013-02-11 20:13 ` [PATCH v2 1/3] modetest: Remove extern declarations of opt(arg|ind|err|opt) Laurent Pinchart
@ 2013-02-11 20:13 ` Laurent Pinchart
  2013-02-11 20:13 ` [PATCH v2 3/3] modetest: Add a command line parameter to select the driver Laurent Pinchart
  2 siblings, 0 replies; 6+ messages in thread
From: Laurent Pinchart @ 2013-02-11 20:13 UTC (permalink / raw)
  To: dri-devel

The current mostly random sort order hinders code readability. Sort the
options alphabetically in the code, and by group in the help message.

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

diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c
index 489918e..34457e2 100644
--- a/tests/modetest/modetest.c
+++ b/tests/modetest/modetest.c
@@ -835,8 +835,6 @@ set_mode(struct connector *c, int count, struct plane *p, int plane_count,
 	kms_destroy(&kms);
 }
 
-static char optstr[] = "ecpmfs:P:v";
-
 #define min(a, b)	((a) < (b) ? (a) : (b))
 
 static int parse_connector(struct connector *c, const char *arg)
@@ -896,15 +894,20 @@ static int parse_plane(struct plane *p, const char *arg)
 
 void usage(char *name)
 {
-	fprintf(stderr, "usage: %s [-ecpmf]\n", name);
-	fprintf(stderr, "\t-e\tlist encoders\n");
+	fprintf(stderr, "usage: %s [-cefmPpsv]\n", name);
+
+	fprintf(stderr, "\n Query options:\n\n");
 	fprintf(stderr, "\t-c\tlist connectors\n");
-	fprintf(stderr, "\t-p\tlist CRTCs and planes (pipes)\n");
-	fprintf(stderr, "\t-m\tlist modes\n");
+	fprintf(stderr, "\t-e\tlist encoders\n");
 	fprintf(stderr, "\t-f\tlist framebuffers\n");
-	fprintf(stderr, "\t-v\ttest vsynced page flipping\n");
-	fprintf(stderr, "\t-s <connector_id>[@<crtc_id>]:<mode>[@<format>]\tset a mode\n");
+	fprintf(stderr, "\t-m\tlist modes\n");
+
+	fprintf(stderr, "\n Test options:\n\n");
+	fprintf(stderr, "\t-p\tlist CRTCs and planes (pipes)\n");
 	fprintf(stderr, "\t-P <connector_id>:<w>x<h>[@<format>]\tset a plane\n");
+	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\tDefault is to dump all info.\n");
 	exit(0);
 }
@@ -932,6 +935,8 @@ static int page_flipping_supported(void)
 #endif
 }
 
+static char optstr[] = "cefmP:ps:v";
+
 int main(int argc, char **argv)
 {
 	int c;
@@ -946,34 +951,34 @@ int main(int argc, char **argv)
 	opterr = 0;
 	while ((c = getopt(argc, argv, optstr)) != -1) {
 		switch (c) {
-		case 'e':
-			encoders = 1;
-			break;
 		case 'c':
 			connectors = 1;
 			break;
-		case 'p':
-			crtcs = 1;
-			planes = 1;
+		case 'e':
+			encoders = 1;
+			break;
+		case 'f':
+			framebuffers = 1;
 			break;
 		case 'm':
 			modes = 1;
 			break;
-		case 'f':
-			framebuffers = 1;
+		case 'P':
+			if (parse_plane(&plane_args[plane_count], optarg) < 0)
+				usage(argv[0]);
+			plane_count++;
 			break;
-		case 'v':
-			test_vsync = 1;
+		case 'p':
+			crtcs = 1;
+			planes = 1;
 			break;
 		case 's':
 			if (parse_connector(&con_args[count], optarg) < 0)
 				usage(argv[0]);
 			count++;				      
 			break;
-		case 'P':
-			if (parse_plane(&plane_args[plane_count], optarg) < 0)
-				usage(argv[0]);
-			plane_count++;
+		case 'v':
+			test_vsync = 1;
 			break;
 		default:
 			usage(argv[0]);
-- 
1.7.12.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 3/3] modetest: Add a command line parameter to select the driver
  2013-02-11 20:13 [PATCH v2 0/3] modetest: Allow selecting a driver manually Laurent Pinchart
  2013-02-11 20:13 ` [PATCH v2 1/3] modetest: Remove extern declarations of opt(arg|ind|err|opt) Laurent Pinchart
  2013-02-11 20:13 ` [PATCH v2 2/3] modetest: Sort command line arguments Laurent Pinchart
@ 2013-02-11 20:13 ` Laurent Pinchart
  2013-02-11 20:33   ` Laurent Pinchart
  2 siblings, 1 reply; 6+ messages in thread
From: Laurent Pinchart @ 2013-02-11 20:13 UTC (permalink / raw)
  To: dri-devel

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
@@ -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",
-- 
1.7.12.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 3/3] modetest: Add a command line parameter to select the driver
  2013-02-11 20:13 ` [PATCH v2 3/3] modetest: Add a command line parameter to select the driver Laurent Pinchart
@ 2013-02-11 20:33   ` Laurent Pinchart
  2013-02-12  7:43     ` Jani Nikula
  0 siblings, 1 reply; 6+ messages in thread
From: Laurent Pinchart @ 2013-02-11 20:33 UTC (permalink / raw)
  To: dri-devel

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;
>  		}
>  	}

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 3/3] modetest: Add a command line parameter to select the driver
  2013-02-11 20:33   ` Laurent Pinchart
@ 2013-02-12  7:43     ` Jani Nikula
  0 siblings, 0 replies; 6+ messages in thread
From: Jani Nikula @ 2013-02-12  7:43 UTC (permalink / raw)
  To: Laurent Pinchart, dri-devel

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.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2013-02-12  7:43 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-11 20:13 [PATCH v2 0/3] modetest: Allow selecting a driver manually Laurent Pinchart
2013-02-11 20:13 ` [PATCH v2 1/3] modetest: Remove extern declarations of opt(arg|ind|err|opt) Laurent Pinchart
2013-02-11 20:13 ` [PATCH v2 2/3] modetest: Sort command line arguments Laurent Pinchart
2013-02-11 20:13 ` [PATCH v2 3/3] modetest: Add a command line parameter to select the driver Laurent Pinchart
2013-02-11 20:33   ` Laurent Pinchart
2013-02-12  7:43     ` Jani Nikula

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.