Re: Help to make a driver. ISDB-Tb

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi

El 02/05/11 10:06, Mauro Carvalho Chehab escribió:
From this message:
[ 14.288626] Frontend revision 255 is unknown - aborting.

I suspect that the I2C gate needed to access the frontend is at the wrong state. That's why you're
getting 0xff (255) value there.
I changed the value ".demod_address = 0x19" by ".demod_address = 0x10" and resolved

dmesg:
<6>[   10.639380] cx23885 driver version 0.0.2 loaded
<6>[ 10.640125] cx23885 0000:02:00.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19 <6>[ 10.640310] CORE cx23885[0]: subsystem: 14f1:8502, board: Mygica X8507 [card=30,autodetected] <6>[ 12.533349] cx25840 5-0044: loaded v4l-cx23885-avcore-01.fw firmware (16382 bytes)
<6>[   12.542333] tuner 4-0061: chip found @ 0xc2 (cx23885[0])
<6>[   12.582949] xc5000 4-0061: creating new instance
<6>[   12.583643] xc5000: Successfully identified at address 0x61
<6>[   12.583645] xc5000: Firmware has not been loaded previously
<6>[   12.583727] cx23885[0]/0: registered device video1 [v4l2]
<6>[ 12.589183] xc5000: waiting for firmware upload (dvb-fe-xc5000-1.6.114.fw)...
<7>[   12.610081] xc5000: firmware read 12401 bytes.
<6>[   12.610083] xc5000: firmware uploading...
<6>[   13.982005] xc5000: firmware upload complete...
<6>[   14.604101] cx23885_dvb_register() allocating 1 frontend(s)
<6>[   14.604106] cx23885[0]: cx23885 based dvb card
<7>[   14.631169] mb86a20s: mb86a20s_attach:
<6>[   14.631656] Detected a Fujitsu mb86a20s frontend
<6>[   14.631726] xc5000 4-0061: attaching existing instance
<6>[   14.632425] xc5000: Successfully identified at address 0x61
<6>[   14.632427] xc5000: Firmware has been loaded previously
<6>[   14.632431] DVB: registering new adapter (cx23885[0])
<4>[ 14.632434] DVB: registering adapter 1 frontend 0 (Fujitsu mb86A20s)...
<6>[   14.632811] cx23885_dev_checkrevision() Hardware revision = 0xb0
<6>[ 14.632819] cx23885[0]/0: found at 0000:02:00.0, rev: 2, irq: 19, latency: 0, mmio: 0xfd600000
<7>[   14.632827] cx23885 0000:02:00.0: setting latency timer to 64
<7>[   14.632918] cx23885 0000:02:00.0: irq 44 for MSI/MSI-X

Attached list of changes I made.


Results:

Analog TV can be seen, but no sound.
If I use xawtv or VLC the image is in the middle of the screen and there are stripes, as if interference. If I use tvtime will look good.

Digital television: not tune any channels with w-scan or gnome-dvb-setup.
But with the latter, it captures 2 weak signals, but I can not know which is. Under windows also capture 2 channel and I'm in a place where the signal is low.
I'll try to have more signal strength.

If I run dmesg after scan channels I get the following:

[ 3474.858537] mb86a20s: mb86a20s_set_frontend:
[ 3474.858541] mb86a20s: mb86a20s_set_frontend: Calling tuner set parameters
[ 3474.981157] mb86a20s: mb86a20s_read_status:
[ 3474.981649] mb86a20s: mb86a20s_read_status: val = 2, status = 0x01
[ 3475.081746] mb86a20s: mb86a20s_read_status:
[ 3475.082241] mb86a20s: mb86a20s_read_status: val = 2, status = 0x01
[ 3475.182336] mb86a20s: mb86a20s_read_status:
[ 3475.182829] mb86a20s: mb86a20s_read_status: val = 2, status = 0x01

When detected signal with gnome-dvb-setup, sometimes gives this warning:

Message from syslogd@linux at May 4 01:48:38 ...
kernel:[ 3359.202289] do_IRQ: 2.145 No irq handler for vector (irq -1)


Thank you very much,

Alfredo

--
Dona tu voz
http://www.voxforge.org/es

--- usr/src/linux/drivers/media/video/cx23885/cx23885.h	2011-05-02 17:22:28.000000000 -0300
+++ home/alfredo/ISDB/Nuevo Driver/cx23885/cx23885.h	2011-05-01 17:15:05.000000000 -0300
@@ -85,6 +85,7 @@
 #define CX23885_BOARD_MYGICA_X8558PRO          27
 #define CX23885_BOARD_LEADTEK_WINFAST_PXTV1200 28
 #define CX23885_BOARD_GOTVIEW_X5_3D_HYBRID     29
+#define CX23885_BOARD_MYGICA_X8507             30
 
 #define GPIO_0 0x00000001
 #define GPIO_1 0x00000002
--- ../../../../../../usr/src/linux/drivers/media/video/cx23885/cx23885-cards.c	2011-05-02 17:22:28.000000000 -0300
+++ ../cx23885-cards.c	2011-05-02 16:59:45.000000000 -0300
@@ -237,6 +237,35 @@
 			},
 		},
 	},
+	[CX23885_BOARD_MYGICA_X8507] = {
+		.name		= "Mygica X8507",
+		.tuner_type = TUNER_XC5000,
+		.tuner_addr = 0x61,
+		.porta		= CX23885_ANALOG_VIDEO,
+		.portb		= CX23885_MPEG_DVB,
+		.input		= {
+			{
+				.type   = CX23885_VMUX_TELEVISION,
+				.vmux   = CX25840_COMPOSITE2,
+			},
+			{
+				.type   = CX23885_VMUX_COMPOSITE1,
+				.vmux   = CX25840_COMPOSITE8,
+			},
+			{
+				.type   = CX23885_VMUX_SVIDEO,
+				.vmux   = CX25840_SVIDEO_LUMA3 |
+						CX25840_SVIDEO_CHROMA4,
+			},
+			{
+				.type   = CX23885_VMUX_COMPONENT,
+				.vmux   = CX25840_COMPONENT_ON |
+					CX25840_VIN1_CH1 |
+					CX25840_VIN6_CH2 |
+					CX25840_VIN7_CH3,
+			},
+		},
+	},
 	[CX23885_BOARD_MAGICPRO_PROHDTVE2] = {
 		.name		= "Magic-Pro ProHDTV Extreme 2",
 		.tuner_type = TUNER_XC5000,
@@ -494,6 +523,10 @@
 		.card      = CX23885_BOARD_MYGICA_X8506,
 	}, {
 		.subvendor = 0x14f1,
+		.subdevice = 0x8502,
+		.card      = CX23885_BOARD_MYGICA_X8507,
+	}, {
+		.subvendor = 0x14f1,
 		.subdevice = 0x8657,
 		.card      = CX23885_BOARD_MAGICPRO_PROHDTVE2,
 	}, {
@@ -955,6 +988,16 @@
 		cx23885_gpio_set(dev, GPIO_0 | GPIO_1 | GPIO_2);
 		mdelay(100);
 		break;
+	case CX23885_BOARD_MYGICA_X8507:
+		/* GPIO-0 (0)Analog / (1)Digital TV */
+		/* GPIO-1 reset XC5000 */
+		/* GPIO-2 reset MB86A20S */
+		cx23885_gpio_enable(dev, GPIO_0 | GPIO_1 | GPIO_2, 1);
+		cx23885_gpio_clear(dev, GPIO_1 | GPIO_2);
+		mdelay(100);
+		cx23885_gpio_set(dev, GPIO_0 | GPIO_1 | GPIO_2);
+		mdelay(100);
+		break;
 	case CX23885_BOARD_MYGICA_X8558PRO:
 		/* GPIO-0 reset first ATBM8830 */
 		/* GPIO-1 reset second ATBM8830 */
@@ -1220,6 +1263,7 @@
 		ts2->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
 		break;
 	case CX23885_BOARD_MYGICA_X8506:
+	case CX23885_BOARD_MYGICA_X8507:
 	case CX23885_BOARD_MAGICPRO_PROHDTVE2:
 		ts1->gen_ctrl_val  = 0x5; /* Parallel */
 		ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
@@ -1274,6 +1318,7 @@
 	case CX23885_BOARD_COMPRO_VIDEOMATE_E800:
 	case CX23885_BOARD_HAUPPAUGE_HVR1850:
 	case CX23885_BOARD_MYGICA_X8506:
+	case CX23885_BOARD_MYGICA_X8507:
 	case CX23885_BOARD_MAGICPRO_PROHDTVE2:
 	case CX23885_BOARD_HAUPPAUGE_HVR1290:
 	case CX23885_BOARD_LEADTEK_WINFAST_PXTV1200:
--- ../../../../../../usr/src/linux/drivers/media/video/cx23885/cx23885-dvb.c	2011-05-02 17:22:28.000000000 -0300
+++ ../cx23885-dvb.c	2011-05-03 18:56:18.000000000 -0300
@@ -58,6 +58,7 @@
 #include "atbm8830.h"
 #include "ds3000.h"
 #include "cx23885-f300.h"
+#include "mb86a20s.h"
 
 static unsigned int debug;
 
@@ -460,6 +461,16 @@
 	.if_khz = 5380,
 };
 
