Re: [RESEND PATCH] ir-kbd-i2c: Allow to disable Hauppauge filter through module parameter

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Samuel,

Samuel Rakitnican wrote:
> Some Hauppauge devices have id=0 so such devices won't work.
> For such devices add a module parameter that allow to turn
> off filtering.
> 
> Signed-off-by: Samuel Rakitničan <semiRocket@xxxxxxxxx>

Instead of a modprobe parameter, the proper fix is to make the usage of the
complete RC5 code received from this IR. This way, the handling of the
IR will depend only at the IR table used by the device.

Please take a look at the code at em28xx (seek for ir->full_code) to see
how to implement it.

Cheers,
Mauro.

> ---
> diff -r 82bbb3bd0f0a linux/drivers/media/video/ir-kbd-i2c.c
> --- a/linux/drivers/media/video/ir-kbd-i2c.c    Mon Jan 11 11:47:33 2010
> -0200
> +++ b/linux/drivers/media/video/ir-kbd-i2c.c    Sat Jan 16 16:39:14 2010
> +0100
> @@ -61,6 +61,10 @@
>   module_param(hauppauge, int, 0644);    /* Choose Hauppauge remote */
>   MODULE_PARM_DESC(hauppauge, "Specify Hauppauge remote: 0=black, 1=grey
> (defaults to 0)");
> 
> +static int haup_filter = 1;
> +module_param(haup_filter, int, 0644);
> +MODULE_PARM_DESC(haup_filter, "Hauppauge filter for other remotes,
> default is 1 (On)");
> +
> 
>   #define DEVNAME "ir-kbd-i2c"
>   #define dprintk(level, fmt, arg...)    if (debug >= level) \
> @@ -96,24 +100,27 @@
>       if (!start)
>           /* no key pressed */
>           return 0;
> -    /*
> -     * Hauppauge remotes (black/silver) always use
> -     * specific device ids. If we do not filter the
> -     * device ids then messages destined for devices
> -     * such as TVs (id=0) will get through causing
> -     * mis-fired events.
> -     *
> -     * We also filter out invalid key presses which
> -     * produce annoying debug log entries.
> -     */
> -    ircode= (start << 12) | (toggle << 11) | (dev << 6) | code;
> -    if ((ircode & 0x1fff)==0x1fff)
> -        /* invalid key press */
> -        return 0;
> 
> -    if (dev!=0x1e && dev!=0x1f)
> -        /* not a hauppauge remote */
> -        return 0;
> +    if (haup_filter != 0) {
> +        /*
> +         * Hauppauge remotes (black/silver) always use
> +         * specific device ids. If we do not filter the
> +         * device ids then messages destined for devices
> +         * such as TVs (id=0) will get through causing
> +         * mis-fired events.
> +         *
> +         * We also filter out invalid key presses which
> +         * produce annoying debug log entries.
> +         */
> +        ircode = (start << 12) | (toggle << 11) | (dev << 6) | code;
> +        if ((ircode & 0x1fff) == 0x1fff)
> +            /* invalid key press */
> +            return 0;
> +
> +        if (dev != 0x1e && dev != 0x1f)
> +            /* not a hauppauge remote */
> +            return 0;
> +    }
> 
>       if (!range)
>           code += 64;
> 


-- 

Cheers,
Mauro
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux