]> git.kernelconcepts.de Git - karo-tx-uboot.git/log
karo-tx-uboot.git
9 years agodfu, nand: add medium specific polltimeout function
Heiko Schocher [Fri, 11 Apr 2014 05:59:47 +0000 (07:59 +0200)]
dfu, nand: add medium specific polltimeout function

add a possibility to add a medium specific polltimeout
function. So it is possible to define different
poll timeouts.

Used on nand medium, for setting the DFU_MANIFEST_POLL_TIMEOUT
only on nand ubi partitions, which is currently the only
usecase.

Change-Id: If1db5f49b32d93fefa7481e8dfe5b7ccc0e65af4
Signed-off-by: Heiko Schocher <hs@denx.de>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Pantelis Antoniou <panto@antoniou-consulting.com>
Reviewed-by: Marek Vasut <marex@denx.de>
Acked-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agomusb-new, dfu: first send request answer then call completions
Heiko Schocher [Thu, 10 Apr 2014 05:08:05 +0000 (07:08 +0200)]
musb-new, dfu: first send request answer then call completions

comment in ep0_txstate() states:

"report completions as soon as the fifo's loaded; there's no win
 in waiting till this last packet gets acked".

This is wrong for using dfu. In the dfu usecase we must send
a PollTimeout to the host, so the host can wait until the
U-Boot Code is ready for answering new usb requests. So the
answer which contains the PollTimeout must send *before*
U-Boot calls req->complete.

The req->complete is used in the dfu case for flushing the
medium, when entering DFU_STATE_dfuMANIFEST_SYNC state.

Change-Id: Ib2941119c72761e48e15fedbdad1ecce07ae0b3d
Signed-off-by: Heiko Schocher <hs@denx.de>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Pantelis Antoniou <panto@antoniou-consulting.com>
Acked-by: Marek Vasut <marex@denx.de>
Acked-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agoarm: beagle: enable Android fastboot support
Rob Herring [Mon, 5 May 2014 20:08:11 +0000 (15:08 -0500)]
arm: beagle: enable Android fastboot support

Enable Android Fastboot support on omap3_beagle board.

Signed-off-by: Rob Herring <robh@kernel.org>
9 years agousb/gadget: add the fastboot gadget
Sebastian Siewior [Mon, 5 May 2014 20:08:10 +0000 (15:08 -0500)]
usb/gadget: add the fastboot gadget

This patch contains an implementation of the fastboot protocol on the
device side and documentation. This is based on USB download gadget
infrastructure. The fastboot function implements the getvar, reboot,
download and reboot commands. What is missing is the flash handling i.e.
writting the image to media.

v3 (Rob Herring):
This is based on http://patchwork.ozlabs.org/patch/126798/ with the
following changes:
- Rebase to current mainline and updates for current gadget API
- Use SPDX identifiers for licenses
- Traced the history and added missing copyright to cmd_fastboot.c
- Use load_addr/load_size for transfer buffer
- Allow vendor strings to be optional
- Set vendor/product ID from config defines
- Allow Ctrl-C to exit fastboot mode
v4:
- Major re-write to use the USB download gadget. Consolidated function
code to a single file.
- Moved globals into single struct.
- Use puts and putc as appropriate.
- Added CONFIG_USB_FASTBOOT_BUF_ADDR and CONFIG_USB_FASTBOOT_BUF_SIZE to
set the fastboot transfer buffer.
v5:
- Add CONFIG option documentation to README
- Rebase using new downloader registration

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Rob Herring <robh@kernel.org>
9 years agoimage: add support for Android's boot image format
Sebastian Siewior [Mon, 5 May 2014 20:08:09 +0000 (15:08 -0500)]
image: add support for Android's boot image format

This patch adds support for the Android boot-image format. The header
file is from the Android project and got slightly alterted so the struct +
its defines are not generic but have something like a namespace. The
header file is from bootloader/legacy/include/boot/bootimg.h. The header
parsing has been written from scratch and I looked at
bootloader/legacy/usbloader/usbloader.c for some details.
The image contains the physical address (load address) of the kernel and
ramdisk. This address is considered only for the kernel image.
The "second image" defined in the image header is currently not
supported. I haven't found anything that is creating this.

v3 (Rob Herring):
This is based on http://patchwork.ozlabs.org/patch/126797/ with the
following changes:
- Rebased to current mainline
- Moved android image handling to separate functions in
  common/image-android.c
- s/u8/char/ in header to fix string function warnings
- Use SPDX identifiers for licenses
- Cleaned-up file source information:
  android_image.h is from file include/boot/bootimg.h in repository:
  https://android.googlesource.com/platform/bootable/bootloader/legacy
  The git commit hash is 4205b865141ff2e255fe1d3bd16de18e217ef06a
  usbloader.c would be from the same commit, but it does not appear
  to have been used for any actual code.
v4:
- s/andriod/android/
- Use a separate flag ep_found to track if the entry point has been set
rather than using a magic value.

Cc: Wolfgang Denk <wd@denx.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Rob Herring <robh@kernel.org>
Reviewed-by: Tom Rini <trini@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agoums: allow the user to specify the device type
Stephen Warren [Mon, 5 May 2014 16:40:18 +0000 (10:40 -0600)]
ums: allow the user to specify the device type

Allow an optional devtype parameter to the ums command, which specifies
the type of the device to be exported. This could allow exporting a SATA
or even another USB device.

Cc: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
9 years agoums: move all variable declarations to the start of the block
Stephen Warren [Mon, 5 May 2014 16:40:17 +0000 (10:40 -0600)]
ums: move all variable declarations to the start of the block

It's easier to assign values to the variables inside an if statement body
if the assignment and declaration are separate.

Cc: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
9 years agoums: use get_device() not find_mmc_device();
Stephen Warren [Mon, 5 May 2014 16:40:16 +0000 (10:40 -0600)]
ums: use get_device() not find_mmc_device();

get_device() is a generic routine that will support any type of block
device. Use this instead of the type-specific find_mmc_device(), for
future flexibility.

Cc: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
9 years agoums: move IO support code to common location
Stephen Warren [Mon, 5 May 2014 16:40:15 +0000 (10:40 -0600)]
ums: move IO support code to common location

There's nothing Samsung-/board-specfic about the implementation of
ums_init(). Move the code into cmd_usb_mass_storage.c, so that it can
be shared by any user of that command.

Cc: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
9 years agoums: remove ums_disk_init()
Stephen Warren [Mon, 5 May 2014 16:40:14 +0000 (10:40 -0600)]
ums: remove ums_disk_init()

Now that ums_disk_init() is so simple, there's no need for it to be a
separate function. Instead, just add it to the tail end of ums_init().

Cc: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
9 years agoums: remove error-checking of MMC device size
Stephen Warren [Mon, 5 May 2014 16:40:13 +0000 (10:40 -0600)]
ums: remove error-checking of MMC device size

There's no reason to believe that an MMC device will incorrectly report
its capacity. Remove error checking of this value from ums_disk_init()
to simplify it.

Cc: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
9 years agoums: remove UMS_{NUM,START}_SECTORS + UMS_START_SECTOR
Stephen Warren [Mon, 5 May 2014 16:40:12 +0000 (10:40 -0600)]
ums: remove UMS_{NUM,START}_SECTORS + UMS_START_SECTOR

