Hi,
I have reviewed my last week's quick shot patch and here is a new version.
The firmware I mentioned in the first patch is not needed, since it is
stored on the device itself.
I also got the black TT remote working with it. I had to set rc_interval
to 500, because the key repeats came in too fast.
The image distortions I mentioned in an earlier post are still visible.
Dominik said that he also had packet losses on a TS record. So I hope he
can fix it.
Before applying the attached patch you need to apply Dominik's patch for
the Pinnacle PCTV 452e.
Please test the attached patch and let me know if you ran into any problems.
Note:
Manu's code in changeset 7207 seems to have broken tuning for this
device. Changesets 7202 to 7205 are still working.
Have a nice weekend.
André
diff -Nrubw multiproto-452/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h multiproto_S2-3600/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h
--- multiproto-452/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h 2008-03-01 10:48:28.674288316 +0100
+++ multiproto_S2-3600/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h 2008-03-01 10:48:48.715408833 +0100
@@ -40,6 +40,7 @@
#define USB_VID_MSI 0x0db0
#define USB_VID_OPERA1 0x695c
#define USB_VID_PINNACLE 0x2304
+#define USB_VID_TECHNOTREND 0x0b48
#define USB_VID_TERRATEC 0x0ccd
#define USB_VID_VISIONPLUS 0x13d3
#define USB_VID_TWINHAN 0x1822
@@ -142,6 +143,7 @@
#define USB_PID_PCTV_400E 0x020f
#define USB_PID_PCTV_450E 0x0222
#define USB_PID_PCTV_452E 0x021f
+#define USB_PID_TECHNOTREND_CONNECT_S2_3600 0x3007
#define USB_PID_NEBULA_DIGITV 0x0201
#define USB_PID_DVICO_BLUEBIRD_LGDT 0xd820
#define USB_PID_DVICO_BLUEBIRD_LG064F_COLD 0xd500
diff -Nrubw multiproto-452/linux/drivers/media/dvb/dvb-usb/Kconfig multiproto_S2-3600/linux/drivers/media/dvb/dvb-usb/Kconfig
--- multiproto-452/linux/drivers/media/dvb/dvb-usb/Kconfig 2008-03-01 10:48:28.674288316 +0100
+++ multiproto_S2-3600/linux/drivers/media/dvb/dvb-usb/Kconfig 2008-03-01 10:48:48.715408833 +0100
@@ -240,14 +240,15 @@
Afatech AF9005 based receiver.
config DVB_USB_PCTV452E
- tristate "Pinnacle PCTV HDTV Pro USB device"
+ tristate "Pinnacle PCTV HDTV Pro USB device / TT connect S2-3600 (NEW)"
depends on DVB_USB
select DVB_LNBP22
select DVB_STB0899
select DVB_STB6100
help
- Support for external USB adapter designed by Pinnacle,
- shipped under the brand name 'PCTV HDTV Pro USB'.
+ Support for external USB adapter designed by TechnoTrend and,
+ shipped under the brand name 'Pinnacle PCTV HDTV Pro USB' and
+ 'TechnoTrend TT connect S2-3600'.
These devices don't have a MPEG decoder built in, so you need
an external software decoder to watch TV.
diff -Nrubw multiproto-452/linux/drivers/media/dvb/dvb-usb/pctv452e.c multiproto_S2-3600/linux/drivers/media/dvb/dvb-usb/pctv452e.c
--- multiproto-452/linux/drivers/media/dvb/dvb-usb/pctv452e.c 2008-03-01 10:48:28.678288540 +0100
+++ multiproto_S2-3600/linux/drivers/media/dvb/dvb-usb/pctv452e.c 2008-03-01 10:48:48.719409057 +0100
@@ -320,6 +320,53 @@
{0x07, 0x3f, KEY_HELP}
};
+
+/* Remote Control Stuff fo S2-3600 (copied from TT-S1500): */
+static struct dvb_usb_rc_key tt_connect_s2_3600_rc_key[] = {
+ {0x15, 0x01, KEY_POWER},
+ {0x15, 0x02, KEY_SHUFFLE}, /* ? double-arrow key */
+ {0x15, 0x03, KEY_1},
+ {0x15, 0x04, KEY_2},
+ {0x15, 0x05, KEY_3},
+ {0x15, 0x06, KEY_4},
+ {0x15, 0x07, KEY_5},
+ {0x15, 0x08, KEY_6},
+ {0x15, 0x09, KEY_7},
+ {0x15, 0x0a, KEY_8},
+ {0x15, 0x0b, KEY_9},
+ {0x15, 0x0c, KEY_0},
+ {0x15, 0x0d, KEY_UP},
+ {0x15, 0x0e, KEY_LEFT},
+ {0x15, 0x0f, KEY_OK},
+ {0x15, 0x10, KEY_RIGHT},
+ {0x15, 0x11, KEY_DOWN},
+ {0x15, 0x12, KEY_INFO},
+ {0x15, 0x13, KEY_EXIT},
+ {0x15, 0x14, KEY_RED},
+ {0x15, 0x15, KEY_GREEN},
+ {0x15, 0x16, KEY_YELLOW},
+ {0x15, 0x17, KEY_BLUE},
+ {0x15, 0x18, KEY_MUTE},
+ {0x15, 0x19, KEY_TEXT},
+ {0x15, 0x1a, KEY_MODE}, /* ? TV/Radio */
+ {0x15, 0x21, KEY_OPTION},
+ {0x15, 0x22, KEY_EPG},
+ {0x15, 0x23, KEY_CHANNELUP},
+ {0x15, 0x24, KEY_CHANNELDOWN},
+ {0x15, 0x25, KEY_VOLUMEUP},
+ {0x15, 0x26, KEY_VOLUMEDOWN},
+ {0x15, 0x27, KEY_SETUP},
+ {0x15, 0x3a, KEY_RECORD},/* these keys are only in the black remote */
+ {0x15, 0x3b, KEY_PLAY},
+ {0x15, 0x3c, KEY_STOP},
+ {0x15, 0x3d, KEY_REWIND},
+ {0x15, 0x3e, KEY_PAUSE},
+ {0x15, 0x3f, KEY_FORWARD}
+};
+
+
+
+
static int pctv452e_rc_query(struct dvb_usb_device *d, u32 *keyevent, int *keystate) {
struct pctv452e_state *state = (struct pctv452e_state *)d->priv;
u8 b[CMD_BUFFER_SIZE];
@@ -370,6 +417,7 @@
static struct stb0899_config stb0899_config;
static struct stb6100_config stb6100_config;
static struct dvb_usb_device_properties pctv452e_properties;
+static struct dvb_usb_device_properties tt_s2_3600_properties;
int pctv452e_frontend_attach(struct dvb_usb_adapter *a) {
@@ -395,9 +443,13 @@
return 0;
}
-static int pctv452e_usb_probe(struct usb_interface *intf,
- const struct usb_device_id *id) {
- return dvb_usb_device_init(intf, &pctv452e_properties, THIS_MODULE, NULL);
+static int pctv452e_usb_probe(struct usb_interface *intf, const struct usb_device_id *id) {
+ int ret;
+ if ((ret = dvb_usb_device_init(intf, &pctv452e_properties, THIS_MODULE, NULL))==0)
+ {
+ return ret;
+ }
+ return dvb_usb_device_init(intf, &tt_s2_3600_properties, THIS_MODULE, NULL);
}
@@ -423,7 +475,7 @@
// { STB0899_IRQMSK_3 , 0xff },
// { STB0899_IRQMSK_4 , 0xff },
{ STB0899_I2CCFG , 0x88 },
- { STB0899_I2CRPT , 0x5c },
+ { STB0899_I2CRPT , 0x58 },
{ STB0899_GPIO00CFG , 0x82 },
{ STB0899_GPIO01CFG , 0x82 }, /* 0x02 -> LED green 0x82 -> LED orange */
{ STB0899_GPIO02CFG , 0x82 },
@@ -1007,6 +1059,7 @@
static struct usb_device_id pctv452e_usb_table[] = {
{USB_DEVICE(USB_VID_PINNACLE, USB_PID_PCTV_452E)},
+ {USB_DEVICE(USB_VID_TECHNOTREND, USB_PID_TECHNOTREND_CONNECT_S2_3600)},
{}
};
MODULE_DEVICE_TABLE(usb, pctv452e_usb_table);
@@ -1066,6 +1119,60 @@
}
};
+static struct dvb_usb_device_properties tt_s2_3600_properties = {
+ .caps = DVB_USB_IS_AN_I2C_ADAPTER, /* more ? */
+ .usb_ctrl = DEVICE_SPECIFIC,
+
+ .size_of_priv = sizeof(struct pctv452e_state),
+
+ .identify_state = 0, // this is a warm only device
+
+ .power_ctrl = pctv452e_power_ctrl,
+
+ .rc_key_map = tt_connect_s2_3600_rc_key,
+ .rc_key_map_size = ARRAY_SIZE(tt_connect_s2_3600_rc_key),
+ .rc_query = pctv452e_rc_query,
+ .rc_interval = 500,
+
+ .num_adapters = 1,
+ .adapter = {{
+ .caps = 0,
+ .pid_filter_count = 0,
+
+ .streaming_ctrl = pctv452e_streaming_ctrl,
+
+ .frontend_attach = pctv452e_frontend_attach,
+ .tuner_attach = pctv452e_tuner_attach,
+
+ /* parameter for the MPEG2-data transfer */
+ .stream = {
+ .type = USB_ISOC,
+ .count = 7,
+ .endpoint = 0x02,
+ .u = {
+ .isoc = {
+ .framesperurb = 4,
+ .framesize = 940,
+ .interval = 1
+ }
+ }
+ },
+ .size_of_priv = 0
+ }},
+
+ .i2c_algo = &pctv452e_i2c_algo,
+
+ .generic_bulk_ctrl_endpoint = 1, /* allow generice rw function*/
+
+ .num_device_descs = 1,
+ .devices = {
+ { "Technotrend TT connect S2-3600",
+ { NULL }, //can I force a firmware upload !?!
+ { &pctv452e_usb_table[1], NULL }
+ },
+ }
+};
+
static struct usb_driver pctv452e_usb_driver = {
@@ -1097,5 +1204,5 @@
module_exit(pctv452e_usb_exit);
MODULE_AUTHOR("Dominik Kuhlen <[EMAIL PROTECTED]>");
-MODULE_DESCRIPTION("PCTV HDTV DVB Driver");
+MODULE_DESCRIPTION("PCTV HDTV DVB Driver / TT connect S2-3600");
MODULE_LICENSE("GPL");
_______________________________________________
linux-dvb mailing list
linux-dvb@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb