oweals/u-boot.git
9 years agodm: pci: Add an inline API to test if a device is on a PCI bus
Bin Meng [Fri, 11 Sep 2015 10:24:34 +0000 (03:24 -0700)]
dm: pci: Add an inline API to test if a device is on a PCI bus

Introduce device_is_on_pci_bus() which can be utilized by driver
to test if a device is on a PCI bus.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agoMerge git://git.denx.de/u-boot-fdt
Tom Rini [Wed, 16 Sep 2015 13:53:37 +0000 (09:53 -0400)]
Merge git://git.denx.de/u-boot-fdt

9 years agokbuild: fixdep: drop meaningless hash table initialization
Masahiro Yamada [Tue, 15 Sep 2015 03:54:38 +0000 (12:54 +0900)]
kbuild: fixdep: drop meaningless hash table initialization

The clear_config() is called just once at the beginning of this
program, but the global variable hashtab[] is already zero-filled
at the start-up.

[ Linux commit: d179e22762fd38414c4108acedd5feca4cf7e0d8 ]

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
9 years agoapi_storage: Fix non-first storage device enumeration
Andreas Färber [Mon, 14 Sep 2015 10:21:34 +0000 (12:21 +0200)]
api_storage: Fix non-first storage device enumeration

When enabling CONFIG_API and chain-loading GRUB2 on jetson-tk1, only the
eMMC would show up as (hd0), but not the SD card, leading to GRUB not
finding its configuration and modules, falling back to a rescue shell.

This is because enum_ended would get set for !more after returning a
cookie for the first MMC device in group 3.

Fix this by properly setting the "more" argument also in the case of the
first storage device of a group.

Signed-off-by: Andreas Färber <afaerber@suse.de>
9 years agoarm: Remove unused reference to nomadik
Stefan Roese [Mon, 14 Sep 2015 07:32:55 +0000 (09:32 +0200)]
arm: Remove unused reference to nomadik

Commit 0abdd9d0 "arm: Remove nhk8815 boards and nomadik arch" missed one
reference to this arch. Lets remove this as well.

Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>
9 years agoarm: Remove unused ST-Ericsson u8500 arch
Stefan Roese [Mon, 14 Sep 2015 07:17:36 +0000 (09:17 +0200)]
arm: Remove unused ST-Ericsson u8500 arch

This arch does not seem to be supported / used at all in the current
U-Boot mainline source tree any more. So lets remove the core u8500 code
and code that was only referenced by this platform.

Please note that this patch also removes these config options:

- CONFIG_PL011_SERIAL_RLCR
- CONFIG_PL011_SERIAL_FLUSH_ON_INIT

As they only seem to be referenced by u8500 based boards. Without any
such board in the current code, these config option don't make sense
any more. Lets remove them as well.

If someone still wants to use this platform, then please send patches
to re-enable support by adding at least one board that references this
code.

Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
Cc: John Rigby <john.rigby@linaro.org>
Cc: Simon Glass <sjg@chromium.org>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: Tom Rini <trini@konsulko.com>
Cc: Heiko Schocher <hs@denx.de>
Cc: Albert Aribaud <albert.u.boot@aribaud.net>
Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com>
9 years agomtd: nand: fsmc: Fixes and cleanup for fsmc_nand_switch_ecc()
Stefan Roese [Mon, 14 Sep 2015 06:47:47 +0000 (08:47 +0200)]
mtd: nand: fsmc: Fixes and cleanup for fsmc_nand_switch_ecc()

This patch addresses some comments raised by Scott in the last versions.
Here the changes in detail:

- Removed __maybe_unused as its not needed
- Added check for strength == 4 and error out for the unsupported
  ECC strength values
- Don't set .caclulate, .correct, and .bytes for NAND_ECC_SOFT_BCH as this
  will be done in nand_scan_tail()
- Set .caclulate back to fsmc_read_hwecc() in the HW case
- Added comment that this function will only be called on SPEAr platforms,
  not supporting the BCH8 HW ECC (FSMC_VER8)

Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Scott Wood <scottwood@freescale.com>
Cc: Tom Rini <trini@konsulko.com>
Acked-by: Scott Wood <scottwood@freescale.com>
9 years agoenv: import: hashtable: Free memory allocated before exiting from himport_r()
Lukasz Majewski [Sun, 13 Sep 2015 22:57:04 +0000 (00:57 +0200)]
env: import: hashtable: Free memory allocated before exiting from himport_r()

ithout this patch memory is not released on early exit.

Signed-off-by: Lukasz Majewski <l.majewski@majess.pl>
9 years agoenv: import: hashtable: Prevent buffer overrun when importing environment from file
Lukasz Majewski [Sun, 13 Sep 2015 22:57:03 +0000 (00:57 +0200)]
env: import: hashtable: Prevent buffer overrun when importing environment from file

Lets consider following scenario:
- One uses echo -n "key=value" to define environment variable in a file (single variable)
- The file content is "key=value" without any terminating byte (e.g. 0x0a or
0x0d).
- The file is loaded to u-boot non zero'ed RAM buffer (with load command).
- Then "env import -t -r $loadaddr $filesize" is executed.
- Due to lack of proper termination byte we have classical example of buffer
  overrun.

This patch prevents from this by allocating one extra byte than size and
explicitly null terminate it.

There should be no change for normal env import operation after applying
this patch.

Signed-off-by: Lukasz Majewski <l.majewski@majess.pl>
9 years agocli_simple.c: fix possible overflow when copying the string
Imran Zaman [Mon, 7 Sep 2015 08:24:08 +0000 (11:24 +0300)]
cli_simple.c: fix possible overflow when copying the string

Bigger source buffer than dest buffer could overflow when copying
strings.  Source and destination buffer sizes are same now.

Signed-off-by: Imran Zaman <imran.zaman@intel.com>
9 years agoti816x: Switch to SYS_GENERIC_BOARD
Tom Rini [Thu, 3 Sep 2015 18:54:04 +0000 (14:54 -0400)]
ti816x: Switch to SYS_GENERIC_BOARD

Tested on my TI186x rev E. (PG2.0) and take over maintainership.

Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>
9 years agoti814x_evm: Switch to SYS_GENERIC_BOARD
Tom Rini [Thu, 3 Sep 2015 18:54:03 +0000 (14:54 -0400)]
ti814x_evm: Switch to SYS_GENERIC_BOARD

Take over maintainership as well.  Not tested as PG2.0 (which I have)
needs additional work over PG1.0 (which Matt has).

Cc: Matt Porter <mporter@konsulko.com>
Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>
9 years agoomap3_evm_common.h: Switch to SYS_GENERIC_BOARD
Tom Rini [Thu, 3 Sep 2015 18:54:02 +0000 (14:54 -0400)]
omap3_evm_common.h: Switch to SYS_GENERIC_BOARD

Tested on my OMAP3 uEVM.

Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>
9 years agofdt: add new fdt address parsing functions
Stephen Warren [Thu, 6 Aug 2015 21:31:02 +0000 (15:31 -0600)]
fdt: add new fdt address parsing functions

fdtdec_get_addr_size() hard-codes the number of cells used to represent
an address or size in DT. This is incorrect in many cases depending on
the DT binding for a particular node or property (e.g. it is incorrect
for the "reg" property). In most cases, DT parsing code must use the
properties #address-cells and #size-cells to parse addres properties.

This change splits up the implementation of fdtdec_get_addr_size() so
that the core logic can be used for both hard-coded and non-hard-coded
cases. Various wrapper functions are implemented that support cases
where hard-coded cell counts should or should not be used, and where
the client does and doesn't know the parent node ID that contains the
properties #address-cells and #size-cells.

dev_get_addr() is updated to use the new functions.

Core functionality in fdtdec_get_addr_size_fixed() is widely tested via
fdtdec_get_addr_size(). I tested fdtdec_get_addr_size_auto_noparent() and
dev_get_addr() by manually modifying the Tegra I2C driver to invoke them.

Much of the core implementation of fdtdec_get_addr_size_fixed(),
fdtdec_get_addr_size_auto_parent(), and
fdtdec_get_addr_size_auto_noparent() comes from Thierry Reding's
previous commit "fdt: Fix fdtdec_get_addr_size() for 64-bit".

Based-on-work-by: Thierry Reding <treding@nvidia.com>
Cc: Thierry Reding <treding@nvidia.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Michal Suchanek <hramrach@gmail.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Simon Glass <sjg@chromium.org>
Dropped #define DEBUG at the top of fdtdec.c:
Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agoMerge branch 'rmobile' of git://git.denx.de/u-boot-sh
Tom Rini [Sun, 13 Sep 2015 21:25:16 +0000 (17:25 -0400)]
Merge branch 'rmobile' of git://git.denx.de/u-boot-sh

9 years agoARM: Kirkwood: fix IDE configuration on LaCie boards
Simon Guinot [Thu, 3 Sep 2015 09:12:20 +0000 (11:12 +0200)]
ARM: Kirkwood: fix IDE configuration on LaCie boards

On the LaCie boards netspace_max_v2 and net2big_v2, two internal hard
drives are available. Additionally on the d2net_v2 board, an extra hard
drive can be plugged via eSATA.

This patch updates CONFIG_SYS_IDE_MAXBUS and CONFIG_SYS_IDE_MAXDEVICE
accordingly for this boards.

Signed-off-by: Simon Guinot <simon.guinot@sequanux.org>
9 years agoarm: move edb93xx to generic board architecture
Sergey Kostanbaev [Wed, 9 Sep 2015 22:40:01 +0000 (01:40 +0300)]
arm: move edb93xx to generic board architecture

Use CONFIG_SYS_GENERIC_BOARD in EDB93XX board family

9 years agoARM: Kirkwood: enable generic board support for LaCie boards
Simon Guinot [Tue, 1 Sep 2015 17:01:02 +0000 (19:01 +0200)]
ARM: Kirkwood: enable generic board support for LaCie boards

This patch enables generic board support for the following
Kirkwood-based LaCie boards:

- Network Space v2 (Mini, Lite and Max).
- Internet Space v2.
- D2 Network v2.
- 2Big Network v2.

Signed-off-by: Simon Guinot <simon.guinot@sequanux.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>
9 years agoudoo: Fix the error handling in board_eth_init()
Fabio Estevam [Fri, 11 Sep 2015 16:32:50 +0000 (13:32 -0300)]
udoo: Fix the error handling in board_eth_init()

We should not return 0 on failure, so return a negative error code
instead.

Also centralize the error path so that is easier to follow.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
9 years agotqma6_mba6: Fix the error handling in board_eth_init()
Fabio Estevam [Fri, 11 Sep 2015 16:32:49 +0000 (13:32 -0300)]
tqma6_mba6: Fix the error handling in board_eth_init()

We should not return 0 on failure, so return a negative error code
instead.

Also centralize the error path so that is easier to follow.

Cc: Markus Niebel <Markus.Niebel@tq-group.com>
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
9 years agoot1200: Fix the error handling in board_eth_init()
Fabio Estevam [Fri, 11 Sep 2015 03:53:52 +0000 (00:53 -0300)]
ot1200: Fix the error handling in board_eth_init()

We should not return 0 on failure, so return a negative error code
instead.

Also centralize the error path so that is easier to follow.

Cc: Christian Gmeiner <christian.gmeiner@gmail.com>
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
9 years agonitrogen6x: Fix the error handling in board_eth_init()
Fabio Estevam [Fri, 11 Sep 2015 03:53:51 +0000 (00:53 -0300)]
nitrogen6x: Fix the error handling in board_eth_init()

We should not return 0 on failure, so return a negative error code
instead.

Also centralize the error path so that is easier to follow.

Cc: Troy Kisky <troy.kisky@boundarydevices.com>
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Acked-by: Troy Kisky <troy.kisky@boundarydevices.com>
9 years agopcie_imx: Use 'ms' for milliseconds
Fabio Estevam [Thu, 10 Sep 2015 23:45:25 +0000 (20:45 -0300)]
pcie_imx: Use 'ms' for milliseconds

milliseconds should be written as 'ms' instead of 'mS'.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Tested-by: Marek Vasut <marex@denx.de>
9 years agomx6ul_14x14_evk: Use the default CONFIG_SYS_PBSIZE
Fabio Estevam [Wed, 9 Sep 2015 14:16:44 +0000 (11:16 -0300)]
mx6ul_14x14_evk: Use the default CONFIG_SYS_PBSIZE

Entering the maximum number of characters defined by CONFIG_SYS_CBSIZE into
the console and hitting enter afterwards, causes a hang in the system because
CONFIG_SYS_PBSIZE is not capable of storing the extra characters of the error
message:
"Unknown command '' - try 'help'".

Use the default CONFIG_SYS_PBSIZE definition from config_fallbacks.h to solve
this problem.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
9 years agomx6ul_14x14_evk: Remove CONFIG_FEC_DMA_MINALIGN
Fabio Estevam [Wed, 9 Sep 2015 14:16:43 +0000 (11:16 -0300)]
mx6ul_14x14_evk: Remove CONFIG_FEC_DMA_MINALIGN

CONFIG_FEC_DMA_MINALIGN is not used anywhere, so let's remove it.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Reviewed-by: Peng Fan <Peng.Fan@freescale.com>
9 years agomx6ul_14x14_evk: Do not undef config options
Fabio Estevam [Wed, 9 Sep 2015 14:16:42 +0000 (11:16 -0300)]
mx6ul_14x14_evk: Do not undef config options

There is no need to undef the config options.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Reviewed-by: Peng Fan <Peng.Fan@freescale.com>
9 years agomx6ul_14x14_evk: Remove unused config option
Fabio Estevam [Wed, 9 Sep 2015 14:16:41 +0000 (11:16 -0300)]
mx6ul_14x14_evk: Remove unused config option

CONFIG_ROM_UNIFIED_SECTIONS is not used anywhere, so let's remove it.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Reviewed-by: Peng Fan <Peng.Fan@freescale.com>
9 years agomx6ul_14x14_evk: Remove CONFIG_SYS_GENERIC_BOARD
Fabio Estevam [Wed, 9 Sep 2015 14:16:40 +0000 (11:16 -0300)]
mx6ul_14x14_evk: Remove CONFIG_SYS_GENERIC_BOARD

CONFIG_SYS_GENERIC_BOARD is selected by mx6_common.h, so there is no
need to define it locally.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Reviewed-by: Peng Fan <Peng.Fan@freescale.com>
9 years agocgtqmx6eval: Remove CONFIG_CMD_FUSE option
Fabio Estevam [Wed, 9 Sep 2015 14:16:39 +0000 (11:16 -0300)]
cgtqmx6eval: Remove CONFIG_CMD_FUSE option

CONFIG_CMD_FUSE and CONFIG_MXC_OCOTP are selected by mx6_common.h,
so there is no need to define them locally.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
9 years agomx6sxsabresd: Remove CONFIG_SPL_FAT_SUPPORT
Fabio Estevam [Tue, 8 Sep 2015 17:50:24 +0000 (14:50 -0300)]
mx6sxsabresd: Remove CONFIG_SPL_FAT_SUPPORT

If the SD card does not contain the u-boot.img then we get the
following error:

U-Boot SPL 2015.10-rc2-23947-g7ad5930 (Sep 08 2015 - 14:10:29)
** Partition 1 not valid on device 0 **
spl_register_fat_device: fat register err - -1
spl_load_image_fat: error reading image u-boot.img, err - -1

Remove CONFIG_SPL_FAT_SUPPORT and let CONFIG_SPL_MMC_SUPPORT do the
job.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
9 years agomx6slevk: Remove CONFIG_SPL_FAT_SUPPORT
Fabio Estevam [Tue, 8 Sep 2015 17:50:23 +0000 (14:50 -0300)]
mx6slevk: Remove CONFIG_SPL_FAT_SUPPORT

If the SD card does not contain the u-boot.img then we get the
following error:

U-Boot SPL 2015.10-rc2-23947-g7ad5930 (Sep 08 2015 - 14:10:29)
** Partition 1 not valid on device 0 **
spl_register_fat_device: fat register err - -1
spl_load_image_fat: error reading image u-boot.img, err - -1

Remove CONFIG_SPL_FAT_SUPPORT and let CONFIG_SPL_MMC_SUPPORT do the
job.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
9 years agomx6ul_14x14_evk: Add a README file
Fabio Estevam [Tue, 8 Sep 2015 17:43:12 +0000 (14:43 -0300)]
mx6ul_14x14_evk: Add a README file

Add a README file to help users getting started with the board.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
9 years agomx6ul_14x14_evk: Remove CONFIG_SPL_FAT_SUPPORT
Fabio Estevam [Tue, 8 Sep 2015 17:43:11 +0000 (14:43 -0300)]
mx6ul_14x14_evk: Remove CONFIG_SPL_FAT_SUPPORT

If the SD card does not contain the u-boot.img then we get the
following error:

U-Boot SPL 2015.10-rc2-23947-g7ad5930 (Sep 08 2015 - 14:10:29)
** Partition 1 not valid on device 0 **
spl_register_fat_device: fat register err - -1
spl_load_image_fat: error reading image u-boot.img, err - -1

Remove CONFIG_SPL_FAT_SUPPORT and let CONFIG_SPL_MMC_SUPPORT do the
job.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
9 years agoimx-common: cpu: Do not print on invalid temperature
Fabio Estevam [Tue, 8 Sep 2015 17:43:10 +0000 (14:43 -0300)]
imx-common: cpu: Do not print on invalid temperature

It is not very useful to have the message below on every boot
(especially when we are using early silicon):

U-Boot 2015.10-rc2-23945-g37cf215 (Sep 08 2015 - 14:12:14 -0300)

CPU:   Freescale i.MX6UL rev1.0 792 MHz (running at 396 MHz)
CPU:   Commercial temperature grade (0C to 95C)CPU:   Thermal invalid data, fuse: 0x0
 - invalid sensor device

, so turn the error message into debug level.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
9 years agothermal: imx_thermal: Do not print on error
Fabio Estevam [Tue, 8 Sep 2015 17:43:09 +0000 (14:43 -0300)]
thermal: imx_thermal: Do not print on error

It is not very useful to have the message below on every boot
(especially when we are using early silicon):

U-Boot 2015.10-rc2-23945-g37cf215 (Sep 08 2015 - 14:12:14 -0300)

CPU:   Freescale i.MX6UL rev1.0 792 MHz (running at 396 MHz)
CPU:   Commercial temperature grade (0C to 95C)CPU:   Thermal invalid data, fuse: 0x0
 - invalid sensor device

, so turn the error message into debug level.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
9 years agoimx: mx6 discard 'select CPU_V7' for different targets
Peng Fan [Mon, 7 Sep 2015 06:59:49 +0000 (14:59 +0800)]
imx: mx6 discard 'select CPU_V7' for different targets

Discard the 'select CPU_V7' from Kconfig in arch/arm/cpu/armv7/mx6
for different targets, because ARCH_MX6 selects CPU_V7.

Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
Cc: Stefano Babic <sbabic@denx.de>
9 years agomx6: remove SYS_SOC from board Kconfig
Peng Fan [Mon, 7 Sep 2015 06:59:48 +0000 (14:59 +0800)]
mx6: remove SYS_SOC from board Kconfig

Remove duplicated SYS_SOC Kconfig entry from board Kconfig,
because we have this entry in arch/arm/cpu/armv7/mx6/Kconfig.

Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Heiko Schocher <hs@denx.de>
Cc: Christian Gmeiner <christian.gmeiner@gmail.com>
Cc: Stefan Roese <sr@denx.de>
Cc: Troy Kisky <troy.kisky@boundarydevices.com>
Cc: Nikita Kiryanov <nikita@compulab.co.il>
Cc: "Eric Bénard" <eric@eukrea.com>
Cc: Fabio Estevam <fabio.estevam@freescale.com>
Cc: Tim Harvey <tharvey@gateworks.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Markus Niebel <Markus.Niebel@tq-group.com>
Cc: Otavio Salvador <otavio@ossystems.com.br>
Acked-by: Stefan Roese <sr@denx.de>
Acked-by: Marek Vasut <marex@denx.de>
Acked-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Acked-by: Markus Niebel <Markus.Niebel@tq-group.com>
Acked-by: Troy Kisky <troy.kisky@boundarydevices.com>
Acked-by: Igor Grinberg <grinberg@compulab.co.il>
9 years agoarm: mx6: cm-fx6: modify device tree for old revisions of utilite
Nikita Kiryanov [Sun, 6 Sep 2015 08:48:38 +0000 (11:48 +0300)]
arm: mx6: cm-fx6: modify device tree for old revisions of utilite

Old revisions of Utilite (a miniature PC based on cm-fx6) do not have
a card detect for mmc, and thus the kernel needs to be told that
there's a persistent storage on usdhc3 to force it to probe the mmc
card.

Check the baseboard revision and modify the device tree accordingly
if needed.

Cc: Stefano Babic <sbabic@denx.de>
Cc: Igor Grinberg <grinberg@compulab.co.il>
Signed-off-by: Nikita Kiryanov <nikita@compulab.co.il>
9 years agocompulab: eeprom: add support for obtaining product name
Nikita Kiryanov [Sun, 6 Sep 2015 08:48:37 +0000 (11:48 +0300)]
compulab: eeprom: add support for obtaining product name

Introduce cl_eeprom_get_product_name() for obtaining product name
from the eeprom.

Cc: Stefano Babic <sbabic@denx.de>
Cc: Igor Grinberg <grinberg@compulab.co.il>
Signed-off-by: Nikita Kiryanov <nikita@compulab.co.il>
9 years agocompulab: eeprom: propagate error value in read_mac_addr()
Nikita Kiryanov [Sun, 6 Sep 2015 08:48:36 +0000 (11:48 +0300)]
compulab: eeprom: propagate error value in read_mac_addr()

cl_eeprom_read_mac_addr() doesn't differentiate between success case and
inability to access eeprom. Fix this by propagating the return value of
cl_eeprom_setup().

Cc: Stefano Babic <sbabic@denx.de>
Cc: Igor Grinberg <grinberg@compulab.co.il>
Signed-off-by: Nikita Kiryanov <nikita@compulab.co.il>
Acked-by: Igor Grinberg <grinberg@compulab.co.il>
9 years agocompulab: eeprom: select i2c bus when querying for board rev
Nikita Kiryanov [Sun, 6 Sep 2015 08:48:35 +0000 (11:48 +0300)]
compulab: eeprom: select i2c bus when querying for board rev

Add support for selecting which eeprom is queried for board revision by
extending cl_eeprom_get_board_rev() to accept an i2c bus number.

Cc: Stefano Babic <sbabic@denx.de>
Cc: Igor Grinberg <grinberg@compulab.co.il>
Acked-by: Igor Grinberg <grinberg@compulab.co.il>
Signed-off-by: Nikita Kiryanov <nikita@compulab.co.il>
9 years agoimx: mx6ul: support mx6ul 9x9 evk board
Peng Fan [Sun, 6 Sep 2015 07:02:34 +0000 (15:02 +0800)]
imx: mx6ul: support mx6ul 9x9 evk board

This patch is to support mx6ul_9x9_evk board based on mx6ul_14x14_evk,
the difference between mx6ul 9x9 evk and mx6ul 14x14 evk are:
1. mx6ul 9x9 evk use pfuze3000, while mx6ul 14x14 evk use DCDC.
2. mx6ul 9x9 evk supports 256MB LPDDR2, while mx6ul 14x14 evk
   supports 512MB DDR3
3. mx6ul_9x9_evk use 9x9 package, while mx6ul_14x14_evk use 14x14 package.

This patch add the following:
1. Discard PHYS_SDRAM_SIZE from header file, use imx_ddr_size()
2. Introduce a macro is_mx6ul_9x9_evk using
   CONFIG_IS_ENABLED(TARGET_MX6UL_9X9_EVK) to avoid "#ifdef xxx" in non-SPL
   part. To SPL part, CONFIG_IS_ENABLED(TARGET_MX6UL_9X9_EVK) can not work,
   so still use "#ifdef CONFIG_TARGET_MX6UL_9X9_EVK" to differentiate with
   mx6ul_14x14_evk. And we have no way to dymaically checking this chip
   is 9x9 or 14x14.
3. mx6ul_9x9_evk use pfuze3000, so enabled POWER related configurations.
   POWER related configurations also effect for mx6ul_14x14_evk. But
   power_init_board implementation using 'if (is_mx6ul_9x9_evk())' to
   do initialization for mx6ul_9x9_evk, and do nothing for mx6ul_14x14_evk.
4. mx6ul_9x9_evk use lpddr2 with size 256MB, so add related SPL DRAM
   configurations.
5. Enable CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG and setting dtb file
   according to board_rev and board_name.
6. Add TARGET_MX6UL_9X9_EVK Kconfig entry

Boot Log:
U-Boot SPL 2015.10-rc2-00356-g536ce34 (Sep 06 2015 - 12:22:53)
reading u-boot.img
reading u-boot.img

U-Boot 2015.10-rc2-00356-g536ce34 (Sep 06 2015 - 12:22:53 +0800)

CPU:   Freescale i.MX6UL rev1.0 792 MHz (running at 396 MHz)
CPU:   Commercial temperature grade (0C to 95C) at 41C
Reset cause: POR
Board: MX6UL 9x9 EVK
I2C:   ready
DRAM:  256 MiB
PMIC: PFUZE3000 DEV_ID=0x30 REV_ID=0x11
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
In:    serial
Out:   serial
Err:   serial
Net:   FEC1
Hit any key to stop autoboot:  0

Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
Cc: Stefano Babic <sbabic@denx.de>
9 years agoimx: discard duplicated MXC_OCOTP and CMD_FUSE
Peng Fan [Tue, 1 Sep 2015 03:03:15 +0000 (11:03 +0800)]
imx: discard duplicated MXC_OCOTP and CMD_FUSE

We have CONFIG_MXC_OCOTP and CONFIG_CMD_FUSE in mx6_common.h,
discard duplicated macro definitions in board header files.

Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Peter Robinson <pbrobinson@gmail.com>
Cc: Otavio Salvador <otavio@ossystems.com.br>
9 years agoRevert "imx: mx6: ddr correct tRFC and tXS"
Peng Fan [Tue, 1 Sep 2015 03:03:14 +0000 (11:03 +0800)]
Revert "imx: mx6: ddr correct tRFC and tXS"

This reverts commit 059323fb6a8f21637bb617919715c2427f24777c.

This commit 059323fb6a8f21637bb617919715c2427f24777c use JESD79-3E which
is not the newest spec. Should use JESD79-3F in which tRFC is 260ns for
4Gb chip.

Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Tim Harvey <tharvey@gateworks.com>
9 years agomxs: mxsboot: fix endianess for sd boot images
Michael Heimpold [Tue, 1 Sep 2015 21:58:44 +0000 (23:58 +0200)]
mxs: mxsboot: fix endianess for sd boot images

Running mxsboot on a big-endian system produces a sd image which
cannot be started by the i.MX28 ROM. It complains on the debug
uart as following:
0x8020a009
          0x80502008
0x8020a009
          0x80502008
...

Enforcing all fields within the BCB to little-endian make
the image bootable again.

Signed-off-by: Michael Heimpold <mhei@heimpold.de>
Acked-by: Stefano Babic <sbabic@denx.de>
Acked-by: Marek Vasut <marex@denx.de>
9 years agoimx: mx7dsabresd: Add support for MX7D SABRESD board
Adrian Alonso [Thu, 3 Sep 2015 16:49:28 +0000 (11:49 -0500)]
imx: mx7dsabresd: Add support for MX7D SABRESD board

* Add i.MX7D SABRESD target board support with enabled modules:
  UART, PMIC, USB/OTG, SD, eMMC, ENET, I2C, 74LV IOX.

  Build target: mx7dsabresd_config

Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
Signed-off-by: Fugang Duan <B38611@freescale.com>
Signed-off-by: Ye.Li <B37916@freescale.com>
Signed-off-by: Adrian Alonso <aalonso@freescale.com>
9 years agoimx: imx7d: add imx-common cpu support for imx7d
Adrian Alonso [Wed, 2 Sep 2015 18:54:23 +0000 (13:54 -0500)]
imx: imx7d: add imx-common cpu support for imx7d

Add imx-common cpu support for imx7d SoC
- Update reset_cause for imx7d
- Enable watchdog driver built for imx7d

Signed-off-by: Adrian Alonso <aalonso@freescale.com>
Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
9 years agothermal: imx: add imx7d soc thermal support
Adrian Alonso [Wed, 2 Sep 2015 18:54:22 +0000 (13:54 -0500)]
thermal: imx: add imx7d soc thermal support

Add imx7 SoC thermal driver support

Signed-off-by: Adrian Alonso <aalonso@freescale.com>
9 years agoarm: imx-common: init: rework wdog settings for imx6/imx7
Adrian Alonso [Wed, 2 Sep 2015 18:54:21 +0000 (13:54 -0500)]
arm: imx-common: init: rework wdog settings for imx6/imx7

Rework imx_set_wdog_powerdown to be reused by imx6 and imx7

Signed-off-by: Adrian Alonso <aalonso@freescale.com>
9 years agoarm: imx-common: init: extend init_aips to support imx7
Adrian Alonso [Wed, 2 Sep 2015 18:54:20 +0000 (13:54 -0500)]
arm: imx-common: init: extend init_aips to support imx7

Extend init_aips to support imx7 SoC, use is_soc_type
and is_cpu_type to resolve at run time aips3 settings

Signed-off-by: Adrian Alonso <aalonso@freescale.com>
9 years agoimx: imx7d: Add SoC system support
Adrian Alonso [Wed, 2 Sep 2015 18:54:19 +0000 (13:54 -0500)]
imx: imx7d: Add SoC system support

Add imx7d basic SoC system support
Misc arch dependent functions for system bring up

Signed-off-by: Adrian Alonso <aalonso@freescale.com>
Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
Signed-off-by: Ye.Li <B37916@freescale.com>
9 years agoimx: imx7d: clock control module support
Adrian Alonso [Wed, 2 Sep 2015 18:54:18 +0000 (13:54 -0500)]
imx: imx7d: clock control module support

* Add Clock control module (CCM) support
* iMX7D SoC introduces 3 main clock sysmtem abstraction for clock
  root frequency generation denominated clock slices.
  Core clock slice: hihg speed clock for ARM core
  Bus clock slice: for bus clocks
  IP clock slice: Peripheral clocks
* At system boot ROM enables PLL_ARM, PLL_DDR, PLL_SYS, PLL_ENET
  In u-boot, we have to:
  - Configure PFD3- PFD7 for freq we needed in u-boot
  - Set clock root for peripherals (ip channel)

Signed-off-by: Adrian Alonso <aalonso@freescale.com>
Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
Signed-off-by: Ye.Li <B37916@freescale.com>
9 years agoimx: imx7d: initial arch level support
Adrian Alonso [Wed, 2 Sep 2015 18:54:17 +0000 (13:54 -0500)]
imx: imx7d: initial arch level support

* Add system arch level header files
  - imx-regs.h: iMX7D SoC system architecture registers
  - crm_regs.h: Clock control module registers
  - sys_proto.h: helper callback function for SoC setup

Signed-off-by: Adrian Alonso <aalonso@freescale.com>
Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
Signed-off-by: Ye.Li <B37916@freescale.com>
9 years agoimx: system counter driver for imx7d and mx6ul
Adrian Alonso [Wed, 2 Sep 2015 18:54:16 +0000 (13:54 -0500)]
imx: system counter driver for imx7d and mx6ul

Add system counter driver for imx7d and mx6ul
imx7 and imx6ul supports system counter timer as well as
GPT timer (arch/arm/imx-common/timer.c); The default for
imx7 is systemcounter timer.

Signed-off-by: Ye.Li <B37916@freescale.com>
Signed-off-by: Adrian Alonso <aalonso@freescale.com>
9 years agoarm: imx: imx-common: init: move arch init common setup
Adrian Alonso [Wed, 2 Sep 2015 18:54:15 +0000 (13:54 -0500)]
arm: imx: imx-common: init: move arch init common setup

Move common imx6 arch init setup, init.c can be extended
and reused to support imx7 SoC keeping init arch common
code.

Signed-off-by: Adrian Alonso <aalonso@freescale.com>
9 years agoarm: imx: common rework cache settings for imx6
Adrian Alonso [Wed, 2 Sep 2015 18:54:14 +0000 (13:54 -0500)]
arm: imx: common rework cache settings for imx6

Rework cache settings for imx6, move cache configuration
to imx-common/cache.c so it can be reused for newer SoC

Signed-off-by: Adrian Alonso <aalonso@freescale.com>
9 years agothermal: imx_thermal: rework driver to be reused
Adrian Alonso [Wed, 2 Sep 2015 18:54:13 +0000 (13:54 -0500)]
thermal: imx_thermal: rework driver to be reused

Rework imx_thermal driver to be used across i.MX
processor that support thermal sensor

Signed-off-by: Adrian Alonso <aalonso@freescale.com>
Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
9 years agoimx: arch-mx6: add is_soc_type helper macro
Adrian Alonso [Wed, 2 Sep 2015 18:54:12 +0000 (13:54 -0500)]
imx: arch-mx6: add is_soc_type helper macro

Add helper macro is_soc_type to identify iMX SoC family

Signed-off-by: Adrian Alonso <aalonso@freescale.com>
9 years agoMerge git://git.denx.de/u-boot-usb
Tom Rini [Sat, 12 Sep 2015 19:50:02 +0000 (15:50 -0400)]
Merge git://git.denx.de/u-boot-usb

9 years agoarm: socfpga: mcvevk: Update DRAM clock to 400MHz
Marek Vasut [Tue, 8 Sep 2015 17:51:05 +0000 (19:51 +0200)]
arm: socfpga: mcvevk: Update DRAM clock to 400MHz

The MCV SoM has DDR3-1600 DRAMs on it, update the DRAM speed
to 400MHz to make use of these DRAMs completely.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agousb: ci_udc: fix emissions of ZLPs
Stephen Warren [Fri, 11 Sep 2015 23:10:02 +0000 (17:10 -0600)]
usb: ci_udc: fix emissions of ZLPs

Commit 6a132416359e "ci_udc: Update the ci_udc driver to support bulk
transfers" caused the value of "len" to change without updating subsquent
users of that variable in ci_ep_submit_next_request(). This caused the
code that detects when to emit ZLPs (Zero Length Packets) never to
trigger, which in turn caused host timeouts when a ZLP was required,
which in turn broke tests/dfu/, even despite the assertion in that
commit's description that "These changes are tested for both the DFU and
lthor."

Fix this by modifying the added dtd iteration code not to modify "len",
but rather to keep state in a separate variable. Rename the variables
while we're at it so they describe their purpose better.

Fixes: 6a132416359e ("ci_udc: Update the ci_udc driver to support bulk transfers")
Cc: Siva Durga Prasad Paladugu <siva.durga.paladugu@xilinx.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
9 years agousb: gadget: ci_udc: implement usb_ep_ops dequeue callback
Peng Fan [Fri, 28 Aug 2015 01:20:30 +0000 (09:20 +0800)]
usb: gadget: ci_udc: implement usb_ep_ops dequeue callback

Implement endpoint dequeue callback function.

Without this function, uboot will hang when executing fastboot comamnd.
See following flow:
"fastboot_tx_write_str->fastboot_tx_write->usb_ep_dequeue->ep->ops->dequeue"
without implement ci_udc dequeue function, ep->ops->dequeue is NULL, then
uboot will hang.

Tested on mx6qsabresd board with fastboot enabled.

Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
Tested-by: Fabio Estevam <fabio.estevam@freescale.com>
Cc: "Łukasz Majewski" <l.majewski@samsung.com>
Cc: Marek Vasut <marex@denx.de>
9 years agogpio: lpc32xx: fix issues with port3 gpio
Sylvain Lemieux [Wed, 9 Sep 2015 15:35:58 +0000 (11:35 -0400)]
gpio: lpc32xx: fix issues with port3 gpio

The current simplify lpc32xx gpio driver implementation assume a
maximum of 32 GPIO per port; there are a total of 22 GPI, 24 GPO
and 6 GPIO to managed on port 3.

Update the driver to fix the following:
1) When requesting GPI_xx and GPO_xx on port 3 (xx is the same number)
   the second call to "gpio_request" will return -EBUSY.

2) The status of GPO_xx pin report the status of the
   corresponding GPI_xx pin when using the "gpio status" command.

3) The gpio driver may setup the direction register for the wrong
   gpio when calling "gpio_direction_input" (GPI_xx) or
   "gpio_direction_output" (GPO_xx) on port 3; the call to the
   direction is require to use the "gpio status" command.

The following change were done in the driver:
1) port3 GPI are cache in a separate 32 bits in the array.
2) port3 direction register written only for GPIO pins.
3) port3 GPO & GPIO (as output) are read using "p3_outp_state".
4) LPC32XX_GPI_P3_GRP updated to match the change.

Signed-off-by: Sylvain Lemieux <slemieux@tycoint.com>
9 years agoomap3: cm-t3517: define CONFIG_MACH_TYPE
Dmitry Lifshitz [Wed, 9 Sep 2015 08:27:17 +0000 (11:27 +0300)]
omap3: cm-t3517: define CONFIG_MACH_TYPE

Define CONFIG_MACH_TYPE to allow non DT Linux boot.

Signed-off-by: Dmitry Lifshitz <lifshitz@compulab.co.il>
Acked-by: Igor Grinberg <grinberg@compulab.co.il>
9 years agoomap3: cm-t3517: change environment size
Dmitry Lifshitz [Wed, 9 Sep 2015 08:25:39 +0000 (11:25 +0300)]
omap3: cm-t3517: change environment size

Mainline CM-T3517 U-Boot environment size differs from that one
shipped with CM-T3517 boards.

Update environment size, to avoid backward compatibility issues.

Signed-off-by: Dmitry Lifshitz <lifshitz@compulab.co.il>
Acked-by: Igor Grinberg <grinberg@compulab.co.il>
9 years agoomap3: cm-t3517: fix MMC1 pinmux
Dmitry Lifshitz [Tue, 8 Sep 2015 06:50:01 +0000 (09:50 +0300)]
omap3: cm-t3517: fix MMC1 pinmux

Fix MMC1 pinmux setup, thus enable SD/MMC card support with CM-T3517.

Signed-off-by: Dmitry Lifshitz <lifshitz@compulab.co.il>
Acked-by: Igor Grinberg <grinberg@compulab.co.il>
9 years agoomap3: cm-t3517: enable 'netretry' and setup timeout
Dmitry Lifshitz [Tue, 8 Sep 2015 06:50:00 +0000 (09:50 +0300)]
omap3: cm-t3517: enable 'netretry' and setup timeout

SBC-T3517 evaluation board has two Eth interfaces.
Enable network retry of another interface if the default if failed
or disconnected.

Add 'netretry=yes' in the default env. Setup relevant
timeout values in the board config file.

Signed-off-by: Dmitry Lifshitz <lifshitz@compulab.co.il>
Acked-by: Igor Grinberg <grinberg@compulab.co.il>
9 years agobitops: introduce BIT() definition
Heiko Schocher [Mon, 7 Sep 2015 11:43:52 +0000 (13:43 +0200)]
bitops: introduce BIT() definition

introduce BIT() definition, used in at91_udc gadget
driver.

Signed-off-by: Heiko Schocher <hs@denx.de>
[remove all other occurrences of BIT(x) definition]
Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
Acked-by: Stefan Roese <sr@denx.de>
Acked-by: Anatolij Gustschin <agust@denx.de>
9 years agofs: ext4: fix symlink read function
Gary Bisson [Mon, 7 Sep 2015 09:20:07 +0000 (11:20 +0200)]
fs: ext4: fix symlink read function

Since last API changes for files >2GB, the read of symlink is broken as
ext4fs_read_file now returns 0 instead of the length of the actual read.

Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>
9 years agoigep00x0: Switch to use the generic distro configuration and environment.
Enric Balletbò i Serra [Mon, 7 Sep 2015 06:28:09 +0000 (08:28 +0200)]
igep00x0: Switch to use the generic distro configuration and environment.

This patch changes a little bit the environment, current environment was broken
for a long time, and board don't as expected sometimes, on production systems
this is fixed adding boot script. I think it's time to change this to make a
system conformant environment and use generic distro configurations and
environment instead. We can use a boot script for the old way boot mode.

Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
9 years agoigep00xx: MAINTAINERS: update eballetbo's email address.
Enric Balletbò i Serra [Mon, 7 Sep 2015 06:28:08 +0000 (08:28 +0200)]
igep00xx: MAINTAINERS: update eballetbo's email address.

Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
9 years agoboard: Add Toby-Churchill SL50 board support.
Enric Balletbò i Serra [Mon, 7 Sep 2015 05:43:20 +0000 (07:43 +0200)]
board: Add Toby-Churchill SL50 board support.

Add support for Lightwriter SL50 series board, a small, robust and portable
Voice Output Communication Aids (VOCA) designed to meet the particular and
changing needs of people with speech loss resulting from a wide range of
acquired, progressive and congenital conditions.

Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
9 years agoARM: tegra: enable DFU for RAM
Stephen Warren [Sat, 5 Sep 2015 04:03:51 +0000 (22:03 -0600)]
ARM: tegra: enable DFU for RAM

This allows transferring data directly to/from RAM. For example, one
could create a boot script that starts DFU on a RAM region, then once
DFU exits (which is under the control of the attached USB host, via a
USB bus reset), uses the code/data that was received over DFU.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
9 years agoARM: tegra: enable filesystem writing
Stephen Warren [Sat, 5 Sep 2015 04:03:50 +0000 (22:03 -0600)]
ARM: tegra: enable filesystem writing

Writing to files is a useful feature in general, so enable it everywhere.
The primary purpose is to make DFU useful on filesystems in addition to
raw devices.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
9 years agoARM: tegra: tweak DFU buffer sizes
Stephen Warren [Sat, 5 Sep 2015 04:03:49 +0000 (22:03 -0600)]
ARM: tegra: tweak DFU buffer sizes

CONFIG_SYS_DFU_DATA_BUF_SIZE defines the size of chunks transferred
across USB. This doesn't need to be particularly large, since it doesn't
limit the overall transfer size.

CONFIG_SYS_DFU_MAX_FILE_SIZE is used to buffer an entire file before
writing it to a filesystem. This define limits the maximum file size that
may be transferred. Bump this up to 32MiB in order to support large
uncompressed kernel images.

Both of these buffers are dynamically allocated, and so the size of both
needs to be taken into account when calculating the required malloc
region size.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
9 years agoARM: tegra: fix malloc region sizing
Stephen Warren [Sat, 5 Sep 2015 04:03:48 +0000 (22:03 -0600)]
ARM: tegra: fix malloc region sizing

Commit 52a7c98a1772 "tegra-common: increase malloc pool len by dfu mmc
file buffer size" updated the definition of CONFIG_SYS_MALLOC_LEN for
Tegra to take account of the DFU buffer size. However, this change had
no effect, since typical Tegra board config headers don't set the DFU-
related defines until after tegra-common.h is included. Fix this by
moving the affected conditional code to tegra-common-post.h, which is
included last. Also move the definition of SYS_NONCACHED_MEMORY since
it's a related and adjacent definition.

Fix the condition to test for the DFU feature, rather than specifically
MMC DFU support, so it applies in all cases.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
9 years agodfu: mmc: buffer file reads too
Stephen Warren [Sat, 5 Sep 2015 04:03:47 +0000 (22:03 -0600)]
dfu: mmc: buffer file reads too

When writing to files in a filesystem on MMC, dfu_mmc.c buffers up the
entire file content until the end of the transaction, at which point the
file is written in one go. This allows writing files larger than the USB
transfer size (CONFIG_SYS_DFU_DATA_BUF_SIZE); the maximum written file
size is CONFIG_SYS_DFU_MAX_FILE_SIZE (the size of the temporary buffer).

The current file reading code does not do any buffering, and so limits
the maximum read file size to the USB transfer size. Enhance the code to
do the same kind of buffering as the write path, so the same file size
limits apply.

Remove the size checking code from dfu_read() since all read paths now
support larger files than the USB transfer buffer.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Lukasz Majewski <l.majewski@samsung.com>
Tested-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agodfu: don't keep freeing/reallocating
Stephen Warren [Sat, 5 Sep 2015 04:03:46 +0000 (22:03 -0600)]
dfu: don't keep freeing/reallocating

DFU currently allocates buffer memory at the start of each data transfer
operation and frees it at the end. Especially since memalign() is used to
allocate the buffer, and various other allocations happen during the
transfer, this can expose the code to heap fragmentation, which prevents
the allocation from succeeding on subsequent transfers.

Fix the code to allocate the buffer once when DFU mode is initialized,
and free the buffer once when DFU mode is exited, to reduce the exposure
to heap fragmentation.

The failure mode is:

// Internally to memalign(), this allocates a lot more than s to guarantee
// that alignment can occur, then returns chunks of memory at the start/
// end of the allocated buffer to the heap.
p = memalign(a, s);
// Various other malloc()s occur here, some of which allocate the RAM
// immediately before/after "p".
//
// DFU transfer is complete, so buffer is released.
free(p);
// By chance, no other malloc()/free() here, in DFU at least.
//
// A new DFU transfer starts, so the buffer is allocated again.
// In theory this should succeed since we just free()d a buffer of the
// same size. However, this fails because memalign() internally attempts
// to allocate much more than "s", yet free(p) above only free()d a
// little more than "s".
p = memalign(a, s);

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Lukasz Majewski <l.majewski@samsung.com>
Tested-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agoext4: fix leak in check_filename()
Stephen Warren [Sat, 5 Sep 2015 04:03:45 +0000 (22:03 -0600)]
ext4: fix leak in check_filename()

root_first_block_buffer should be free()d in all cases, not just when an
error occurs. Fix the success exit path of the function to do this.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Lukasz Majewski <l.majewski@samsung.com>
Tested-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agoext4: free allocations by parse_path()
Stephen Warren [Sat, 5 Sep 2015 04:03:44 +0000 (22:03 -0600)]
ext4: free allocations by parse_path()

parse_path() malloc()s the entries in the array it's passed. Those
allocations must be free()d by the caller, ext4fs_get_parent_inode_num().
Add code to do this.

For this to work, all the array entries must be dynamically allocated,
rather than a mix of dynamic and static allocations. Fix parse_path() not
to over-write arr[0] with a pointer to statically allocated data.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Lukasz Majewski <l.majewski@samsung.com>
Tested-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agoext4: avoid calling ext4fs_mount() twice, which leaks
Stephen Warren [Sat, 5 Sep 2015 04:03:43 +0000 (22:03 -0600)]
ext4: avoid calling ext4fs_mount() twice, which leaks

ext4_write_file() is only called from the "fs" layer, which calls both
ext4fs_mount() and ext4fs_close() before/after calling ext4_write_file().
Fix ext4_write_file() not to call ext4fs_mount() again, since the mount
operation malloc()s some RAM which is leaked when a second mount call
over-writes the pointer to that data, if no intervening close call is
made.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Lukasz Majewski <l.majewski@samsung.com>
Tested-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: gadget: don't leak configs when unbinding
Stephen Warren [Sat, 5 Sep 2015 04:03:42 +0000 (22:03 -0600)]
usb: gadget: don't leak configs when unbinding

By the time g_dnl_unbind() is run, cdev->config has been set to NULL,
so the free() there does nothing, and the config struct is leaked.
Equally, struct usb_gadget contains a linked list of config structs, so
the code should iterate over them all and free each one, rather than
freeing one particular config struct.

composite_unbind() already iterates over the list of config structs, and
unlinks each from the linked list. Fix this loop to free() each struct as
it's unlinked and otherwise forgotten.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Lukasz Majewski <l.majewski@samsung.com>
Tested-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agoFIX: fat: Provide correct return code from disk_{read|write} to upper layers
Łukasz Majewski [Thu, 3 Sep 2015 12:21:39 +0000 (14:21 +0200)]
FIX: fat: Provide correct return code from disk_{read|write} to upper layers

It is very common that FAT code is using following pattern:
if (disk_{read|write}() < 0)
        return -1;

Up till now the above code was dead, since disk_{read|write) could only
return value >= 0.
As a result some errors from medium layer (i.e. eMMC/SD) were not caught.

The above behavior was caused by block_{read|write|erase} declared at
struct block_dev_desc (@part.h). It returns unsigned long, where 0
indicates error and > 0 indicates that medium operation was correct.

This patch as error regards 0 returned from block_{read|write|erase}
when nr_blocks is grater than zero. Read/Write operation with nr_blocks=0
should return 0 and hence is not considered as an error.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Test HW: Odroid XU3 - Exynos 5433

9 years agoinclude: configs: Enable DWC3 and DFU in OMAP5 uEVM
Kishon Vijay Abraham I [Thu, 3 Sep 2015 09:57:52 +0000 (15:27 +0530)]
include: configs: Enable DWC3 and DFU in OMAP5 uEVM

Enable dwc3, dwc3-omap and PHY to get DWC3 functional in OMAP5
uEVM. Also enable support for DFU.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
9 years agoMove ALLOC_CACHE_ALIGN_BUFFER() to the new memalign.h header
Simon Glass [Wed, 2 Sep 2015 23:24:58 +0000 (17:24 -0600)]
Move ALLOC_CACHE_ALIGN_BUFFER() to the new memalign.h header

Now that we have a new header file for cache-aligned allocation, we should
move the stack-based allocation macro there also.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agoMove malloc_cache_aligned() to its own header
Simon Glass [Wed, 2 Sep 2015 23:24:57 +0000 (17:24 -0600)]
Move malloc_cache_aligned() to its own header

At present malloc.h is included everywhere since it recently was added to
common.h in this commit:

   4519668 mtd/nand/ubi: assortment of alignment fixes

This seems wasteful and unnecessary. We have been trying to trim down
common.h and put separate functions into separate header files and that
change goes in the opposite direction.

Move malloc_cache_aligned() to a new header so that this can be avoided.
The header would perhaps be better named as alignmem.h but it needs to be
included after common.h and people might be confused by this. With the name
memalign.h it fits nicely after malloc() in most cases.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
9 years agoarm: spear: Enable THUMB mode on x600 board
Stefan Roese [Wed, 2 Sep 2015 09:11:00 +0000 (11:11 +0200)]
arm: spear: Enable THUMB mode on x600 board

To reduce the size of the U-Boot image on the x600 board, lets enable
the THUMB mode. This reduces the overall size to less than 0x6000
bytes. Fitting it again in the onboard NOR flash.

Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Viresh Kumar <viresh.kumar@linaro.org>
9 years agoarm: spear: Add BCH4 SW support to SPEAr600 x600 board
Stefan Roese [Wed, 2 Sep 2015 09:10:59 +0000 (11:10 +0200)]
arm: spear: Add BCH4 SW support to SPEAr600 x600 board

This board is equipped with a Micron NAND chip (MT29F1G08ABADAH4) that
needs 4-bit ECC. But the SPEAr600 only supports 1-bit HW ECC internally.
This patch enables the SW 4-bit BCH support for this board.

Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Viresh Kumar <viresh.kumar@linaro.org>
9 years agoarm: spear: Add command to switch between 1-bit HW ECC and SW BCH4
Stefan Roese [Wed, 2 Sep 2015 09:10:58 +0000 (11:10 +0200)]
arm: spear: Add command to switch between 1-bit HW ECC and SW BCH4

This patch adds the "nandecc" command to switch between the SPEAr600 internal
1-bit HW ECC and the 4-bit SW BCH4 ECC. This can be needed to support NAND
chips with a stronger ECC than 1-bit, as on the x600. And to dynamically
switch between both ECC schemes for backwards compatibility.

Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Viresh Kumar <viresh.kumar@linaro.org>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
9 years agomtd: nand: fsmc: Add BCH4 SW ECC support for SPEAr600
Stefan Roese [Wed, 2 Sep 2015 12:29:12 +0000 (14:29 +0200)]
mtd: nand: fsmc: Add BCH4 SW ECC support for SPEAr600

This patch adds support for 4-bit ECC BCH4 for the SPEAr600 SoC. This can
be used by boards equipped with a NAND chip that requires 4-bit ECC strength.
The SPEAr600 HW ECC only supports 1-bit ECC strength.

To enable SW BCH4, you need to specify this in your config header:

#define CONFIG_NAND_ECC_BCH
#define CONFIG_BCH

And use the command "nandecc bch4" to select this ECC scheme upon runtime.

Tested on SPEAr600 x600 board.

Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Scott Wood <scottwood@freescale.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
9 years agoarm: Remove tx25 board
Simon Glass [Mon, 31 Aug 2015 01:19:39 +0000 (19:19 -0600)]
arm: Remove tx25 board

This board has not been converted to generic board by the deadline.
Remove it.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agoarm: Remove palmtreo680 board
Simon Glass [Mon, 31 Aug 2015 01:19:36 +0000 (19:19 -0600)]
arm: Remove palmtreo680 board

This board has not been converted to generic board by the deadline.
Remove it.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agoarm: Remove xaeniax board
Simon Glass [Mon, 31 Aug 2015 01:19:34 +0000 (19:19 -0600)]
arm: Remove xaeniax board

This board has not been converted to generic board by the deadline.
Remove it.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agoarm: Remove vpac270_nor_128 board
Simon Glass [Mon, 31 Aug 2015 01:19:33 +0000 (19:19 -0600)]
arm: Remove vpac270_nor_128 board

This board has not been converted to generic board by the deadline.
Remove it.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agoarm: Remove vl_ma2sc board
Simon Glass [Mon, 31 Aug 2015 01:19:32 +0000 (19:19 -0600)]
arm: Remove vl_ma2sc board

This board has not been converted to generic board by the deadline.
Remove it.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agoarm: Remove vision2 board
Simon Glass [Mon, 31 Aug 2015 01:19:31 +0000 (19:19 -0600)]
arm: Remove vision2 board

This board has not been converted to generic board by the deadline.
Remove it.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Stefano Babic <sbabic@denx.de>
9 years agoarm: Remove versatileab board
Simon Glass [Mon, 31 Aug 2015 01:19:30 +0000 (19:19 -0600)]
arm: Remove versatileab board

This board has not been converted to generic board by the deadline.
Remove it.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agoarm: Remove tt01 board
Simon Glass [Mon, 31 Aug 2015 01:19:29 +0000 (19:19 -0600)]
arm: Remove tt01 board

This board has not been converted to generic board by the deadline.
Remove it.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agoarm: Remove tk71 board
Simon Glass [Mon, 31 Aug 2015 01:19:28 +0000 (19:19 -0600)]
arm: Remove tk71 board

This board has not been converted to generic board by the deadline.
Remove it.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agoarm: Remove scb9328 board
Simon Glass [Mon, 31 Aug 2015 01:19:27 +0000 (19:19 -0600)]
arm: Remove scb9328 board

This board has not been converted to generic board by the deadline.
Remove it.

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