diff options
author | Steven Toth <stoth@kernellabs.com> | 2010-07-31 14:09:25 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-10-21 05:54:51 -0400 |
commit | 66e1d37884eb43214292ed433fcffb72692c4838 (patch) | |
tree | ad574a2020c064f80f9d10c109b94f67ee9a5ad9 /drivers/media/video/saa7164 | |
parent | 9230acaac461c492ff9dea24bbe6a7f568b62cf6 (diff) |
[media] saa7164: allow the number of encoder buffers to be user configurable
Signed-off-by: Steven Toth <stoth@kernellabs.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/saa7164')
-rw-r--r-- | drivers/media/video/saa7164/saa7164-core.c | 10 | ||||
-rw-r--r-- | drivers/media/video/saa7164/saa7164-encoder.c | 7 | ||||
-rw-r--r-- | drivers/media/video/saa7164/saa7164.h | 3 |
3 files changed, 15 insertions, 5 deletions
diff --git a/drivers/media/video/saa7164/saa7164-core.c b/drivers/media/video/saa7164/saa7164-core.c index 0c10aea081f8..ffe71566996c 100644 --- a/drivers/media/video/saa7164/saa7164-core.c +++ b/drivers/media/video/saa7164/saa7164-core.c | |||
@@ -49,9 +49,13 @@ unsigned int saa_debug; | |||
49 | module_param_named(debug, saa_debug, int, 0644); | 49 | module_param_named(debug, saa_debug, int, 0644); |
50 | MODULE_PARM_DESC(debug, "enable debug messages"); | 50 | MODULE_PARM_DESC(debug, "enable debug messages"); |
51 | 51 | ||
52 | unsigned int encoder_buffers = SAA7164_MAX_ENCODER_BUFFERS; | ||
53 | module_param(encoder_buffers, int, 0644); | ||
54 | MODULE_PARM_DESC(encoder_buffers, "Total buffers in read queue 16-512 def:64"); | ||
55 | |||
52 | unsigned int waitsecs = 10; | 56 | unsigned int waitsecs = 10; |
53 | module_param(waitsecs, int, 0644); | 57 | module_param(waitsecs, int, 0644); |
54 | MODULE_PARM_DESC(debug, "timeout on firmware messages"); | 58 | MODULE_PARM_DESC(waitsecs, "timeout on firmware messages"); |
55 | 59 | ||
56 | static unsigned int card[] = {[0 ... (SAA7164_MAXBOARDS - 1)] = UNSET }; | 60 | static unsigned int card[] = {[0 ... (SAA7164_MAXBOARDS - 1)] = UNSET }; |
57 | module_param_array(card, int, NULL, 0444); | 61 | module_param_array(card, int, NULL, 0444); |
@@ -59,7 +63,7 @@ MODULE_PARM_DESC(card, "card type"); | |||
59 | 63 | ||
60 | unsigned int print_histogram = 64; | 64 | unsigned int print_histogram = 64; |
61 | module_param(print_histogram, int, 0644); | 65 | module_param(print_histogram, int, 0644); |
62 | MODULE_PARM_DESC(debug, "print histogram values once"); | 66 | MODULE_PARM_DESC(print_histogram, "print histogram values once"); |
63 | 67 | ||
64 | static unsigned int saa7164_devcount; | 68 | static unsigned int saa7164_devcount; |
65 | 69 | ||
@@ -264,7 +268,7 @@ static void saa7164_work_enchandler(struct work_struct *w) | |||
264 | wake_up_interruptible(&port->wait_read); | 268 | wake_up_interruptible(&port->wait_read); |
265 | 269 | ||
266 | } else | 270 | } else |
267 | printk(KERN_ERR "encirq no free buffers\n"); | 271 | printk(KERN_ERR "encirq no free buffers, increase param encoder_buffers\n"); |
268 | 272 | ||
269 | /* Ensure offset into buffer remains 0, fill buffer | 273 | /* Ensure offset into buffer remains 0, fill buffer |
270 | * with known bad data. */ | 274 | * with known bad data. */ |
diff --git a/drivers/media/video/saa7164/saa7164-encoder.c b/drivers/media/video/saa7164/saa7164-encoder.c index cedeeece3c3f..e340a6e39dfc 100644 --- a/drivers/media/video/saa7164/saa7164-encoder.c +++ b/drivers/media/video/saa7164/saa7164-encoder.c | |||
@@ -1316,7 +1316,12 @@ int saa7164_encoder_register(struct saa7164_port *port) | |||
1316 | len = port->hw_streamingparams.numberoflines * | 1316 | len = port->hw_streamingparams.numberoflines * |
1317 | port->hw_streamingparams.pitch; | 1317 | port->hw_streamingparams.pitch; |
1318 | 1318 | ||
1319 | for (i = 0; i < SAA7164_MAX_ENCODER_BUFFERS; i++) { | 1319 | if (encoder_buffers < 16) |
1320 | encoder_buffers = 16; | ||
1321 | if (encoder_buffers > 512) | ||
1322 | encoder_buffers = 512; | ||
1323 | |||
1324 | for (i = 0; i < encoder_buffers; i++) { | ||
1320 | 1325 | ||
1321 | ubuf = saa7164_buffer_alloc_user(dev, len); | 1326 | ubuf = saa7164_buffer_alloc_user(dev, len); |
1322 | if (ubuf) { | 1327 | if (ubuf) { |
diff --git a/drivers/media/video/saa7164/saa7164.h b/drivers/media/video/saa7164/saa7164.h index 25044a0de8b0..b561d6666b03 100644 --- a/drivers/media/video/saa7164/saa7164.h +++ b/drivers/media/video/saa7164/saa7164.h | |||
@@ -85,7 +85,7 @@ | |||
85 | #define SAA7164_MAX_UNITS 8 | 85 | #define SAA7164_MAX_UNITS 8 |
86 | #define SAA7164_TS_NUMBER_OF_LINES 312 | 86 | #define SAA7164_TS_NUMBER_OF_LINES 312 |
87 | #define SAA7164_PT_ENTRIES 16 /* (312 * 188) / 4096 */ | 87 | #define SAA7164_PT_ENTRIES 16 /* (312 * 188) / 4096 */ |
88 | #define SAA7164_MAX_ENCODER_BUFFERS 16 | 88 | #define SAA7164_MAX_ENCODER_BUFFERS 64 /* max 5secs of latency at 6Mbps */ |
89 | 89 | ||
90 | /* Port related defines */ | 90 | /* Port related defines */ |
91 | #define SAA7164_PORT_TS1 (0) | 91 | #define SAA7164_PORT_TS1 (0) |
@@ -433,6 +433,7 @@ struct saa7164_dev { | |||
433 | 433 | ||
434 | extern struct list_head saa7164_devlist; | 434 | extern struct list_head saa7164_devlist; |
435 | extern unsigned int waitsecs; | 435 | extern unsigned int waitsecs; |
436 | extern unsigned int encoder_buffers; | ||
436 | 437 | ||
437 | /* ----------------------------------------------------------- */ | 438 | /* ----------------------------------------------------------- */ |
438 | /* saa7164-core.c */ | 439 | /* saa7164-core.c */ |