platform/kernel/u-boot.git
12 years agoomap3_evm: Let CONFIG_EFI_PARTITION be set for SPL
Tom Rini [Thu, 13 Dec 2012 20:58:27 +0000 (13:58 -0700)]
omap3_evm: Let CONFIG_EFI_PARTITION be set for SPL

The #ifdef here is not enough to stop part_efi.c from being built, only
being unused.  And with recent changes this now leads to warnings.  The
easiest solution here is to just let the garbage collection at link time
do its job.

Signed-off-by: Tom Rini <trini@ti.com>
12 years agoenv: Handle write-once ethaddr and serial# generically
Joe Hershberger [Wed, 12 Dec 2012 04:16:37 +0000 (22:16 -0600)]
env: Handle write-once ethaddr and serial# generically

Use the variable access flags to implement the protection for ethaddr
and serial# instead of hard-coding them.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
12 years agoenv: Implement the env delete command
Joe Hershberger [Wed, 12 Dec 2012 04:16:36 +0000 (22:16 -0600)]
env: Implement the env delete command

Implement a way to delete more than one variable at a time.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
12 years agoenv: Add setenv force support
Joe Hershberger [Wed, 12 Dec 2012 04:16:35 +0000 (22:16 -0600)]
env: Add setenv force support

Now that we have support for permissions, add a way to override them.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
12 years agoenv: Add support for access control to .flags
Joe Hershberger [Wed, 12 Dec 2012 04:16:34 +0000 (22:16 -0600)]
env: Add support for access control to .flags

Add support for read-only, write-once, and change-default.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
12 years agoenv: Add a command to display details about env flags
Joe Hershberger [Wed, 12 Dec 2012 04:16:33 +0000 (22:16 -0600)]
env: Add a command to display details about env flags

Similar to the env callback command, this will show details about the
options available, the static list, and the currently active variables.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
12 years agotools/env: Add environment variable flags support
Joe Hershberger [Wed, 12 Dec 2012 04:16:32 +0000 (22:16 -0600)]
tools/env: Add environment variable flags support

Currently just validates variable types as decimal, hexidecimal,
boolean, ip address, and mac address.  Call
env_acl_validate_setenv_params() from setenv() in fw_env.c.

If the entry is not found in the env .flags, then look in the static
one. This allows the env to override the static definitions, but prevents
the need to have every definition in the environment distracting you.

Need to build in _ctype for isdigit for Linux.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
12 years agoenv: Add environment variable flags
Joe Hershberger [Wed, 12 Dec 2012 04:16:31 +0000 (22:16 -0600)]
env: Add environment variable flags

Currently just validates variable types as decimal, hexidecimal,
boolean, ip address, and mac address.

If the entry is not found in the env ".flags", then look in the static
one. This allows the env to override the static definitions, but prevents
the need to have every definition in the environment distracting you.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
12 years agoenv: Add a silent env handler
Joe Hershberger [Wed, 12 Dec 2012 04:16:30 +0000 (22:16 -0600)]
env: Add a silent env handler

The silent variable now updates the global data flag anytime it is
changed as well as after the env relocation (in case its value is
different from the default env in such cases as NAND env)

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
12 years agoenv: Add a console env handler
Joe Hershberger [Wed, 12 Dec 2012 04:16:29 +0000 (22:16 -0600)]
env: Add a console env handler

Remove the hard-coded console handler and use a callback instead

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
12 years agoenv: Add a loadaddr env handler
Joe Hershberger [Wed, 12 Dec 2012 04:16:28 +0000 (22:16 -0600)]
env: Add a loadaddr env handler

Remove the hard-coded loadaddr handler and use a callback instead

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
12 years agoenv: Add a baudrate env handler
Joe Hershberger [Wed, 12 Dec 2012 04:16:27 +0000 (22:16 -0600)]
env: Add a baudrate env handler

Remove the hard-coded baudrate handler and use a callback instead

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
12 years agoenv: Add a bootfile env handler
Joe Hershberger [Wed, 12 Dec 2012 04:16:26 +0000 (22:16 -0600)]
env: Add a bootfile env handler

Remove the hard-coded bootfile handler and use a callback instead

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
12 years agoenv: Add a command to view callbacks
Joe Hershberger [Wed, 12 Dec 2012 04:16:25 +0000 (22:16 -0600)]
env: Add a command to view callbacks

The callbacks can be bound, but are otherwise invisible.  Add a command
to show what callbacks are available.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
!!! fix callback command

12 years agoenv: Add support for callbacks to environment vars
Joe Hershberger [Wed, 12 Dec 2012 04:16:24 +0000 (22:16 -0600)]
env: Add support for callbacks to environment vars

Add support for per-variable callbacks to the "hashtable" functions.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
!!!fix comment in callback

12 years agoenv: Hide '.' variables in env print by default
Joe Hershberger [Wed, 12 Dec 2012 04:16:23 +0000 (22:16 -0600)]
env: Hide '.' variables in env print by default

When printing all variables with env print, don't print variables that
begin with '.'.  If env print is called with a '-a' switch, then
include variables that begin with '.' (just like the ls command).

Variables printed explicitly will be printed even without the -a.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
12 years agoenv: Use getenv_yesno() more generally
Joe Hershberger [Wed, 12 Dec 2012 04:16:22 +0000 (22:16 -0600)]
env: Use getenv_yesno() more generally

Move the getenv_yesno() to env_common.c and change most checks for
'y' or 'n' to use this helper.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
12 years agoenv: Refactor apply into change_ok
Joe Hershberger [Wed, 12 Dec 2012 04:16:21 +0000 (22:16 -0600)]
env: Refactor apply into change_ok

Move the read of the old value to inside the check function.  In some
cases it can be avoided all together and at the least the code is only
called from one place.

Also name the function and the callback to more clearly describe what
it does.

Pass the ENTRY instead of just the name for direct access to the whole
data structure.

Pass an enum to the callback that specifies the operation being approved.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
12 years agoenv: Consolidate common code in hsearch_r()
Joe Hershberger [Wed, 12 Dec 2012 04:16:20 +0000 (22:16 -0600)]
env: Consolidate common code in hsearch_r()

The same chunk of code was replicated in two places and the following
changes will make that chunk grow a bit, so combine into a static func.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
12 years agoenv: Refactor do_apply to a flag
Joe Hershberger [Wed, 12 Dec 2012 04:16:19 +0000 (22:16 -0600)]
env: Refactor do_apply to a flag

Use a flag in hsearch_r for insert mode passed from import to allow the
behavior be different based on use.

Now that "do_check" is called for all imports, ensure console init is
complete before updating the console on relocation import

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
12 years agoMake linux kernel string funcs available to tools
Joe Hershberger [Wed, 12 Dec 2012 04:16:18 +0000 (22:16 -0600)]
Make linux kernel string funcs available to tools

isspace() and strim() are not in the typical user-mode string.h, so
put them in a separate compilation unit so that they can be built into
tools that need them independent of the other common string functions.

This allows code shared by u-boot and the linux user-mode tools to link.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
12 years agogpt: Enable support for GPT partition table restoration at Samsung's Trats
Lukasz Majewski [Tue, 11 Dec 2012 10:09:48 +0000 (11:09 +0100)]
gpt: Enable support for GPT partition table restoration at Samsung's Trats

Enable support for GPT partition table restoration at Samsung's Trats
development board.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
CC: Minkyu Kang <mk7.kang@samsung.com>
12 years agogpt: Support for new "gpt" command
Piotr Wilczek [Tue, 11 Dec 2012 10:09:47 +0000 (11:09 +0100)]
gpt: Support for new "gpt" command

New command - "gpt" is supported. It restores the GPT partition table.
It looks into the given environment variable for partitions definition.
It can be enabled at target configuration file with CONFIG_CMD_GPT.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Piotr Wilczek <p.wilczek@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
12 years agogpt: Support for GPT (GUID Partition Table) restoration
Lukasz Majewski [Tue, 11 Dec 2012 10:09:46 +0000 (11:09 +0100)]
gpt: Support for GPT (GUID Partition Table) restoration

The restoration of GPT table (both primary and secondary) is now possible.
Function 'gpt_restore' presents example of partition restoration process.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Piotr Wilczek <p.wilczek@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
12 years agogpt: The leXX_to_int() calls replaced with ones defined at <compiler.h>
Chang Hyun Park [Tue, 11 Dec 2012 10:09:45 +0000 (11:09 +0100)]
gpt: The leXX_to_int() calls replaced with ones defined at <compiler.h>

Custom definitions of le_XX_to_int functions have been replaced with
standard ones, defined at <compiler.h>

Replacement of several GPT related structures members with ones
indicating its endianness and proper size.

Signed-off-by: Chang Hyun Park <heartinpiece@outlook.com>
Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
12 years agogpt:doc: GPT (GUID Partition Table) documentation
Lukasz Majewski [Tue, 11 Dec 2012 10:09:44 +0000 (11:09 +0100)]
gpt:doc: GPT (GUID Partition Table) documentation

Documentation of the GPT format.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
12 years agopart:efi: Move part_efi.h file to ./include
Lukasz Majewski [Tue, 11 Dec 2012 10:09:43 +0000 (11:09 +0100)]
part:efi: Move part_efi.h file to ./include

This move is necessary to export gpt header and GPT partition entries to be
used with other commands or subsystems.
Additionally the part_efi.h file has been cleaned-up to supress checkpatch's
warnings.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
12 years agovsprintf:fix: Change type returned by ustrtoul
Lukasz Majewski [Tue, 11 Dec 2012 10:09:42 +0000 (11:09 +0100)]
vsprintf:fix: Change type returned by ustrtoul

The ustrtoul shall convert string defined size (e.g. 1GiB) to unsigned
long type (as its name implies).

Up till now it had returned int, which might cause problems with large
numbers (GiB range), when interpreted as U2 signed numbers.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
12 years agoMerge branch 'master' of git://git.denx.de/u-boot-mips
Tom Rini [Wed, 12 Dec 2012 13:51:02 +0000 (06:51 -0700)]
Merge branch 'master' of git://git.denx.de/u-boot-mips

12 years agomips: serial: Fix busted manual relocation
Joe Hershberger [Tue, 11 Dec 2012 17:52:50 +0000 (17:52 +0000)]
mips: serial: Fix busted manual relocation

serial_initialize() must be called after relocation to adjust the
pointers to putc(), getc(), etc.  This is busted ever since the
serial driver-model-ification series.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
12 years agoMIPS: constify mips_io_port_base
Daniel Schwierzeck [Wed, 12 Dec 2012 12:13:48 +0000 (13:13 +0100)]
MIPS: constify mips_io_port_base

mips_io_port_base is exported as 'extern const unsigned long mips_io_port_base;'
in arch/mips/include/asm/io.h. Thus make the variable const too.

Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
12 years agocmd:spl:fix: Prevent from a build error on boards, which don't support FDT
Łukasz Majewski [Thu, 6 Dec 2012 05:23:38 +0000 (05:23 +0000)]
cmd:spl:fix: Prevent from a build error on boards, which don't support FDT

Do not compile in FDT related code, when it is not supported.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Acked-by: Stefano Babic <sbabic@denx.de>
12 years agoexynos: Enable hashing functions and EDID for smdk5250
Simon Glass [Wed, 5 Dec 2012 14:46:45 +0000 (14:46 +0000)]
exynos: Enable hashing functions and EDID for smdk5250

Enable SHA1/SHA256 hashing and the hash command. Also enable EDID
support for reading from an LCD.

Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agotpm: Add TPM stress test
Luigi Semenzato [Wed, 5 Dec 2012 14:46:44 +0000 (14:46 +0000)]
tpm: Add TPM stress test

Add a simple command to stress-test a TPM (Trusted Platform Module).

Signed-off-by: Luigi Semenzato <semenzato@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agoconsole: Enable function to display console info
Simon Glass [Wed, 5 Dec 2012 14:46:43 +0000 (14:46 +0000)]
console: Enable function to display console info

The CONFIG_SYS_CONSOLE_INFO_QUIET option should suppress the console
information, but allow boards to display it later if required. Adjust
the code to support this.

This is used to avoid printing the information while the LCD display
is not ready, since it only becomes ready when stdio init is complete.

Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agoAdd console command to access io space registers
Vadim Bendebury [Wed, 5 Dec 2012 14:46:42 +0000 (14:46 +0000)]
Add console command to access io space registers

Provide u-boot console functions to access IO space registers. A no
thrills implementation, accessing one register at a time.

For example:
    boot > iod 80
    0080: 00000094
    boot > iod.w 80
    0080: 0094
    boot > iod.b 80
    0080: 94
    boot > iow.b 0x80 12
    boot > iod 0x80
    0080: 00000012

Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agofdt: edid: Enable fdt_add_edid() function when CONFIG_LCD defined
Tom Wai-Hong Tam [Wed, 5 Dec 2012 14:46:41 +0000 (14:46 +0000)]
fdt: edid: Enable fdt_add_edid() function when CONFIG_LCD defined

This function can be used for LCDs as well as monitors.

Signed-off-by: Tom Wai-Hong Tam <waihong@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agoedid: Add I2C command for printing the EDID
Tom Wai-Hong Tam [Wed, 5 Dec 2012 14:46:40 +0000 (14:46 +0000)]
edid: Add I2C command for printing the EDID

Add a single command to read the EDID information over I2C.

For example:

SMDK5250 # i2c dev 7
Setting bus to 7
SMDK5250 # i2c edid 50
EDID version: 1.4
Product ID code: 305c
Manufacturer: AUO
Serial number: 00000000
Manufactured in week: 0 year: 2011
Video input definition: digital signal, voltage level 0, blank to black
Monitor is non-RGB
Maximum visible display size: 26 cm x 14 cm
Power management features: no active off, no suspend, no standby
Estabilished timings:
Standard timings:
        1366x768        60 Hz (detailed)
        1366x768        60 Hz (detailed)
Monitor ID: 2VD2K.B116XW

Signed-off-by: Tom Wai-Hong Tam <waihong@chromium.org>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agoedid: Library of EDID decode and print
Tom Wai-Hong Tam [Wed, 5 Dec 2012 14:46:39 +0000 (14:46 +0000)]
edid: Library of EDID decode and print

This implements a library for accessing EDID data from an LCD panel.
This is used to obtain information about the panel such as its
resolution and type.

This is a tidied-up version of the original code pulled from
https://github.com/ynezz/u-boot-edid.

The changes we made are:
 - removed bit fields in the struct;
 - removed endianness cases in the struct;
 - fixed some wrong definitions;
 - fixed to fit 80 columns;
 - fixed some code styles.

Signed-off-by: Tom Wai-Hong Tam <waihong@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agoAdd hash command to perform hashing using various algorithms
Simon Glass [Wed, 5 Dec 2012 14:46:38 +0000 (14:46 +0000)]
Add hash command to perform hashing using various algorithms

This new command supports hashing SHA1 and SHA256. It could be extended
to others such as MD5 and the CRC algorithms. The syntax is modeled on
those:

   hash <algorithm> <address> <length> [*<dest_addr> | <dest_envvar>]

to calculate a hash, and:

   hash -v <algorithm> <address> <length> [*<verify_addr> | <verify_envvar>]

to verify a hash.

Use CONFIG_CMD_HASH to enable the command, CONFIG_SHA1 to enable SHA1 and
CONFIG_SHA256 to enable SHA256.

The existing sha1sum command remains.

Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agosha1sum: Use generic hash layer
Simon Glass [Wed, 5 Dec 2012 14:46:37 +0000 (14:46 +0000)]
sha1sum: Use generic hash layer

