aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/saa7164
diff options
context:
space:
mode:
authorSteven Toth <stoth@kernellabs.com>2010-07-31 14:09:25 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-10-21 05:54:51 -0400
commit66e1d37884eb43214292ed433fcffb72692c4838 (patch)
treead574a2020c064f80f9d10c109b94f67ee9a5ad9 /drivers/media/video/saa7164
parent9230acaac461c492ff9dea24bbe6a7f568b62cf6 (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.c10
-rw-r--r--drivers/media/video/saa7164/saa7164-encoder.c7
-rw-r--r--drivers/media/video/saa7164/saa7164.h3
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;
49module_param_named(debug, saa_debug, int, 0644); 49module_param_named(debug, saa_debug, int, 0644);
50MODULE_PARM_DESC(debug, "enable debug messages"); 50MODULE_PARM_DESC(debug, "enable debug messages");
51 51
52unsigned int encoder_buffers = SAA7164_MAX_ENCODER_BUFFERS;
53module_param(encoder_buffers, int, 0644);
54MODULE_PARM_DESC(encoder_buffers, "Total buffers in read queue 16-512 def:64");
55
52unsigned int waitsecs = 10; 56unsigned int waitsecs = 10;
53module_param(waitsecs, int, 0644); 57module_param(waitsecs, int, 0644);
54MODULE_PARM_DESC(debug, "timeout on firmware messages"); 58MODULE_PARM_DESC(waitsecs, "timeout on firmware messages");
55 59
56static unsigned int card[] = {[0 ... (SAA7164_MAXBOARDS - 1)] = UNSET }; 60static unsigned int card[] = {[0 ... (SAA7164_MAXBOARDS - 1)] = UNSET };
57module_param_array(card, int, NULL, 0444); 61module_param_array(card, int, NULL, 0444);
@@ -59,7 +63,7 @@ MODULE_PARM_DESC(card, "card type");
59 63
60unsigned int print_histogram = 64; 64unsigned int print_histogram = 64;
61module_param(print_histogram, int, 0644); 65module_param(print_histogram, int, 0644);
62MODULE_PARM_DESC(debug, "print histogram values once"); 66MODULE_PARM_DESC(print_histogram, "print histogram values once");
63 67
64static unsigned int saa7164_devcount; 68static 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
434extern struct list_head saa7164_devlist; 434extern struct list_head saa7164_devlist;
435extern unsigned int waitsecs; 435extern unsigned int waitsecs;
436extern unsigned int encoder_buffers;
436 437
437/* ----------------------------------------------------------- */ 438/* ----------------------------------------------------------- */
438/* saa7164-core.c */ 439/* saa7164-core.c */