platform/kernel/u-boot.git
8 years agoMerge git://git.denx.de/u-boot-dm
Tom Rini [Mon, 14 Mar 2016 23:21:44 +0000 (19:21 -0400)]
Merge git://git.denx.de/u-boot-dm

8 years agoMerge git://git.denx.de/u-boot-marvell
Tom Rini [Mon, 14 Mar 2016 23:21:35 +0000 (19:21 -0400)]
Merge git://git.denx.de/u-boot-marvell

8 years agoarm64: define _image_binary_end to fix SPL_OF_CONTROL
Masahiro Yamada [Tue, 8 Mar 2016 11:34:44 +0000 (20:34 +0900)]
arm64: define _image_binary_end to fix SPL_OF_CONTROL

To make SPL_OF_CONTROL work on ARM64 SoCs, _image_binary_end must be
defined in the linker script.

 LD      spl/u-boot-spl
lib/built-in.o: In function `fdtdec_setup':
lib/fdtdec.c:1186: undefined reference to `_image_binary_end'
lib/fdtdec.c:1186: undefined reference to `_image_binary_end'
make[1]: *** [spl/u-boot-spl] Error 1
make: *** [spl/u-boot-spl] Error 2

Note:
CONFIG_SPL_SEPARATE_BSS must be defined as well on ARM64 SoCs.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoARM: DRA72-evm: Update mux and VIRTUAL/MANUAL mode timings
Lokesh Vutla [Tue, 8 Mar 2016 04:40:20 +0000 (10:10 +0530)]
ARM: DRA72-evm: Update mux and VIRTUAL/MANUAL mode timings

All the mux configurations needs to be done as part of the IODelay
sequence to avoid glitch. Adding all the mux configuration, MANUAL/VIRTUAL
mode configuration as needed for DRA72-evm.

Also update the mux for SD card detect on DRA74-evm.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Vignesh R <vigneshr@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoARM: DRA7-evm: Update memory info in banks
Lokesh Vutla [Tue, 8 Mar 2016 03:48:09 +0000 (09:18 +0530)]
ARM: DRA7-evm: Update memory info in banks

Updating the memory banks properly so that DT is populated accordingly.
And updating this only after DDR is properly detected by eeprom, so that
git bisect is still maintained.

Acked-by: Nishanth Menon <nm@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
8 years agoARM: DRA7: EMIF: Add 4GB DDR settings
Lokesh Vutla [Tue, 8 Mar 2016 03:48:08 +0000 (09:18 +0530)]
ARM: DRA7: EMIF: Add 4GB DDR settings

The REVH and later versions of DRA7-evm uses MICRON MT41K512M16HA-125 memory
chips which is of size 4GB(2GB on EMIF1 and 2GB on EMIF2). Add support for the
same.

Acked-by: Nishanth Menon <nm@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
8 years agoARM: DRA7: configs: Prepare for detecting memory > 2GB
Lokesh Vutla [Tue, 8 Mar 2016 03:48:07 +0000 (09:18 +0530)]
ARM: DRA7: configs: Prepare for detecting memory > 2GB

Enable configs that are required for detecting memory > 2GB.

Reviewed-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
8 years agoARM: DRA7: Move emif settings to board specific files
Lokesh Vutla [Tue, 8 Mar 2016 03:48:06 +0000 (09:18 +0530)]
ARM: DRA7: Move emif settings to board specific files

The newer versions of DRA7 boards has EEPROM populated with DDR
size specified in it. Moving DRA7 specific emif related settings
to board files so that emif settings can be identified based on EEPROM.

Acked-by: Nishanth Menon <nm@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
8 years agoARM: DRA7: Enable EEPROM support
Lokesh Vutla [Tue, 8 Mar 2016 03:48:05 +0000 (09:18 +0530)]
ARM: DRA7: Enable EEPROM support

Enable EEPROM support for DRA74-evm.

Acked-by: Nishanth Menon <nm@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
8 years agoti: common: dra7: Add standard access for board description EEPROM
Lokesh Vutla [Tue, 8 Mar 2016 03:48:04 +0000 (09:18 +0530)]
ti: common: dra7: Add standard access for board description EEPROM

DRA7 EVM revH and later EVMs have EEPROM populated that can contain board
description information such as name, revision, DDR definition, etc. Adding
support for this EEPROM format.

Acked-by: Nishanth Menon <nm@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
8 years agoARM: AM57xx: Update EMIF registers
Lokesh Vutla [Tue, 8 Mar 2016 03:41:35 +0000 (09:11 +0530)]
ARM: AM57xx: Update EMIF registers

There are certain EMIF timing failures seen on the some x15 boards. Updating
the EMIF settings to get rid of these timing failures.

Reviewed-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
8 years agoARM: Various: Future-proof serial platdata
Adam Ford [Tue, 8 Mar 2016 03:08:49 +0000 (21:08 -0600)]
ARM: Various: Future-proof serial platdata

A few boards still use ns16550_platdata structures, but assume the structure
is going to be in a specific order. By explicitly naming each entry,
this should also help 'future-proof' in the event the structure changes.

Tested on the Logic PD Torpedo + Wireless.

I only changed a handful of devices that used the same syntax as the Logic
board.  Appologies if I missed one or stepped on toes.  Thanks to Derald Woods
and Alexander Graf.

Signed-off-by: Adam Ford <aford173@gmail.com>
V6: Add fix to arch/arm/cpu/armv7/am33xx/board.c

V5: Add fix to arch/arm/cpu/arm926ejs/lpc32xx/devices.c

V4: Fix subject heading

V3: Remove  reg_offset out in all the structs. It was reverted out, and and if
it did exist, it would get initialized to 0 by default.

V2: I hastily copy-pasted the boards without looking at the UART number.
This addresses 3 boards that use UART3 and not UART1.
Reviewed-by: Mugunthan V N <mugunthanvnm@ti.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
8 years agoARM: OMAP4+: Allow arch specfic code to use early DM
Lokesh Vutla [Mon, 7 Mar 2016 09:19:54 +0000 (14:49 +0530)]
ARM: OMAP4+: Allow arch specfic code to use early DM

Early system initialization is being done before initf_dm is being called
in U-Boot. Then system will fail to boot if any of the DM enabled driver
is being called in this system initialization code. So, rearrange the
code a bit so that DM enabled drivers can be called during early system
initialization.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoARM: DRA7: emif: Enable interleaving for higher address space
Lokesh Vutla [Sat, 5 Mar 2016 12:02:31 +0000 (17:32 +0530)]
ARM: DRA7: emif: Enable interleaving for higher address space

Given that DRA7/OMAP5 SoCs can support more than 2GB of memory,
enable interleaving for this higher memory to increase performance.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoARM: DRA7: emif: Check for enable bits before updating leveling output
Lokesh Vutla [Sat, 5 Mar 2016 12:02:30 +0000 (17:32 +0530)]
ARM: DRA7: emif: Check for enable bits before updating leveling output

Read and write leveling can be enabled independently. Check for these
enable bits before updating the read and write leveling output values.
This will allow to use the combination of software and hardware leveling.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoARM: DRA7: emif: Fix DDR init sequence during warm reset
Lokesh Vutla [Sat, 5 Mar 2016 12:02:29 +0000 (17:32 +0530)]
ARM: DRA7: emif: Fix DDR init sequence during warm reset

Commit (20fae0a - ARM: DRA7: DDR: Enable SR in Power Management Control)
enables Self refresh mode by default and during warm reset the EMIF
contents are preserved. After warm reset EMIF sees that it is idle and
puts DDR in self-refresh. When in SR, leveling operations cannot be done
as DDR can only accept SR exit command, so its hanging during warm reset.
In order to fix this reset the power management control register before
EMIF initialization if it is a warm reset.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoARM: DRA7: emif: Fix updating of refresh ctrl shadow
Lokesh Vutla [Sat, 5 Mar 2016 12:02:28 +0000 (17:32 +0530)]
ARM: DRA7: emif: Fix updating of refresh ctrl shadow

On DRA7, refresh ctrl shadow should be updated with
the final value.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agodm: omap_timer: Fix conversion of address to a pointer
Lokesh Vutla [Sat, 5 Mar 2016 11:10:32 +0000 (16:40 +0530)]
dm: omap_timer: Fix conversion of address to a pointer

OMAP timer driver directly typecasts fdt_addr_t to a pointer. This is
not strictly correct, as it gives a build warning when fdt_addr_t is u64.
So, use map_physmem for a proper typecasts.

This is inspired by commit 167efe01bc5a9 ("dm: ns16550: Use an address
instead of a pointer for the uart base")

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoARM: keystone2: use detected ddr3a size
Vitaly Andrianov [Fri, 4 Mar 2016 16:36:43 +0000 (10:36 -0600)]
ARM: keystone2: use detected ddr3a size

Because KS2 u-boot works in 32 bit address space the existing ram_size
global data field cannot be used. The maximum, which the get_ram_size()
can detect is 2GB only. The ft_board_setup() needs the actual ddr3 size
to fix up dtb.

This commit introduces the ddr3_get_size() which uses SPD data to
calculate the ddr3 size. This function replaces the "ddr3_size"
environment variable, which was used to get the SODIMM size.

For platforms, which don't have SODIMM with SPD and ddr3 is populated to
a board a simple ddr3_get_size function that returns ddr3 size has to be
implemented. See hardware-k2l.h

Signed-off-by: Vitaly Andrianov <vitalya@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoARM: keystone2: use SPD info to configure K2HK and K2E DDR3
Vitaly Andrianov [Fri, 4 Mar 2016 16:36:42 +0000 (10:36 -0600)]
ARM: keystone2: use SPD info to configure K2HK and K2E DDR3

This commit replaces hard-coded EMIF and PHY DDR3 configurations for
predefined SODIMMs to a calculated configuration. The SODIMM parameters
are read from SODIMM's SPD and used to calculated the configuration.

The current commit supports calculation for DDR3 with 1600MHz and 1333MHz
only.

Signed-off-by: Vitaly Andrianov <vitalya@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoARM: keystone2: K2G: Add support for different arm/device speeds
Lokesh Vutla [Fri, 4 Mar 2016 16:36:41 +0000 (10:36 -0600)]
ARM: keystone2: K2G: Add support for different arm/device speeds

The maximum device and arm speeds can be determined by reading
EFUSE_BOOTROM register. As there is already a framework for reading this
register, adding support for all possible speeds on k2g devices.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoARM: keystone2: Allow for board specific speed definitions
Lokesh Vutla [Fri, 4 Mar 2016 16:36:40 +0000 (10:36 -0600)]
ARM: keystone2: Allow for board specific speed definitions

Its not compulsory that speed definition should be same on EFUSE_BOOTROM
register for all keystone 2 devices. So, allow for board specific
speed definitions.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoARM: keystone2: K2G: power-off DSP during boot
Suman Anna [Fri, 4 Mar 2016 16:36:39 +0000 (10:36 -0600)]
ARM: keystone2: K2G: power-off DSP during boot

The DSPs are powered on by default upon a Power ON reset, and
they are powered off on current Keystone 2 SoCs - K2HK, K2L, K2E
during the boot in u-boot. This is not functional on K2G though.
Extend the existing DSP power-off support to the only DSP present
on K2G. Do note that the PSC clock domain module id for DSP on K2G
differs from that of previous Keystone2 SoCs.

Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoARM: keystone2: Use macro for DSP GEM power domain
Suman Anna [Fri, 4 Mar 2016 16:36:38 +0000 (10:36 -0600)]
ARM: keystone2: Use macro for DSP GEM power domain

Define a macro for the DSP GEM power domain id number and
use it instead of a hard-coded number in the code that
disables all the DSPs on various Keystone2 SoCs.

Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoinclude/crc.h: Remove unreferenced cyg_xxx() prototypes
Stefan Roese [Thu, 3 Mar 2016 08:34:13 +0000 (09:34 +0100)]
include/crc.h: Remove unreferenced cyg_xxx() prototypes

These cyg_ prototypes are not referenced anywhere in current mainline
U-Boot. So lets remove them.

Signed-off-by: Stefan Roese <sr@denx.de>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agolib/crc16.c: Rename cyg_crc16() to crc16_ccitt() and add crc start value
Stefan Roese [Thu, 3 Mar 2016 08:34:12 +0000 (09:34 +0100)]
lib/crc16.c: Rename cyg_crc16() to crc16_ccitt() and add crc start value

The original name of this function is unclear. This patch renames this
CRC16 function to crc16_ccitt() matching its name with its
implementation.

To make the usage of this function more flexible, lets add the CRC start
value as parameter to this function. This way it can be used by other
functions requiring different start values than 0 as well.

Signed-off-by: Stefan Roese <sr@denx.de>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agolib/crc16.c: Coding-style cleanup
Stefan Roese [Thu, 3 Mar 2016 08:34:11 +0000 (09:34 +0100)]
lib/crc16.c: Coding-style cleanup

lib/crc16.c is changed to match the common U-Boot coding-style.

Signed-off-by: Stefan Roese <sr@denx.de>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agocommon: image-fit: Fix load and entry addresses in FIT image
York Sun [Mon, 29 Feb 2016 23:48:41 +0000 (15:48 -0800)]
common: image-fit: Fix load and entry addresses in FIT image

FIT image supports more than 32 bits in addresses by using #address-cell
field. Fixing 64-bit support by using this field.

Signed-off-by: York Sun <york.sun@nxp.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
8 years agocommon: image-fit: Use a common function to get address
York Sun [Mon, 29 Feb 2016 23:48:40 +0000 (15:48 -0800)]
common: image-fit: Use a common function to get address

FIT image supports load address and entry address. Getting these
addresses can use a common function.

Signed-off-by: York Sun <york.sun@nxp.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
8 years agoarm: Add support for LEGO MINDSTORMS EV3
David Lechner [Fri, 26 Feb 2016 06:46:07 +0000 (00:46 -0600)]
arm: Add support for LEGO MINDSTORMS EV3

This is based on the davinci da850evm. It can boot from either the
on-board 16MB flash or from a microSD card. It also reads board
information from an I2C EEPROM.

The EV3 itself initally boots from write-protected EEPROM, so no
u-boot SPL is needed.

Signed-off-by: David Lechner <david@lechnology.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoconfigs: k2g_evm: Add TI power processor support
Nishanth Menon [Thu, 25 Feb 2016 18:53:47 +0000 (12:53 -0600)]
configs: k2g_evm: Add TI power processor support

Enable support for PMMC the TI power processor on K2G. This processor
manages all power management related activities on the SoC and and
allows the Operating Systems on compute processors such as ARM, DSP to
offload the power logic away into the power processor.

Signed-off-by: Nishanth Menon <nm@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoARM: dts: k2g: Add support for PMMC
Nishanth Menon [Thu, 25 Feb 2016 18:53:46 +0000 (12:53 -0600)]
ARM: dts: k2g: Add support for PMMC

Enable support for PMMC the TI power processor on K2G. This processor
manages all power management related activities on the SoC and and
allows the Operating Systems on compute processors such as ARM, DSP to
offload the power logic away into the power processor. U-boot just has a
load responsibility, hence the view of the hardware from a bootloader
perspective is different from the view of hardware from a Operating
System perspective. While bootloader just loads up the firmware,
Operating Systems look at the resultant system as "hardware".

Signed-off-by: Nishanth Menon <nm@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoremoteproc: Add support for TI power processor
Nishanth Menon [Thu, 25 Feb 2016 18:53:45 +0000 (12:53 -0600)]
remoteproc: Add support for TI power processor

Many TI System on Chip (SoC) solutions do have a dedicated
microcontroller for doing power management functionality. These include
the AM335x, AM437x, Keystone K2G SoCs. The functionality provided by
these microcontrollers and the communication mechanisms vary very
widely. However, we are able to consolidate some basic functionality to
be generic enough starting with K2G SoC family. Introduce a basic remote
proc driver to support these microcontrollers. In fact, on SoCs starting
with K2G, basic power management functions are primarily accessible for
the High Level Operating Systems(HLOS) via these microcontroller solutions.

Hence, having these started at a bootloader level is pretty much
mandatory.

Signed-off-by: Nishanth Menon <nm@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoARM: keystone2: psc: introduce function to hold and release module in reset.
Nishanth Menon [Thu, 25 Feb 2016 18:53:44 +0000 (12:53 -0600)]
ARM: keystone2: psc: introduce function to hold and release module in reset.

These are useful for modules that need to be held in reset and are
enabled for data to be loaded on to them. Typically these are
microcontrollers or other processing entities in the system.

Signed-off-by: Nishanth Menon <nm@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoARM: keystone2: psc-defs: use adequate () for macros
Nishanth Menon [Thu, 25 Feb 2016 18:53:43 +0000 (12:53 -0600)]
ARM: keystone2: psc-defs: use adequate () for macros

'#define X a | b' is better defined as '#define X (a | b)' for obvious
reasons.

Signed-off-by: Nishanth Menon <nm@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoARM: keystone2: psc: redo doc in kernel-doc format
Nishanth Menon [Thu, 25 Feb 2016 18:53:42 +0000 (12:53 -0600)]
ARM: keystone2: psc: redo doc in kernel-doc format

u-boot coding style guidance in
http://www.denx.de/wiki/U-Boot/CodingStyle clearly mentions that the
kernel doc style shall be followed for documentation in u-boot.

Current PSC documentation standard does not, so fix that.

Signed-off-by: Nishanth Menon <nm@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoARM: keystone2: Get rid of unused clock files
Nishanth Menon [Wed, 24 Feb 2016 23:48:43 +0000 (17:48 -0600)]
ARM: keystone2: Get rid of unused clock files

With commit fe772ebd285b ("ARM: keystone2: Use common definition for
clk_get_rate"), we have centralized the clock code into a common clock
logic and the redundant files, unfortunately remained... Clean that
up.

Signed-off-by: Nishanth Menon <nm@ti.com>
Acked-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoboard: ti: AM57xx: Add detection logic for AM57xx-evm
Kipisz, Steven [Wed, 24 Feb 2016 18:30:58 +0000 (12:30 -0600)]
board: ti: AM57xx: Add detection logic for AM57xx-evm

Current AM57xx evm supports both BeagleBoard-X15
(http://beagleboard.org/x15) and AM57xx EVM
(http://www.ti.com/tool/tmdxevm5728).

The AM572x EValuation Module(EVM) provides an affordable platform to
quickly start evaluation of Sitara. ARM Cortex-A15 AM57x Processors
(AM5728, AM5726, AM5718, AM5716) and accelerate development for HMI,
machine vision, networking, medical imaging and many other industrial
applications. This EVM is based on the same BeagleBoard-X15 Chassis
and adds mPCIe, mSATA, LCD, touchscreen, Camera, push button and TI's
wlink8 offering.

Since the EEPROM contents are compatible between the BeagleBoard-X15 and
the AM57xx-evm, we add support for the detection logic to enable
support for various user programmable scripting capability.

NOTE: U-boot configuration is currently a superset of AM57xx evm and
BeagleBoard-X15 and no additional configuration tweaking is needed.

This change also sets up the stage for future support of TI AM57xx EVMs
to the same base bootloader build.

Signed-off-by: Steve Kipisz <s-kipisz2@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoARM: OMAP4/5: Add generic board detection hook
Kipisz, Steven [Wed, 24 Feb 2016 18:30:57 +0000 (12:30 -0600)]
ARM: OMAP4/5: Add generic board detection hook

Many TI EVMs have capability to store relevant board information
such as DDR description in EEPROM. Further many pad configuration
variations can occur as part of revision changes in the platform.
In-order to support these at runtime, we for a board detection hook
which is available for override from board files that may desire to do
so.

NOTE: All TI EVMs are capable of detecting board information based on
early clocks that are configured. However, in case of additional needs
this can be achieved within the override logic from within the board
file.

Signed-off-by: Steve Kipisz <s-kipisz2@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoti: AM437x: Use generic EEPROM detection logic
Nishanth Menon [Wed, 24 Feb 2016 18:30:56 +0000 (12:30 -0600)]
ti: AM437x: Use generic EEPROM detection logic

Now that we have a generic TI eeprom logic which can be reused across
platforms, reuse the same.

This revision also includes fixes identified by Dave Gerlach
<d-gerlach@ti.com>

Cc: Dave Gerlach <d-gerlach@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Steven Kipisz <s-kipisz2@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoti: AM335x: Use generic EEPROM detection logic
Nishanth Menon [Wed, 24 Feb 2016 18:30:55 +0000 (12:30 -0600)]
ti: AM335x: Use generic EEPROM detection logic

Use the generic EEPROM detection logic instead of duplicating the AM
eeprom logic.

Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Steven Kipisz <s-kipisz2@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoARM: omap-common: Add standard access for board description EEPROM
Lokesh Vutla [Wed, 24 Feb 2016 18:30:54 +0000 (12:30 -0600)]
ARM: omap-common: Add standard access for board description EEPROM

Several TI EVMs have EEPROM that can contain board description information
such as revision, DDR definition, serial number, etc. In just about all
cases, these EEPROM are on the I2C bus and provides us the opportunity
to centralize the generic operations involved.

The on-board EEPROM on the BeagleBone Black, BeagleBone, AM335x EVM,
AM43x GP EVM, AM57xx-evm, BeagleBoard-X15 share the same format.
However, DRA-7* EVMs, OMAP4SDP use a modified format.

We hence introduce logic which is generic between these platforms
without enforcing any specific format. This allows the boards to use the
relevant format for operations that they might choose.

This module will compile for all TI SoC based boards when
CONFIG_TI_I2C_BOARD_DETECT is enabled to have optimal build times for
platforms that require this support.

It is important to note that this logic is fundamental to the board
configuration process such as DDR configuration which is needed in
SPL, hence cannot be part of the standard u-boot driver model (which
is available later in the process). Hence, to aid efficiency, the
eeprom contents are copied over to SRAM scratchpad memory area at the
first invocation to retrieve data.

To prevent churn with cases such as DRA7, where eeprom format maybe
incompatible, we introduce a generic common format in eeprom which
is made available over accessor functions for usage.

Special handling for BBG1 EEPROM had to be introduced thanks to the
weird eeprom rev contents used.

The follow on patches introduce the use of this library for AM335x,
AM437x, and AM57xx.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: Steve Kipisz <s-kipisz2@ti.com>
Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoARM: OMAP4/5: Centralize gpi2c_init
Kipisz, Steven [Wed, 24 Feb 2016 18:30:53 +0000 (12:30 -0600)]
ARM: OMAP4/5: Centralize gpi2c_init

Centralize gpi2c_init into omap_common from the sys_proto header so
that the information can be reused across SoCs.

Signed-off-by: Steve Kipisz <s-kipisz2@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agoARM: OMAP4/5: Centralize early clock initialization
Kipisz, Steven [Wed, 24 Feb 2016 18:30:52 +0000 (12:30 -0600)]
ARM: OMAP4/5: Centralize early clock initialization

Early clock initialization is currently done in two stages for OMAP4/5
SoCs. The first stage is the initialization of console clocks and
then we initialize basic clocks for functionality necessary for SoC
initialization and basic board functionality.

By splitting up prcm_init and centralizing this clock initialization,
we setup the code for follow on patches that can do board specific
initialization such as board detection which will depend on these
basic clocks.

As part of this change, since the early clock initialization
is centralized, we no longer need to expose the console clock
initialization.

NOTE: we change the sequence slightly by initializing console clocks
timer after the io settings are complete, but this is not expected
to have any functioanlity impact since we setup the basic IO drive
strength initialization as part of do_io_settings.

Signed-off-by: Steve Kipisz <s-kipisz2@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
8 years agospl: Support loading a FIT from MMC
Simon Glass [Tue, 23 Feb 2016 05:55:58 +0000 (22:55 -0700)]
spl: Support loading a FIT from MMC

Detect a FIT when loading from MMC and handle it using the new FIT SPL
support.

Signed-off-by: Simon Glass <sjg@chromium.org>
8 years agospl: Add a way to specify a list of device trees to include
Simon Glass [Tue, 23 Feb 2016 05:55:57 +0000 (22:55 -0700)]
spl: Add a way to specify a list of device trees to include

When building a FIT, more than one device tree can be included. The board
can select (at run-time) the one that it wants.

Add a Kconfig option to allow the list of devices trees (supported by the
board) to be specified.

When using SPL_LOAD_FIT, build u-boot.img in FIT format instead of the
legacy image format. Include all the listed device tree files in this FIT.

Signed-off-by: Simon Glass <sjg@chromium.org>
8 years agospl: Add an option to load a FIT containing U-Boot
Simon Glass [Tue, 23 Feb 2016 05:55:56 +0000 (22:55 -0700)]
spl: Add an option to load a FIT containing U-Boot

This provides a way to load a FIT containing U-Boot and a selection of device
tree files. The board can select the correct device tree by probing the
hardware. Then U-Boot is started with the selected device tree.

Signed-off-by: Simon Glass <sjg@chromium.org>
8 years agospl: Add a way for boards to select which device tree to load
Simon Glass [Tue, 23 Feb 2016 05:55:55 +0000 (22:55 -0700)]
spl: Add a way for boards to select which device tree to load

SPL calls this function with each device tree it can find in the FIT. The
board should implement this function, using whatever hardware detection it
can muster to determine the correct device tree.

Signed-off-by: Simon Glass <sjg@chromium.org>
8 years agomkimage: Bring data into the FIT before processing
Simon Glass [Tue, 23 Feb 2016 05:55:54 +0000 (22:55 -0700)]
mkimage: Bring data into the FIT before processing

Since we now support data outside the FIT image, bring it into the FIT image
first before we do any processing. This avoids adding new functionality to
the core FIT code for now.

Signed-off-by: Simon Glass <sjg@chromium.org>
8 years agomkimage: Support placing data outside the FIT
Simon Glass [Tue, 23 Feb 2016 05:55:53 +0000 (22:55 -0700)]
mkimage: Support placing data outside the FIT

One limitation of FIT is that all the data is 'inline' within it, using a
'data' property in each image node. This means that to find out what is in
the FIT it is necessary to scan the entire file. Once loaded it can be
scanned and then the images can be copied to the correct place in memory.

In SPL it can take a significant amount of time to copy images around in
memory. Also loading data that does not end up being used is wasteful. It
would be useful if the FIT were small, acting as a directory, with the
actual data stored elsewhere.

This allows SPL to load the entire FIT, without the images, then load the
images it wants later.

Add a -E option to mkimage to request that it output an 'external' FIT.

Signed-off-by: Simon Glass <sjg@chromium.org>
8 years agomkimage: Support adding device tree files to a FIT
Simon Glass [Tue, 23 Feb 2016 05:55:52 +0000 (22:55 -0700)]
mkimage: Support adding device tree files to a FIT

To make the auto-FIT feature useful we need to be able to provide a list of
device tree files on the command line for mkimage to add into the FIT. Add
support for this feature.

So far there is no support for hashing or verified boot using this method.
For those cases, a .its file must still be provided.

Signed-off-by: Simon Glass <sjg@chromium.org>
8 years agomkimage: Support automatic creating of a FIT without a .its
Simon Glass [Tue, 23 Feb 2016 05:55:51 +0000 (22:55 -0700)]
mkimage: Support automatic creating of a FIT without a .its

At present, when generating a FIT, mkimage requires a .its file containing
the structure of the FIT and referring to the images to be included.

Creating the .its file is a separate step that makes it harder to use FIT.
This is not required for creating legacy images.

Often the FIT is pretty standard, consisting of an OS image, some device
tree files and a single configuration. We can handle this case automatically
and avoid needing a .its file at all.

To start with, support automatically generate the FIT using a new '-f auto'
option. Initially this only supports adding a single image (e.g. a linux
kernel) and a single configuration.

Signed-off-by: Simon Glass <sjg@chromium.org>
8 years agoimage: Add functions to obtain short names
Simon Glass [Tue, 23 Feb 2016 05:55:50 +0000 (22:55 -0700)]
image: Add functions to obtain short names

Sometimes it is useful to obtain the short name for an Operating System,
architecture or compression mechanism. Provide functions for this.

Signed-off-by: Simon Glass <sjg@chromium.org>
8 years agotools: Add a function to obtain the size of a file
Simon Glass [Tue, 23 Feb 2016 05:55:49 +0000 (22:55 -0700)]
tools: Add a function to obtain the size of a file

This will be used in mkimage when working out the required size of the FIT
based on the files to be placed into it.

Signed-off-by: Simon Glass <sjg@chromium.org>
8 years agomkimage: Allow a FIT to include an image of any type
Simon Glass [Tue, 23 Feb 2016 05:55:48 +0000 (22:55 -0700)]
mkimage: Allow a FIT to include an image of any type

At present FIT images are set up by providing a device tree source file
which is a file with a .its extension. We want to support automatically
creating this file based on the image supplied to mkimage. This means that
even though the final file type is always IH_TYPE_FLATDT, the image inside
may be something else.

Signed-off-by: Simon Glass <sjg@chromium.org>
8 years agotools: Include fdt_sw.o in libfdt for mkimage
Simon Glass [Tue, 23 Feb 2016 05:55:47 +0000 (22:55 -0700)]
tools: Include fdt_sw.o in libfdt for mkimage

At present this file is omitted. It is used to build up a binary device
tree. We plan to do this in mkimage, so include this file in the build.

Signed-off-by: Simon Glass <sjg@chromium.org>
8 years agosunxi: Display the board model on start-up
Simon Glass [Tue, 23 Feb 2016 05:55:46 +0000 (22:55 -0700)]
sunxi: Display the board model on start-up

It is useful to know which sunxi board you are booting. Display this on
start-up to avoid confusion.

Signed-off-by: Simon Glass <sjg@chromium.org>
8 years agofdt: Allow libfdt to be used in SPL
Simon Glass [Tue, 23 Feb 2016 05:55:45 +0000 (22:55 -0700)]
fdt: Allow libfdt to be used in SPL

Add an option to enable libfdt in SPL. This can be useful when decoding
FIT files in SPL.

We need to make sure this option is not enabled in SPL by this change.
Also this option needs to be enabled in host builds. Si add a new
IMAGE_USE_LIBFDT #define which can be used in files that are built on the
host but must also build for U-Boot and SPL.

Signed-off-by: Simon Glass <sjg@chromium.org>
8 years agofdt: Adjust DEFAULT_DEVICE_TREE to device on OF_CONTROL
Simon Glass [Tue, 23 Feb 2016 05:55:44 +0000 (22:55 -0700)]
fdt: Adjust DEFAULT_DEVICE_TREE to device on OF_CONTROL

This option has no meaning without OF_CONTROL, so add a dependency.

Signed-off-by: Simon Glass <sjg@chromium.org>
8 years agoKconfig: Move CONFIG_FIT and related options to Kconfig
Simon Glass [Tue, 23 Feb 2016 05:55:43 +0000 (22:55 -0700)]
Kconfig: Move CONFIG_FIT and related options to Kconfig

There are already two FIT options in Kconfig but the CONFIG options are
still in the header files. We need to do a proper move to fix this.

Move these options to Kconfig and tidy up board configuration:

   CONFIG_FIT
   CONFIG_OF_BOARD_SETUP
   CONFIG_OF_SYSTEM_SETUP
   CONFIG_FIT_SIGNATURE
   CONFIG_FIT_BEST_MATCH
   CONFIG_FIT_VERBOSE
   CONFIG_OF_STDOUT_VIA_ALIAS
   CONFIG_RSA

Unfortunately the first one is a little complicated. We need to make sure
this option is not enabled in SPL by this change. Also this option is
enabled automatically in the host builds by defining CONFIG_FIT in the
image.h file. To solve this, add a new IMAGE_USE_FIT #define which can
be used in files that are built on the host but must also build for U-Boot
and SPL.

Note: Masahiro's moveconfig.py script is amazing.

Signed-off-by: Simon Glass <sjg@chromium.org>
[trini: Add microblaze change, various configs/ re-applies]
Signed-off-by: Tom Rini <trini@konsulko.com>
8 years agoARM: sheevaplug: drop unneded 'usb start' from boot command
Peter Korsgaard [Sun, 17 Jan 2016 17:23:44 +0000 (18:23 +0100)]
ARM: sheevaplug: drop unneded 'usb start' from boot command

The default bootcommand executes x_bootcmd_usb AFTER loading a kernel from
nand and just before executing it, which only slows down boot without adding
any functionality - So drop it.

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
8 years agoARM: sheevaplug: unbreak kernel bootargs / mtdparts command by dropping double mtdparts=
Peter Korsgaard [Sun, 17 Jan 2016 17:23:43 +0000 (18:23 +0100)]
ARM: sheevaplug: unbreak kernel bootargs / mtdparts command by dropping double mtdparts=

Commit 1e3d640316 (ARM: sheevaplug: redefine MTDPARTS) prepended mtdparts=
to the flash partition information in CONFIG_MTDPARTS, but it is used like
"mtdparts=" CONFIG_MTDPARTS - So we end up passing mtdparts=mtdparts=.. to
the kernel, confusing the cmdline partition parser.

Fix it by dropping the double 'mtdparts='.

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
8 years agoARM: sheevaplug: unbreak default environment
Peter Korsgaard [Sun, 17 Jan 2016 17:23:42 +0000 (18:23 +0100)]
ARM: sheevaplug: unbreak default environment

Commit 1e3d640316 (ARM: sheevaplug: redefine MTDPARTS) changed the mtdparts
part of the default environment, but dropped the trailing zero termination -
So the definition of x_bootcmd_kernel becomes part of the x_bootargs
variable.

Fix it by reintroducing the zero termination.

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
8 years agobuildman: Allow the toolchain architecture to be specified
Simon Glass [Mon, 7 Mar 2016 02:45:38 +0000 (19:45 -0700)]
buildman: Allow the toolchain architecture to be specified

At present the architecture is deduced from the toolchain filename. Allow it
to be specified by the caller.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Joe Hershberger <joe.hershberger@ni.com
8 years agobuildman: Allow the toolchain priority to be specified
Simon Glass [Mon, 7 Mar 2016 02:45:37 +0000 (19:45 -0700)]
buildman: Allow the toolchain priority to be specified

At present the priority of a toolchain is calculated from its filename based
on hard-coded rules. Allow it to be specified by the caller. We will use
this in a later patch. Also display the priority and provide a message when
it is overriden by another toolchain of higher priority.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Joe Hershberger <joe.hershberger@ni.com>
8 years agobuildman: Fix up a few code inconsistencies in toolchain.py
Simon Glass [Mon, 7 Mar 2016 02:45:35 +0000 (19:45 -0700)]
buildman: Fix up a few code inconsistencies in toolchain.py

Normally we use a single quote for strings unless there is a reason not to
(such as an embedded single quote). Fix a few counter-examples in this file.
Also add a missing function-argument comment.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Joe Hershberger <joe.hershberger@ni.com>
8 years agobuildman: patman: Fix -H when installed as a symlink
Simon Glass [Mon, 7 Mar 2016 02:45:34 +0000 (19:45 -0700)]
buildman: patman: Fix -H when installed as a symlink

It is convenient to install symlinks to buildman and patman in the search
patch, such as /usr/local/bin. But when this is done, the -H option fails to
work because it looks in the directory containing the symlink instead of its
target. Fix this.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Joe Hershberger <joe.hershberger@ni.com>
8 years agopatman: Add a missing space in GetMetaDataForList()
Simon Glass [Mon, 7 Mar 2016 02:45:33 +0000 (19:45 -0700)]
patman: Add a missing space in GetMetaDataForList()

Fix this nit to keep the code consistent.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Joe Hershberger <joe.hershberger@ni.com>
8 years agofdtgrep: Improve error handling with invalid device tree
Simon Glass [Mon, 7 Mar 2016 02:45:32 +0000 (19:45 -0700)]
fdtgrep: Improve error handling with invalid device tree

This tool requires that the aliases node be the first node in the tree. But
when it is not, it does not handle things gracefully. In fact it crashes.

Fix this, and add a more helpful error message.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reported-by: Masahiro Yamada <yamada.masahiro@socionext.com>
8 years agodm: serial: Remove duplicated carriage return character
Alison Wang [Wed, 2 Mar 2016 03:00:38 +0000 (11:00 +0800)]
dm: serial: Remove duplicated carriage return character

As the handling for carriage return and line feed is done in the common
DM driver serial-uclass.c, such handling in some serial DM drivers is
duplicated and need to be removed.

Signed-off-by: Alison Wang <alison.wang@nxp.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
8 years agoserial: Move carriage return before line feed for some serial drivers
Alison Wang [Wed, 2 Mar 2016 03:00:37 +0000 (11:00 +0800)]
serial: Move carriage return before line feed for some serial drivers

In general, a carriage return needs to execute before a line feed.
The patch is to change some serial drivers based on this rule, such
as serial_mxc.c, serial_pxa.c, serial_s3c24x0.c and usbtty.c.

Signed-off-by: Alison Wang <alison.wang@nxp.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
8 years agodm: serial-uclass: Move a carriage return before a line feed
Alison Wang [Wed, 2 Mar 2016 03:00:36 +0000 (11:00 +0800)]
dm: serial-uclass: Move a carriage return before a line feed

In general, a carriage return needs to execute before a line feed. The
patch is to change serial DM driver serial-uclass.c based on this rule.

Signed-off-by: Alison Wang <alison.wang@nxp.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
8 years agoDrop CONFIG_CRAMFS_CMDLINE
Simon Glass [Mon, 29 Feb 2016 22:26:05 +0000 (15:26 -0700)]
Drop CONFIG_CRAMFS_CMDLINE

This option doesn't do anything. Drop it.

Signed-off-by: Simon Glass <sjg@chromium.org>
Suggested-by: Bin Meng <bmeng.cn@gmail.com>
8 years agopart: Rename test_part_xx() and print_part_xx()
Simon Glass [Mon, 29 Feb 2016 22:26:04 +0000 (15:26 -0700)]
part: Rename test_part_xx() and print_part_xx()

Rename these functions so that part_ is at the start. This more clearly
identifies these functions as partition functions.

Signed-off-by: Simon Glass <sjg@chromium.org>
8 years agodm: usb: Clean up USB after each test
Simon Glass [Mon, 29 Feb 2016 22:26:02 +0000 (15:26 -0700)]
dm: usb: Clean up USB after each test

The USB subsystem has a few counters that need to be reset since they are
stored in static variables rather than driver-model data. An example is
usb_max_devs. Ultimately we should move this data into the USB uclass.

For now, make sure that USB is reset after each test, so that the counters
go back to zero.

Note: this is not a perfect solution: It a USB test fails it will exit
immediately and leave USB un-reset. The impact here is that it may cause
subsequence test failures in the same run.

Signed-off-by: Simon Glass <sjg@chromium.org>
8 years agodm: usb: Convert USB storage to use driver-model for block devs
Simon Glass [Mon, 29 Feb 2016 22:25:58 +0000 (15:25 -0700)]
dm: usb: Convert USB storage to use driver-model for block devs

Update this code to support CONFIG_BLK. Each USB storage device can have
one or more block devices as children, each one representing a LUN
(logical unit) of the USB device.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: sandbox: Add driver-model block-device support for sandbox
Simon Glass [Mon, 29 Feb 2016 22:25:57 +0000 (15:25 -0700)]
dm: sandbox: Add driver-model block-device support for sandbox

Update the host driver to support driver model for block devices. A future
commit will remove the old code, but for now it is useful to be able to use
it both with and without CONFIG_BLK.

Signed-off-by: Simon Glass <sjg@chromium.org>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: sandbox: Prepare block driver for driver-model conversion
Simon Glass [Mon, 29 Feb 2016 22:25:56 +0000 (15:25 -0700)]
dm: sandbox: Prepare block driver for driver-model conversion

Make a few minor changes to make it easier to add driver-model support.

Signed-off-by: Simon Glass <sjg@chromium.org>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: blk: Add a block-device uclass
Simon Glass [Mon, 29 Feb 2016 22:25:55 +0000 (15:25 -0700)]
dm: blk: Add a block-device uclass

Add a uclass for block devices. These provide block-oriented data access,
supporting reading, writing and erasing of whole blocks.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: usb: Tidy up storage code ready for driver model conversion
Simon Glass [Mon, 29 Feb 2016 22:25:54 +0000 (15:25 -0700)]
dm: usb: Tidy up storage code ready for driver model conversion

Adjust a few things so that the addition of driver-models support involved
adding code rather than also changing it. This makes the patches easier to
review.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: usb: Avoid exceeding available array size for storage devices
Simon Glass [Mon, 29 Feb 2016 22:25:53 +0000 (15:25 -0700)]
dm: usb: Avoid exceeding available array size for storage devices

The limit on storage devices is USB_MAX_STOR_DEV but we use one extra
element while probing to see if a device is a storage device. Avoid this,
since it causes memory corruption.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: block: Adjust device calls to go through helpers function
Simon Glass [Mon, 29 Feb 2016 22:25:52 +0000 (15:25 -0700)]
dm: block: Adjust device calls to go through helpers function

To ease conversion to driver model, add helper functions which deal with
calling each block device method. With driver model we can reimplement these
functions with the same arguments.

Use inline functions to avoid increasing code size on some boards.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: block: Rename device number member dev to devnum
Simon Glass [Mon, 29 Feb 2016 22:25:51 +0000 (15:25 -0700)]
dm: block: Rename device number member dev to devnum

This is a device number, and we want to use 'dev' to mean a driver model
device. Rename the member.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: sandbox: Enable cbfs and cramfs
Simon Glass [Mon, 29 Feb 2016 22:25:50 +0000 (15:25 -0700)]
dm: sandbox: Enable cbfs and cramfs

Enable these two filesystems to provide better build coverage in sandbox.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: cbfs: Fix handling of invalid type
Simon Glass [Mon, 29 Feb 2016 22:25:49 +0000 (15:25 -0700)]
dm: cbfs: Fix handling of invalid type

The comment for file_cbfs_type() says that it returns 0 for an invalid type.
The code appears to check for -1, except that it uses an unsigned variable
to store the type. This results in a warning on 64-bit machines.

Adjust it to make the meaning clearer. Continue to handle the -1 case since
it may be needed.

Signed-off-by: Simon Glass <sjg@chromium.org>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: part: Rename some partition functions
Simon Glass [Mon, 29 Feb 2016 22:25:48 +0000 (15:25 -0700)]
dm: part: Rename some partition functions

Rename three partition functions so that they start with part_. This makes
it clear what they relate to.

Signed-off-by: Simon Glass <sjg@chromium.org>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: part: Convert partition API use to linker lists
Simon Glass [Mon, 29 Feb 2016 22:25:47 +0000 (15:25 -0700)]
dm: part: Convert partition API use to linker lists

We can use linker lists instead of explicitly declaring each function.
This makes the code shorter by avoiding switch() statements and lots of
header file declarations.

While this does clean up the code it introduces a few code issues with SPL.
SPL never needs to print partition information since this all happens from
commands. SPL mostly doesn't need to obtain information about a partition
either, except in a few cases. Add these cases so that the code will be
dropped from each partition driver when not needed. This avoids code bloat.

I think this is still a win, since it is not a bad thing to be explicit
about which features are used in SPL. But others may like to weigh in.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: sandbox: Enable all partition types
Simon Glass [Mon, 29 Feb 2016 22:25:46 +0000 (15:25 -0700)]
dm: sandbox: Enable all partition types

It is useful to have sandbox build as much code as possible to avoid having
to build every board to detect build errors. Also we may add tests for some
more partition types at some point.

Enable all partition types in sandbox.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: part: Add a cast to avoid a compiler warning
Simon Glass [Mon, 29 Feb 2016 22:25:45 +0000 (15:25 -0700)]
dm: part: Add a cast to avoid a compiler warning

In part_amiga.c the name is unsigned but bcpl_strcpy() requires a signed
pointer. Add a cast to fix the warning.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: blk: Rename get_device_and_partition()
Simon Glass [Mon, 29 Feb 2016 22:25:44 +0000 (15:25 -0700)]
dm: blk: Rename get_device_and_partition()

Rename this function to blk_get_device_part_str(). This is a better name
because it makes it clear that the function returns a block device and
parses a string.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: blk: Rename get_device() to blk_get_device_by_str()
Simon Glass [Mon, 29 Feb 2016 22:25:43 +0000 (15:25 -0700)]
dm: blk: Rename get_device() to blk_get_device_by_str()

The current name is too generic. The function returns a block device based
on a provided string. Rename it to aid searching and make its purpose
clearer. Also add a few comments.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: blk: Rename get_dev() to blk_get_dev()
Simon Glass [Mon, 29 Feb 2016 22:25:42 +0000 (15:25 -0700)]
dm: blk: Rename get_dev() to blk_get_dev()

The current name is too generic. Add a 'blk_' prefix to aid searching and
make its purpose clearer.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: blk: Add comments to a few functions
Simon Glass [Mon, 29 Feb 2016 22:25:41 +0000 (15:25 -0700)]
dm: blk: Add comments to a few functions

The block interface is not well documented in the code. Pick two important
functions and add comments.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: blk: Convert interface type to an enum
Simon Glass [Mon, 29 Feb 2016 22:25:40 +0000 (15:25 -0700)]
dm: blk: Convert interface type to an enum

Since these are sequentially numbered it makes sense to use an enum. It
avoids having to maintain the maximum value, and provides a type we can use
if it is useful.

In fact the maximum value is not used. Rename it to COUNT, since MAX suggests
it is the maximum valid value, but it is not.

Signed-off-by: Simon Glass <sjg@chromium.org>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: Add a new header for block devices
Simon Glass [Mon, 29 Feb 2016 22:25:39 +0000 (15:25 -0700)]
dm: Add a new header for block devices

At present block devices are tied up with partitions. But not all block
devices have partitions within them. They are in fact separate concepts.

Create a separate blk.h header file for block devices.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: part: Drop the common.h header
Simon Glass [Mon, 29 Feb 2016 22:25:38 +0000 (15:25 -0700)]
dm: part: Drop the common.h header

We should not include <common.h> in header files. Each C file should include
it if needed.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: fdtdec: Correct a sandbox build warning
Simon Glass [Mon, 29 Feb 2016 22:25:37 +0000 (15:25 -0700)]
dm: fdtdec: Correct a sandbox build warning

Adjust the cast to avoid a warning when stdint.h is used.

Signed-off-by: Simon Glass <sjg@chromium.org>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: part: Correct a sandbox build warning
Simon Glass [Mon, 29 Feb 2016 22:25:36 +0000 (15:25 -0700)]
dm: part: Correct a sandbox build warning

Adjust the cast to avoid a warning when stdint.h is used.

Signed-off-by: Simon Glass <sjg@chromium.org>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: pci: Break out the common region display code
Simon Glass [Mon, 29 Feb 2016 22:25:35 +0000 (15:25 -0700)]
dm: pci: Break out the common region display code

Each region is displayed in almost the same way. Break out this common code
into its own function.

Signed-off-by: Simon Glass <sjg@chromium.org>
Tested-by: Stephen Warren <swarren@nvidia.com>
8 years agodm: Drop the block_dev_desc_t typedef
Simon Glass [Mon, 29 Feb 2016 22:25:34 +0000 (15:25 -0700)]
dm: Drop the block_dev_desc_t typedef

Use 'struct' instead of a typdef. Also since 'struct block_dev_desc' is long
and causes 80-column violations, rename it to struct blk_desc.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Stephen Warren <swarren@nvidia.com>