Update the code to use the hash layer instead of local code.

Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agoAdd generic hash API
Simon Glass [Wed, 5 Dec 2012 14:46:36 +0000 (14:46 +0000)]
Add generic hash API

We have a SHA1 command and want to add a SHA256 command also. Instead of
duplicating the code, create a generic hash API which can process
commands for different algorithms.

Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agoAdd strcasecmp() and strncasecmp()
Simon Glass [Wed, 5 Dec 2012 14:46:35 +0000 (14:46 +0000)]
Add strcasecmp() and strncasecmp()

strncasecmp() is present as strnicmp() but disabled. Make it available
and define strcasecmp() also. There is a only a small performance penalty
to having strcasecmp() call strncasecmp(), so do this instead of a
standalone function, to save code space.

Update the prototype in arch-specific headers as needed to avoid warnings.

Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agosha256: Use const where possible and add watchdog function
Simon Glass [Wed, 5 Dec 2012 14:46:34 +0000 (14:46 +0000)]
sha256: Use const where possible and add watchdog function

In preparation for making the hash function common, we may as well use
const where we can.

Also add a watchdog version of the hashing function.

Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agosha1: Use const where possible, and unsigned for input len
Simon Glass [Wed, 5 Dec 2012 14:46:33 +0000 (14:46 +0000)]
sha1: Use const where possible, and unsigned for input len

In preparation for making the hash function common, we may as well use
const where we can. Also the input length cannot be negative, but may
be very large, so use unsigned.

Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agostdio: remove useless strncpy
Vincent Palatin [Wed, 5 Dec 2012 14:46:32 +0000 (14:46 +0000)]
stdio: remove useless strncpy

The name is already copied when we memcpy() the whole structure.

This is because struct stdio_dev has this field:

char name[16]; /* Device name */

So the data is inline, rather than being a pointer.

Signed-off-by: Vincent Palatin <vpalatin@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agoFix use of conditional LMB
Simon Glass [Wed, 5 Dec 2012 14:46:31 +0000 (14:46 +0000)]
Fix use of conditional LMB

This code was not guarded with CONFIG_LMB so failed to build on x86.

Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agoAdd a command to read raw blocks from a partition
Kenneth Waters [Wed, 5 Dec 2012 14:46:30 +0000 (14:46 +0000)]
Add a command to read raw blocks from a partition

Sometimes data is on a block device and within a partition, but not in a
particular filesystem.

This commands permits reading raw data from a partition.

Signed-off-by: Kenneth Waters <kwaters@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agoAdd gettime command
Anton Staaf [Wed, 5 Dec 2012 14:46:29 +0000 (14:46 +0000)]
Add gettime command

Gettime returns the current timer value.  If CONFIG_SYS_HZ is defined
then the timer value is also converted to seconds.

Tegra20 (SeaBoard) # gettime
Timer val: 7754
Seconds : 7
Remainder : 754
sys_hz = 1000

There has been some discussion about whether this is useful enough to
be included in U-Boot. The following boards do not have CONFIG_SYS_HZ
defined:

M52277EVB
M52277EVB_stmicro
M53017EVB
M54418TWR
M54418TWR_nand_mii
M54418TWR_nand_rmii
M54418TWR_nand_rmii_lowfreq
M54418TWR_serial_mii
M54418TWR_serial_rmii

Signed-off-by: Anton Staaf <robotboy@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agoAdd new bootstage step for the main loop
Simon Glass [Wed, 5 Dec 2012 14:46:28 +0000 (14:46 +0000)]
Add new bootstage step for the main loop

Mark when we get to the main loop.

Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agogpio: remove duplicate function signature
Nikita Kiryanov [Mon, 26 Nov 2012 23:06:32 +0000 (23:06 +0000)]
gpio: remove duplicate function signature

gpio_request() appears twice in asm-generic/gpio.h
Remove one of the definitions.

Signed-off-by: Nikita Kiryanov <nikita@compulab.co.il>
12 years agodesignware_i2c.h: Define IC_CLK only if not already defined in config file
Armando Visconti [Thu, 6 Dec 2012 00:04:19 +0000 (00:04 +0000)]
designware_i2c.h: Define IC_CLK only if not already defined in config file

Signed-off-by: Armando Visconti <armando.visconti@st.com>
12 years agodesignware_i2c.h: Fixed the correct values for SCL low/high time
Armando Visconti [Thu, 6 Dec 2012 00:04:18 +0000 (00:04 +0000)]
designware_i2c.h: Fixed the correct values for SCL low/high time

Signed-off-by: Armando Visconti <armando.visconti@st.com>
12 years agodesignware_i2c: Fixed the setting of the i2c bus speed
Armando Visconti [Thu, 6 Dec 2012 00:04:17 +0000 (00:04 +0000)]
designware_i2c: Fixed the setting of the i2c bus speed

There are three couple (hcnt/lcnt) of registers for each
speed (SS/FS/HS). The driver needs to set the proper couple
of regs according to what speed we are setting.

Signed-off-by: Armando Visconti <armando.visconti@st.com>
12 years agodesignware_i2c: Added s/w generation of stop bit
Armando Visconti [Thu, 6 Dec 2012 00:04:16 +0000 (00:04 +0000)]
designware_i2c: Added s/w generation of stop bit

