V4L/DVB (4202): allow selecting CX2341x port mode

CX2341X port was always set to 'memory', but 'streaming' is also possible

ivtv uses the memory (DMA) interface with the CX2341X, while pvrusb2 and
cx88-blackbird use the streaming interface. This setting is now selectable
by the driver.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
Hans Verkuil 2006-06-21 17:04:13 -03:00 committed by Mauro Carvalho Chehab
parent 54aa9a21ca
commit 45ad9f8b44
4 changed files with 17 additions and 2 deletions

View file

@ -270,11 +270,17 @@ Param[0]
Name CX2341X_ENC_SET_OUTPUT_PORT Name CX2341X_ENC_SET_OUTPUT_PORT
Enum 187/0xBB Enum 187/0xBB
Description Description
Assign stream output port (not recommended you change setting from default) Assign stream output port. Normally 0 when the data is copied through
the PCI bus (DMA), and 1 when the data is streamed to another chip
(pvrusb and cx88-blackbird).
Param[0] Param[0]
0=Memory (default) 0=Memory (default)
1=Streaming 1=Streaming
2=Serial 2=Serial
Param[1]
Unknown, but leaving this to 0 seems to work best. Indications are that
this might have to do with USB support, although passing anything but 0
onl breaks things.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------

View file

@ -639,6 +639,7 @@ void cx2341x_fill_defaults(struct cx2341x_mpeg_params *p)
{ {
static struct cx2341x_mpeg_params default_params = { static struct cx2341x_mpeg_params default_params = {
/* misc */ /* misc */
.port = CX2341X_PORT_MEMORY,
.width = 720, .width = 720,
.height = 480, .height = 480,
.is_50hz = 0, .is_50hz = 0,
@ -714,7 +715,7 @@ int cx2341x_update(void *priv, cx2341x_mbox_func func,
int err = 0; int err = 0;
cx2341x_api(priv, func, CX2341X_ENC_SET_OUTPUT_PORT, 1, 0); /* 0 = Memory */ cx2341x_api(priv, func, CX2341X_ENC_SET_OUTPUT_PORT, 2, new->port, 0);
if (old == NULL || old->is_50hz != new->is_50hz) { if (old == NULL || old->is_50hz != new->is_50hz) {
err = cx2341x_api(priv, func, CX2341X_ENC_SET_FRAME_RATE, 1, new->is_50hz); err = cx2341x_api(priv, func, CX2341X_ENC_SET_FRAME_RATE, 1, new->is_50hz);

View file

@ -1043,6 +1043,7 @@ static int __devinit blackbird_probe(struct pci_dev *pci_dev,
dev->width = 720; dev->width = 720;
dev->height = 576; dev->height = 576;
cx2341x_fill_defaults(&dev->params); cx2341x_fill_defaults(&dev->params);
dev->params.port = CX2341X_PORT_STREAMING;
switch (core->board) { switch (core->board) {
case CX88_BOARD_HAUPPAUGE_ROSLYN: case CX88_BOARD_HAUPPAUGE_ROSLYN:

View file

@ -19,8 +19,15 @@
#ifndef CX2341X_H #ifndef CX2341X_H
#define CX2341X_H #define CX2341X_H
enum cx2341x_port {
CX2341X_PORT_MEMORY,
CX2341X_PORT_STREAMING,
CX2341X_PORT_SERIAL
};
struct cx2341x_mpeg_params { struct cx2341x_mpeg_params {
/* misc */ /* misc */
enum cx2341x_port port;
u16 width; u16 width;
u16 height; u16 height;
u16 is_50hz; u16 is_50hz;