Em Mon, 1 Dec 2014 12:55:09 +0000
James Hogan <james.ho...@imgtec.com> escreveu:

> When the img-ir driver is asked to change protocol, if the chosen
> decoder is already loaded then don't call img_ir_set_decoder(), so as
> not to clear the current filter.
> 
> This is important because store_protocol() does not refresh the scancode
> filter with the new protocol if the set of enabled protocols hasn't
> actually changed, but it will still call the change_protocol() callback,
> resulting in the filter being disabled in the hardware.
> 
> The problem can be reproduced by setting a filter, and then setting the
> protocol to the same protocol that is already set:
> $ echo nec > protocols
> $ echo 0xffff > filter_mask
> $ echo nec > protocols
> 
> After this, messages which don't match the filter still get received.

This should be fixed at the RC core, as this is not driver-specific.

Regards,
Mauro

> 
> Reported-by: Sifan Naeem <sifan.na...@imgtec.com>
> Signed-off-by: James Hogan <james.ho...@imgtec.com>
> Cc: Mauro Carvalho Chehab <m.che...@samsung.com>
> Cc: <sta...@vger.kernel.org> # v3.15+
> Cc: linux-media@vger.kernel.org
> ---
>  drivers/media/rc/img-ir/img-ir-hw.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/media/rc/img-ir/img-ir-hw.c 
> b/drivers/media/rc/img-ir/img-ir-hw.c
> index 9db065344b41..1566337c1059 100644
> --- a/drivers/media/rc/img-ir/img-ir-hw.c
> +++ b/drivers/media/rc/img-ir/img-ir-hw.c
> @@ -643,6 +643,12 @@ static int img_ir_change_protocol(struct rc_dev *dev, 
> u64 *ir_type)
>                       continue;
>               if (*ir_type & dec->type) {
>                       *ir_type &= dec->type;
> +                     /*
> +                      * We don't want to clear the filter if nothing is
> +                      * changing as it won't get set again.
> +                      */
> +                     if (dec == hw->decoder)
> +                             return 0;
>                       img_ir_set_decoder(priv, dec, *ir_type);
>                       goto success;
>               }
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to