In the newer versions of designware i2c IP there is the possibility
of configuring it with IC_EMPTYFIFO_HOLD_MASTER_EN=1, which basically
requires the s/w to generate the stop bit condition directly, as
the h/w will not automatically generate it when TX_FIFO is empty.

To avoid generation of an extra 0x0 byte sent as data, the
IC_STOP command must be sent along with the last IC_CMD.

This patch always writes bit[9] of ic_data_cmd even in the
older versions, assuming that it is a noop there.

Signed-off-by: Armando Visconti <armando.visconti@st.com>
12 years agodesignware_i2c.c: Added the support for MULTI_BUS
Armando Visconti [Thu, 6 Dec 2012 00:04:15 +0000 (00:04 +0000)]
designware_i2c.c: Added the support for MULTI_BUS

This patch adds the capability to switch between 10
different I2C busses (from 0 to 9).

Signed-off-by: Armando Visconti <armando.visconti@st.com>
12 years agodrivers:i2c: Modify I2C driver for Exynos4
Piotr Wilczek [Tue, 20 Nov 2012 02:19:05 +0000 (02:19 +0000)]
drivers:i2c: Modify I2C driver for Exynos4

This patch modifies the S3C i2c driver to support both Exynos4 and Exynos5

Signed-off-by: Piotr Wilczek <p.wilczek@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
CC: Minkyu Kang <mk7.kang@samsung.com>
12 years agoexynos:pinmux: Add pinmux support for i2c
Piotr Wilczek [Tue, 20 Nov 2012 02:19:04 +0000 (02:19 +0000)]
exynos:pinmux: Add pinmux support for i2c

This patch add pinmux for I2C for Exynos4

Signed-off-by: Piotr Wilczek <p.wilczek@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
CC: Minkyu Kang <mk7.kang@samsung.com>
12 years agoexynos:cpu: Add Exynos4 I2C spacing
Piotr Wilczek [Tue, 20 Nov 2012 02:19:03 +0000 (02:19 +0000)]
exynos:cpu: Add Exynos4 I2C spacing

This patch add the spacing for i2c for Exynos4

Signed-off-by: Piotr Wilczek <p.wilczek@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
CC: Minkyu Kang <mk7.kang@samsung.com>
12 years agoexynos:clock: Add i2c clock
Piotr Wilczek [Tue, 20 Nov 2012 02:19:02 +0000 (02:19 +0000)]
exynos:clock: Add i2c clock

This patch adds i2c clock for Exynos4

Signed-off-by: Piotr Wilczek <p.wilczek@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
CC: Minkyu Kang <mk7.kang@samsung.com>
12 years agoomap24xx_i2c: Handle OMAP5 like OMAP2,3,4
Vincent Stehlé [Mon, 3 Dec 2012 06:07:21 +0000 (06:07 +0000)]
omap24xx_i2c: Handle OMAP5 like OMAP2,3,4

OMAP5 has 8b i2c data register field, like OMAP2, 3 and 4. Handle in the same
way. This fixes the following error on OMAP5:

  OMAP5430 EVM # mmc rescan
  timed out in wait_for_bb: I2C_STAT=1410
  twl6035: could not turn on LDO9.

Signed-off-by: Vincent Stehlé <v-stehle@ti.com>
12 years agomxs: i2c: Implement algorithm to set up arbitrary i2c speed
Marek Vasut [Fri, 30 Nov 2012 18:17:07 +0000 (18:17 +0000)]
mxs: i2c: Implement algorithm to set up arbitrary i2c speed

This algorithm computes the values of TIMING{0,1,2} registers for the
MX28 I2C block. This algorithm was derived by using a scope, but the
result seems correct.

The resulting values programmed into the registers do not correlate
with the contents in datasheet. When using the values from the datasheet,
the I2C clock were completely wrong.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Fabio Estevam <fabio.estevam@freescale.com>
Cc: Wolfgang Denk <wd@denx.de>
12 years agomxs: i2c: Restore speed setting after block reset
Marek Vasut [Fri, 30 Nov 2012 18:17:06 +0000 (18:17 +0000)]
mxs: i2c: Restore speed setting after block reset

The I2C block reset configures the I2C bus speed to strange value.
Read the I2C speed from the block before reseting the block and
restore it afterwards, so the I2C operates correctly. This issue
can be replicated by doing unsuccessful I2C transfer, after such
transfer finishes, the I2C block clock speed is misconfigured.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Heiko Schocher <hs@denx.de>
Cc: Fabio Estevam <fabio.estevam@freescale.com>
12 years agoi2c: mxs: Fix TIMING2 register value
Marek Vasut [Mon, 12 Nov 2012 14:34:31 +0000 (14:34 +0000)]
i2c: mxs: Fix TIMING2 register value

According to FSL, the value in the TIMING2 register shall be 0x00300030
instead of what's written in the datasheet. This new value correlates
with older STMP36xx datasheet. Issues were detected in Linux when this
register was misconfigured, so write this correct value.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Fabio Estevam <fabio.estevam@freescale.com>
12 years agoi2c: mxs: Use i2c_set_bus_speed() in i2c_init()
Marek Vasut [Mon, 12 Nov 2012 14:34:30 +0000 (14:34 +0000)]
i2c: mxs: Use i2c_set_bus_speed() in i2c_init()

Use i2c_set_bus_speed() in i2c_init() within the mxs i2c driver
to avoid duplication of code.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Fabio Estevam <fabio.estevam@freescale.com>
12 years agoi2c: mxs: Implement i2c_get/set_bus_speed()
Marek Vasut [Mon, 12 Nov 2012 14:34:29 +0000 (14:34 +0000)]
i2c: mxs: Implement i2c_get/set_bus_speed()

This patch implements the setup and retrieval functions for the I2C
bus speed on the MXS I2C IP.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Fabio Estevam <fabio.estevam@freescale.com>
12 years agoi2c: mxs: Abstract out the MXS I2C speed setup
Marek Vasut [Mon, 12 Nov 2012 14:34:28 +0000 (14:34 +0000)]
i2c: mxs: Abstract out the MXS I2C speed setup

This patch pulls out the I2C speed setup from the i2c_init() call
and implements the bus configuration lookup table with register
values that needs to be programmed into the I2C IP to run at
particular speed.

This patch is a first step towards implementing run-time I2C bus
speed configuration for the MXS I2C IP.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Fabio Estevam <fabio.estevam@freescale.com>
12 years agoi2c: kerneldoc: Add kerneldoc annotations to cmd_i2c.c
Marek Vasut [Mon, 12 Nov 2012 14:34:27 +0000 (14:34 +0000)]
i2c: kerneldoc: Add kerneldoc annotations to cmd_i2c.c

Add kerneldoc style documentation into cmd_i2c.c to properly describe
all overridable functions and most of the command interface.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Heiko Schocher <hs@denx.de>
12 years agoi2c: Staticize local functions in mxc i2c driver
Marek Vasut [Mon, 12 Nov 2012 14:34:26 +0000 (14:34 +0000)]
i2c: Staticize local functions in mxc i2c driver

Some functions in the MXC i2c driver were not static, fix this by
making them so.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Heiko Schocher <hs@denx.de>
Cc: Stefano Babic <sbabic@denx.de>
12 years agoi2c: Use __weak instead of __attribute__((weak, alias))
Marek Vasut [Mon, 12 Nov 2012 14:34:25 +0000 (14:34 +0000)]
i2c: Use __weak instead of __attribute__((weak, alias))

Use __weak from linux/compiler.h instead of __attribute__((weak, alias))
to define overridable function. This patch is intended as a cleanup patch
to bring some consistency into the code.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Heiko Schocher <hs@denx.de>
12 years agosoft_i2c: add necessary includes for AVR32
Andreas Bießmann [Thu, 10 Feb 2011 00:30:04 +0000 (00:30 +0000)]
soft_i2c: add necessary includes for AVR32

Signed-off-by: Andreas Bießmann <biessmann@corscience.de>
12 years agoCorrect comment to show the parameters as defined in tools/mkimage.h
Lars Rasmusson [Tue, 11 Dec 2012 10:11:52 +0000 (11:11 +0100)]
Correct comment to show the parameters as defined in tools/mkimage.h

Signed-off-by: Lars Rasmusson <Lars.Rasmusson@sics.se>
12 years agoMIPS: constify address pointer in test_bit()
Daniel Schwierzeck [Sat, 8 Dec 2012 20:33:44 +0000 (21:33 +0100)]
MIPS: constify address pointer in test_bit()

Fix several warnings when enabling UBIFS on MIPS:

In file included from ubifs.h:2137:0,
                 from ubifs.c:26:
misc.h: In function 'ubifs_zn_dirty':
misc.h:38:2: warning: passing argument 2 of 'test_bit' discards 'const' qualifier from pointer target type [enabled by default]
../include/asm/bitops.h:569:23: note: expected 'volatile void *' but argument is of type 'const long unsigned int *'

Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
12 years agoMIPS: fix a latent bug on initialize $gp
Zhi-zhou Zhang [Sat, 24 Nov 2012 05:07:12 +0000 (05:07 +0000)]
MIPS: fix a latent bug on initialize $gp

If bal is 8 bytes aligned, the _gp will not be 8 bytes aligned.
then the following ld insntrustion generates a Adel exception.
So here make _gp be always aligned in 8 bytes.

Signed-off-by: Zhi-zhou Zhang <zhizhou.zh@gmail.com>
Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
12 years agoMerge branch 'master' of git://git.denx.de/u-boot-x86
Tom Rini [Fri, 7 Dec 2012 13:43:40 +0000 (06:43 -0700)]
Merge branch 'master' of git://git.denx.de/u-boot-x86

12 years agofs:ext4:write: Initialize cache aligned filename buffer
Łukasz Majewski [Wed, 5 Dec 2012 08:06:40 +0000 (08:06 +0000)]
fs:ext4:write: Initialize cache aligned filename buffer

The filename buffer is allocated dynamically. It must be cache aligned.
Moreover, it is necessary to erase its content before we use it for
file name operations.

This prevents from corruption of written file names.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
12 years agofs:ext4:fix: Code refactoring to suppress compiler warnings
Łukasz Majewski [Wed, 5 Dec 2012 08:06:39 +0000 (08:06 +0000)]
fs:ext4:fix: Code refactoring to suppress compiler warnings

