[U-Boot] [PATCH 7/8] serial: lpuart: Add driver model serial support

Bin Meng bmeng.cn at gmail.com
Mon Jan 11 04:08:58 CET 2016


Hi Simon,

On Wed, Jan 6, 2016 at 8:25 AM, Simon Glass <sjg at chromium.org> wrote:
> Hi Bin,
>
> On 31 December 2015 at 01:53, Bin Meng <bmeng.cn at gmail.com> wrote:
>> This adds driver model support to lpuart serial driver.
>>
>> Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
>> ---
>>
>>  doc/driver-model/serial-howto.txt |   1 -
>>  drivers/serial/serial_lpuart.c    | 157 ++++++++++++++++++++++++++++++++++++++
>>  2 files changed, 157 insertions(+), 1 deletion(-)
>
> Reviewed-by: Simon Glass <sjg at chromium.org>
>
> But please see below.
>
>>

[snip]

>> +#else /* CONFIG_DM_SERIAL */
>> +static int lpuart_serial_ofdata_to_platdata(struct udevice *dev)
>> +{
>> +       struct lpuart_serial_platdata *plat = dev->platdata;
>> +       fdt_addr_t addr;
>> +
>> +       addr = dev_get_addr(dev);
>> +       if (addr == FDT_ADDR_T_NONE)
>> +               return -EINVAL;
>> +
>> +       plat->reg = (struct lpuart_fsl *)addr;
>> +
>> +       return 0;
>> +}
>> +
>> +static const struct dm_serial_ops lpuart_serial_ops = {
>> +#ifdef CONFIG_LPUART_32B_REG
>> +       .putc = lpuart32_serial_putc,
>> +       .pending = lpuart32_serial_pending,
>> +       .getc = lpuart32_serial_getc,
>> +       .setbrg = lpuart32_serial_setbrg,
>> +#else
>> +       .putc = lpuart_serial_putc,
>> +       .pending = lpuart_serial_pending,
>> +       .getc = lpuart_serial_getc,
>> +       .setbrg = lpuart_serial_setbrg,
>> +#endif
>> +};
>> +
>> +static const struct udevice_id lpuart_serial_ids[] = {
>> +#ifdef CONFIG_LPUART_32B_REG
>> +       { .compatible = "fsl,ls1021a-lpuart" },
>> +#else
>> +       { .compatible = "fsl,vf610-lpuart" },
>> +#endif
>
> Shouldn't we have both of these in there, with a .data member to
> distinguish between them? Or two separate U_BOOT_DRIVER() entries each
> with their own operations.

Sure, will do in v2.

>
>> +       { }
>> +};
>> +
>> +U_BOOT_DRIVER(serial_lpuart) = {
>> +       .name   = "serial_lpuart",
>> +       .id     = UCLASS_SERIAL,
>> +       .of_match = lpuart_serial_ids,
>> +       .ofdata_to_platdata = lpuart_serial_ofdata_to_platdata,
>> +       .platdata_auto_alloc_size = sizeof(struct lpuart_serial_platdata),
>> +#ifdef CONFIG_LPUART_32B_REG
>> +       .probe = lpuart32_serial_probe,
>> +#else
>> +       .probe = lpuart_serial_probe,
>> +#endif
>> +       .ops    = &lpuart_serial_ops,
>> +       .flags = DM_FLAG_PRE_RELOC,
>> +};
>> +#endif /* CONFIG_DM_SERIAL */
>> --

Regards,
Bin


More information about the U-Boot mailing list