Re: Query: IR remote over android

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

 



On Wed, Jul 12, 2017 at 02:40:20PM +0530, Sharma, Jitendra wrote:
> Hi,
> 
> I am working on a android project. Here, I want to enable Remote control
> support on one of our custom msm chipset based board.
> 
> The idea is, once board boot up, then via HDMI over HDMI monitor we will see
> android UI, and we want to browse through that UI using any standard
> protocol(like RC6 or nec) based remote
> 
> For enabling remote control support, I followed below steps:
> 
> 1) Enabled RC support for driver compilation in our defconfig file like:
> 
> +CONFIG_MEDIA_RC_SUPPORT=y
> +CONFIG_RC_DEVICES=y
> +CONFIG_IR_GPIO_CIR=y
> 
> 2) We have one RC6 philips remote. So, we created keycode file using
> scancodes and used that keycode file for device node mentioned below.
> 
> 3) As IR receiver is connected via gpio over our custom board, so we add a
> device tree entry like:
> 
> +       ir: ir-receiver {
> +               compatible = "gpio-ir-receiver";
> +               gpios = <&tlmm 120 1>;
> +               linux,rc-map-name = "rc-rc6-philips"; /*rc-rc6-philips is
> the keycode file for one RC6 protocol based file*/
> +       };
> 4) Finally create boot.img and flash it onto board
> 
> Now our observation with above created boot.img is as follows:
> 
> 1) We boot up without HDMI connected (For our case till we not connect HDMI,
> android userspace won't come up).
> 
> 2) Via getevent tool, we could see remote events coming up proper . This is
> Good case
> 
> 3) Now we connect HDMI (after connecting HDMI, android userspace gets up).
> We observed that via getevent tool, no event is coming up even after
> multiple remote key presses. This is bad case
> 
> I enabled IR_dprintk and for this bad case, I observed that for each key
> press, below logs appear continously:
> 
> [  128.208417] sample: (00000us space)
> [  128.211341] sample: (00000us space)
> [  128.211683] sample: (00000us space)
> [  128.212180] sample: (00000us space)
> 
> And then eventually RC6 decoder function fails in very early stage.

Looking at that, I would guess that the edge trigger on the gpio pin
is firing at the right time, but gpio_get_value() is not returning
the correct value, so a space get passed every time rather than pulse
and space.

> 4) After more debugging, I observed that, if I apply below change in
> rc-main.c file and create and flash new boot.img in our board and boot it
> 
> diff --git a/drivers/media/rc/rc-main.c b/drivers/media/rc/rc-main.c
> index 3f0f71a..1acdd09 100644
> --- a/drivers/media/rc/rc-main.c
> +++ b/drivers/media/rc/rc-main.c
> @@ -1347,7 +1349,6 @@ int rc_register_device(struct rc_dev *dev)
>                 return -EINVAL;
> 
>         set_bit(EV_KEY, dev->input_dev->evbit);
> -       set_bit(EV_REP, dev->input_dev->evbit);
>         set_bit(EV_MSC, dev->input_dev->evbit);
>         set_bit(MSC_SCAN, dev->input_dev->mscbit);
>         if (dev->open)
> 
> then, after connecting HDMI, I could see remote working over android .
> 
> 
> So, my query is, does EV_REP in rc-main.c causing remote decoder function to
> fail. Is it some kind of bug. Or am i missing something.

This just tells the input layer to handle autorepeat and is entirely
unrelated; if the rc driver is not reporting pulse/space information
correctly then the input layer never gets any key presses anyway.

I would suspect that the connecting hdmi somehow does a few tricks with
your gpio ports or there is a heisenbug. 


Sean



[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