Several fixes to suppress compiler's (eldk-5.[12].x  gcc 4.6)
warning  [-Wunused-but-set-variable]

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
12 years agofs:ext4:write: Store block device descriptor in file system structure
Łukasz Majewski [Wed, 5 Dec 2012 08:06:38 +0000 (08:06 +0000)]
fs:ext4:write: Store block device descriptor in file system structure

The device block descriptor (block_dev_desc_t) )shall be stored at
ext4 early code (at ext4fs_set_blk_dev in this case) to be available
for latter use (like put_ext4()).

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
12 years agofs:ext4:write: Add lldiv and do_div to perform 64-32 bits division
Łukasz Majewski [Wed, 5 Dec 2012 08:06:37 +0000 (08:06 +0000)]
fs:ext4:write: Add lldiv and do_div to perform 64-32 bits division

The ext4write code has been using direct calls to 64-32 division
(/ and %).

Officially supported u-boot toolchains (eldk-5.[12].x) generate calls
to __aeabi_uldivmod(), which is niether defined in the toolchain libs
nor u-boot source tree.

Due to that, when the ext4write command has been executed, "undefined
instruction" execption was generated (since the __aeabi_uldivmod()
is not provided).

To fix this error, lldiv() for division and do_div() for modulo have
been used.

Those two functions are recommended for performing 64-32 bit number
division in u-boot.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
12 years agoChange e-mail address of Luka Perkov
Luka Perkov [Mon, 3 Dec 2012 03:24:15 +0000 (03:24 +0000)]
Change e-mail address of Luka Perkov

Change e-mail address of Luka Perkov.

Signed-off-by: Luka Perkov <luka@openwrt.org>
CC: Luka Perkov <uboot@lukaperkov.net>
12 years agoserial_pl011: Set RTS during initialization
Joshua Housh [Sun, 2 Dec 2012 17:09:26 +0000 (17:09 +0000)]
serial_pl011: Set RTS during initialization

If the pl011 is connected to another device which has hardware
flow-control on, characters are never received by the pl011.
Asserting RTS when flow-control is off will have no effect.

This is in line with how Linux behaves.

Signed-off-by: Joshua Housh <joshua.housh@calxeda.com>
Tested-by: Marek Vasut <marex@denx.de>
12 years agoMAINTAINERS: Add a pointer to the custodians page.
Robert P. J. Day [Sat, 24 Nov 2012 02:24:19 +0000 (02:24 +0000)]
MAINTAINERS: Add a pointer to the custodians page.

Since there's no obvious mention, add a brief reference to the
custodians page at www.denx.de

Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca>
12 years agox86: Fix coreboot config to boot on Chromebook
Simon Glass [Wed, 5 Dec 2012 15:11:27 +0000 (15:11 +0000)]
x86: Fix coreboot config to boot on Chromebook

The config is current broken. It compiles but does not boot because IDE is
enabled. Remove all IDE options, and enable SCSI instead.

Also add a working boot command and Linux bootargs, and enable command
line editing to make it easier to work with.

Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agox86: Turn on support for EFI's GPT in the coreboot config
Gabe Black [Wed, 5 Dec 2012 15:10:58 +0000 (15:10 +0000)]
x86: Turn on support for EFI's GPT in the coreboot config

This allows u-boot to figure out the partitions of a chrome-os install.

Signed-off-by: Gabe Black <gabeblack@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agox86: coreboot: Enable video display
Simon Glass [Sat, 3 Nov 2012 11:41:42 +0000 (11:41 +0000)]
x86: coreboot: Enable video display

Enable the display on coreboot, using CFB.

Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agox86: Build vga video code only if CONFIG_VIDEO_VGA is defined
Simon Glass [Mon, 3 Dec 2012 13:59:47 +0000 (13:59 +0000)]
x86: Build vga video code only if CONFIG_VIDEO_VGA is defined

When running from coreboot we don't want this code, so make it
optional.

Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agox86: Remove video_init() prototype from u-boot-x86.h
Simon Glass [Sat, 3 Nov 2012 11:41:41 +0000 (11:41 +0000)]
x86: Remove video_init() prototype from u-boot-x86.h

This function is not intended to be exported from the video drivers, so
remove the prototype. This fixes an error:

cfb_console.c:1793:12: error: static declaration of 'video_init' follows non-static declaration

Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agovideo: Check for valid FB pointer before clearing
Duncan Laurie [Sat, 3 Nov 2012 11:41:40 +0000 (11:41 +0000)]
video: Check for valid FB pointer before clearing

This command will start erasing at memory address zero
if there is not a valid framebuffer address that was found
during video_init().

This is a common case with Chrome OS devices in normal mode
when we do not execute the video option rom in coreboot.

Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agox86: drop unused code in coreboot.c
Stefan Reinauer [Sat, 3 Nov 2012 11:41:39 +0000 (11:41 +0000)]
x86: drop unused code in coreboot.c

The function setup_pcat_compatibility() is weak and implemented as empty
function in board.c hence we don't have to override that with another
empty function.

monitor_flash_len is unused, drop it.

Signed-off-by: Stefan Reinauer <reinauer@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agox86: Remove coreboot_ from file name
Stefan Reinauer [Sat, 3 Nov 2012 11:41:38 +0000 (11:41 +0000)]
x86: Remove coreboot_ from file name

... because that information is already "encoded" in the directory name.