+static struct mb86a20s_config mygica_x8507_mb86a20s_config = {
+	.demod_address = 0x10,
+	.is_serial = true,
+};
+
+static struct xc5000_config mygica_x8507_xc5000_config = {
+	.i2c_address = 0x61,
+	.if_khz = 5380,
+};
+
 static int cx23885_dvb_set_frontend(struct dvb_frontend *fe,
 				    struct dvb_frontend_parameters *param)
 {
@@ -480,6 +491,7 @@
 		}
 		break;
 	case CX23885_BOARD_MYGICA_X8506:
+	case CX23885_BOARD_MYGICA_X8507:
 	case CX23885_BOARD_MAGICPRO_PROHDTVE2:
 		/* Select Digital TV */
 		cx23885_gpio_set(dev, GPIO_0);
@@ -912,6 +924,19 @@
 				&mygica_x8506_xc5000_config);
 		}
 		break;
+	case CX23885_BOARD_MYGICA_X8507:
+		i2c_bus = &dev->i2c_bus[0];
+		i2c_bus2 = &dev->i2c_bus[1];
+		fe0->dvb.frontend = dvb_attach(mb86a20s_attach,
+			&mygica_x8507_mb86a20s_config,
+			&i2c_bus->i2c_adap);
+		if (fe0->dvb.frontend != NULL) {
+			dvb_attach(xc5000_attach,
+				fe0->dvb.frontend,
+				&i2c_bus2->i2c_adap,
+				&mygica_x8507_xc5000_config);
+		}
+		break;
 	case CX23885_BOARD_MAGICPRO_PROHDTVE2:
 		i2c_bus = &dev->i2c_bus[0];
 		i2c_bus2 = &dev->i2c_bus[1];
--- ../../../../../../usr/src/linux/drivers/media/video/cx23885/cx23885-video.c	2011-05-02 17:22:28.000000000 -0300
+++ ../cx23885-video.c	2011-04-29 14:07:33.000000000 -0300
@@ -409,6 +409,13 @@
 			cx23885_gpio_clear(dev, GPIO_0);
 	}
 
+	if (dev->board == CX23885_BOARD_MYGICA_X8507 ||
+		dev->board == CX23885_BOARD_MAGICPRO_PROHDTVE2) {
+		/* Select Analog TV */
+		if (INPUT(input)->type == CX23885_VMUX_TELEVISION)
+			cx23885_gpio_clear(dev, GPIO_0);
+	}
+
 	/* Tell the internal A/V decoder */
 	v4l2_subdev_call(dev->sd_cx25840, video, s_routing,
 			INPUT(input)->vmux, 0, 0);

[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux