[PATCH 0/4] New UART drivers for PL011 and Mini UART

Utkarsh Verma utkarsh at bitbanged.com
Sat Sep 9 01:44:47 UTC 2023


A gentle reminder.

On Wed, Sep 6, 2023 at 8:31 AM Utkarsh Verma <utkarsh at bitbanged.com> wrote:

> A gentle reminder.
>
> Regards,
> Utkarsh
>
> On Thu, Aug 31, 2023 at 10:02 AM Utkarsh Verma <utkarsh at bitbanged.com>
> wrote:
>
>> A gentle reminder for this patch. Please have a look at this and let me
>> know what changes are required. Once this is merged, I have a few more
>> patches building upon this.
>>
>> Regards,
>> Utkarsh
>>
>> On Wed, Aug 30, 2023 at 9:47 AM Utkarsh Verma <utkarsh at bitbanged.com>
>> wrote:
>>
>>> This patch series adds two drivers, PL011 and Mini UART. Both support
>>> interrupts and implement the termios API.
>>>
>>> Why add a new driver for the PL011 when we already have one?
>>>
>>> The existing driver is a very basic one and uses memory-mapped structs
>>> to access the registers. This proved to be problematic for the
>>> 'aarch64/raspberrypi4b' BSP as the RPi 4B's MMU does not reserve the
>>> entirety of the space required by the PL011 register struct.
>>>
>>> Even the existing driver doesn't use all the struct members. So, in the
>>> new driver, macros were used instead. This has the benefit of minimalism
>>> and ensures that we only add tested features to the driver.
>>>
>>> This driver builds upon the PL011 driver present in the Xilinx Versal
>>> BSP and addresses the IRQ startup hack.
>>>
>>> In short, the new PL011 driver has the features provided by the
>>> existing driver, and it meshes well with the termios API.
>>>
>>> Lastly, there's one thing I need feedback on. The PL011 has a hardware
>>> limitation which requires me to invoke the IRQ handler manually, the
>>> first time. For this, I need access to the `tty` struct in the
>>> `write_buffer` function.
>>>
>>>
>>> https://github.com/UtkarshVerma/rtems/blob/uart-drivers/bsps/shared/dev/serial/pl011.c#L301
>>>
>>> For now, I store the tty in the device context and then pass the context
>>> to the IRQ handler. Is this a good approach? Are there better ways to do
>>> this?
>>>
>>> For convenience, feel free to check out my GitHub fork which has these
>>> changes:
>>>
>>> https://github.com/UtkarshVerma/rtems/tree/uart-drivers
>>>
>>> Utkarsh Verma (4):
>>>   bsps/shared: Add new PL011 driver with IRQ support
>>>   bsps/shared: Add new Mini UART driver
>>>   spec: Add Mini UART and PL011 drivers to build spec
>>>   bsps: Update BSPs to use the new PL011 driver
>>>
>>>  bsps/aarch64/a53/console/console.c            |  15 +-
>>>  bsps/aarch64/a72/console/console.c            |  15 +-
>>>  bsps/aarch64/raspberrypi/console/console.c    |  29 +-
>>>  bsps/arm/raspberrypi/console/console-config.c |  27 +-
>>>  .../realview-pbx-a9/console/console-polled.c  |   5 +-
>>>  .../arm/realview-pbx-a9/include/bsp/console.h |   4 +-
>>>  bsps/arm/xen/console/console.c                |  15 +-
>>>  bsps/include/dev/serial/arm-pl011-regs.h      | 143 ------
>>>  .../dev/serial/{arm-pl011.h => mini-uart.h}   |  52 +-
>>>  bsps/include/dev/serial/pl011.h               |  68 +++
>>>  bsps/shared/dev/serial/arm-pl011.c            | 104 ----
>>>  bsps/shared/dev/serial/mini-uart.c            | 316 ++++++++++++
>>>  bsps/shared/dev/serial/pl011.c                | 470 ++++++++++++++++++
>>>  .../aarch64/raspberrypi/bspraspberrypi4.yml   |   1 -
>>>  spec/build/bsps/obj.yml                       |   7 +-
>>>  15 files changed, 934 insertions(+), 337 deletions(-)
>>>  delete mode 100644 bsps/include/dev/serial/arm-pl011-regs.h
>>>  rename bsps/include/dev/serial/{arm-pl011.h => mini-uart.h} (64%)
>>>  create mode 100644 bsps/include/dev/serial/pl011.h
>>>  delete mode 100644 bsps/shared/dev/serial/arm-pl011.c
>>>  create mode 100644 bsps/shared/dev/serial/mini-uart.c
>>>  create mode 100644 bsps/shared/dev/serial/pl011.c
>>>
>>> --
>>> 2.41.0
>>>
>>>
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20230909/4b150d70/attachment.htm>


More information about the devel mailing list