[PATCH] tools: termios_linux.h: Fix tcsendbreak() implementation

Stefan Roese sr at denx.de
Thu Oct 21 09:46:42 CEST 2021


On 21.10.21 07:36, Stefan Roese wrote:
> On 06.10.21 14:30, Pali Rohár wrote:
>> There are two Linux ioctls which implements tcsendbreak() functionality:
>> TCSBRK and TCSBRKP
>>
>> TCSBRK with non-zero parameter implements tcdrain() and with zero 
>> parameter
>> implements tcsendbreak() for duration of 0.25s.
>>
>> TCSBRKP with zero parameter is same as TCSBRK and with non-zero parameter
>> implements tcsendbreak() for duration in deciseconds specified by
>> parameter. TCSBRKP does not have to be provided by older toolchain
>> versions.
>>
>> So tcsendbreak() has to either use TCSBRK with zero parameter or TCSBRKP
>> with any parameter.
>>
>> Fix code to use TCSBRKP and fallback to TCSBRK with 0.
>>
>> Signed-off-by: Pali Rohár <pali at kernel.org>
> 
> Reviewed-by: Stefan Roese <sr at denx.de>

Applied to u-boot-marvell/master

Thanks,
Stefan

> Thanks,
> Stefan
> 
>> ---
>>   tools/termios_linux.h | 6 +++++-
>>   1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/tools/termios_linux.h b/tools/termios_linux.h
>> index d73989b625a2..e100c8e4eb5f 100644
>> --- a/tools/termios_linux.h
>> +++ b/tools/termios_linux.h
>> @@ -90,7 +90,11 @@ static inline int tcflush(int fd, int q)
>>   static inline int tcsendbreak(int fd, int d)
>>   {
>> -    return ioctl(fd, TCSBRK, d);
>> +#ifdef TCSBRKP
>> +    return ioctl(fd, TCSBRKP, d);
>> +#else
>> +    return ioctl(fd, TCSBRK, 0);
>> +#endif
>>   }
>>   static inline int tcflow(int fd, int a)
>>
> 
> 
> Viele Grüße,
> Stefan
> 


Viele Grüße,
Stefan

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de


More information about the U-Boot mailing list