<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman, new york, times, serif;font-size:12pt"><div>Hi,<br><br>I have tested the following patch by Marek Kidawski and it is working with my Digiwave 103g (Geniatech\Digistar). Below is the complete patch<br>which autoload the ir-kbd-i2c module.<br><br>--------------------------------------------------------------------------------------------------------------------<br>diff -r 86817d2750b7 linux/drivers/media/common/ir-keymaps.c<br>--- a/linux/drivers/media/common/ir-keymaps.c Fri Jan 18 08:08:21 2008 -0200<br>+++ b/linux/drivers/media/common/ir-keymaps.c Thu Jan 24 21:29:11 2008 -0400<br>@@ -2002,3 +2002,54 @@ IR_KEYTAB_TYPE ir_codes_behold[IR_KEYTAB<br> };<br> <br> EXPORT_SYMBOL_GPL(ir_codes_behold);<br>+<br>+/* Marek Kidawski <mark_kiddy at wp.pl> */<br>+IR_KEYTAB_TYPE
ir_codes_digistar[IR_KEYTAB_SIZE] = {<br>+ [ 0x00 ] = KEY_0, //'0'<br>+ [ 0x01 ] = KEY_1, //'1'<br>+ [ 0x02 ] = KEY_2, //'2'<br>+ [ 0x03 ] = KEY_3, //'3'<br>+ [ 0x04 ] = KEY_4, //'4'<br>+ [ 0x05 ] = KEY_5, //'5'<br>+ [ 0x06 ] = KEY_6, //'6'<br>+ [ 0x07 ] = KEY_7, //'7'<br>+ [ 0x08 ] = KEY_8, //'8'<br>+ [ 0x09 ] =
KEY_9, //'9'<br>+<br>+ [ 0x0c ] = KEY_F9, // 'power'<br>+<br>+<br>+ [ 0x25 ] = KEY_F3, // 'red'<br>+ [ 0x14 ] = KEY_F5, // 'blue'<br>+ [ 0x0f ] = KEY_F4, // 'yellow'<br>+<br>+ [ 0x21 ] = KEY_DOWN, // 'channel -'<br>+ [ 0x20 ] = KEY_UP, // 'channel +'<br>+ [ 0x11 ] = KEY_LEFT, // 'volume -'<br>+ [ 0x10 ] = KEY_RIGHT, // 'volume +'<br>+<br>+ [ 0x1f ] =
KEY_R, // 'record'<br>+ [ 0x16 ] = KEY_P, // 'pause'<br>+ [ 0x0b ] = KEY_O, // 'stop'<br>+ [ 0x17 ] = KEY_L, // 'play'<br>+ [ 0x26 ] = KEY_COMMA, // 'backward <<'<br>+ [ 0x27 ] = KEY_DOT, // 'forward >>'<br>+<br>+ [ 0x2c ] = KEY_T, // 'teletext'<br>+ [ 0x2b ] = KEY_S, // 'epg'<br>+ [ 0x1e ] = KEY_I, //
'osd'<br>+ [ 0x0e ] = KEY_V, // 'window'<br>+<br>+ [ 0x12 ] = KEY_VOLUMEUP, // 'bright up'<br>+ [ 0x13 ] = KEY_VOLUMEDOWN, // 'bright down'<br>+<br>+ [ 0x2d ] = KEY_M, // 'menu'<br>+<br>+ [ 0x0a ] = KEY_ESC, // '-/--'<br>+ [ 0x29 ] = KEY_H, // 'return'<br>+<br>+ [ 0x0d ] = KEY_ENTER, // 'mute / enter'<br>+ [ 0x38 ] = KEY_F6 // 'tv / radio'<br>+};<br>+<br>+EXPORT_SYMBOL_GPL(ir_codes_digistar);<br>diff -r 86817d2750b7 linux/drivers/media/video/cx88/cx88-video.c<br>---
a/linux/drivers/media/video/cx88/cx88-video.c Fri Jan 18 08:08:21 2008 -0200<br>+++ b/linux/drivers/media/video/cx88/cx88-video.c Thu Jan 24 21:29:11 2008 -0400<br>@@ -2129,6 +2129,9 @@ static int __devinit cx8800_initdev(stru<br> case CX88_BOARD_DVICO_FUSIONHDTV_5_GOLD:<br> request_module("ir-kbd-i2c");<br> request_module("rtc-isl1208");<br>+ break;<br>+ case CX88_BOARD_GENIATECH_DVBS:<br>+ request_module("ir-kbd-i2c");<br> }<br> <br> /* register v4l devices */<br>diff -r 86817d2750b7 linux/drivers/media/video/ir-kbd-i2c.c<br>--- a/linux/drivers/media/video/ir-kbd-i2c.c Fri Jan 18 08:08:21 2008 -0200<br>+++
b/linux/drivers/media/video/ir-kbd-i2c.c Thu Jan 24 21:29:11 2008 -0400<br>@@ -277,6 +277,39 @@ int get_key_pinnacle_color(struct IR_i2c<br> }<br> <br> EXPORT_SYMBOL_GPL(get_key_pinnacle_color);<br>+<br>+<br>+static int get_key_geniatech(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw)<br>+{<br>+ unsigned char buf;<br>+ int code, toggle;<br>+<br>+ /* poll IR chip */<br>+ if (1 != i2c_master_recv(&ir->c,&buf,1))<br>+ return -EIO;<br>+<br>+ code = buf & 0x7f;<br>+ toggle = (buf >> 7) & 1;<br>+<br>+ if ( ir->old == toggle )<br>+ /* the same key */<br>+ return 0;<br>+<br>+ /* continue only if mod 2 = 1 */
<br>+ if ( 1 != code % 2 )<br>+ return 0;<br>+<br>+ code = (code - 1) / 2;<br>+<br>+ dprintk(1, "DigiStar key=%d\n", code);<br>+ ir->old = toggle;<br>+<br>+ /* return key */<br>+ *ir_key = code;<br>+ *ir_raw = code;<br>+ return 1;<br>+}<br>+<br> <br> /* ----------------------------------------------------------------------- */<br> <br>@@ -405,6 +438,19 @@ static int ir_attach(struct i2c_adapter <br> ir->get_key = get_key_knc1;<br> ir_type = IR_TYPE_OTHER;<br> ir_codes = ir_codes_empty;<br>+ break;<br>+
case 0x33:<br>+ /* I don't know which other cards have IR under i2c=0x33 but my geniatech has...<br>+ so I comment this line to prevent compiler warning<br>+ if (adap->id == I2C_HW_B_CX2388x) { */<br>+ /* Handled by cx88-input */<br>+ name = "DigiStar remote";<br>+ ir_type = IR_TYPE_OTHER;<br>+ ir->get_key = get_key_geniatech;<br>+ ir_codes =
ir_codes_digistar;<br>+ /*<br>+ }<br>+ */<br> break;<br> case 0x6b:<br> name = "FusionHDTV";<br>@@ -528,7 +574,7 @@ static int ir_probe(struct i2c_adapter *<br> static const int probe_bttv[] = { 0x1a, 0x18, 0x4b, 0x64, 0x30, -1};<br> static const int probe_saa7134[] = { 0x7a, 0x47, 0x71, 0x2d, -1 };<br> static const int probe_em28XX[] = { 0x30, 0x47, -1 };<br>- static const int probe_cx88[] = { 0x18, 0x6b, 0x71, -1 };<br>+ static const int probe_cx88[] = { 0x18, 0x71, 0x33, -1 };<br> static const int probe_cx23885[] = { 0x6b, -1 };<br> const
int *probe = NULL;<br> struct i2c_client c;<br>diff -r 86817d2750b7 linux/include/media/ir-common.h<br>--- a/linux/include/media/ir-common.h Fri Jan 18 08:08:21 2008 -0200<br>+++ b/linux/include/media/ir-common.h Thu Jan 24 21:29:11 2008 -0400<br>@@ -141,6 +141,7 @@ extern IR_KEYTAB_TYPE ir_codes_tt_1500[I<br> extern IR_KEYTAB_TYPE ir_codes_tt_1500[IR_KEYTAB_SIZE];<br> extern IR_KEYTAB_TYPE ir_codes_fusionhdtv_mce[IR_KEYTAB_SIZE];<br> extern IR_KEYTAB_TYPE ir_codes_behold[IR_KEYTAB_SIZE];<br>+extern IR_KEYTAB_TYPE ir_codes_digistar[IR_KEYTAB_SIZE];<br> <br> #endif<br> <br></div></div><br>
<hr size=1>Looking for last minute shopping deals? <a href="http://us.rd.yahoo.com/evt=51734/*http://tools.search.yahoo.com/newsearch/category.php?category=shopping">
Find them fast with Yahoo! Search.</a></body></html>