[PATCH] lib: utils/serial: Support Synopsys DesignWare APB UART

Jessica Clarke jrtc27 at jrtc27.com
Fri May 14 02:59:56 BST 2021


On 14 May 2021, at 02:27, Bin Meng <bmeng.cn at gmail.com> wrote:
> 
> On Fri, May 14, 2021 at 9:19 AM Jessica Clarke <jrtc27 at jrtc27.com> wrote:
>> 
>> On 14 May 2021, at 02:16, Bin Meng <bmeng.cn at gmail.com> wrote:
>>> 
>>> Synopsys DesignWare APB UART is seen on the StarFive JH7100 SoC.
>>> Its programming interface is compatible with the existing 8250
>>> UART driver. Simply add its compatible string to the driver makes
>>> it work with the StarFive JH7100 SoC on a BeagleV board.
>>> 
>>> With this patch, the generic platform firmware can be used out of
>>> the box on the BeagleV board.
>>> 
>>> Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
>>> ---
>>> 
>>> lib/utils/serial/fdt_serial_uart8250.c | 1 +
>>> 1 file changed, 1 insertion(+)
>>> 
>>> diff --git a/lib/utils/serial/fdt_serial_uart8250.c b/lib/utils/serial/fdt_serial_uart8250.c
>>> index 918193a..36f364c 100644
>>> --- a/lib/utils/serial/fdt_serial_uart8250.c
>>> +++ b/lib/utils/serial/fdt_serial_uart8250.c
>>> @@ -28,6 +28,7 @@ static int serial_uart8250_init(void *fdt, int nodeoff,
>>> static const struct fdt_match serial_uart8250_match[] = {
>>>      { .compatible = "ns16550" },
>>>      { .compatible = "ns16550a" },
>>> +     { .compatible = "snps,dw-apb-uart" },
>> 
>> If it’s compatible, why does it not use
>> 
>>  compatible = “snps,dw-apb-uart”, “ns16550”;
>> 
>> or similar in its FDT?
> 
> Good question. By looking at the Linux kernel driver, it is supported
> as a variant of 8250 (drivers/tty/serial/8250/8250_dw.c).
> 
> I have not looked into details, but I suspect there are some minor
> oddities which matter for the kernel. The existing driver is enough to
> make OpenSBI happy.

It seems there are various additional clocks and resets you may need to handle
(baudclk is required, apb_pclk is optional and there’s an optional reset too).
For this particular board the FDT has a them clocks as all fixed-clock, but in
general this is not a correct implementation of the driver, as the clocks must
be enabled when attaching.

Jess




More information about the opensbi mailing list