On 7/2/19 9:31 PM, Michal Suchánek wrote:
> On Tue, 2 Jul 2019 20:38:27 +0200
> Marek Vasut <ma...@denx.de> wrote:
> 
>> On 7/2/19 7:50 PM, Michal Suchánek wrote:
>>> On Tue, 2 Jul 2019 18:58:54 +0200
>>> Marek Vasut <ma...@denx.de> wrote:
>>>   
>>>> On 7/2/19 4:22 PM, Michal Suchánek wrote:  
>>>>> On Tue, 2 Jul 2019 15:11:07 +0200
>>>>> Marek Vasut <ma...@denx.de> wrote:
>>>>>     
>>>>>> On 7/2/19 3:04 PM, Michal Suchánek wrote:    
>>>>>>> On Tue, 2 Jul 2019 13:58:30 +0200
>>>>>>> Marek Vasut <ma...@denx.de> wrote:
>>>>>>>       
>>>>>>>> On 7/1/19 5:56 PM, Michal Suchanek wrote:      
>>>>>>>>> Causes unbound key repeat on error otherwise.
>>>>>>>>>
>>>>>>>>> Signed-off-by: Michal Suchanek <msucha...@suse.de>
>>>>>>>>> ---
>>>>>>>>>  common/usb_kbd.c | 7 +++----
>>>>>>>>>  1 file changed, 3 insertions(+), 4 deletions(-)
>>>>>>>>>
>>>>>>>>> diff --git a/common/usb_kbd.c b/common/usb_kbd.c
>>>>>>>>> index cc99c6be0720..948f9fd68490 100644
>>>>>>>>> --- a/common/usb_kbd.c
>>>>>>>>> +++ b/common/usb_kbd.c
>>>>>>>>> @@ -339,10 +339,9 @@ static inline void usb_kbd_poll_for_event(struct 
>>>>>>>>> usb_device *dev)
>>>>>>>>>       struct usb_kbd_pdata *data = dev->privptr;
>>>>>>>>>  
>>>>>>>>>       /* Submit a interrupt transfer request */
>>>>>>>>> -     usb_submit_int_msg(dev, data->intpipe, &data->new[0], 
>>>>>>>>> data->intpktsize,
>>>>>>>>> -                        data->intinterval);
>>>>>>>>> -
>>>>>>>>> -     usb_kbd_irq_worker(dev);
>>>>>>>>> +     if (!usb_submit_int_msg(dev, data->intpipe, &data->new[0],      
>>>>>>>>>   
>>>>>>>>
>>>>>>>> Shouldn't you propagate return value from this function ? It can return
>>>>>>>> ENOTSUPP.
>>>>>>>>      
>>>>>>>
>>>>>>> If it did then probing keyboard would fail and we would not get here.   
>>>>>>>    
>>>>>>
>>>>>> So there is no chance this function could return an error here, ever ?
>>>>>> E.g. what if it's implemented and someone yanks the keyboard cable out
>>>>>> just at the right time ?    
>>>>>
>>>>> It returns errors all the time with dwc2. That's why we need to check
>>>>> for the error condition. We should not get here if probing the keyboard
>>>>> failed, though. So if the function is not supported we will not get
>>>>> here. Anyway, if it's not supported or the keyboard is missing it by
>>>>> definition cannot provide useful result so we should not process it.    
>>>>
>>>> Except you start ignoring the error value from e.g. malfunctioning
>>>> keyboard here, instead of propagating it, correct ?  
>>>
>>> It was never propagated to start with. The return value was not checked
>>> at all. What I do here is check the return value and not process the
>>> data on error whatever it contains (like the keypress returned last
>>> time valid data was received).  
>>
>> I can see a patch which checks usb_kbd_poll_for_event() return value.
>> Can you add one ?
> 
> What for? Apparently the keypress is processed in usb_kbd_irq_worker.
> So checking the return value is needed to decide if the worker should
> run, and is not particularly useful outside usb_kbd_poll_for_event. We
> could signal a getc() failure but do we have any code handling getc()
> failures?

I presume getc() might signal EOF if the underlying hardware fails.
But in general, it's a good practice to not ignore errors.

-- 
Best regards,
Marek Vasut

DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-56 Email: ma...@denx.de
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to