[U-Boot] [PATCH v4 0/15] Introduce driver model serial uclass
Simon Glass
sjg at chromium.org
Mon Aug 11 17:27:38 CEST 2014
This series adds support for a serial uclass, enabling serial drivers to be
converted to use driver model.
Unfortunately this is quite a complicated process for a number of reasons:
- serial is used before relocation, but driver model does not support this
- stdio member functions are not passed a device pointer, but driver model
requires this (so does serial, but it uses an ugly work-around)
- driver model requires malloc() but this is not available before
relocation
- for sandbox, if something goes wrong with the console, we still need to
get an error message out through the fallback console
So this series relies on quite a few patches to address the above, as well
as the serial uclass and an implementation for sandbox.
If you have limited time, please take a look at least at the uclass patch
which is 'dm: Add a uclass for serial devices' (see include/serial.h).
With v4, exynos boards all build and a second attempt has been made to add
Tegra support via the ns16550 driver, tested on beaver.
To see the current state of driver model, look at u-boot-dm.git branch
'working'.
Changes in v4:
- Add a binding for sandbox serial
- Add a separate Tegra serial driver to deal with the clock issue
- Add new CONFIG_TEGRA_SERIAL option to enable dm driver
- Remove 'clock-frequency' property from serial nodes
- Remove clock frequency setup for ns16550 driver
- Remove pre-reloc fdt property
- Use hard-coded UART clock from Tegra configuration
Changes in v3:
- Add new change to enhance lists_bind_fdt()
- Add new patch for tegra serial port details
- Add new patch to collect common baud rate code in ns16550
- Add new patch to enable driver model for serial on tegra
- Add new patch to move baud rate calculation to ns16550.c
- Add new patch to support driver model in ns16550
- Add new patch to use V_NS16550_CLK only in SPL builds
- Automatically bind the console even if not marked for pre-relocation
- Avoid reordering functions
- Change pre-reloc fdt property to 'u-boot,dm-pre-reloc'
- Fix typo in commit message
Changes in v2:
- Add exynos serial support
- Remove RFC status
- Rename struct device to struct udevice
- Split out core driver model patches into a separate set
Simon Glass (15):
serial: Set up the 'priv' pointer when creating a serial device
dm: Adjust lists_bind_fdt() to return the bound device
dm: Add a uclass for serial devices
Set up stdio earlier when using driver model
sandbox: Convert serial driver to use driver model
sandbox: serial: Support a coloured console
sandbox: dts: Add a serial console node
dm: exynos: Mark exynos5 console as pre-reloc
dm: exynos: Move serial to driver model
dm: Make driver model available before board_init()
dm: serial: Move baud rate calculation to ns16550.c
dm: serial: Collect common baud rate code in ns16550
dm: serial: Add driver model support for ns16550
tegra: dts: Add serial port details
dm: tegra: Enable driver model for serial
arch/arm/dts/exynos5.dtsi | 1 +
arch/arm/dts/tegra114-dalmore.dts | 1 +
arch/arm/dts/tegra114.dtsi | 35 +++
arch/arm/dts/tegra124-jetson-tk1.dts | 1 +
arch/arm/dts/tegra124-venice2.dts | 1 +
arch/arm/dts/tegra124.dtsi | 35 +++
arch/arm/dts/tegra20-colibri_t20_iris.dts | 1 +
arch/arm/dts/tegra20-harmony.dts | 1 +
arch/arm/dts/tegra20-medcom-wide.dts | 1 +
arch/arm/dts/tegra20-paz00.dts | 1 +
arch/arm/dts/tegra20-plutux.dts | 1 +
arch/arm/dts/tegra20-seaboard.dts | 1 +
arch/arm/dts/tegra20-tec.dts | 1 +
arch/arm/dts/tegra20-trimslice.dts | 1 +
arch/arm/dts/tegra20-ventana.dts | 1 +
arch/arm/dts/tegra20-whistler.dts | 1 +
arch/arm/dts/tegra20.dtsi | 10 +-
arch/arm/dts/tegra30-beaver.dts | 1 +
arch/arm/dts/tegra30-cardhu.dts | 1 +
arch/arm/dts/tegra30-tamonten.dtsi | 1 +
arch/arm/dts/tegra30.dtsi | 35 +++
arch/sandbox/dts/sandbox.dts | 10 +
common/board_r.c | 19 +-
common/stdio.c | 18 +-
doc/device-tree-bindings/serial/ns16550.txt | 10 +
doc/device-tree-bindings/serial/sandbox-serial.txt | 13 ++
drivers/core/lists.c | 10 +-
drivers/core/root.c | 2 +-
drivers/serial/Makefile | 7 +-
drivers/serial/ns16550.c | 203 ++++++++++++++--
drivers/serial/sandbox.c | 140 ++++++++---
drivers/serial/serial-uclass.c | 211 +++++++++++++++++
drivers/serial/serial.c | 1 +
drivers/serial/serial_ns16550.c | 23 +-
drivers/serial/serial_s5p.c | 255 ++++++---------------
drivers/serial/serial_tegra.c | 38 +++
include/configs/exynos-common.h | 1 +
include/configs/sandbox.h | 3 +
include/configs/tegra-common.h | 10 +-
include/dm/lists.h | 6 +-
include/dm/uclass-id.h | 1 +
include/ns16550.h | 64 ++++++
include/serial.h | 92 ++++++++
include/stdio_dev.h | 24 +-
44 files changed, 1021 insertions(+), 272 deletions(-)
create mode 100644 doc/device-tree-bindings/serial/ns16550.txt
create mode 100644 doc/device-tree-bindings/serial/sandbox-serial.txt
create mode 100644 drivers/serial/serial-uclass.c
create mode 100644 drivers/serial/serial_tegra.c
--
2.0.0.526.g5318336
More information about the U-Boot
mailing list