Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 45ad9f8b authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab
Browse files

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: default avatarHans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 54aa9a21
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -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.

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

+2 −1
Original line number Diff line number Diff line
@@ -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,
@@ -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);
+1 −0
Original line number Diff line number Diff line
@@ -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:
+7 −0
Original line number Diff line number Diff line
@@ -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;