These values aren't set anywhere at present, and hence have no effect.
The concept of a single global offset/number of sectors to expose through
USB Mass Storage doesn't even make sense in the face of multiple storage
devices. Remove these defines to simplify the code.

Cc: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
9 years agoums: support block devices not MMC devices
Stephen Warren [Mon, 5 May 2014 16:40:11 +0000 (10:40 -0600)]
ums: support block devices not MMC devices

The USB Mass Storage function could equally well support a SATA device
as support an MMC device. Update struct ums to contain a block device
descriptor, not an MMC device descriptor.

Cc: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
9 years agousb: ums: add error handling for failed registration
Stephen Warren [Thu, 1 May 2014 21:42:10 +0000 (15:42 -0600)]
usb: ums: add error handling for failed registration

Without this, if g_dnl_register() fails, the UMS code continues on
blindly and crashes. This fix makes it simply print an error message
instead.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
9 years agousb: ums: remove ci_udc special case
Stephen Warren [Mon, 5 May 2014 23:48:12 +0000 (17:48 -0600)]
usb: ums: remove ci_udc special case

Now that the ci_udc driver supports allocating multiple requests per
endpoint, we can revert the special-case added by a022c1e13c01 "usb:
ums: use only 1 buffer for CI_UDC".

Signed-off-by: Stephen Warren <swarren@nvidia.com>
9 years agousb: ci_udc: allow multiple buffer allocs per ep
Stephen Warren [Mon, 5 May 2014 23:48:11 +0000 (17:48 -0600)]
usb: ci_udc: allow multiple buffer allocs per ep

Modify ci_ep_alloc_request() to return a dynamically allocated request
object, rather than a singleton that's part of the endpoint. This
requires moving various state from the endpoint structure to the request
structure, since we need one copy per request.

The "fast bounce buffer" b_fast is removed by this change rather than
moved to the request object. Instead, we enhance the bounce buffer logic
in ci_bounce()/ci_debounce() to keep the bounce buffer around between
request submissions. This avoids the need to allocate an arbitrarily-
sized bounce buffer up-front, yet avoids incurring the allocation
overhead each time a request is submitted.

A future enhancement would be to actually submit multiple requests to HW
at once. The Linux driver shows that this is possible. That might improve
throughput (depending on the USB protocol in use), since USB could be
performing a transfer to one HW buffer in parallel with whatever SW
actions U-Boot performs on another buffer. However, I have not made this
change as part of this patch, in order to keep SW changes related to
buffer management separate from any change in the way the HW is
programmed.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
9 years agoMerge branch 'serial' of git://www.denx.de/git/u-boot-microblaze
Tom Rini [Tue, 6 May 2014 18:55:45 +0000 (14:55 -0400)]
Merge branch 'serial' of git://www.denx.de/git/u-boot-microblaze

9 years agoMerge branch 'master' of git://www.denx.de/git/u-boot-microblaze
Tom Rini [Tue, 6 May 2014 18:55:27 +0000 (14:55 -0400)]
Merge branch 'master' of git://www.denx.de/git/u-boot-microblaze

9 years agoMerge branch 'net' of git://www.denx.de/git/u-boot-microblaze
Tom Rini [Tue, 6 May 2014 18:50:22 +0000 (14:50 -0400)]
Merge branch 'net' of git://www.denx.de/git/u-boot-microblaze

9 years agoMerge branch 'master' of git://git.denx.de/u-boot-usb
Tom Rini [Tue, 6 May 2014 18:45:51 +0000 (14:45 -0400)]
Merge branch 'master' of git://git.denx.de/u-boot-usb

9 years agoserial: zynq: Fix typo in suffix function name
Michal Simek [Fri, 25 Apr 2014 11:46:28 +0000 (13:46 +0200)]
serial: zynq: Fix typo in suffix function name

's/zynq_serial_initalize/zynq_serial_initialize/g'
serial_initialize is used by all serial drivers.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
9 years agoserial: zynq: Remove sparse warnings
Michal Simek [Fri, 25 Apr 2014 11:45:08 +0000 (13:45 +0200)]
serial: zynq: Remove sparse warnings

Warnings:
drivers/serial/serial_zynq.c:181:1: warning: symbol 'uart_zynq0_init' was not declared. Should it be static?
drivers/serial/serial_zynq.c:181:1: warning: symbol 'uart_zynq0_setbrg' was not declared. Should it be static?
drivers/serial/serial_zynq.c:181:1: warning: symbol 'uart_zynq0_getc' was not declared. Should it be static?
drivers/serial/serial_zynq.c:181:1: warning: symbol 'uart_zynq0_tstc' was not declared. Should it be static?
drivers/serial/serial_zynq.c:181:1: warning: symbol 'uart_zynq0_putc' was not declared. Should it be static?
drivers/serial/serial_zynq.c:181:1: warning: symbol 'uart_zynq0_puts' was not declared. Should it be static?
drivers/serial/serial_zynq.c:182:22: warning: symbol 'uart_zynq_serial0_device' was not declared. Should it be static?
drivers/serial/serial_zynq.c:184:1: warning: symbol 'uart_zynq1_init' was not declared. Should it be static?
drivers/serial/serial_zynq.c:184:1: warning: symbol 'uart_zynq1_setbrg' was not declared. Should it be static?
drivers/serial/serial_zynq.c:184:1: warning: symbol 'uart_zynq1_getc' was not declared. Should it be static?
drivers/serial/serial_zynq.c:184:1: warning: symbol 'uart_zynq1_tstc' was not declared. Should it be static?
drivers/serial/serial_zynq.c:184:1: warning: symbol 'uart_zynq1_putc' was not declared. Should it be static?
drivers/serial/serial_zynq.c:184:1: warning: symbol 'uart_zynq1_puts' was not declared. Should it be static?
drivers/serial/serial_zynq.c:185:22: warning: symbol 'uart_zynq_serial1_device' was not declared. Should it be static?

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
9 years agonet: zynq: Fix sparse warnings in gem
Michal Simek [Fri, 25 Apr 2014 12:17:38 +0000 (14:17 +0200)]
net: zynq: Fix sparse warnings in gem

Add missing header.

Warnings:
drivers/net/zynq_gem.c:491:5: warning: symbol 'zynq_gem_initialize' was not declared. Should it be static?
drivers/net/zynq_gem.c:542:5: warning: symbol 'zynq_gem_of_init' was not declared. Should it be static?

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
9 years agonet: zynq: Use predefined macros instead of hardcoded value
Michal Simek [Tue, 25 Feb 2014 09:25:38 +0000 (10:25 +0100)]
net: zynq: Use predefined macros instead of hardcoded value

MII is used by this driver.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
9 years agomicroblaze: Wire up OF support for emaclite
Stephan Linz [Wed, 4 Jul 2012 20:25:31 +0000 (22:25 +0200)]
microblaze: Wire up OF support for emaclite

 - expand the condition with CONFIG_OF_CONTROL

Signed-off-by: Stephan Linz <linz@li-pro.net>
Acked-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
9 years agocommon: fixed linker-list example
Mateusz Zalega [Tue, 29 Apr 2014 18:14:22 +0000 (20:14 +0200)]
common: fixed linker-list example

