All of lore.kernel.org
 help / color / mirror / Atom feed
* tm6000
@ 2010-05-05  4:50 Dmitri Belimov
  2010-05-05  5:44 ` tm6000 Bee Hock Goh
  0 siblings, 1 reply; 12+ messages in thread
From: Dmitri Belimov @ 2010-05-05  4:50 UTC (permalink / raw)
  To: linux-media, mchehab, Stefan Ringel, Bee Hock Goh

Hi 

At this moment I can start mplayer and see green field with some junk without crash.
Info from mplayer - received 497 frames, drop 69 incorrect frames.

Compile without support DVB-T for our cards.

Now try understand init process working drivers and diff with linux.

P.S. Linux kernel is 2.6.33

With my best regards, Dmitry.

^ permalink raw reply	[flat|nested] 12+ messages in thread
* tm6000
@ 2010-05-18  7:35 Dmitri Belimov
  0 siblings, 0 replies; 12+ messages in thread
From: Dmitri Belimov @ 2010-05-18  7:35 UTC (permalink / raw)
  To: linux-media, mchehab, Stefan Ringel, Bee Hock Goh

Hi 

tm6000 progress bar :-)

At this moment I can watch TV with mplayer without sound.
Our card based on the xc5000 and tm6010
It is possible with my last patch for xc5000 tuner.

Next task is a sound, check init process and stds settings.

P.S. Compile without support DVB-T frontend for our cards. Linux kernel is 2.6.33

With my best regards, Dmitry.

^ permalink raw reply	[flat|nested] 12+ messages in thread
* [PATCH] tm6000 fix i2c
@ 2010-04-23  0:48 Dmitri Belimov
  2010-04-23 15:15 ` Stefan Ringel
  0 siblings, 1 reply; 12+ messages in thread
From: Dmitri Belimov @ 2010-04-23  0:48 UTC (permalink / raw)
  To: linux-media, Mauro Carvalho Chehab

[-- Attachment #1: Type: text/plain, Size: 5286 bytes --]

Hi

Rework I2C for read word from connected devices, now it works well.
Add new functions for read/write blocks.

diff -r 7c0b887911cf linux/drivers/staging/tm6000/tm6000-i2c.c
--- a/linux/drivers/staging/tm6000/tm6000-i2c.c	Mon Apr 05 22:56:43 2010 -0400
+++ b/linux/drivers/staging/tm6000/tm6000-i2c.c	Fri Apr 23 04:23:03 2010 +1000
@@ -24,6 +24,7 @@
 #include <linux/kernel.h>
 #include <linux/usb.h>
 #include <linux/i2c.h>
+#include <linux/delay.h>
 
 #include "compat.h"
 #include "tm6000.h"
@@ -45,11 +46,39 @@
 			printk(KERN_DEBUG "%s at %s: " fmt, \
 			dev->name, __FUNCTION__ , ##args); } while (0)
 
+static void tm6000_i2c_reset(struct tm6000_core *dev)
+{
+	tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN, TM6000_GPIO_CLK, 0);
+	msleep(15);
+	tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN, TM6000_GPIO_CLK, 1);
+	msleep(15);
+}
+
 static int tm6000_i2c_send_regs(struct tm6000_core *dev, unsigned char addr,
 				__u8 reg, char *buf, int len)
 {
-	return tm6000_read_write_usb(dev, USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-		REQ_16_SET_GET_I2C_WR1_RDN, addr | reg << 8, 0, buf, len);
+	int rc;
+	unsigned int tsleep;
+
+	if (!buf || len < 1 || len > 64)
+		return -1;
+
+	/* capture mutex */
+	rc = tm6000_read_write_usb(dev, USB_DIR_OUT | USB_TYPE_VENDOR |
+		USB_RECIP_DEVICE, REQ_16_SET_GET_I2C_WR1_RDN,
+		addr | reg << 8, 0, buf, len);
+
+	if (rc < 0) {
+		/* release mutex */
+		return rc;
+	}
+
+	/* Calculate delay time, 14000us for 64 bytes */
+	tsleep = ((len * 200) + 200 + 1000) / 1000;
+	msleep(tsleep);
+
+	/* release mutex */
+	return rc;
 }
 
 /* Generic read - doesn't work fine with 16bit registers */
