summaryrefslogtreecommitdiff
path: root/include
Commit message (Collapse)AuthorAgeLines
* dm: Add child_pre_probe() and child_post_remove() methodsSimon Glass2014-07-23-0/+10
| | | | | | | | | | | Some devices (particularly bus devices) must track their children, knowing when a new child is added so that it can be set up for communication on the bus. Add a child_pre_probe() method to provide this feature, and a corresponding child_post_remove() method. Signed-off-by: Simon Glass <sjg@chromium.org>
* dm: Introduce per-child data for devicesSimon Glass2014-07-23-0/+29
| | | | | | | | | | | | | Some device types can have child devices and want to store information about them. For example a USB flash stick attached to a USB host controller would likely use this space. The controller can hold information about the USB state of each of its children. The data is stored attached to the child device in the 'parent_priv' member. It can be auto-allocated by dm when the child is probed. To do this, add a per_child_auto_alloc_size value to the parent driver. Signed-off-by: Simon Glass <sjg@chromium.org>
* dm: Add functions to access a device's childrenSimon Glass2014-07-23-0/+58
| | | | | | | | | | | | | | | | | Devices can have childen that can be addressed by a simple index, the sequence number or a device tree offset. Add functions to access a child in each of these ways. The index is typically used as a fallback when the sequence number is not available. For example we may use a serial UART with sequence number 0 as the console, but if no UART has sequence number 0, then we can fall back to just using the first UART (index 0). The device tree offset function is useful for buses, where they want to locate one of their children. The device tree can be scanned to find the offset of each child, and that offset can then find the device. Signed-off-by: Simon Glass <sjg@chromium.org>
* dm: Provide a function to scan child FDT nodesSimon Glass2014-07-23-0/+26
| | | | | | | | | | | | | | 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>
* dm: Tidy up some header file commentsSimon Glass2014-07-23-6/+13
| | | | | | Fix up the style of a few comments and add/clarify a few others. Signed-off-by: Simon Glass <sjg@chromium.org>
* fdt: Add a function to get the node offset of an aliasSimon Glass2014-07-23-0/+11
| | | | | | This simple function returns the node offset of a named alias. Signed-off-by: Simon Glass <sjg@chromium.org>
* dm: Allow a device to be found by its FDT offsetSimon Glass2014-07-23-0/+16
| | | | | | | | Each device that was bound from a device tree has an node that caused it to be bound. Add functions that find and return a device based on a device tree offset. Signed-off-by: Simon Glass <sjg@chromium.org>
* dm: Introduce device sequence numberingSimon Glass2014-07-23-0/+83
| | | | | | | | | | | | | | | | | | | | | | | | | In U-Boot it is pretty common to number devices from 0 and access them on the command line using this numbering. While it may come to pass that we will move away from this numbering, the possibility seems remote at present. Given that devices within a uclass will have an implied numbering, it makes sense to build this into driver model as a core feature. The cost is fairly small in terms of code and data space. With each uclass having numbered devices we can ask for SPI port 0 or serial port 1 and receive a single device. Devices typically request a sequence number using aliases in the device tree. These are resolved when the device is probed, to deal with conflicts. Sequence numbers need not be sequential and holes are permitted. At present there is no support for sequence numbers using static platform data. It could easily be added to 'struct driver_info' if needed, but it seems better to add features as we find a use for them, and the use of -1 to mean 'no sequence' makes the default value somewhat painful. Signed-off-by: Simon Glass <sjg@chromium.org>
* fdt: Add a function to get the alias sequence of a nodeSimon Glass2014-07-23-0/+18
| | | | | | | | | | | | | | | | | | | | Aliases are used to provide U-Boot's numbering of devices, such as: aliases { spi0 = "/spi@12330000"; } spi@12330000 { ... } This tells us that the SPI controller at 12330000 is considered to be the first SPI controller (SPI 0). So we have a numbering for the SPI node. Add a function that returns the numbering for a node assume that it exists in the list of aliases. Signed-off-by: Simon Glass <sjg@chromium.org>
* Add a flag indicating when the serial console is readySimon Glass2014-07-23-0/+1
| | | | | | | | | | For sandbox we have a fallback console which is used very early in U-Boot, before serial drivers are available. Rather than try to guess when to switch to the real console, add a flag so we can be sure. This makes sure that sandbox can always output a panic() message, for example, and avoids silent failure (which is very annoying in sandbox). Signed-off-by: Simon Glass <sjg@chromium.org>
* stdio: Provide functions to add/remove devices using stdio_devSimon Glass2014-07-23-0/+2
| | | | | | | | | The current functions for adding and removing devices require a device name. This is not convenient for driver model, which wants to store a pointer to the relevant device. Add new functions which provide this feature and adjust the old ones to call these. Signed-off-by: Simon Glass <sjg@chromium.org>
* dm: Support driver model prior to relocationSimon Glass2014-07-23-1/+15
| | | | | | | Initialise devices marked 'pre-reloc' and make them available prior to relocation. Note that this requires pre-reloc malloc() to be available. Signed-off-by: Simon Glass <sjg@chromium.org>
* dm: Allow drivers to be marked 'before relocation'Simon Glass2014-07-23-5/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | Driver model currently only operates after relocation is complete. In this state U-Boot typically has a small amount of memory available. In adding support for driver model prior to relocation we must try to use as little memory as possible. In addition, on some machines the memory has not be inited and/or the CPU is not running at full speed or the data cache is off. These can reduce execution performance, so the less initialisation that is done before relocation the better. An immediately-obvious improvement is to only initialise drivers which are actually going to be used before relocation. On many boards the only such driver is a serial UART, so this provides a very large potential benefit. Allow drivers to mark themselves as 'pre-reloc' which means that they will be initialised prior to relocation. This can be done either with a driver flag or with a 'dm,pre-reloc' device tree property. To support this, the various dm scanning function now take a 'pre_reloc_only' parameter which indicates that only drivers marked pre-reloc should be bound. Signed-off-by: Simon Glass <sjg@chromium.org>
* dm: Provide a way to shut down driver modelSimon Glass2014-07-23-0/+8
| | | | | | | Add a new method which removes and unbinds all drivers. Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: Marek Vasut <marex@denx.de>
* stdio: Pass device pointer to stdio methodsSimon Glass2014-07-23-19/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | At present stdio device functions do not get any clue as to which stdio device is being acted on. Some implementations go to great lengths to work around this, such as defining a whole separate set of functions for each possible device. For driver model we need to associate a stdio_dev with a device. It doesn't seem possible to continue with this work-around approach. Instead, add a stdio_dev pointer to each of the stdio member functions. Note: The serial drivers have the same problem, but it is not strictly necessary to fix that to get driver model running. Also, if we convert serial over to driver model the problem will go away. Code size increases by 244 bytes for Thumb2 and 428 for PowerPC. 22: stdio: Pass device pointer to stdio methods arm: (for 2/2 boards) all +244.0 bss -4.0 text +248.0 powerpc: (for 1/1 boards) all +428.0 text +428.0 Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: Marek Vasut <marex@denx.de> Reviewed-by: Marek Vasut <marex@denx.de>
* sandbox: config: Enable pre-relocation malloc()Simon Glass2014-07-23-1/+3
| | | | | | | Enable this for sandbox so that we will be able to use driver model before relocation. Signed-off-by: Simon Glass <sjg@chromium.org>
* Add a simple malloc() implementation for pre-relocationSimon Glass2014-07-23-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we are to have driver model before relocation we need to support some way of calling memory allocation routines. The standard malloc() is pretty complicated: 1. It uses some BSS memory for its state, and BSS is not available before relocation 2. It supports algorithms for reducing memory fragmentation and improving performace of free(). Before relocation we could happily just not support free(). 3. It includes about 4KB of code (Thumb 2) and 1KB of data. However since this has been loaded anyway this is not really a problem. The simplest way to support pre-relocation malloc() is to reserve an area of memory and allocate it in increasing blocks as needed. This implementation does this. To enable it, you need to define the size of the malloc() pool as described in the README. It will be located above the pre-relocation stack on supported architectures. Note that this implementation is only useful on machines which have some memory available before dram_init() is called - this includes those that do no DRAM init (like tegra) and those that do it in SPL (quite a few boards). Enabling driver model preior to relocation for the rest of the boards is left for a later exercise. Signed-off-by: Simon Glass <sjg@chromium.org>
* whitespace cleanupsPavel Machek2014-07-22-1/+1
| | | | | | Whitespace cleanups. Signed-off-by: Pavel Machek <pavel@denx.de>
* rpi_b: handle import of environments in files with CRLF as line endingsAlexander Holler2014-07-22-1/+1
| | | | | | Use the new option -r for env import. Signed-off-by: Alexander Holler <holler@ahsoftware.de>
* am335x_evm: handle import of environments in files with CRLF as line endingsAlexander Holler2014-07-22-1/+1
| | | | | | Use the new option -r for env import. Signed-off-by: Alexander Holler <holler@ahsoftware.de>
* omap3_beagle: handle import of environments in files with CRLF as line endingsAlexander Holler2014-07-22-1/+1
| | | | | | Use the new option -r for env import. Signed-off-by: Alexander Holler <holler@ahsoftware.de>
* Add option -r to env import to allow import of text files with CRLF as line ↵Alexander Holler2014-07-22-1/+2
| | | | | | | | | | | | | | endings When this option is enabled, CRLF is treated like LF when importing environments from text files, which means CRs ('\r') in front of LFs ('\n') are just ignored. Drawback of enabling this option is that (maybe exported) variables which have a trailing CR in their content will get imported without that CR. But this drawback is very unlikely and the big advantage of letting Windows user create a *working* uEnv.txt too is likely more welcome. Signed-off-by: Alexander Holler <holler@ahsoftware.de>
* h2200: Disable SHA256 on FIT imagesTom Rini2014-07-22-0/+1
| | | | | | | This board is close in binary size to one of its hard limits, so disable SHA256 FIT image support to gain some breathing room. Signed-off-by: Tom Rini <trini@ti.com>
* common: cmd_ide: use __weak and add prototypesJeroen Hofstee2014-07-22-0/+4
| | | | | | | | | | | clang chokes about the concept of having an alias to an always_inlined function. gcc likely just ignores the always inlined since binary sizes are equal before and after this patch. Convert the aliases to weak functions and provide missing prototypes. cc: Pavel Herrmann <morpheus.ibis@gmail.com> Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
* tools: compiler.h: add missing time.hJeroen Hofstee2014-07-22-0/+1
| | | | | | | | | | genimg_print_time uses time_t, but time.h is never included. Linux gets away with this since types.h includes time.h. Explicitly include the header file so building on e.g. FreeBSD also works. cc: Tom Rini <trini@ti.com> Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
* linux/compat.h: port lower_32_bits and upper_32_bits from LinuxLijun Pan2014-07-22-0/+19
| | | | | | | | | | | | | | [backport from linux commit 204b885e and 218e180e7] 64 bit processors are becomming more and more popular. lower_32_bits and upper_32_bits save our labor doing shifts/manipulations like (u32)(n) and (u32)((n) >> 32). They are good helpers in both little and big endian cases. Port these two functions here from Linux:include/linux/kernel.h, cater the comment message to little/big endian cases. Later on, developers could include linux/compat.h if they want to use these two functions. Signed-off-by: Lijun Pan <Lijun.Pan@freescale.com>
* mmc: prevent some warnings with make W=1Jeroen Hofstee2014-07-18-1/+3
| | | | | | | | Add missing prototypes for global functions and make local functions static. cc: panto@antoniou-consulting.com Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
* env_callback.h: spl: mark callback as maybe_unusedJeroen Hofstee2014-07-18-1/+1
| | | | | | | | | | | | | When static inline is used in a header file the function should preferably be inlined and if not possible made a static function. When declared inside a c file there is a static function, which might be inlined. Since SPL uses a define to declare the static inline it becomes part of the c file although it is declared in a header and clang will warn that you have introduced unused static functions. Add maybe_unused to prevent such warnings. Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
* common: board_f: cosmetic use __weak for ledsJeroen Hofstee2014-07-18-11/+11
| | | | | | | | | | First of all this looks a lot better, but it also prevents a gcc warning (W=1), that the weak function has no previous prototype. cc: Simon Glass <sjg@chromium.org> Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl> Acked-by: Simon Glass <sjg@chromium.org>
* socfpga: timer actually counts downPavel Machek2014-07-14-0/+1
| | | | | | | | | | | | Timer on cyclone5 actually counts down. It took me a while to figure out, as timer counting in wrong direction actually _can_ be used, it just appears to tick at extremely high frequency in u-boot. The bug was introduced in commit 23ab7ee0ffa9d5efd0b4ad830befba306d24a327. Signed-off-by: Pavel Machek <pavel@denx.de> Acked-by: Marek Vasut <marex@denx.de>
* ARM: DRA7xx: Update the board_name env variableLokesh Vutla2014-07-14-0/+3
| | | | | | | Update the board_name env variable and accordingly populate the dtb file. Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
* Merge branch 'master' of git://www.denx.de/git/u-boot-imxTom Rini2014-07-09-26/+212
|\
| * ARM: m53evk: Update default environmentLothar Rubusch2014-07-09-1/+86
| | | | | | | | | | | | Signed-off-by: Marek Vasut <marex@denx.de> Signed-off-by: Lothar Rubusch <lothar@denx.de> Signed-off-by: Wolfgang Denk <wd@denx.de>
| * ARM: m53evk: Adjust mtdparts settingsMarek Vasut2014-07-09-9/+8
| | | | | | | | | | | | | | | | | | Adjust the mtdparts settings to allow for alternative boot images and for using UBI. Signed-off-by: Marek Vasut <marex@denx.de> Signed-off-by: Wolfgang Denk <wd@denx.de> Cc: Stefano Babic <sbabic@denx.de>
| * ARM: m53evk: add needed commands and optionsMarek Vasut2014-07-09-2/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | - "env ask", "env grep" and "setexpr" are needed for commissioning - add support for ext4 file systems - adjust default environment to use ext4 commands - add write support for (V)FAT and EXT4 - add bitmap and splashscreen support - print timestamp information for images Signed-off-by: Marek Vasut <marex@denx.de> Signed-off-by: Wolfgang Denk <wd@denx.de> Cc: Stefano Babic <sbabic@denx.de>
| * ARM: m28evk: Update default environmentLothar Rubusch2014-07-09-3/+84
| | | | | | | | | | Signed-off-by: Marek Vasut <marex@denx.de> Signed-off-by: Lothar Rubusch <lothar@denx.de>
| * ARM: m28evk: Adjust mtdpartsMarek Vasut2014-07-09-9/+8
| | | | | | | | | | | | Adjust the mtdparts to also consider factory-programmed config block. Signed-off-by: Marek Vasut <marex@denx.de>
| * ARM: m28evk: add needed commands and optionsMarek Vasut2014-07-09-2/+10
| | | | | | | | | | | | | | | | | | | | | | | | - "env ask", "env grep" and "setexpr" are needed for commissioning - add support for ext4 file systems - adjust default environment to use ext4 commands - add write support for (V)FAT and EXT4 - add bitmap and splashscreen support - print timestamp information for images Signed-off-by: Marek Vasut <marex@denx.de> Cc: Stefano Babic <sbabic@denx.de>
* | TI:omap3: enable CONFIG_CMD_DHCP for omap3_beagleTyler Baker2014-07-07-0/+1
| | | | | | | | | | | | | | | | | | | | The following patch re-enables the dhcp functionality on omap3_beagle. It was removed with df4dbb5df6ab1c1d27b3fd4acbaad69b47095daf when omap3_beagle was converted to use ti_omap3_common.h. I have tested beagleboard and beagleboard-xm with this patch and confirmed dhcp is working. Signed-off-by: Tyler Baker <tyler.baker@linaro.org>
* | fit: make sha256 support optionalDirk Eibach2014-07-07-0/+9
| | | | | | | | | | | | | | sha256 has some beefy memory footprint. Make it optional for constrained systems. Signed-off-by: Dirk Eibach <dirk.eibach@gdsys.cc>
* | board: gdsys: Remove commands to reduce footprintDirk Eibach2014-07-07-4/+22
| | | | | | | | | | | | | | | | | | | | | | | | Commit "2842c1c fit: add sha256 support" badly increased memory footprint, so some of our boards did not build anymore. Since monitor base must not be changed I removed some commands to save memory. Maybe making sha256 optional for fit would be an option for the future since it really has some beefy footprint. Signed-off-by: Dirk Eibach <dirk.eibach@gdsys.cc>
* | board: gdsys: Make gdsys osd hardware detection more robustDirk Eibach2014-07-07-8/+0
| | | | | | | | Signed-off-by: Dirk Eibach <dirk.eibach@gdsys.cc>
* | board: gdsys: Configure bridge on DP501 to support DDC onlyDirk Eibach2014-07-07-3/+4
| | | | | | | | | | | | | | The I2C bridge on DP501 supports EDID, MCCS and HDCP by default. Allow EDID only to avoid I2C address conflicts. Signed-off-by: Dirk Eibach <dirk.eibach@gdsys.cc>
* | board: gdsys: Increase iocon and dlv10g version stringDirk Eibach2014-07-07-2/+2
| | | | | | | | Signed-off-by: Dirk Eibach <dirk.eibach@gdsys.cc>
* | board: gdsys: Fix dlvision-10g I2C configurationDirk Eibach2014-07-07-2/+8
| | | | | | | | | | | | | | PPC4xx config options were not complete. ICS8N3QV01 and SIL1178 needed some more configuration. Signed-off-by: Dirk Eibach <dirk.eibach@gdsys.cc>
* | i2c: IHS I2C master driverDirk Eibach2014-07-07-18/+41
| | | | | | | | | | | | | | | | IHS I2C master support was merely a hack in the osd driver. Now it is a proper u-boot I2C framework driver, supporting the v2.00 master features. Signed-off-by: Dirk Eibach <dirk.eibach@gdsys.cc>
* | board: iocon: Support DisplayPort hardwareDirk Eibach2014-07-07-2/+7
| | | | | | | | | | | | There is a new iocon hardware flavor, supporting DisplayPort finally. Signed-off-by: Dirk Eibach <dirk.eibach@gdsys.cc>
* | mpc8xx: remove spc1920 board supportMasahiro Yamada2014-07-07-405/+0
| | | | | | | | | | | | This board is old enough and has no maintainer. Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
* | mpc8xx: remove v37 board supportMasahiro Yamada2014-07-07-398/+0
| | | | | | | | | | | | This board is old enough and has no maintainer. Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
* | mpc8xx: remove fads board supportMasahiro Yamada2014-07-07-140/+3
| | | | | | | | | | | | These boards are old enough and have no maintainers. Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>