Last argument shouldn't be there.

Signed-off-by: Mateusz Zalega <m.zalega@samsung.com>
Acked-by: Marek Vasut <marex@denx.de>
Cc: Tom Rini <trini@ti.com>
9 years agoUSB: gadget: save driver name before registering it
Stephen Warren [Thu, 1 May 2014 21:45:16 +0000 (15:45 -0600)]
USB: gadget: save driver name before registering it

g_dnl_register() currently first attempts to register a composite
driver by name, and then saves the driver name once it's registered.
Internally to the registration code, g_dnl_do_config() is called and
attempts to compare the composite device's name with the list of known
device names. This fails since the composite device's name has not yet
been stored. This means that the first time "ums 0 0" is run, it fails,
but subsequent attempts succeed.

Re-order the name-saving and registration code to solve this.

Fixes: e5b834e07f51 ("USB: gadget: added a saner gadget downloader registration API")
Signed-off-by: Stephen Warren <swarren@nvidia.com>
9 years agoUSB: gadget: added a saner gadget downloader registration API
Mateusz Zalega [Mon, 28 Apr 2014 19:13:28 +0000 (21:13 +0200)]
USB: gadget: added a saner gadget downloader registration API

Preprocessor definitions and hardcoded implementation selection in
g_dnl core were replaced by a linker list made of (usb_function_name,
bind_callback) pairs.

Signed-off-by: Mateusz Zalega <m.zalega@samsung.com>
Acked-by: Lukasz Majewski <l.majewski@samsung.com>
Acked-by: Marek Vasut <marex@denx.de>
9 years agoam335x: dfu: disable DFU in am335x_evm SPL build
Mateusz Zalega [Mon, 28 Apr 2014 19:13:27 +0000 (21:13 +0200)]
am335x: dfu: disable DFU in am335x_evm SPL build

Future patches will make DFU too large to fit in this board's SPL build.

Signed-off-by: Mateusz Zalega <m.zalega@samsung.com>
Acked-by: Tom Rini <trini@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agoums: always initialize mmc before ums_disk_init()
Mateusz Zalega [Mon, 28 Apr 2014 19:13:26 +0000 (21:13 +0200)]
ums: always initialize mmc before ums_disk_init()

In cases when MMC hadn't been initialized before, ie. by the user or other
subsystem, it was still uninitialized while UMS media capacity check,
leading to broken ums command.

UMS has to initialize resources it uses.

Tested on Samsung Goni.

Signed-off-by: Mateusz Zalega <m.zalega@samsung.com>
Tested-by: Mateusz Zalega <m.zalega@samsung.com>
Acked-by: Lukasz Majewski <l.majewski@samsung.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
9 years agodfu: mmc: change offset base handling
Mateusz Zalega [Mon, 28 Apr 2014 19:13:25 +0000 (21:13 +0200)]
dfu: mmc: change offset base handling

Previously offsets handled by dfu_fill_entity_mmc(), defined in boards'
CONFIG_DFU_ALT were treated as hexadecimal regardless of their prefix,
which sometimes led to confusion. This patch forces usage of explicit
numerical base prefixes.

Signed-off-by: Mateusz Zalega <m.zalega@samsung.com>
Acked-by: Lukasz Majewski <l.majewski@samsung.com>
Cc: Tom Rini <trini@ti.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
9 years agodfu: mmc: raw data write fix
Mateusz Zalega [Mon, 28 Apr 2014 19:13:24 +0000 (21:13 +0200)]
dfu: mmc: raw data write fix

When user attempted to perform a raw write using DFU (vide
dfu_fill_entity_mmc) with MMC interface not initialized before,
get_mmc_blk_size() reported invalid (zero) block size - it wasn't
possible to write ie. a new u-boot image.

This commit fixes that by initializing MMC device before use in
dfu_fill_entity_mmc().

While fixing initialization sequence, I had to change about half of
dfu_fill_entity_mmc's body, so I refactored it on the way to make it,
IMHO, considerably more comprehensible.

Being left as dead code, get_mmc_blk_size() was removed.

Tested on Samsung Goni.

Signed-off-by: Mateusz Zalega <m.zalega@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Acked-by: Lukasz Majewski <l.majewski@samsung.com>
Acked-by: Tom Rini <trini@ti.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
9 years agousb: dfu: fix boards wo USB cable detection
Mateusz Zalega [Wed, 30 Apr 2014 11:07:48 +0000 (13:07 +0200)]
usb: dfu: fix boards wo USB cable detection

Former usb_cable_connected() patch broke compilation of boards which do
not support this feature.

I've renamed usb_cable_connected() to g_dnl_usb_cable_connected() and added
its default implementation to gadget downloader driver code. There's
only one driver of this kind and it's unlikely there'll be another, so
there's no point in keeping it in /common.

Previously this function was declared in usb.h. I've moved it, since
it's more appropriate to keep it in g_dnl.h - usb.h seems to be intended
for USB host implementation.

Existing code, confronted with default -EOPNOTSUPP return value,
continues as if the cable was connected.

CONFIG_USB_CABLE_CHECK was removed.

Change-Id: Ib9198621adee2811b391c64512f14646cefd0369
Signed-off-by: Mateusz Zalega <m.zalega@samsung.com>
Acked-by: Marek Vasut <marex@denx.de>
Acked-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agopart: header fix
Mateusz Zalega [Mon, 28 Apr 2014 19:13:22 +0000 (21:13 +0200)]
part: header fix

Implementation made use of types defined in common.h, even though it
wasn't #included. It worked in circumstances when .c files included
every needed header (all).

Signed-off-by: Mateusz Zalega <m.zalega@samsung.com>
Cc: Tom Rini <trini@ti.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
9 years agommc: mmc header fix
Mateusz Zalega [Wed, 30 Apr 2014 11:04:15 +0000 (13:04 +0200)]
mmc: mmc header fix

Structure definition used type block_dev_desc_t, defined in part.h, which
wasn't included in mmc.h. It worked only in circumstances when common.h,
or another header using part.h was incuded in implementation files.

Change-Id: I5b203928b689887e3e78beb00a378955e0553eb7
Signed-off-by: Mateusz Zalega <m.zalega@samsung.com>
Acked-by: Pantelis Antoniou <panto@antoniou-consulting.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
9 years agoMerge branch 'next' of git://git.denx.de/u-boot-sh
Tom Rini [Fri, 2 May 2014 15:48:07 +0000 (11:48 -0400)]
Merge branch 'next' of git://git.denx.de/u-boot-sh

9 years agousb: gadget: allow ci_udc to build with new gadget framework
Stephen Warren [Mon, 28 Apr 2014 21:42:00 +0000 (15:42 -0600)]
usb: gadget: allow ci_udc to build with new gadget framework

Allow ci_udc.o to be built when using the new(?) USB gadget framework,
as enabled by CONFIG_USB_GADGET.

Note that this duplicates the Makefile entry for ci_udc.o, since it's
also included inside #ifdef CONFIG_USB_ETHER. I'm not sure what that
define means; perhaps an old style of Ethernet-specific USB gadget
implementation?

I wonder if the line that this patch adds shouldn't be outside all of
the ifdefs, so it stands on its own, similar to how e.g. epautoconf.o
is shared between the two?

Signed-off-by: Stephen Warren <swarren@nvidia.com>
10 years agousb: ums: use only 1 buffer for CI_UDC
Stephen Warren [Thu, 24 Apr 2014 23:52:40 +0000 (17:52 -0600)]
usb: ums: use only 1 buffer for CI_UDC

ci_udc.c allocates only a single buffer for each endpoint, which
ci_ep_alloc_request() returns as a hard-coded value rather than
dynamically allocating. Consequently, storage_common.c must limit
itself to using a single buffer at a time. Add a special case
to the definition of FSG_NUM_BUFFERS for this.

Another option would be to fix ci_ep_alloc_request() to dynamically
allocate the buffers like some/all(?) other device mode drivers do.
However, I don't think that ci_ep_queue() supports queueing up
multiple buffers either yet, and I'm not familiar enough with the
controller yet to implement that. As such, any attempt to use multiple
buffers simply results in data corruption and other errors.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
10 years agousb: ci_udc: support variants with hostpc register
Stephen Warren [Thu, 24 Apr 2014 23:52:39 +0000 (17:52 -0600)]
usb: ci_udc: support variants with hostpc register

Tegra's USB controller appears to be a variant of the ChipIdea
controller; perhaps derived from it, or simply a different version of
the IP core to what U-Boot supports today.

In this variant, at least the following difference are present:
- Some registers are moved about.
- Setup transaction completion is reported in a separate 'epsetupstat'
  register, rather than in 'epstat' (which still exists, perhaps for
  other transaction types).
- USB connection speed is reported in a separate 'hostpc1_devlc'
  register, rather than 'portsc'.
- The registers used by ci_udc.c begin at offset 0x130 from the USB
  register base, rather than offset 0x140. However, this is handled
  by the associated EHCI controller driver, since the register address
  is stored in controller.ctrl->hcor.

Introduce define CONFIG_CI_UDC_HAS_HOSTPC to indicate which variant of
the controller should be supported. The "HAS_HOSTPC" part of this name
mirrors the similar "has_hostpc" field used by the Linux EHCI controller
core to represent the presence/absence of the hostpc1_devlc register.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
10 years agousb: ci_udc: make PHY initialization conditional
Stephen Warren [Thu, 24 Apr 2014 23:52:38 +0000 (17:52 -0600)]
usb: ci_udc: make PHY initialization conditional

usb_gadget_register_driver() currently unconditionally programs PORTSC
to select a ULPI PHY. This is incorrect on at least the Tegra boards I
am testing with, which use a UTMI PHY for the OTG ports. Make the PHY
selection code conditional upon the specific EHCI controller that is in
use.

Ideally, I believe that the PHY initialization code should be part of
ehci_hcd_init() in the relevant EHCI controller driver, or some board-
specific function that ehci_hcd_init() calls.

For MX6, I'm not sure this PHY initialization code is correct even before
this patch, since ehci-mx6's ehci_hcd_init() already configures PORTSC to
a board-specific value, and it seems likely that the code in ci_udc.c is
incorrectly undoing this. Perhaps this is not an issue if the PHY
selection register bits aren't implemented on this instance of the MX6
USB controller?

ehci-mxs.c doens't appear to touch PORTSC, so this code is likely still
required there.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
10 years agousb: ci_udc: set ep->req.actual after transfer
Stephen Warren [Thu, 24 Apr 2014 23:52:37 +0000 (17:52 -0600)]
usb: ci_udc: set ep->req.actual after transfer

At least drivers/usb/gadget/storage_common.c expects that ep->req.actual
contain the number of bytes actually transferred. (At least in practice,
I observed it failing to work correctly unless this was the case).

However, ci_udc.c modifies ep->req.length instead. I assume that .length
 is supposed to represent the allocated buffer size, whereas .actual is
supposed to represent the actual number of bytes transferred. In the OUT
transaction case, this may happen simply because the host sends a smaller
 packet than the max possible size, which is quite legal. In the IN case,
transferring fewer bytes than requested could presumably happen as an
error.

Modify handle_ep_complete() to write to .actual rather than modifying
.length.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
10 years agousb: ci_udc: Support larger packets
Stephen Warren [Thu, 24 Apr 2014 23:52:36 +0000 (17:52 -0600)]
usb: ci_udc: Support larger packets

ci_ep_queue() currently only fills in the page0/page1 fields in the
queue item. If the buffer is larger than 4KiB (unaligned) or 8KiB
(page-aligned), then this prevents the HW from knowing where to write
the balance of the data.

Fix this by initializing all 5 pageN pointers, which allows up to
16KiB (potentially non-page-aligned) buffers.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
10 years agodfu:fix: Replace wrong return value with proper one
Lukasz Majewski [Thu, 24 Apr 2014 08:24:53 +0000 (10:24 +0200)]
dfu:fix: Replace wrong return value with proper one

This patch remove always false (since we tested ret = 0) ternary operator
with ret value returned.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
10 years agoexynos: usb: Fix data abort on boards w/o vbus-gpio node in the DT
andrey.konovalov@linaro.org [Tue, 22 Apr 2014 17:23:49 +0000 (21:23 +0400)]
exynos: usb: Fix data abort on boards w/o vbus-gpio node in the DT

Commit 4a271cb1b4ff doesn't take into account that fdtdec_setup_gpio()
returns success when the gpio passed to it is FDT_GPIO_NONE (no
gpio node found in the fdtdec_decode_gpio() call). This results in
calling gpio_direction_output() on invalid gpio. For this reason
executing "usb start" command on Arndale causes data abort in the
ehci-exynos driver.

Add the fdt_gpio_isvalid() check to fix that problem.

Signed-off-by: Andrey Konovalov <andrey.konovalov@linaro.org>
Cc: Julius Werner <jwerner@chromium.org>
Cc: Simon Glass <sjg@chromium.org>
Cc: Minkyu Kang <mk7.kang@samsung.com>
Cc: Marek Vasut <marex@denx.de>
10 years agousb: musb: fill in usb_gadget_unregister_driver
Rob Herring [Fri, 18 Apr 2014 13:54:30 +0000 (08:54 -0500)]
usb: musb: fill in usb_gadget_unregister_driver

Add missing missing disconnect and unbind calls to the musb gadget driver's
usb_gadget_unregister_driver function. Otherwise, any gadget drivers fail
to uninitialize and run a 2nd time.

Signed-off-by: Rob Herring <robh@kernel.org>
10 years agousb: handle NULL table in usb_gadget_get_string
Rob Herring [Fri, 18 Apr 2014 13:54:28 +0000 (08:54 -0500)]
usb: handle NULL table in usb_gadget_get_string

Allow a NULL table to be passed to usb_gadget_get_string for cases
when a string table may not be populated.

Signed-off-by: Rob Herring <robh@kernel.org>
Reviewed-by: Tom Rini <trini@ti.com>
Acked-by: Marek Vasut <marex@denx.de>
Acked-by: Lukasz Majewski <l.majewski@samsung.com>
10 years agousb:gadget:f_thor: fix write to filesystem by add dfu_flush()
Przemyslaw Marczak [Fri, 18 Apr 2014 07:48:25 +0000 (09:48 +0200)]
usb:gadget:f_thor: fix write to filesystem by add dfu_flush()

Since dfu read/write operations needs to be flushed manually,
writing to filesystem on MMC by thor was broken. MMC raw write
actually is working fine because current dfu_flush() function
writes filesystem only. This commit adds dfu_flush() to f_thor
and now filesystem write is working.

This change was tested on Trats2 board.

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Heiko Schocher <hs@denx.de>
Cc: Tom Rini <trini@ti.com>
10 years agousb:gadget:f_thor: code cleanup in function download_tail()
Przemyslaw Marczak [Fri, 18 Apr 2014 07:48:24 +0000 (09:48 +0200)]
usb:gadget:f_thor: code cleanup in function download_tail()

In thor's download_tail() function, dfu_get_entity() is called
before each dfu_write() call and the returned entity pointers
are the same. So dfu_get_entity() can be called just once and
this patch changes this.

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Heiko Schocher <hs@denx.de>
Cc: Tom Rini <trini@ti.com>
10 years agousb: Fix USB keyboard polling via control endpoint
Adrian Cox [Thu, 10 Apr 2014 13:02:44 +0000 (14:02 +0100)]
usb: Fix USB keyboard polling via control endpoint

USB keyboard polling failed for some keyboards on PowerPC 5020.
This was caused by requesting only 4 bytes of data from keyboards that
produce an 8 byte HID report.

Signed-off-by: Adrian Cox <adrian@humboldt.co.uk>
Signed-off-by: Wolfgang Denk <wd@denx.de>
Cc: Marek Vasut <marex@denx.de>
10 years agousb: Add endian support macros to interrupt transfers in the EHCI driver.
Adrian Cox [Thu, 10 Apr 2014 12:29:45 +0000 (13:29 +0100)]
usb: Add endian support macros to interrupt transfers in the EHCI driver.

Update the EHCI driver to support interrupt transfers on PowerPC.

Signed-off-by: Adrian Cox <adrian@humboldt.co.uk>
10 years agousb: ehci: rmobile: Add support ehci host driver of rmobile SoCs
Nobuhiro Iwamatsu [Thu, 3 Apr 2014 04:55:54 +0000 (13:55 +0900)]
usb: ehci: rmobile: Add support ehci host driver of rmobile SoCs

The rmobile SoC has usb host controller.
This supports USB controllers listed in the R8A7790, R8A7791 and R8A7740.

Signed-off-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
Reviewed-by: Marek Vasut <marex@denx.de>
10 years agosh: delete an unused source file
Masahiro Yamada [Mon, 31 Mar 2014 04:09:13 +0000 (13:09 +0900)]
sh: delete an unused source file

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Cc: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
Acked-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
10 years agodrivers/i2c/fsl_i2c: modify i2c_read to handle multi-byte write
Shaveta Leekha [Thu, 24 Apr 2014 09:21:23 +0000 (14:51 +0530)]
drivers/i2c/fsl_i2c: modify i2c_read to handle multi-byte write

Most of the I2C slaves support accesses in the typical style
that is : read/write series of bytes at particular address offset.
These transactions look like:"
(1) START:Address:Tx:Offset:RESTART:Address[0..4]:Tx/Rx:data[0..n]:STOP"

However there are certain devices which support accesses in
terms of the transactions as follows:
(2) "START:Address:Tx:Txdata[0..n1]:Clock_stretching:
        RESTART:Address:Rx:data[0..n2]"
Here Txdata is typically a command and some associated data,
similarly Rxdata could be command status plus some data received
as a response to the command sent.

Type (1) transactions are currently supportd in the
i2c driver using i2c_read and i2c_write APIs. I2C EEPROMs,
RTC, etc fall in this category.

To handle type (2) along with type (1) transactions,
i2c_read() function has been modified.

Signed-off-by: Shaveta Leekha <shaveta@freescale.com>
Signed-off-by: Poonam Aggrwal <poonam.aggrwal@freescale.com>
10 years agodriver/mxc_i2c: Move static data structure to global_data
York Sun [Mon, 10 Feb 2014 22:02:52 +0000 (14:02 -0800)]
driver/mxc_i2c: Move static data structure to global_data

This driver needs a data structure in SRAM before SDRAM is available.
This is not alway the case using .data section. Moving this data
structure to global_data guarantees it is writable.

Signed-off-by: York Sun <yorksun@freescale.com>
CC: Troy Kisky <troy.kisky@boundarydevices.com>
10 years agoMerge branch 'master' of git://www.denx.de/git/u-boot-arc
Tom Rini [Fri, 25 Apr 2014 19:08:43 +0000 (15:08 -0400)]
Merge branch 'master' of git://www.denx.de/git/u-boot-arc

10 years agoMerge branch 'master' of git://www.denx.de/git/u-boot-ppc4xx
Tom Rini [Fri, 25 Apr 2014 19:06:51 +0000 (15:06 -0400)]
Merge branch 'master' of git://www.denx.de/git/u-boot-ppc4xx

10 years agoMerge branch 'master' of git://git.denx.de/u-boot-mpc83xx
Tom Rini [Fri, 25 Apr 2014 18:57:58 +0000 (14:57 -0400)]
Merge branch 'master' of git://git.denx.de/u-boot-mpc83xx

10 years agoMerge branch 'master' of git://git.denx.de/u-boot-mpc85xx
Tom Rini [Fri, 25 Apr 2014 18:53:51 +0000 (14:53 -0400)]
Merge branch 'master' of git://git.denx.de/u-boot-mpc85xx

10 years agoaxs101: bump DDR size from 256 to 512 Mb
Alexey Brodkin [Thu, 27 Mar 2014 15:30:18 +0000 (19:30 +0400)]
axs101: bump DDR size from 256 to 512 Mb

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
10 years agoaxs101: increase EEPROM page write delay from 32 to 64 msec
Alexey Brodkin [Mon, 24 Mar 2014 13:15:50 +0000 (17:15 +0400)]
axs101: increase EEPROM page write delay from 32 to 64 msec

With 32 milliseconds delay on some boards EEMPROM got written inconsistently.
With 64 msec all of our existig boards show properly written EEPROM.

Cc: Tom Rini <trini@ti.com>
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
10 years agoppc4xx: add support for new PMC440 revision with cleanup
Matthias Fuchs [Tue, 25 Mar 2014 21:00:00 +0000 (22:00 +0100)]
ppc4xx: add support for new PMC440 revision with cleanup

This patch adds support for the new PMC440 hardware revision 1.4.
The board now uses Micrel KSZ9031 phys.

Add missing i2c initialization before reading bootstrap eeprom.

Fix a couple of coding style issues.

Make local functions static.

Signed-off-by: Matthias Fuchs <matthias.fuchs@esd.eu>
Signed-off-by: Stefan Roese <sr@denx.de>
10 years agompc83xx: add ids8313 support
Heiko Schocher [Sat, 25 Jan 2014 06:53:48 +0000 (07:53 +0100)]
mpc83xx: add ids8313 support

add support for the ids8313 board.

CPU:   e300c3, MPC8313, Rev: 2.1 at 396 MHz, CSB: 132 MHz
I2C:   ready
SPI:   ready
DRAM:  128 MiB (DDR2, 32-bit, ECC off, 264 MHz)
Flash: 8 MiB
NAND:  128 MiB
Net:   TSEC0, TSEC1 [PRIME]

public key on NOR flash start

Signed-off-by: Heiko Schocher <hs@denx.de>
Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
10 years agompc8313, bootcount: mpc8313 has no qe muram
Heiko Schocher [Sat, 25 Jan 2014 06:53:47 +0000 (07:53 +0100)]
mpc8313, bootcount: mpc8313 has no qe muram

mpc831x has no muram, so muram cannot be used for bootcounter
function.

Signed-off-by: Heiko Schocher <hs@denx.de>
Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
10 years agopowerpc, ids8247: create vendor board dir ids
Heiko Schocher [Sat, 25 Jan 2014 06:53:46 +0000 (07:53 +0100)]
powerpc, ids8247: create vendor board dir ids

create vendor board directory ids and move ids8247 board to it.

Signed-off-by: Heiko Schocher <hs@denx.de>
Cc: Wolfgang Denk <wd@denx.de>
Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
10 years agoMerge branch 'master' of git://git.denx.de/u-boot-mips
Tom Rini [Wed, 23 Apr 2014 15:07:11 +0000 (11:07 -0400)]
Merge branch 'master' of git://git.denx.de/u-boot-mips

10 years agoRevert "build: Use filechk rules to create and update u-boot.lds"
Masahiro Yamada [Mon, 21 Apr 2014 02:33:07 +0000 (11:33 +0900)]
Revert "build: Use filechk rules to create and update u-boot.lds"

This reverts commit a8b993eb81c142a439c24b871a2317f765fe5397.

Commit a8b993eb claims it fixes u-boot.lds rule by replacing
$(call if_changed) with $(call filechk).

But the problem had already been fixed by commit 395e60cd
a few days before commit a8b993eb was posted.

There is no reason to apply commit a8b993eb. What is worse is
$(call filechk) is too strong to fix the problem and looks weird.

Date of the two patches:

[1] commit 395e60cdc292dc0183c6867d34b43f14a373df55
    Author:     Masahiro Yamada <yamada.m@jp.panasonic.com>
    AuthorDate: Wed Apr 9 20:10:43 2014 +0900
    Commit:     Tom Rini <trini@ti.com>
    CommitDate: Fri Apr 11 10:08:42 2014 -0400
replaces $(call if_changed) -> $(call if_changed_dep)

[2] commit a8b993eb81c142a439c24b871a2317f765fe5397
    Author:     Jon Loeliger <jon.loeliger@oracle.com>
    AuthorDate: Tue Apr 15 16:09:37 2014 -0500
    Commit:     Tom Rini <trini@ti.com>
    CommitDate: Fri Apr 18 16:14:16 2014 -0400
replaces $(call if_changed) -> $(call filechk)

A conflict must have happened when applying [2], but somehow it was
applied, sadly.

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Cc: Jon Loeliger <jon.loeliger@oracle.com>
Cc: Andreas Bießmann <andreas.devel@googlemail.com>
Cc: Tom Rini <trini@ti.com>
10 years agoar8031: modify the config func of ar8031 to ar8021_config
Zhao Qiang [Mon, 21 Apr 2014 02:29:24 +0000 (10:29 +0800)]
ar8031: modify the config func of ar8031 to ar8021_config

ar8031 has the same config steps with ar8021, so change its
config func to ar8021_config instead of genphy_config.

Signed-off-by: Zhao Qiang <B45475@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agopowerpc/T4QDS: add two stage boot of nand/sd
Shaohui Xie [Tue, 22 Apr 2014 07:10:44 +0000 (15:10 +0800)]
powerpc/T4QDS: add two stage boot of nand/sd

Add support of 2 stage NAND/SD boot loader using SPL framework.
PBL initialise the internal SRAM and copy SPL, this further
initialise DDR using SPD and environment and copy u-boot from
NAND/SD to DDR, finally SPL transfer control to u-boot.
NOR uses CS1 instead of CS2 when NAND boot, fix it.

Signed-off-by: Shaohui Xie <Shaohui.Xie@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agopowerpc/t4240: updated RCW and PBI for rev2.0
Shaohui Xie [Mon, 21 Apr 2014 03:21:03 +0000 (11:21 +0800)]
powerpc/t4240: updated RCW and PBI for rev2.0

Updated the RCW for rev2.0 which uses new frequency settings as below:

Clock Configuration:
CPU0:1666.667 MHz, CPU1:1666.667 MHz, CPU2:1666.667 MHz, CPU3:1666.667 MHz,
CPU4:1666.667 MHz, CPU5:1666.667 MHz, CPU6:1666.667 MHz, CPU7:1666.667 MHz,
CPU8:1666.667 MHz, CPU9:1666.667 MHz, CPU10:1666.667 MHz, CPU11:1666.667MHz,
CCB:733.333 MHz,
DDR:933.333 MHz (1866.667 MT/s data rate) (Asynchronous), IFC:183.333 MHz
FMAN1: 733.333 MHz
FMAN2: 733.333 MHz
QMAN:  366.667 MHz
PME:   533.333 MHz

Remove workaround of IFC bus speed and SERDES A-006031 of rev1.0.

Signed-off-by: Shaohui Xie <Shaohui.Xie@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agopowerpc/mpc85xx:Update FM1 clock select and shift for B4420
Prabhakar Kushwaha [Mon, 21 Apr 2014 05:17:41 +0000 (10:47 +0530)]
powerpc/mpc85xx:Update FM1 clock select and shift for B4420

B4420 is a personality of B4860.
It should have same FM1_CLK_SEK and FM1_CLK_SHIFT as B4860

Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agoboard/t2080rdb: some update for t2080rdb
Shengzhou Liu [Fri, 18 Apr 2014 08:43:41 +0000 (16:43 +0800)]
board/t2080rdb: some update for t2080rdb

- update readme.
- add CONFIG_SYS_CORTINA_FW_IN_* for loading Cortina PHY CS4315
  ucode from NOR/NAND/SPI/SD/REMOTE.
- update cpld vbank with SW3[5:7]=000 as default vbank0 instead of
  previous SW3[5:7]=111 as default vbank.
- fix CONFIG_SYS_I2C_EEPROM_ADDR_LEN to 2.

Signed-off-by: Shengzhou Liu <Shengzhou.Liu@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agoboard/t208xrdb: Add support of 2-stage NAND/SPI/SD boot
Shengzhou Liu [Fri, 18 Apr 2014 08:43:40 +0000 (16:43 +0800)]
board/t208xrdb: Add support of 2-stage NAND/SPI/SD boot

Add support of 2-stage NAND/SPI/SD boot loader using SPL framework.
PBL initializes the internal CPC-SRAM and copy SPL(160K) to it,
SPL further initializes DDR using SPD and environment and copy
u-boot(768K) from SPI/SD/NAND to DDR, finally SPL transfers control
to u-boot.

Signed-off-by: Shengzhou Liu <Shengzhou.Liu@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agoboard/t208xqds: Add support of 2-stage NAND/SPI/SD boot
Shengzhou Liu [Fri, 18 Apr 2014 08:43:39 +0000 (16:43 +0800)]
board/t208xqds: Add support of 2-stage NAND/SPI/SD boot

Add support of 2-stage NAND/SPI/SD boot loader using SPL framework.
PBL initializes the internal CPC-SRAM and copy SPL(160K) to it,
SPL further initializes DDR using SPD and environment and copy
u-boot(768 KB) from SPI/SD/NAND to DDR, finally SPL transfers
control to u-boot.

Signed-off-by: Shengzhou Liu <Shengzhou.Liu@freescale.com>
[York Sun: fix boards.cfg for T2081QDS_SDCARD and _SPIFLASH]
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agopowerpc/mpc85xx: Add Differential SYSCLK config support T1040
Nikhil Badola [Tue, 15 Apr 2014 09:14:52 +0000 (14:44 +0530)]
powerpc/mpc85xx: Add Differential SYSCLK config support T1040

Adds support for clock sourcing from sysclk(100MHz) for usb
on T104xRDB and T1040QDS. This requires changing reference divisor
and multiplication factor to derive usb clock from sysclk.

Signed-off-by: Nikhil Badola <nikhil.badola@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agopowerpc/85xx: Enhance get_sys_info() to check clocking mode
vijay rai [Tue, 15 Apr 2014 06:04:12 +0000 (11:34 +0530)]
powerpc/85xx: Enhance get_sys_info() to check clocking mode

T1040 and it's variants provide "Single Oscillator Source" Reference Clock Mode.

In this mode, single onboard oscillator(DIFF_SYSCLK) can provide the reference clock
(100MHz) to the following PLLs:
• Platform PLL
• Core PLLs
• USB PLL
• DDR PLL, etc

The cfg_eng_use0 of porsr1 register identifies whether the SYSCLK (single-ended) or
DIFF_SYSCLK (differential) is selected as the clock input to the chip.

get_sys_info has been enhanced to add the diff_sysclk so that the
various drivers can be made aware of ths diff sysclk configuration and
act accordingly.

Other changes:
-single_src to ddr_refclk_sel, as it is use for checking ddr reference clock
-Removed the print of single_src from get_sys_info as this will be
-printed whenever somebody calls get_sys_info which is not appropriate.
-Add print of single_src in checkcpu as it is called only once during initialization

Signed-off-by: Poonam Aggrwal <poonam.aggrwal@freescale.com>
Signed-off-by: Priyanka Jain <Priyanka.Jain@freescale.com>
Signed-off-by: Vijay Rai <vijay.rai@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agopowerpc/t1040rdb: added a break in switch case
Shaohui Xie [Fri, 11 Apr 2014 04:12:30 +0000 (12:12 +0800)]
powerpc/t1040rdb: added a break in switch case

There should be a break for case PHY_INTERFACE_MODE_SGMII, otherwise it
will fall into case PHY_INTERFACE_MODE_RGMII.

Signed-off-by: Shaohui Xie <Shaohui.Xie@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agoPowerpc/mpc8536DS: Increase SPI/SD uboot Image size to 768K
Haijun.Zhang [Thu, 10 Apr 2014 03:16:30 +0000 (11:16 +0800)]
Powerpc/mpc8536DS: Increase SPI/SD uboot Image size to 768K

u-boot binary size for Freescale mpc8536DS platforms is 512KB.
This has been reached to upper limit of the platforms and causig
linker error. So increase the u-boot binary size to 768KB.

Signed-off-by: Haijun Zhang <Haijun.Zhang@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agopowerpc/mpc85xx:Update MONITOR_LEN for 768KB u-boot size
Prabhakar Kushwaha [Mon, 31 Mar 2014 10:01:48 +0000 (15:31 +0530)]
powerpc/mpc85xx:Update MONITOR_LEN for 768KB u-boot size

U-boot binary size has been increased from 512KB to 768KB.

So update CONFIG_SYS_MONITOR_LEN to reflect the same.

Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agopowerpc/mpc85xx:Avoid fix address of bootpg section
Prabhakar Kushwaha [Mon, 31 Mar 2014 10:01:34 +0000 (15:31 +0530)]
powerpc/mpc85xx:Avoid fix address of bootpg section

It is not necessary for bootpg to be present at text + 512KB.
With increase of u-boot size (768KB), bootpg section's address
cannot be fixed.

Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agoboard/t104xrdb: Add support of NAND, SD, SPI boot for T104xRDB
Prabhakar Kushwaha [Tue, 8 Apr 2014 13:43:56 +0000 (19:13 +0530)]
board/t104xrdb: Add support of NAND, SD, SPI boot for T104xRDB

Add support of 2 stage NAND, SD, SPI boot loader using SPL framework.
here, PBL initialise the internal SRAM and copy SPL(160KB). This further
initialise DDR using SPD and environment and copy u-boot(768 KB) from NAND to DDR.
Finally SPL transer control to u-boot.

Initialise/create followings required for SPL framework
      - Add spl.c which defines board_init_f, board_init_r
      - update tlb and ddr accordingly

Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agoboard/b4qds:Add support of 2 stage NAND boot-loader
Prabhakar Kushwaha [Tue, 8 Apr 2014 13:43:44 +0000 (19:13 +0530)]
board/b4qds:Add support of 2 stage NAND boot-loader

Add support of 2 stage NAND boot loader using SPL framework.
here, PBL initialise the internal SRAM and copy SPL(160KB). This further
initialise DDR using SPD and environment and copy u-boot(768 KB) from NAND to DDR.
Finally SPL transer control to u-boot.

Initialise/create followings required for SPL framework
  - Add spl.c which defines board_init_f, board_init_r
  - update tlb and ddr accordingly

Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agoMakefile: Add support of CONFIG_SPL_FSL_PBL
Prabhakar Kushwaha [Tue, 8 Apr 2014 13:43:34 +0000 (19:13 +0530)]
Makefile: Add support of CONFIG_SPL_FSL_PBL

Objective of this target to have concatenate binary having
 - SPL binary in PBL command format
 - U-boot binary

Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agodriver: Add support of image load for MMC & SPI in SPL
Prabhakar Kushwaha [Tue, 8 Apr 2014 13:43:22 +0000 (19:13 +0530)]
driver: Add support of image load for MMC & SPI in SPL

Add support of loading image, binary for MMC and SPI during SPL boot.

Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agodriver/mtd/spi:Read 8KB data chunk during u-boot load in SPL
Prabhakar Kushwaha [Tue, 8 Apr 2014 13:43:11 +0000 (19:13 +0530)]
driver/mtd/spi:Read 8KB data chunk during u-boot load in SPL

SPI driver perform its operation(read/write) on 64KB buffer chunk for data
greater than 64KB. This buffer chunk is allocated from system heap.

During SPL boot, 768KB of data is read from SPI flash.
Here, heap size may not be sufficient enough to full-fill 64KB buffer
requirement of SPI driver. So break down u-boot read operation at 8KB of chunk.

Also, fix a warning i.e. "unused variable buf" during CONFIG_FSL_CORENET

Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agodriver/ifc: define nand_spl_load_image() for SPL
Prabhakar Kushwaha [Tue, 8 Apr 2014 13:42:58 +0000 (19:12 +0530)]
driver/ifc: define nand_spl_load_image() for SPL

nand_spl_load_image() can also be used for non TPL framework.

Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agopowerpc/mpc85xx:Disable non DDR LAWs before init_law
Prabhakar Kushwaha [Tue, 8 Apr 2014 13:42:46 +0000 (19:12 +0530)]
powerpc/mpc85xx:Disable non DDR LAWs before init_law

