[PATCH] Fully disabled seemingly unsupported zynq_uart_set_attributes handler

Chris Johns chrisj at rtems.org
Thu Mar 28 20:05:45 UTC 2019


On 28/3/19 5:40 pm, Sebastian Huber wrote:
> On 27/03/2019 20:26, Chris Johns wrote:
>> On 28/3/19 5:28 am, Joel Sherrill wrote:
>>> On Wed, Mar 27, 2019 at 1:10 AM Sebastian Huber
>>> <sebastian.huber at embedded-brains.de <mailto:sebastian.huber at embedded-brains.de>>
>>> wrote:
>>>      On 26/03/2019 15:17, Lou Woods wrote:
>>>      > From: Lou Woods <Lou.Woods at OARCorp.com>
>>>      >
>>>      > ---
>>>      >   bsps/arm/xilinx-zynq/console/zynq-uart.c | 16 +++++++++++-----
>>>      >   1 file changed, 11 insertions(+), 5 deletions(-)
>>>      >
>>>      > diff --git a/bsps/arm/xilinx-zynq/console/zynq-uart.c
>>>      b/bsps/arm/xilinx-zynq/console/zynq-uart.c
>>>      > index fa91f3f..9c21f6f 100644
>>>      > --- a/bsps/arm/xilinx-zynq/console/zynq-uart.c
>>>      > +++ b/bsps/arm/xilinx-zynq/console/zynq-uart.c
>>>      > @@ -262,12 +262,16 @@ static void zynq_uart_write_support(
>>>      >   #endif
>>>      >   }
>>>      >
>>>      > +/*
>>>      > + * Disable this because the initialization is done by code generated
>>>      > + * by the Xilinx code generator.
>>>      > + */
>>>
>>>      The main purpose of the set attributes function is to apply the settings
>>>      specified by the user via the Termios interface. Returning false just
>>>      indicates that this function is not implemented. If you want to hide
>>>      this fact from the user, then you can simply return true ...
>> This assumes all UART hardware supports all possible options. There are many
>> UARTs that do not. I am not sure if there are errno's that could determine the
>> nature of the failure.
>>
>>> We discussed this alternative with Chris and this was the end result.
>>>
>>> git blame shows that Chris added the if 0 and then you added the return false
>>> which broke the callers. From that point forward, no interactive test ran
>>> successfully.
>> The driver provides no attribute functionality so removing the function means
>> the default behavior in termios is used to manage the error. It was decided
>> having the default behavior was best until the driver provided the functionality.
>>
>> The Zynq is sort of strange in relation to default settings for UARTs. The
>> SystemZ component in the Xilinx design tool provides settings for the UART and
>> this ends up in the ps7_init.c file generated by the SDK and built into the FSBL
>> bootloader. This code paints all registers including the UART at boot time.
>> Adding UART attribute setting code to the RTEMS driver would result in the
>> SystemZ settings being overridden by RTEMS which is confusing. I am not sure how
>> this can be handled without there being some conflict. RTEMS would need to set
>> the baudrate to 115200 to match the SystemZ default.
> 
> So even if we implement the set attributes we have the problem to figure out in
> which state the UART is during initialization? 

I cannot figure out what the default for RTEMS should be and then how that
matches the bootloader and SystemZ settings.

> My hope was eventually someone will implement it.

Yes it would be good however we need a user who uses the UART for something
other than a console.

> Since nobody requested the set attributes function in a
> couple of years, I think it is all right to just remove it and return no error.

Yeap.

Chris



More information about the devel mailing list