X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fmedia%2Fvideo%2Fir-kbd-gpio.c;h=973b081883108126088f760c4eaf3338dd2c3134;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=30cce6bec7b142faa8ba35bc4d9f02a2219c2f62;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/drivers/media/video/ir-kbd-gpio.c b/drivers/media/video/ir-kbd-gpio.c index 30cce6bec..973b08188 100644 --- a/drivers/media/video/ir-kbd-gpio.c +++ b/drivers/media/video/ir-kbd-gpio.c @@ -1,5 +1,6 @@ - /* + * $Id: ir-kbd-gpio.c,v 1.11 2004/10/25 11:26:36 kraxel Exp $ + * * Copyright (c) 2003 Gerd Knorr * Copyright (c) 2003 Pavel Machek * @@ -45,7 +46,7 @@ static IR_KEYTAB_TYPE ir_codes_avermedia[IR_KEYTAB_SIZE] = { [ 60 ] = KEY_KP9, [ 48 ] = KEY_EJECTCD, // Unmarked on my controller - [ 0 ] = KEY_POWER, + [ 0 ] = KEY_POWER, [ 18 ] = BTN_LEFT, // DISPLAY/L [ 50 ] = BTN_RIGHT, // LOOP/R [ 10 ] = KEY_MUTE, @@ -74,6 +75,45 @@ static IR_KEYTAB_TYPE ir_codes_avermedia[IR_KEYTAB_SIZE] = { [ 1 ] = KEY_BLUE, // unmarked }; +/* Matt Jesson >' + [ 0x3a ] = KEY_RECORD, // 'capture' + [ 0x0a ] = KEY_MUTE, // 'mute' + [ 0x2c ] = KEY_RECORD, // 'record' + [ 0x1c ] = KEY_PAUSE, // 'pause' + [ 0x3c ] = KEY_STOP, // 'stop' + [ 0x0c ] = KEY_PLAY, // 'play' + [ 0x2e ] = KEY_RED, // 'red' + [ 0x01 ] = KEY_BLUE, // 'blue' / 'cancel' + [ 0x0e ] = KEY_YELLOW, // 'yellow' / 'ok' + [ 0x21 ] = KEY_GREEN, // 'green' + [ 0x11 ] = KEY_CHANNELDOWN, // 'channel -' + [ 0x31 ] = KEY_CHANNELUP, // 'channel +' + [ 0x1e ] = KEY_VOLUMEDOWN, // 'volume -' + [ 0x3e ] = KEY_VOLUMEUP, // 'volume +' +}; + static IR_KEYTAB_TYPE winfast_codes[IR_KEYTAB_SIZE] = { [ 5 ] = KEY_KP1, [ 6 ] = KEY_KP2, @@ -130,7 +170,7 @@ static IR_KEYTAB_TYPE ir_codes_pixelview[IR_KEYTAB_SIZE] = { [ 6 ] = KEY_KP7, [ 10 ] = KEY_KP8, [ 18 ] = KEY_KP9, - + [ 3 ] = KEY_TUNER, // TV/FM [ 7 ] = KEY_SEARCH, // scan [ 28 ] = KEY_ZOOM, // full screen @@ -140,7 +180,7 @@ static IR_KEYTAB_TYPE ir_codes_pixelview[IR_KEYTAB_SIZE] = { [ 20 ] = KEY_CHANNELDOWN, [ 22 ] = KEY_CHANNELUP, [ 24 ] = KEY_MUTE, - + [ 0 ] = KEY_LIST, // source [ 19 ] = KEY_INFO, // loop [ 16 ] = KEY_LAST, // +100 @@ -151,6 +191,47 @@ static IR_KEYTAB_TYPE ir_codes_pixelview[IR_KEYTAB_SIZE] = { [ 15 ] = KEY_STOP, // freeze }; +/* Attila Kondoros */ +static IR_KEYTAB_TYPE ir_codes_apac_viewcomp[IR_KEYTAB_SIZE] = { + + [ 1 ] = KEY_KP1, + [ 2 ] = KEY_KP2, + [ 3 ] = KEY_KP3, + [ 4 ] = KEY_KP4, + [ 5 ] = KEY_KP5, + [ 6 ] = KEY_KP6, + [ 7 ] = KEY_KP7, + [ 8 ] = KEY_KP8, + [ 9 ] = KEY_KP9, + [ 0 ] = KEY_KP0, + [ 23 ] = KEY_LAST, // +100 + [ 10 ] = KEY_LIST, // recall + + + [ 28 ] = KEY_TUNER, // TV/FM + [ 21 ] = KEY_SEARCH, // scan + [ 18 ] = KEY_POWER, // power + [ 31 ] = KEY_VOLUMEDOWN, // vol up + [ 27 ] = KEY_VOLUMEUP, // vol down + [ 30 ] = KEY_CHANNELDOWN, // chn up + [ 26 ] = KEY_CHANNELUP, // chn down + + [ 17 ] = KEY_VIDEO, // video + [ 15 ] = KEY_ZOOM, // full screen + [ 19 ] = KEY_MUTE, // mute/unmute + [ 16 ] = KEY_TEXT, // min + + [ 13 ] = KEY_STOP, // freeze + [ 14 ] = KEY_RECORD, // record + [ 29 ] = KEY_PLAYPAUSE, // stop + [ 25 ] = KEY_PLAY, // play + + [ 22 ] = KEY_GOTO, // osd + [ 20 ] = KEY_REFRESH, // default + [ 12 ] = KEY_KPPLUS, // fine tune >>>> + [ 24 ] = KEY_KPMINUS // fine tune <<<< +}; + /* ---------------------------------------------------------------------- */ struct IR { @@ -202,7 +283,7 @@ static void ir_handle_key(struct IR *ir) return; ir->last_gpio = gpio; } - + /* extract data */ data = ir_extract_bits(gpio, ir->mask_keycode); dprintk(DEVNAME ": irq gpio=0x%x code=%d | %s%s%s\n", @@ -284,6 +365,14 @@ static int ir_probe(struct device *dev) ir->polling = 50; // ms break; + case BTTV_AVDVBT_761: + case BTTV_AVDVBT_771: + ir_codes = ir_codes_avermedia_dvbt; + ir->mask_keycode = 0x0f00c0; + ir->mask_keydown = 0x000020; + ir->polling = 50; // ms + break; + case BTTV_PXELVWPLTVPAK: ir_codes = ir_codes_pixelview; ir->mask_keycode = 0x003e00; @@ -308,6 +397,12 @@ static int ir_probe(struct device *dev) ir->mask_keycode = 0x0008e000; ir->mask_keydown = 0x00200000; break; + case BTTV_APAC_VIEWCOMP: + ir_codes = ir_codes_apac_viewcomp; + ir->mask_keycode = 0x001f00; + ir->mask_keyup = 0x008000; + ir->polling = 50; // ms + break; } if (NULL == ir_codes) { kfree(ir); @@ -317,7 +412,7 @@ static int ir_probe(struct device *dev) /* init hardware-specific stuff */ bttv_gpio_inout(sub->core, ir->mask_keycode | ir->mask_keydown, 0); ir->sub = sub; - + /* init input device */ snprintf(ir->name, sizeof(ir->name), "bttv IR (card=%d)", sub->core->type);