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:
parent
54aa9a21ca
commit
45ad9f8b44
4 changed files with 17 additions and 2 deletions
|
@ -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.
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue