Skip to content

Commit

Permalink
V4L/DVB (4202): allow selecting CX2341x port mode
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Hans Verkuil authored and Mauro Carvalho Chehab committed Jun 25, 2006
1 parent 54aa9a2 commit 45ad9f8
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 2 deletions.
8 changes: 7 additions & 1 deletion Documentation/video4linux/cx2341x/fw-encoder-api.txt
Original file line number Diff line number Diff line change
Expand Up @@ -270,11 +270,17 @@ Param[0]
Name CX2341X_ENC_SET_OUTPUT_PORT
Enum 187/0xBB
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]
0=Memory (default)
1=Streaming
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.

-------------------------------------------------------------------------------

Expand Down
3 changes: 2 additions & 1 deletion drivers/media/video/cx2341x.c
Original file line number Diff line number Diff line change
Expand Up @@ -639,6 +639,7 @@ void cx2341x_fill_defaults(struct cx2341x_mpeg_params *p)
{
static struct cx2341x_mpeg_params default_params = {
/* misc */
.port = CX2341X_PORT_MEMORY,
.width = 720,
.height = 480,
.is_50hz = 0,
Expand Down Expand Up @@ -714,7 +715,7 @@ int cx2341x_update(void *priv, cx2341x_mbox_func func,

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) {
err = cx2341x_api(priv, func, CX2341X_ENC_SET_FRAME_RATE, 1, new->is_50hz);
Expand Down
1 change: 1 addition & 0 deletions drivers/media/video/cx88/cx88-blackbird.c
Original file line number Diff line number Diff line change
Expand Up @@ -1043,6 +1043,7 @@ static int __devinit blackbird_probe(struct pci_dev *pci_dev,
dev->width = 720;
dev->height = 576;
cx2341x_fill_defaults(&dev->params);
dev->params.port = CX2341X_PORT_STREAMING;

switch (core->board) {
case CX88_BOARD_HAUPPAUGE_ROSLYN:
Expand Down
7 changes: 7 additions & 0 deletions include/media/cx2341x.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,15 @@
#ifndef CX2341X_H
#define CX2341X_H

enum cx2341x_port {
CX2341X_PORT_MEMORY,
CX2341X_PORT_STREAMING,
CX2341X_PORT_SERIAL
};

struct cx2341x_mpeg_params {
/* misc */
enum cx2341x_port port;
u16 width;
u16 height;
u16 is_50hz;
Expand Down

0 comments on commit 45ad9f8

Please sign in to comment.