@@ -59,22 +88,30 @@
 	int rc;
 	u8 b[2];
 
-	if ((dev->caps.has_zl10353) && (dev->demod_addr << 1 == addr) && (reg % 2 == 0)) {
+	if (!buf || len < 1 || len > 64)
+		return -1;
+
+	/* capture mutex */
+	if ((dev->caps.has_zl10353) && (dev->demod_addr << 1 == addr)
+	&& (reg % 2 == 0)) {
 		/*
 		 * Workaround an I2C bug when reading from zl10353
 		 */
 		reg -= 1;
 		len += 1;
 
-		rc = tm6000_read_write_usb(dev, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-			REQ_16_SET_GET_I2C_WR1_RDN, addr | reg << 8, 0, b, len);
+		rc = tm6000_read_write_usb(dev, USB_DIR_IN | USB_TYPE_VENDOR |
+		USB_RECIP_DEVICE, REQ_16_SET_GET_I2C_WR1_RDN,
+		addr | reg << 8, 0, b, len);
 
 		*buf = b[1];
 	} else {
-		rc = tm6000_read_write_usb(dev, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-			REQ_16_SET_GET_I2C_WR1_RDN, addr | reg << 8, 0, buf, len);
+		rc = tm6000_read_write_usb(dev, USB_DIR_IN | USB_TYPE_VENDOR |
+		USB_RECIP_DEVICE, REQ_16_SET_GET_I2C_WR1_RDN,
+		addr | reg << 8, 0, buf, len);
 	}
 
+	/* release mutex */
 	return rc;
 }
 
@@ -85,8 +122,106 @@
 static int tm6000_i2c_recv_regs16(struct tm6000_core *dev, unsigned char addr,
 				  __u16 reg, char *buf, int len)
 {
-	return tm6000_read_write_usb(dev, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-		REQ_14_SET_GET_I2C_WR2_RDN, addr, reg, buf, len);
+	int rc;
+	unsigned char ureg;
+
+	if (!buf || len != 2)
+		return -1;
+
+	/* capture mutex */
+	ureg = reg & 0xFF;
+	rc = tm6000_read_write_usb(dev, USB_DIR_OUT | USB_TYPE_VENDOR |
+		USB_RECIP_DEVICE, REQ_16_SET_GET_I2C_WR1_RDN,
+		addr | (reg & 0xFF00), 0, &ureg, 1);
+
+	if (rc < 0) {
+		/* release mutex */
+		return rc;
+	}
+
+	msleep(1400 / 1000);
+	rc = tm6000_read_write_usb(dev, USB_DIR_IN | USB_TYPE_VENDOR |
+		USB_RECIP_DEVICE, REQ_35_AFTEK_TUNER_READ,
+		reg, 0, buf, len);
+
+	if (rc < 0) {
+		/* release mutex */
+		return rc;
+	}
+
+	/* release mutex */
+	return rc;
+}
+
+static int tm6000_i2c_read_sequence(struct tm6000_core *dev, unsigned char addr,
+				  __u16 reg, char *buf, int len)
+{
+	int rc;
+
+	if (!buf || len < 1 || len > 64)
+		return -1;
+
+	/* capture mutex */
+	rc = tm6000_read_write_usb(dev, USB_DIR_IN | USB_TYPE_VENDOR |
+		USB_RECIP_DEVICE, REQ_35_AFTEK_TUNER_READ,
+		reg, 0, buf, len);
+	/* release mutex */
+	return rc;
+}
+
+static int tm6000_i2c_write_sequence(struct tm6000_core *dev,
+				unsigned char addr, __u16 reg, char *buf,
+				int len)
+{
+	int rc;
+	unsigned int tsleep;
+
+	if (!buf || len < 1 || len > 64)
+		return -1;
+
+	/* capture mutex */
+	rc = tm6000_read_write_usb(dev, USB_DIR_OUT | USB_TYPE_VENDOR |
+		USB_RECIP_DEVICE, REQ_16_SET_GET_I2C_WR1_RDN,
+		addr | reg << 8, 0, buf+1, len-1);
+
+	if (rc < 0) {
+		/* release mutex */
+		return rc;
+	}
+
+	/* Calculate delay time, 13800us for 64 bytes */
+	tsleep = ((len * 200) + 1000) / 1000;
+	msleep(tsleep);
+
+	/* release mutex */
+	return rc;
+}
+
+static int tm6000_i2c_write_uni(struct tm6000_core *dev, unsigned char addr,
+				  __u16 reg, char *buf, int len)
+{
+	int rc;
+	unsigned int tsleep;
+
+	if (!buf || len < 1 || len > 64)
+		return -1;
+
+	/* capture mutex */
+	rc = tm6000_read_write_usb(dev, USB_DIR_OUT | USB_TYPE_VENDOR |
+		USB_RECIP_DEVICE, REQ_30_I2C_WRITE,
+		addr | reg << 8, 0, buf+1, len-1);
+
+	if (rc < 0) {
+		/* release mutex */
+		return rc;
+	}
+
+	/* Calculate delay time, 14800us for 64 bytes */
+	tsleep = ((len * 200) + 1000 + 1000) / 1000;
+	msleep(tsleep);
+
+	/* release mutex */
+	return rc;
 }
 
 static int tm6000_i2c_xfer(struct i2c_adapter *i2c_adap,

Signed-off-by: Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com>


With my best regards, Dmitry.

[-- Attachment #2: tm6000_i2c.patch --]
[-- Type: text/x-patch, Size: 5141 bytes --]

diff -r 7c0b887911cf linux/drivers/staging/tm6000/tm6000-i2c.c
--- a/linux/drivers/staging/tm6000/tm6000-i2c.c	Mon Apr 05 22:56:43 2010 -0400
+++ b/linux/drivers/staging/tm6000/tm6000-i2c.c	Fri Apr 23 04:23:03 2010 +1000
@@ -24,6 +24,7 @@
 #include <linux/kernel.h>
 #include <linux/usb.h>
 #include <linux/i2c.h>
+#include <linux/delay.h>
 
 #include "compat.h"
 #include "tm6000.h"
@@ -45,11 +46,39 @@
 			printk(KERN_DEBUG "%s at %s: " fmt, \
 			dev->name, __FUNCTION__ , ##args); } while (0)
 
+static void tm6000_i2c_reset(struct tm6000_core *dev)
+{
+	tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN, TM6000_GPIO_CLK, 0);
+	msleep(15);
+	tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN, TM6000_GPIO_CLK, 1);
+	msleep(15);
+}
+
 static int tm6000_i2c_send_regs(struct tm6000_core *dev, unsigned char addr,
 				__u8 reg, char *buf, int len)
 {
-	return tm6000_read_write_usb(dev, USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-		REQ_16_SET_GET_I2C_WR1_RDN, addr | reg << 8, 0, buf, len);
+	int rc;
+	unsigned int tsleep;
+
+	if (!buf || len < 1 || len > 64)
+		return -1;
+
+	/* capture mutex */
+	rc = tm6000_read_write_usb(dev, USB_DIR_OUT | USB_TYPE_VENDOR |
+		USB_RECIP_DEVICE, REQ_16_SET_GET_I2C_WR1_RDN,
+		addr | reg << 8, 0, buf, len);
+
+	if (rc < 0) {
+		/* release mutex */
+		return rc;
+	}
+
+	/* Calculate delay time, 14000us for 64 bytes */
+	tsleep = ((len * 200) + 200 + 1000) / 1000;
+	msleep(tsleep);
+
+	/* release mutex */
+	return rc;
 }
 
 /* Generic read - doesn't work fine with 16bit registers */
@@ -59,22 +88,30 @@
 	int rc;
 	u8 b[2];
 
-	if ((dev->caps.has_zl10353) && (dev->demod_addr << 1 == addr) && (reg % 2 == 0)) {
+	if (!buf || len < 1 || len > 64)
+		return -1;
+
+	/* capture mutex */
+	if ((dev->caps.has_zl10353) && (dev->demod_addr << 1 == addr)
+	&& (reg % 2 == 0)) {
 		/*
 		 * Workaround an I2C bug when reading from zl10353
 		 */
 		reg -= 1;
 		len += 1;
 
-		rc = tm6000_read_write_usb(dev, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-			REQ_16_SET_GET_I2C_WR1_RDN, addr | reg << 8, 0, b, len);
+		rc = tm6000_read_write_usb(dev, USB_DIR_IN | USB_TYPE_VENDOR |
+		USB_RECIP_DEVICE, REQ_16_SET_GET_I2C_WR1_RDN,
+		addr | reg << 8, 0, b, len);
 
 		*buf = b[1];
 	} else {
-		rc = tm6000_read_write_usb(dev, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-			REQ_16_SET_GET_I2C_WR1_RDN, addr | reg << 8, 0, buf, len);
+		rc = tm6000_read_write_usb(dev, USB_DIR_IN | USB_TYPE_VENDOR |
+		USB_RECIP_DEVICE, REQ_16_SET_GET_I2C_WR1_RDN,
+		addr | reg << 8, 0, buf, len);
 	}
 
+	/* release mutex */
 	return rc;
 }
 
@@ -85,8 +122,106 @@
 static int tm6000_i2c_recv_regs16(struct tm6000_core *dev, unsigned char addr,
 				  __u16 reg, char *buf, int len)
 {
-	return tm6000_read_write_usb(dev, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-		REQ_14_SET_GET_I2C_WR2_RDN, addr, reg, buf, len);
+	int rc;
+	unsigned char ureg;
+
+	if (!buf || len != 2)
+		return -1;
+
+	/* capture mutex */
+	ureg = reg & 0xFF;
+	rc = tm6000_read_write_usb(dev, USB_DIR_OUT | USB_TYPE_VENDOR |
+		USB_RECIP_DEVICE, REQ_16_SET_GET_I2C_WR1_RDN,
+		addr | (reg & 0xFF00), 0, &ureg, 1);
+
+	if (rc < 0) {
+		/* release mutex */
+		return rc;
+	}
+
+	msleep(1400 / 1000);
+	rc = tm6000_read_write_usb(dev, USB_DIR_IN | USB_TYPE_VENDOR |
+		USB_RECIP_DEVICE, REQ_35_AFTEK_TUNER_READ,
+		reg, 0, buf, len);
+
+	if (rc < 0) {
+		/* release mutex */
+		return rc;
+	}
+
+	/* release mutex */
+	return rc;
+}
+
+static int tm6000_i2c_read_sequence(struct tm6000_core *dev, unsigned char addr,
+				  __u16 reg, char *buf, int len)
+{
+	int rc;
+
+	if (!buf || len < 1 || len > 64)
+		return -1;
+
+	/* capture mutex */
+	rc = tm6000_read_write_usb(dev, USB_DIR_IN | USB_TYPE_VENDOR |
+		USB_RECIP_DEVICE, REQ_35_AFTEK_TUNER_READ,
+		reg, 0, buf, len);
+	/* release mutex */
+	return rc;
+}
+
+static int tm6000_i2c_write_sequence(struct tm6000_core *dev,
+				unsigned char addr, __u16 reg, char *buf,
+				int len)
+{
+	int rc;
+	unsigned int tsleep;
+
+	if (!buf || len < 1 || len > 64)
+		return -1;
+
+	/* capture mutex */
+	rc = tm6000_read_write_usb(dev, USB_DIR_OUT | USB_TYPE_VENDOR |
+		USB_RECIP_DEVICE, REQ_16_SET_GET_I2C_WR1_RDN,
+		addr | reg << 8, 0, buf+1, len-1);
+
+	if (rc < 0) {
+		/* release mutex */
+		return rc;
+	}
+
+	/* Calculate delay time, 13800us for 64 bytes */
+	tsleep = ((len * 200) + 1000) / 1000;
+	msleep(tsleep);
+
+	/* release mutex */
+	return rc;
+}
+
+static int tm6000_i2c_write_uni(struct tm6000_core *dev, unsigned char addr,
+				  __u16 reg, char *buf, int len)
+{
+	int rc;
+	unsigned int tsleep;
+
+	if (!buf || len < 1 || len > 64)
+		return -1;
+
+	/* capture mutex */
+	rc = tm6000_read_write_usb(dev, USB_DIR_OUT | USB_TYPE_VENDOR |
+		USB_RECIP_DEVICE, REQ_30_I2C_WRITE,
+		addr | reg << 8, 0, buf+1, len-1);
+
+	if (rc < 0) {
+		/* release mutex */
+		return rc;
+	}
+
+	/* Calculate delay time, 14800us for 64 bytes */
+	tsleep = ((len * 200) + 1000 + 1000) / 1000;
+	msleep(tsleep);
+
+	/* release mutex */
+	return rc;
 }
 
 static int tm6000_i2c_xfer(struct i2c_adapter *i2c_adap,

Signed-off-by: Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com>

^ permalink raw reply	[flat|nested] 12+ messages in thread
* [PATCH] tm6000: add new hybrid-stick
@ 2010-03-10 17:57 stefan.ringel
  2010-03-14  7:11 ` Stefan Ringel
  0 siblings, 1 reply; 12+ messages in thread
From: stefan.ringel @ 2010-03-10 17:57 UTC (permalink / raw)
  To: linux-media; +Cc: mchehab, dheitmueller, Stefan Ringel

From: Stefan Ringel <stefan.ringel@arcor.de>

-add Hauppauge WinTV HVR 900H/WinTV USB2-Stick
	vid/pid
	0x2040/6601
	0x2040/6610
	0x2040/6611

-add Terratec Cinergy Hybrid-Stick
	vid/pid
	0x0ccd/0x00a5

-add Twinhan TU501(704D1)
	vid/pid
	0x13d3/0x3240
	0x13d3/0x3241
	0x13d3/0x3243
	0x13d3/0x3264


Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de>
---
 drivers/staging/tm6000/tm6000-cards.c |   39 +++++++++++++++++++++++++++-----
 1 files changed, 33 insertions(+), 6 deletions(-)

diff --git a/drivers/staging/tm6000/tm6000-cards.c b/drivers/staging/tm6000/tm6000-cards.c
index 83cb4b9..2053008 100644
--- a/drivers/staging/tm6000/tm6000-cards.c
+++ b/drivers/staging/tm6000/tm6000-cards.c
@@ -47,6 +47,7 @@
 #define TM6010_BOARD_BEHOLD_WANDER		10
 #define TM6010_BOARD_BEHOLD_VOYAGER		11
 #define TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE	12
+#define TM6010_BOARD_TWINHAN_TU501		13
 
 #define TM6000_MAXBOARDS        16
 static unsigned int card[]     = {[0 ... (TM6000_MAXBOARDS - 1)] = UNSET };
@@ -169,7 +170,7 @@ struct tm6000_board tm6000_boards[] = {
 		.gpio_addr_tun_reset = TM6000_GPIO_4,
 	},
 	[TM6010_BOARD_HAUPPAUGE_900H] = {
-		.name         = "Hauppauge HVR-900H",
+		.name         = "Hauppauge WinTV HVR-900H / WinTV USB2-Stick",
 		.tuner_type   = TUNER_XC2028, /* has a XC3028 */
 		.tuner_addr   = 0xc2 >> 1,
 		.demod_addr   = 0x1e >> 1,
@@ -180,7 +181,7 @@ struct tm6000_board tm6000_boards[] = {
 			.has_zl10353  = 1,
 			.has_eeprom   = 1,
 		},
-		.gpio_addr_tun_reset = TM6000_GPIO_2,
+		.gpio_addr_tun_reset = TM6010_GPIO_2,
 	},
 	[TM6010_BOARD_BEHOLD_WANDER] = {
 		.name         = "Beholder Wander DVB-T/TV/FM USB2.0",
@@ -212,7 +213,22 @@ struct tm6000_board tm6000_boards[] = {
 		.gpio_addr_tun_reset = TM6000_GPIO_2,
 	},
 	[TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE] = {
-		.name         = "Terratec Cinergy Hybrid XE",
+		.name         = "Terratec Cinergy Hybrid XE / Cinergy Hybrid-Stick",
+		.tuner_type   = TUNER_XC2028, /* has a XC3028 */
+		.tuner_addr   = 0xc2 >> 1,
+		.demod_addr   = 0x1e >> 1,
+		.type         = TM6010,
+		.caps = {
+			.has_tuner    = 1,
+			.has_dvb      = 1,
+			.has_zl10353  = 1,
+			.has_eeprom   = 1,
+			.has_remote   = 1,
+		},
+		.gpio_addr_tun_reset = TM6010_GPIO_2,
+	},
+	[TM6010_BOARD_TWINHAN_TU501] = {
+		.name         = "Twinhan TU501(704D1)",
 		.tuner_type   = TUNER_XC2028, /* has a XC3028 */
 		.tuner_addr   = 0xc2 >> 1,
 		.demod_addr   = 0x1e >> 1,
@@ -236,9 +252,17 @@ struct usb_device_id tm6000_id_table [] = {
 	{ USB_DEVICE(0x14aa, 0x0620), .driver_info = TM6000_BOARD_FREECOM_AND_SIMILAR },
 	{ USB_DEVICE(0x06e1, 0xb339), .driver_info = TM6000_BOARD_ADSTECH_MINI_DUAL_TV },
 	{ USB_DEVICE(0x2040, 0x6600), .driver_info = TM6010_BOARD_HAUPPAUGE_900H },
+	{ USB_DEVICE(0x2040, 0x6601), .driver_info = TM6010_BOARD_HAUPPAUGE_900H },
+	{ USB_DEVICE(0x2040, 0x6610), .driver_info = TM6010_BOARD_HAUPPAUGE_900H },
+	{ USB_DEVICE(0x2040, 0x6611), .driver_info = TM6010_BOARD_HAUPPAUGE_900H },
 	{ USB_DEVICE(0x6000, 0xdec0), .driver_info = TM6010_BOARD_BEHOLD_WANDER },
 	{ USB_DEVICE(0x6000, 0xdec1), .driver_info = TM6010_BOARD_BEHOLD_VOYAGER },
 	{ USB_DEVICE(0x0ccd, 0x0086), .driver_info = TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE },
+	{ USB_DEVICE(0x0ccd, 0x00A5), .driver_info = TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE },
+	{ USB_DEVICE(0x13d3, 0x3240), .driver_info = TM6010_BOARD_TWINHAN_TU501 },
+	{ USB_DEVICE(0x13d3, 0x3241), .driver_info = TM6010_BOARD_TWINHAN_TU501 },
+	{ USB_DEVICE(0x13d3, 0x3243), .driver_info = TM6010_BOARD_TWINHAN_TU501 },
+	{ USB_DEVICE(0x13d3, 0x3264), .driver_info = TM6010_BOARD_TWINHAN_TU501 },
 	{ },
 };
 
@@ -271,7 +295,9 @@ int tm6000_tuner_callback(void *ptr, int component, int command, int arg)
 		case 0:
 			/* newer tuner can faster reset */
 			switch (dev->model) {
+			case TM6010_BOARD_HAUPPAUGE_900H:
 			case TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE:
+			case TM6010_BOARD_TWINHAN_TU501:
 				tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN,
 					       dev->tuner_reset_gpio, 0x01);
 				msleep(60);
@@ -328,11 +354,11 @@ int tm6000_cards_setup(struct tm6000_core *dev)
 	 */
 	switch (dev->model) {
 	case TM6010_BOARD_HAUPPAUGE_900H:
+	case TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE:
+	case TM6010_BOARD_TWINHAN_TU501:
 		/* Turn xceive 3028 on */
 		tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN, TM6010_GPIO_3, 0x01);
-		msleep(11);
-		break;
-	case TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE:
+		msleep(15);
 		/* Turn zarlink zl10353 on */
 		tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN, TM6010_GPIO_4, 0x00);
 		msleep(15);
@@ -445,6 +471,7 @@ static void tm6000_config_tuner (struct tm6000_core *dev)
 		switch(dev->model) {
 		case TM6010_BOARD_HAUPPAUGE_900H:
 		case TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE:
+		case TM6010_BOARD_TWINHAN_TU501:
 			ctl.fname = "xc3028L-v36.fw";
 			break;
 		default:
-- 
1.6.6.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread
* [PATCH] Add new TV cards of Beholder
@ 2009-11-10  4:37 Dmitri Belimov
  2009-11-23 21:28 ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 12+ messages in thread
From: Dmitri Belimov @ 2009-11-10  4:37 UTC (permalink / raw)
  To: linux-media, video4linux-list

[-- Attachment #1: Type: text/plain, Size: 1888 bytes --]

Hi All

Add new TV cards of Beholder for autodetect.

diff -r 3919b17dc88e linux/drivers/staging/tm6000/tm6000-cards.c
--- a/linux/drivers/staging/tm6000/tm6000-cards.c	Wed Oct 14 12:52:55 2009 -0300
+++ b/linux/drivers/staging/tm6000/tm6000-cards.c	Tue Nov 10 08:05:15 2009 +0900
@@ -33,6 +33,7 @@
 #include "tm6000.h"
 #include "tm6000-regs.h"
 #include "tuner-xc2028.h"
+#include "tuner-xc5000.h"
 
 #define TM6000_BOARD_UNKNOWN			0
 #define TM5600_BOARD_GENERIC			1
@@ -193,6 +194,36 @@
 		},
 		.gpio_addr_tun_reset = TM6000_GPIO_2,
 	},
+	[TM6010_BOARD_BEHOLD_WANDER] = {
+		.name         = "Beholder Wander DVB-T/TV/FM USB2.0",
+		.tuner_type   = TUNER_XC5000,
+		.tuner_addr   = 0xc2 >> 1,
+		.demod_addr   = 0x1e >> 1,
+		.type         = TM6010,
+		.caps = {
+			.has_tuner    = 1,
+			.has_dvb      = 1,
+			.has_zl10353  = 1,
+			.has_eeprom   = 1,
+			.has_remote   = 1,
+		},
+		.gpio_addr_tun_reset = TM6000_GPIO_2,
+	},
+	[TM6010_BOARD_BEHOLD_VOYAGER] = {
+		.name         = "Beholder Voyager TV/FM USB2.0",
+		.tuner_type   = TUNER_XC5000,
+		.tuner_addr   = 0xc2 >> 1,
+		.type         = TM6010,
+		.caps = {
+			.has_tuner    = 1,
+			.has_dvb      = 0,
+			.has_zl10353  = 0,
+			.has_eeprom   = 1,
+			.has_remote   = 1,
+		},
+		.gpio_addr_tun_reset = TM6000_GPIO_2,
+	},
+
 };
 
 /* table of devices that work with this driver */
@@ -203,6 +234,8 @@
 	{ USB_DEVICE(0x14aa, 0x0620), .driver_info = TM6000_BOARD_FREECOM_AND_SIMILAR },
 	{ USB_DEVICE(0x06e1, 0xb339), .driver_info = TM6000_BOARD_ADSTECH_MINI_DUAL_TV },
 	{ USB_DEVICE(0x2040, 0x6600), .driver_info = TM6010_BOARD_HAUPPAUGE_900H },
+	{ USB_DEVICE(0x6000, 0xdec0), .driver_info = TM6010_BOARD_BEHOLD_WANDER },
+	{ USB_DEVICE(0x6000, 0xdec1), .driver_info = TM6010_BOARD_BEHOLD_VOYAGER },
 	{ },
 };
 
Signed-off-by: Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com>

With my best regards, Dmitry.

[-- Attachment #2: behold_usb.patch --]
[-- Type: text/x-patch, Size: 1803 bytes --]

diff -r 3919b17dc88e linux/drivers/staging/tm6000/tm6000-cards.c
--- a/linux/drivers/staging/tm6000/tm6000-cards.c	Wed Oct 14 12:52:55 2009 -0300
+++ b/linux/drivers/staging/tm6000/tm6000-cards.c	Tue Nov 10 08:05:15 2009 +0900
@@ -33,6 +33,7 @@
 #include "tm6000.h"
 #include "tm6000-regs.h"
 #include "tuner-xc2028.h"
+#include "tuner-xc5000.h"
 
 #define TM6000_BOARD_UNKNOWN			0
 #define TM5600_BOARD_GENERIC			1
@@ -193,6 +194,36 @@
 		},
 		.gpio_addr_tun_reset = TM6000_GPIO_2,
 	},
+	[TM6010_BOARD_BEHOLD_WANDER] = {
+		.name         = "Beholder Wander DVB-T/TV/FM USB2.0",
+		.tuner_type   = TUNER_XC5000,
+		.tuner_addr   = 0xc2 >> 1,
+		.demod_addr   = 0x1e >> 1,
+		.type         = TM6010,
+		.caps = {
+			.has_tuner    = 1,
+			.has_dvb      = 1,
+			.has_zl10353  = 1,
+			.has_eeprom   = 1,
+			.has_remote   = 1,
+		},
+		.gpio_addr_tun_reset = TM6000_GPIO_2,
+	},
+	[TM6010_BOARD_BEHOLD_VOYAGER] = {
+		.name         = "Beholder Voyager TV/FM USB2.0",
+		.tuner_type   = TUNER_XC5000,
+		.tuner_addr   = 0xc2 >> 1,
+		.type         = TM6010,
+		.caps = {
+			.has_tuner    = 1,
+			.has_dvb      = 0,
+			.has_zl10353  = 0,
+			.has_eeprom   = 1,
+			.has_remote   = 1,
+		},
+		.gpio_addr_tun_reset = TM6000_GPIO_2,
+	},
+
 };
 
 /* table of devices that work with this driver */
@@ -203,6 +234,8 @@
 	{ USB_DEVICE(0x14aa, 0x0620), .driver_info = TM6000_BOARD_FREECOM_AND_SIMILAR },
 	{ USB_DEVICE(0x06e1, 0xb339), .driver_info = TM6000_BOARD_ADSTECH_MINI_DUAL_TV },
 	{ USB_DEVICE(0x2040, 0x6600), .driver_info = TM6010_BOARD_HAUPPAUGE_900H },
+	{ USB_DEVICE(0x6000, 0xdec0), .driver_info = TM6010_BOARD_BEHOLD_WANDER },
+	{ USB_DEVICE(0x6000, 0xdec1), .driver_info = TM6010_BOARD_BEHOLD_VOYAGER },
 	{ },
 };
 
Signed-off-by: Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com>

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2010-05-18  7:35 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-05  4:50 tm6000 Dmitri Belimov
2010-05-05  5:44 ` tm6000 Bee Hock Goh
2010-05-05  7:27   ` tm6000 Dmitri Belimov
2010-05-05  7:47     ` tm6000 Bee Hock Goh
2010-05-05 13:58     ` tm6000 Mauro Carvalho Chehab
  -- strict thread matches above, loose matches on Subject: below --
2010-05-18  7:35 tm6000 Dmitri Belimov
2010-04-23  0:48 [PATCH] tm6000 fix i2c Dmitri Belimov
2010-04-23 15:15 ` Stefan Ringel
2010-04-26  0:25   ` Dmitri Belimov
2010-04-26 12:58     ` Bee Hock Goh
2010-04-27  5:15       ` Dmitri Belimov
2010-04-27  6:07         ` Bee Hock Goh
2010-04-28  5:49           ` tm6000 Dmitri Belimov
2010-04-28  7:32             ` tm6000 Bee Hock Goh
2010-04-28 12:14             ` tm6000 Mauro Carvalho Chehab
2010-03-10 17:57 [PATCH] tm6000: add new hybrid-stick stefan.ringel
2010-03-14  7:11 ` Stefan Ringel
2010-03-14 18:26   ` Mauro Carvalho Chehab
2010-03-14 20:19     ` Stefan Ringel
2010-03-27 14:55       ` tm6000 Stefan Ringel
2009-11-10  4:37 [PATCH] Add new TV cards of Beholder Dmitri Belimov
2009-11-23 21:28 ` Mauro Carvalho Chehab
2010-01-12  8:24   ` tm6000 Dmitri Belimov
2010-01-12 11:50     ` tm6000 Mauro Carvalho Chehab

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.