summaryrefslogtreecommitdiffstats
path: root/abs/extra-testing/community/mythtv-contrib/6200ch.c.r21651.patch
diff options
context:
space:
mode:
Diffstat (limited to 'abs/extra-testing/community/mythtv-contrib/6200ch.c.r21651.patch')
-rw-r--r--abs/extra-testing/community/mythtv-contrib/6200ch.c.r21651.patch181
1 files changed, 181 insertions, 0 deletions
diff --git a/abs/extra-testing/community/mythtv-contrib/6200ch.c.r21651.patch b/abs/extra-testing/community/mythtv-contrib/6200ch.c.r21651.patch
new file mode 100644
index 0000000..f883ecb
--- /dev/null
+++ b/abs/extra-testing/community/mythtv-contrib/6200ch.c.r21651.patch
@@ -0,0 +1,181 @@
+--- contrib/channel_changers/6200ch/6200ch.c.orig 2009-09-03 19:51:11.913853152 +0000
++++ contrib/channel_changers/6200ch/6200ch.c 2009-09-04 05:11:44.212465932 +0000
+@@ -88,6 +88,9 @@
+ #define QIP7100_MODEL_ID1 0x00008100
+ #define QIP7100_MODEL_ID2 0x00000001
+
++#define QIP6200_VENDOR_ID1 0x0000211e
++#define QIP6200_MODEL_ID1 0x00007100
++
+ #define MOT_UNKNOWN_VENDOR_ID1 0x04db
+ #define MOT_UNKNOWN_VENDOR_ID2 0x0406
+ #define MOT_UNKNOWN_VENDOR_ID3 0x0ce5
+@@ -99,17 +102,16 @@
+ #define MOT_UNKNOWN_VENDOR_ID9 0x1ade
+ #define MOT_UNKNOWN_VENDOR_ID10 0x1cfb
+ #define MOT_UNKNOWN_VENDOR_ID11 0x2040
+-#define MOT_UNKNOWN_VENDOR_ID12 0x211e
+-#define MOT_UNKNOWN_VENDOR_ID13 0x2180
+-#define MOT_UNKNOWN_VENDOR_ID14 0x2210
+-#define MOT_UNKNOWN_VENDOR_ID15 0x230b
+-#define MOT_UNKNOWN_VENDOR_ID16 0x2375
+-#define MOT_UNKNOWN_VENDOR_ID17 0x2395
+-#define MOT_UNKNOWN_VENDOR_ID18 0x23a2
+-#define MOT_UNKNOWN_VENDOR_ID19 0x23ed
+-#define MOT_UNKNOWN_VENDOR_ID20 0x23ee
+-#define MOT_UNKNOWN_VENDOR_ID21 0x23a0
+-#define MOT_UNKNOWN_VENDOR_ID22 0x23a1
++#define MOT_UNKNOWN_VENDOR_ID12 0x2180
++#define MOT_UNKNOWN_VENDOR_ID13 0x2210
++#define MOT_UNKNOWN_VENDOR_ID14 0x230b
++#define MOT_UNKNOWN_VENDOR_ID15 0x2375
++#define MOT_UNKNOWN_VENDOR_ID16 0x2395
++#define MOT_UNKNOWN_VENDOR_ID17 0x23a2
++#define MOT_UNKNOWN_VENDOR_ID18 0x23ed
++#define MOT_UNKNOWN_VENDOR_ID19 0x23ee
++#define MOT_UNKNOWN_VENDOR_ID20 0x23a0
++#define MOT_UNKNOWN_VENDOR_ID21 0x23a1
+
+ #define PACE_VENDOR_ID1 0x00005094 /* 550 & 779 */
+ #define PACE_VENDOR_ID2 0x00005094 /* unknown */
+@@ -128,21 +130,23 @@
+ #define RETRY_COUNT_FAST 0
+
+ void set_chan_slow(raw1394handle_t handle, int device, int verbose, int chn);
++void set_chan_slow_four_digit(raw1394handle_t handle, int device, int verbose, int chn);
+ void set_chan_fast(raw1394handle_t handle, int device, int verbose, int chn);
+ void set_power_fast(raw1394handle_t handle, int device, int verbose);
+
+ void usage()
+ {
+ fprintf(stderr, "Usage: 6200ch [-v] [-s] [-n NODE] [-g GUID] [-p PORT] "
+- "<channel_num>\n");
++ "[-4] <channel_num>\n");
+ fprintf(stderr, "-v print additional verbose output\n");
+- fprintf(stderr, "-s use single packet method\n");
++ fprintf(stderr, "-s use single packet method. Cannot be used with -4.\n");
+ fprintf(stderr, "-w toggle power state\n");
+ fprintf(stderr, "-n NODE node to start device scanning on (default:%i)\n",
+ STARTING_NODE);
+ fprintf(stderr, "-p PORT port/adapter to use (default:%i)\n",
+ STARTING_PORT);
+ fprintf(stderr, "-g GUID GUID to use, -n switch, if present, will be ignored.\n");
++ fprintf(stderr, "-4 Enable 4 digit channel number support. Cannot be used with -s.\n");
+ exit(1);
+ }
+
+@@ -158,6 +162,7 @@
+ octlet_t cli_GUID=0LL;
+ octlet_t node_GUID=0LL;
+ int chn = 0;
++ int use_four_digit = 0;
+
+ /* some people experience crashes when starting on node 1 */
+ int starting_node = STARTING_NODE;
+@@ -168,7 +173,7 @@
+ usage();
+
+ opterr = 0;
+- while ((c = getopt(argc, argv, "vswg:n:p:")) != -1)
++ while ((c = getopt(argc, argv, "vswg:n:p:4")) != -1)
+ {
+ switch (c) {
+ case 'v':
+@@ -191,16 +196,24 @@
+ case 'p':
+ starting_port = atoi(optarg);
+ break;
++ case '4':
++ use_four_digit = 1;
++ break;
+ default:
+ fprintf(stderr, "incorrect command line arguments\n");
+ usage();
+ }
+ }
+
++ {
++ /* We cannot use single packet with 4 digits */
++ if (single_packet && use_four_digit)
++ usage();
++ }
+ /* print out usage message if not enough arguments */
+ if (optind == argc-1)
+ {
+- /* the last argument is the channel number */
++ /* the last argument is the channel number */
+ chn = atoi(argv[optind]);
+ }
+ else if (!toggle_power)
+@@ -292,6 +305,7 @@
+ (dir.vendor_id == DCT6416_VENDOR_ID1) ||
+ (dir.vendor_id == DCT6416_VENDOR_ID2) ||
+ (dir.vendor_id == QIP7100_VENDOR_ID1) ||
++ (dir.vendor_id == QIP6200_VENDOR_ID1) ||
+ (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID1) ||
+ (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID2) ||
+ (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID3) ||
+@@ -313,7 +327,6 @@
+ (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID19) ||
+ (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID20) ||
+ (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID21) ||
+- (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID22) ||
+ (dir.vendor_id == PACE_VENDOR_ID1) ||
+ (dir.vendor_id == PACE_VENDOR_ID2)) &&
+ ((dir.model_id == DCH3200_MODEL_ID1) ||
+@@ -330,6 +343,7 @@
+ (dir.model_id == DCT6416_MODEL_ID1) ||
+ (dir.model_id == QIP7100_MODEL_ID1) ||
+ (dir.model_id == QIP7100_MODEL_ID2) ||
++ (dir.model_id == QIP6200_MODEL_ID1) ||
+ (dir.model_id == PACE550_MODEL_ID1) ||
+ (dir.model_id == PACE779_MODEL_ID1)) )
+ {
+@@ -356,6 +370,9 @@
+ if (single_packet)
+ set_chan_fast(handle, device, verbose, chn);
+ else
++ if (use_four_digit)
++ set_chan_slow_four_digit(handle, device, verbose, chn);
++ else
+ set_chan_slow(handle, device, verbose, chn);
+ }
+
+@@ -387,6 +404,37 @@
+ }
+ }
+
++// Same as set_chan_slow(), but sends 4 digits instead of 3 (for quicker channel changes on QIP6200-2 / QIP7100-1)
++void set_chan_slow_four_digit(raw1394handle_t handle, int device, int verbose, int chn)
++{
++ int i;
++ int dig[4];
++ quadlet_t cmd[2];
++
++ if (verbose)
++ printf("chn: %d\n", chn);
++
++ dig[3] = (chn % 10);
++ dig[2] = (chn % 100) / 10;
++ dig[1] = (chn % 1000) / 100;
++ dig[0] = (chn % 10000) / 1000;
++
++ if (verbose)
++ printf("AV/C Command: %d%d%d%d = Op1=0x%08X Op2=0x%08X Op3=0x%08X Op4=0x%08X\n",
++ dig[0], dig[1], dig[2], dig[3],
++ CTL_CMD0 | dig[0], CTL_CMD0 | dig[1], CTL_CMD0 | dig[2], CTL_CMD0 | dig[3]);
++
++ for (i=0; i<4; i++) {
++ if (verbose)
++ printf("Sending digit %d\n", dig[i]);
++ cmd[0] = CTL_CMD0 | dig[i];
++ cmd[1] = 0x0;
++
++ avc1394_transaction_block(handle, device, cmd, 2, RETRY_COUNT_SLOW);
++ usleep(500000); // small delay for button to register
++ }
++}
++
+ void set_chan_fast(raw1394handle_t handle, int device, int verbose, int chn)
+ {
+ quadlet_t cmd[3];