Signed-off-by: Stefan Reinauer <reinauer@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agox86: Provide a way to throttle port80 accesses
Vadim Bendebury [Sat, 3 Nov 2012 11:41:37 +0000 (11:41 +0000)]
x86: Provide a way to throttle port80 accesses

Some systems (like Google Link device) provide the ability to keep a
history of the target CPU port80 accesses, which is extremely handy
for debugging. The problem is that the EC handling port 80 access is
orders of magnitude slower than the AP. This causes random loss of
trace data.

This change allows to throttle port 80 accesses such that in case the
AP is trying to post faster than the EC can handle, a delay is
introduced to make sure that the post rate is throttled. Experiments
have shown that on Link the delay should be at least 350,000 of tsc
clocks.

Throttling is not being enabled by default: to enable it one would
have to set MIN_PORT80_KCLOCKS_DELAY to something like 400 and rebuild
the u-boot image. With upcoming EC code optimizations this number
could be decreased (new new value should be established
experimentally).

Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agox86: Provide tick counter and frequency reference for Intel core architecture
Vadim Bendebury [Mon, 3 Dec 2012 13:59:20 +0000 (13:59 +0000)]
x86: Provide tick counter and frequency reference for Intel core architecture

Some u-boot modules rely on availability of get_ticks() and
get_tbclk() functions, reporting a free running clock and its
frequency respectively. Traditionally these functions return number
and frequency of timer interrupts.

Intel's core architecture processors however are known to run the
rdtsc instruction at a constant rate of the so called 'Max Non Turbo
ratio' times the external clock frequency which is 100MHz. This is
just as good for the timer tick functions in question.

Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agox86: Issue SMI to finalize Coreboot in final stage
Duncan Laurie [Sat, 3 Nov 2012 11:41:35 +0000 (11:41 +0000)]
x86: Issue SMI to finalize Coreboot in final stage

This will write magic value to APMC command port which
will trigger an SMI and cause coreboot to lock down
the ME, chipset, and CPU.

Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agox86: Fix MTRR clear to detect which MTRR to use
Duncan Laurie [Mon, 3 Dec 2012 13:59:00 +0000 (13:59 +0000)]
x86: Fix MTRR clear to detect which MTRR to use

Coreboot was always using MTRR 7 for the write-protect
cache entry that covers the ROM and U-boot was removing it.
However with 4GB configs we need more MTRRs for the BIOS
and so the WP MTRR needs to move.  Instead coreboot will
always use the last available MTRR that is normally set
aside for OS use and U-boot can clear it before the OS.

Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agox86: Emit port 80 post codes in show_boot_progress()
Stefan Reinauer [Mon, 3 Dec 2012 13:58:12 +0000 (13:58 +0000)]
x86: Emit port 80 post codes in show_boot_progress()

This helps us monitor boot progress and determine where U-Boot dies if
there are any problems.

Signed-off-by: Stefan Reinauer <reinauer@google.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agox86: fdt: Create basic .dtsi file for coreboot
Simon Glass [Mon, 3 Dec 2012 13:56:51 +0000 (13:56 +0000)]
x86: fdt: Create basic .dtsi file for coreboot

This contains just the minimum information for a coreboot-based board.

Signed-off-by: Stefan Reinauer <reinauer@chromium.org>
Signed-off-by: Gabe Black <gabeblack@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agox86: coreboot: Set CONFIG_ARCH_DEVICE_TREE correctly
Gabe Black [Sat, 3 Nov 2012 11:41:31 +0000 (11:41 +0000)]
x86: coreboot: Set CONFIG_ARCH_DEVICE_TREE correctly

We will use coreboot.dtsi as our fdt include file.

Signed-off-by: Gabe Black <gabeblack@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agox86: Add support for CONFIG_OF_CONTROL
Gabe Black [Sat, 3 Nov 2012 11:41:30 +0000 (11:41 +0000)]
x86: Add support for CONFIG_OF_CONTROL

Allow a device tree to be provided through the standard mechanisms.

Signed-off-by: Gabe Black <gabeblack@google.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
12 years agox86: Add CONFIG_DELAY_ENVIRONMENT to delay environment loading
Stefan Reinauer [Sat, 3 Nov 2012 11:41:29 +0000 (11:41 +0000)]
x86: Add CONFIG_DELAY_ENVIRONMENT to delay environment loading

This option delays loading of the environment until later, so that only the
default environment will be available to U-Boot.

This can address the security risk of untrusted data being used during boot.

When CONFIG_DELAY_ENVIRONMENT is defined, it is convenient to have a
run-time way of enabling loadinlg of the environment. Add this to the
fdt as /config/delay-environment.

Note: This patch depends on http://patchwork.ozlabs.org/patch/194342/

Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Stefan Reinauer <reinauer@chromium.org>
12 years agox86: Add back cold- and warm-boot flags
Gabe Black [Sat, 3 Nov 2012 11:41:28 +0000 (11:41 +0000)]
x86: Add back cold- and warm-boot flags

These were removed, but actually are useful.

Cold means that we started from a reset/power on.
Warm means that we started from another U-Boot.

We determine whether u-boot on x86 was warm or cold booted (really if
it started at the beginning of the text segment or at the ELF entry point).
We plumb the result through to the global data structure.

Signed-off-by: Simon Glass <sjg@chromium.org>