lkml.org 
[lkml]   [2006]   [Sep]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] Allow RC5 codes 64 - 127 in ir-kbd-i2c.c
    The RC5 coding has for a long time supported commands 64-127 in addition 
    to 0-63. This is controlled by the second bit of the RC5 packet (see
    http://www.armory.com/~spcecdt/remote/RC5codes.html for details).

    The attached patch modifies ir-kbd-i2c.c to allow for commands 64-127,
    tested with a PVR350 card in combination with a programmable remote.

    This time, attached inline so that it won't be line-wrapped :)

    Signed-off-by: David Härdeman <david@hardeman.nu>
    diff -ur linux-2.6.18-orig/drivers/media/video/ir-kbd-i2c.c linux-2.6.18/drivers/media/video/ir-kbd-i2c.c
    --- linux-2.6.18-orig/drivers/media/video/ir-kbd-i2c.c 2006-09-21 22:05:16.000000000 +0200
    +++ linux-2.6.18/drivers/media/video/ir-kbd-i2c.c 2006-09-21 22:25:40.000000000 +0200
    @@ -64,23 +64,32 @@
    static int get_key_haup(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw)
    {
    unsigned char buf[3];
    - int start, toggle, dev, code;
    + int start, range, toggle, dev, code;

    /* poll IR chip */
    if (3 != i2c_master_recv(&ir->c,buf,3))
    return -EIO;

    /* split rc5 data block ... */
    - start = (buf[0] >> 6) & 3;
    + start = (buf[0] >> 7) & 1;
    + range = (buf[0] >> 6) & 1;
    toggle = (buf[0] >> 5) & 1;
    dev = buf[0] & 0x1f;
    code = (buf[1] >> 2) & 0x3f;

    - if (3 != start)
    + /* rc5 has two start bits
    + * the first bit must be one
    + * the second bit defines the command range (1 = 0-63, 0 = 64 - 127)
    + */
    + if (!start)
    /* no key pressed */
    return 0;
    - dprintk(1,"ir hauppauge (rc5): s%d t%d dev=%d code=%d\n",
    - start, toggle, dev, code);
    +
    + if (!range)
    + code += 64;
    +
    + dprintk(1,"ir hauppauge (rc5): s%d r%d t%d dev=%d code=%d\n",
    + start, range, toggle, dev, code);

    /* return key */
    *ir_key = code;
    \
     
     \ /
      Last update: 2006-09-21 23:21    [W:4.636 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site