During our Platform HSC meeting today, one of the topics that came up for discussion was whether we should mandate the 16550 UART for all OS-A platforms and keep this requirement within the “Common Requirements” document that would apply to all OS-A platforms.
I am starting this thread to discuss this topic. Please provide all your feedback in this thread.
Currently, we are mandating the 16550 UART requirement for both the OS-A Embedded and OS-A Server platforms. The goal is for hardware to implement support for the 16550 UART and the low-level bring-up firmware to support this UART as a console. We are not mandating any OS requirements for UART.
Below are some of the reasons for this.
All OS-A platforms will need some kind of early console serial port access in boot firmware
16550 UART is a pretty standard UART supported widely. ARM mandates 8250 UART for all servers.
To cover the case for OS flavors that won’t have any UART support, we limited this requirement to firmware only.
To give context, the below is the wording we proposed for the UART feature requirement as is mentioned in the spec currently.
2.1.5. System Peripherals
2.1.5.1. UART/Serial Console
In order to facilitate the bring-up and debug of the low level initial platform, hardware is required to implement a UART port that confirms to the following requirements and firmware must support the console using this UART:
The UART register addresses are required to be aligned to 4 byte boundaries. If the implemented register width is less than 4 bytes then the implemented bytes are required to be mapped starting at the smallest address.
The UART port implementation is required to be register-compatible with one of the following: