- Jul 21, 2015
-
-
Simon Glass authored
Clocks are an important feature of platforms and have become increasing complex with time. Most modern SoCs have multiple PLLs and dozens of clock dividers which distribute clocks to on-chip peripherals. Some SoC implementations have a clock API which is private to that SoC family, e.g. Tegra and Exynos. This is useful but it would be better to have a common API that can be understood and used throughout U-Boot. Add a simple clock API as a starting point. It supports querying and setting the rate of a clock. Each clock is a device. To reduce memory and processing overhead the concept of peripheral clocks is provided. These do not need to be explicit devices - it is possible to write a driver that can adjust the I2C clock (for example) without an explicit I2C clock device. This can dramatically reduce the number of devices (and associated overhead) in a complex SoC. Clocks are referenced by a number, and it is expected that SoCs will define that numbering themselves via an enum. Signed-off-by:
Simon Glass <sjg@chromium.org>
-
Simon Glass authored
It is common for system reset to be available at multiple levels in modern hardware. For example, an SoC may provide a reset option, and a board may provide its own reset for reasons of security or thoroughness. It is useful to be able to model this hardware without hard-coding the behaviour in the SoC or board. Also there is a distinction sometimes between resetting just the CPU (leaving GPIO state alone) and resetting all the PMICs, just cutting power. To achieve this, add a simple system reset uclass. It allows multiple devices to provide reset functionality and provides a way to walk through them, requesting a particular reset type until is it provided. Signed-off-by:
Simon Glass <sjg@chromium.org>
-
Simon Glass authored
Add support for a driver which sets up DRAM and can return information about the amount of RAM available. This is a first step towards moving RAM init to driver model. Signed-off-by:
Simon Glass <sjg@chromium.org>
-
Simon Glass authored
Add basic support for MMC, providing a uclass which can set up an MMC device. This allows MMC drivers to move to using driver model. Signed-off-by:
Simon Glass <sjg@chromium.org>
-
Simon Glass authored
Add a simple uclass for LEDs, so that these can be controlled by the device tree and activated when needed. LEDs are referred to by their label. This implementation requires a driver for each type of LED (e.g GPIO, I2C). Signed-off-by:
Simon Glass <sjg@chromium.org>
-
Simon Glass authored
Many SoCs have a number of system controllers which are dealt with as a group by a single driver. It is a pain to have to add lots of compatible strings and/or separate drivers for each. Instead we can identify the controllers by a number and request the address of the one we want. Add a simple implementation of this which can be used by SoC driver code. Signed-off-by:
Simon Glass <sjg@chromium.org>
-
- Jun 04, 2015
-
-
Simon Glass authored
Tidy up the sort order again. Signed-off-by:
Simon Glass <sjg@chromium.org> Reported-by:
Joe Hershberger <joe.hershberger@gmail.com> Acked-by:
Joe Hershberger <joe.hershberger@ni.com>
-
- May 15, 2015
-
-
Przemyslaw Marczak authored
This commit introduces the implementation of dm regulator API. Device tree support allows for auto binding. And by the basic uclass operations, it allows to driving the devices in a common way. For detailed informations, please look into the header file. Core files: - drivers/power/regulator-uclass.c - provides regulator common functions api - include/power/regulator.h - define all structures required by the regulator Changes: - new uclass-id: UCLASS_REGULATOR - new config: CONFIG_DM_REGULATOR Signed-off-by:
Przemyslaw Marczak <p.marczak@samsung.com> Acked-by:
Simon Glass <sjg@chromium.org>
-
Przemyslaw Marczak authored
This commit introduces the PMIC uclass implementation. It allows providing the basic I/O interface for PMIC devices. For the multi-function PMIC devices, this can be used as I/O parent device, for each IC's interface. Then, each PMIC particular function can be provided by the child device's operations, and the child devices will use its parent for read/write by the common API. Core files: - 'include/power/pmic.h' - 'drivers/power/pmic/pmic-uclass.c' The old pmic framework is still kept and is independent. For more detailed informations, please look into the header file. Changes: - new uclass-id: UCLASS_PMIC - new config: CONFIG_DM_PMIC Signed-off-by:
Przemyslaw Marczak <p.marczak@samsung.com> Acked-by:
Simon Glass <sjg@chromium.org>
-
- May 13, 2015
-
-
Simon Glass authored
eDP (Embedded DisplayPort) is a standard widely used in laptops to drive LCD panels. Add a uclass for this which supports a few simple operations. Signed-off-by:
Simon Glass <sjg@chromium.org> Acked-by:
Anatolij Gustschin <agust@denx.de> Signed-off-by:
Tom Warren <twarren@nvidia.com>
-
Simon Glass authored
Sort uclasses into alphabetical order and tidy up the comments. Signed-off-by:
Simon Glass <sjg@chromium.org> Signed-off-by:
Tom Warren <twarren@nvidia.com>
-
- May 06, 2015
-
-
Simon Glass authored
Add a uclass for real-time clocks which support getting the current time, setting it and resetting the chip to a known-working state. Some RTCs have additional registers which can be used to store settings, so also provide an interface to these. Signed-off-by:
Simon Glass <sjg@chromium.org>
-
- Apr 30, 2015
-
-
Simon Glass authored
It is useful to be able to keep track of the available CPUs in a multi-CPU system. This uclass is mostly intended for use with SMP systems. The uclass provides methods for getting basic information about each CPU. Signed-off-by:
Simon Glass <sjg@chromium.org> Reviewed-by:
Bin Meng <bmeng.cn@gmail.com>
-
- Apr 18, 2015
-
-
Simon Glass authored
This emulator supports USB enumeration and allows a local file to be provided as the contents of the emulated flash stick. U-Boot can then use the file as it would a normal device, with all access passing through the usb_stor layer and the USB stack. Signed-off-by:
Simon Glass <sjg@chromium.org> Reviewed-by:
Marek Vasut <marex@denx.de>
-
Simon Glass authored
With sandbox we want to be able to emulate USB devices so that we can test the USB stack. Add a uclass to support this. It implements the same operations as a normal USB device driver, but in this case passes them on to an emulation driver. Signed-off-by:
Simon Glass <sjg@chromium.org> Reviewed-by:
Marek Vasut <marex@denx.de>
-
Simon Glass authored
At present USB devices with no driver model driver cannot be seen in the device list, and we fail to set them up correctly. This means they cannot be used. While having real drivers that support driver model for all USB devices is the eventual goal, we are not there yet. As a stop-gap, add a generic USB driver which is bound when we do not have a real driver. This allows the device to be set up and shown on the bus. It also allows ad-hoc code (such as usb_ether) to find these devices and set them up. Signed-off-by:
Simon Glass <sjg@chromium.org> Reviewed-by:
Marek Vasut <marex@denx.de>
-
Simon Glass authored
Adjust the existing hub code to support driver model, and add a USB driver for hubs. Signed-off-by:
Simon Glass <sjg@chromium.org> Reviewed-by:
Marek Vasut <marex@denx.de>
-
Simon Glass authored
Add a uclass that can represent a USB controller. For now we do not create devices for things attached to the controller. This will be added later. Signed-off-by:
Simon Glass <sjg@chromium.org> Reviewed-by:
Marek Vasut <marex@denx.de>
-
Simon Glass authored
On x86 systems this device is commonly used to provide legacy port access. It is sort-of a replacement for the old ISA bus. Add a uclass for this, and allow it to have child devices. Signed-off-by:
Simon Glass <sjg@chromium.org>
-
Joe Hershberger authored
First just add support for MAC drivers. Signed-off-by:
Joe Hershberger <joe.hershberger@ni.com> Reviewed-by:
Simon Glass <sjg@chromium.org>
-
Simon Glass authored
Move coreboot-x86 over to driver model for PCI. Signed-off-by:
Simon Glass <sjg@chromium.org>
-
- Apr 17, 2015
-
-
Simon Glass authored
Since sandbox does not have real devices (unless it borrows those from the host) it must use emulations. Provide a uclass which permits PCI operations to be passed through to an emulation device. Signed-off-by:
Simon Glass <sjg@chromium.org>
-
Simon Glass authored
Add a uclass for PCI controllers and a generic one for PCI devices. Adjust the 'pci' command and the existing PCI support to work with this new uclass. Keep most of the compatibility code in a separate file so that it can be removed one day. TODO: Add more header file comments to the new parts of pci.h Signed-off-by:
Simon Glass <sjg@chromium.org>
-
- Jan 30, 2015
-
-
Ruchika Gupta authored
Add a new rsa uclass for performing modular exponentiation and implement the software driver basing on this uclass. Signed-off-by:
Ruchika Gupta <ruchika.gupta@freescale.com> CC: Simon Glass <sjg@chromium.org> Acked-by:
Simon Glass <sjg@chromium.org>
-
- Dec 11, 2014
-
-
Simon Glass authored
There seem to be a few EEPROM drivers around - perhaps we should have a single standard one? This simple driver is used for sandbox testing, but could be pressed into more active service. Signed-off-by:
Simon Glass <sjg@chromium.org> Acked-by:
Heiko Schocher <hs@denx.de> Reviewed-by:
Masahiro Yamada <yamada.m@jp.panasonic.com>
-
Simon Glass authored
In order to test I2C we need some sort of emulation interface. Add hooks to allow a driver to emulate an I2C device for sandbox. Signed-off-by:
Simon Glass <sjg@chromium.org> Acked-by:
Heiko Schocher <hs@denx.de> Reviewed-by:
Masahiro Yamada <yamada.m@jp.panasonic.com>
-
Simon Glass authored
The uclass implements the same operations as the current I2C framework but makes some changes to make it fit driver model better: - Remove the chip address from API calls - Remove the address length from API calls - Remove concept of 'current' I2C bus - Drop all existing init functions Acked-by:
Heiko Schocher <hs@denx.de> Reviewed-by:
Masahiro Yamada <yamada.m@jp.panasonic.com> Signed-off-by:
Simon Glass <sjg@chromium.org>
-
- Nov 21, 2014
-
-
Ye.Li authored
Add a new thermal uclass for thermal sensor and implement the imx thermal driver basing on this uclass. Signed-off-by:
Ye.Li <B37916@freescale.com> Acked-by:
Stefano Babic <sbabic@denx.de>
-
- Oct 22, 2014
-
-
Simon Glass authored
Add a driver for the simple-bus nodes, which allows devices within these nodes to be bound. Signed-off-by:
Simon Glass <sjg@chromium.org>
-
Simon Glass authored
Add support for driver model if enabled. This involves minimal changes to the code, mostly just plumbing around the edges. Signed-off-by:
Simon Glass <sjg@chromium.org> Acked-by:
Jagannadha Sutradharudu Teki <jagannadh.teki@gmail.com>
-
Simon Glass authored
Add a driver model uclass for SPI flash which supports the common operations (read, write, erase). Since we must keep support for the non-dm interface, some modification of the spi_flash header is required. CONFIG_DM_SPI_FLASH is used to enable driver model for SPI flash. Signed-off-by:
Simon Glass <sjg@chromium.org> Reviewed-by:
Jagannadha Sutradharudu Teki <jagannadh.teki@gmail.com>
-
Simon Glass authored
U-Boot includes a SPI emulation driver already but it is not explicit, and is hidden in the SPI flash code. Conceptually with sandbox's SPI implementation we have a layer which creates SPI bus transitions and a layer which interprets them, currently only for SPI flash. The latter is actually an emulation, and it should be possible to add more than one emulation - not just SPI flash. Add a SPI emulation uclass so that other emulations can be plugged in to support different types of emulated devices on difference buses/chip selects. Signed-off-by:
Simon Glass <sjg@chromium.org> Reviewed-by:
Jagannadha Sutradharudu Teki <jagannadh.teki@gmail.com>
-
Simon Glass authored
Add a uclass which provides access to SPI buses and includes operations required by SPI. For a time driver model will need to co-exist with the legacy SPI interface so some parts of the header file are changed depending on which is in use. The exports are adjusted also since some functions are not available with driver model. Boards must define CONFIG_DM_SPI to use driver model for SPI. Signed-off-by:
Simon Glass <sjg@chromium.org> Reviewed-by:
Jagannadha Sutradharudu Teki <jagannadh.teki@gmail.com> (Discussed some follow-up comments which will address in future add-ons)
-
- Sep 10, 2014
-
-
Simon Glass authored
Serial devices support simple byte input/output and a few operations to find out whether data is available. Add a basic uclass for serial devices to be used by drivers that are converted to driver model. Signed-off-by:
Simon Glass <sjg@chromium.org>
-
- Jul 23, 2014
-
-
Simon Glass authored
At present only root nodes in the device tree are scanned for devices. But some devices can have children. For example a SPI bus may have several children for each of its chip selects. Add a function which scans subnodes and binds devices for each one. This can be used for the root node scan also, so change it. A device can call this function in its bind() or probe() methods to bind its children. Signed-off-by:
Simon Glass <sjg@chromium.org>
-
Simon Glass authored
Fix up the style of a few comments and add/clarify a few others. Signed-off-by:
Simon Glass <sjg@chromium.org>
-
- Mar 04, 2014
-
-
Simon Glass authored
Add driver model functionality for generic board. This includes data structures and base code for registering devices and uclasses (groups of devices with the same purpose, e.g. all I2C ports will be in the same uclass). The feature is enabled with CONFIG_DM. Signed-off-by:
Simon Glass <sjg@chromium.org> Signed-off-by:
Marek Vasut <marex@denx.de> Signed-off-by:
Pavel Herrmann <morpheus.ibis@gmail.com> Signed-off-by:
Viktor Křivák <viktor.krivak@gmail.com> Signed-off-by:
Tomas Hlavacek <tmshlvck@gmail.com>
-