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