Before parsing LAW table i.e. init_law, boot loader should disable all
previous LAWs except DDR LAWs which has been created by previous
pre boot loader during DDR initialization.

Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agopowerpc:Add support of SPL non-relocation
Prabhakar Kushwaha [Tue, 8 Apr 2014 13:42:31 +0000 (19:12 +0530)]
powerpc:Add support of SPL non-relocation

Current SPL code base has BSS section placed after reset_vector. This means
they have to relocate to use the global variables. This put an implicit
requirement of having SPL size = Memory/2.

To avoid relocation:
- Move bss_section within SPL range
- Modify relocate_code()

Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agopowerpc/mpc85xx: Avoid hardcoding in SPL linker script
Prabhakar Kushwaha [Tue, 8 Apr 2014 13:42:19 +0000 (19:12 +0530)]
powerpc/mpc85xx: Avoid hardcoding in SPL linker script

SPL linker has fix location of bootpg and reset vector with respect to text base.
It is not necessary to have fixed locations.

Avoid such hardcoding.

Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agopowerpc/mpc85xx: Move LAW_EN define outside of config
Prabhakar Kushwaha [Tue, 8 Apr 2014 13:42:05 +0000 (19:12 +0530)]
powerpc/mpc85xx: Move LAW_EN define outside of config

LAW_EN is only defined if CONFIG_SYS_CCSRBAR_DEFAULT is not equal to
CONFIG_SYS_CCSRBAR_PHYS. in SPL framework CCSRBAR is not relocated hence
both are same. This cause compilation error.

So LAW_EN define outside of configs

Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agoboard/t1042rdb_pi: Disable CONFIG_QE and CONFIG_U_QE
Prabhakar Kushwaha [Mon, 21 Apr 2014 05:17:25 +0000 (10:47 +0530)]
board/t1042rdb_pi: Disable CONFIG_QE and CONFIG_U_QE

T1042RDB_PI board does not have QE connector.

So disable CONFIG_QE and CONFIG_U_QE for T1042RDB_PI

Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agopowerpc/mpc85xx: Remove QE firmware copy from NAND
Prabhakar Kushwaha [Mon, 21 Apr 2014 05:16:59 +0000 (10:46 +0530)]
powerpc/mpc85xx: Remove QE firmware copy from NAND

qe_init() does not use data copied from NAND. Thise code is not tested or
complied causing compilation error during NAND boot

So, remove QE firmware copy from NAND to ddr.

Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agoT1040QDS/U-QE: Add u-qe support to t1040qds
Zhao Qiang [Fri, 21 Mar 2014 08:21:46 +0000 (16:21 +0800)]
T1040QDS/U-QE: Add u-qe support to t1040qds

Add u-qe support for t1040qds

Signed-off-by: Zhao Qiang <B45475@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agompc85xx: Add deep sleep support on T104xRDB
Tang Yuantian [Thu, 17 Apr 2014 07:33:45 +0000 (15:33 +0800)]
mpc85xx: Add deep sleep support on T104xRDB

Add deep sleep support on T104xRDB platforms.

Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agompc85xx: Add deep sleep support on T1040QDS
Tang Yuantian [Thu, 17 Apr 2014 07:33:44 +0000 (15:33 +0800)]
mpc85xx: Add deep sleep support on T1040QDS

Add deep sleep support on T1040QDS platform.

Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agompc85xx/t104x: Add deep sleep framework support
Tang Yuantian [Thu, 17 Apr 2014 07:33:46 +0000 (15:33 +0800)]
mpc85xx/t104x: Add deep sleep framework support

When T104x soc wakes up from deep sleep, control is passed to the
primary core that starts executing uboot. After re-initialized some
IP blocks, like DDRC, kernel will take responsibility to continue
to restore environment it leaves before.

Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agompc85xx: Add support for the supplement configuration unit register
Tang Yuantian [Wed, 26 Mar 2014 08:08:05 +0000 (16:08 +0800)]
mpc85xx: Add support for the supplement configuration unit register

The supplement configuration unit (SCFG) provides chip-specific
configuration and status registers for the device. It is the chip
defined module for extending the device configuration unit (DCFG)
module. It provides a set of CCSR registers in addition to those
available in the device configuration unit.
The base address for this unit is 0x0F_C000.

Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agodrivers/ddr: Fix possible out of bounds error
York Sun [Tue, 1 Apr 2014 21:20:49 +0000 (14:20 -0700)]
drivers/ddr: Fix possible out of bounds error

This is a theoretical possible out of bounds error in DDR driver. Adding
check before using array index. Also change some runtime conditions to
pre-compiling conditions.

Signed-off-by: York Sun <yorksun@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agodriver/net/fm/memac_phy: Initialize mdio_clock for SoCs wih FMANv3
Priyanka Jain [Tue, 8 Apr 2014 05:25:49 +0000 (10:55 +0530)]
driver/net/fm/memac_phy: Initialize mdio_clock for SoCs wih FMANv3

MDIO clock needs to be initialized in u-boot code for SoCs
having FMAN-v3(v3H or v3L) controller due to below reasons

-On SoCs that have FMAN-v3H  like B4860, default value of
MDIO_CLK_DIV bits in mdio_stat(mdio_cfg) register generates
mdio clock too high (much higher than 2.5MHz), violating the
IEEE specs.
-On SOCs that have FMAN-v3L like T1040, default value of
MDIO_CLK_DIV bits is zero, so MDIO clock is disabled.

So, for proper functioninig of MDIO, MDIO_CLK_DIV bits needs to
be properly initialized.
Also this type of initialization is generally done in
PBI(pre-bootloader) phase using rcw.But for chips like T1040
which support deep-sleep, such type of initialization cannot be
done in PBI phase due to the limitation that during deep-sleep
resume, FMAN (MDIO) registers are not accessible in PBI phase.
So, mdio clock initailization must be done as part of u-boot.

This initialization code is implemented in memac_phy.c which
gets compiled only for SoCs having FMANv3, so no extra compilation
flag is required.

Signed-off-by: Priyanka Jain <Priyanka.Jain@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agofsl/usb: Increase TXFIFOTHRESH value for usb write in T4 Rev 2.0
Nikhil Badola [Mon, 7 Apr 2014 03:16:14 +0000 (08:46 +0530)]
fsl/usb: Increase TXFIFOTHRESH value for usb write in T4 Rev 2.0

Increase TXFIFOTHRES field value in TXFILLTUNING register of usb for T4 Rev 2.0.
This decreases data burst rate with which data packets are posted from the TX
latency FIFO to compensate for latencies in DDR pipeline during DMA.
This avoids Tx buffer underruns and leads to successful usb writes

Signed-off-by: Ramneek Mehresh <ramneek.mehresh@freescale.com>
Signed-off-by: Nikhil Badola <nikhil.badola@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years agoboard/t104xrdb: Add support of CPLD
Prabhakar Kushwaha [Thu, 3 Apr 2014 11:20:05 +0000 (16:50 +0530)]
board/t104xrdb: Add support of CPLD

T1040RDB and T1042RDB_PI has CPLD. Here CPLD controls board mux/features.

This support of CPLD includes
 - files and register defintion
 - Commands to swtich alternate bank and default bank

Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>