profile/common/platform/kernel/u-boot-artik.git
9 years agodfu: fix some issues with reads/uploads
Stephen Warren [Wed, 11 Jun 2014 18:47:27 +0000 (12:47 -0600)]
dfu: fix some issues with reads/uploads

DFU read support appears to rely upon dfu->read_medium() updating the
passed-by-reference len parameter to indicate the remaining size
available for reading.

dfu_read_medium_mmc() never does this, and the implementation of
dfu_read_medium_nand() will only work if called just once; it hard-codes
the value to the total size of the NAND device irrespective of read
offset.

I believe that overloading dfu->read_medium() is confusing. As such,
this patch introduces a new function dfu->get_medium_size() which can
be used to explicitly find out the medium size, and nothing else.
dfu_read() is modified to use this function to set the initial value for
dfu->r_left, rather than attempting to use the side-effects of
dfu->read_medium() for this purpose.

Due to this change, dfu_read() must initially set dfu->b_left to 0, since
no data has been read.

dfu_read_buffer_fill() must also be modified not to adjust dfu->r_left
when simply copying data from dfu->i_buf_start to the upload request
buffer. r_left represents the amount of data left to be read from HW.
That value is not affected by the memcpy(), but only by calls to
dfu->read_medium().

After this change, I can read from either a 4MB or 1.5MB chunk of a 4MB
eMMC boot partion with CONFIG_SYS_DFU_DATA_BUF_SIZE==1MB. Without this
change, attempting to do that would result in DFU read returning no data
at all due to r_left never being set.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
9 years agodfu: free entities when parsing fails
Stephen Warren [Tue, 10 Jun 2014 16:06:41 +0000 (10:06 -0600)]
dfu: free entities when parsing fails

When dfu_init_env_entities() fails part-way through, some entities may
have been added to dfu_list. These are only removed by dfu_free_entities().
If that function isn't called, those stale entities will still exist the
next time dfu_init_env_entities() is called, leading to confusion. Fix
do_dfu() to ensure that dfu_free_entities() is always called, to avoid
this confusion.

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:g_dnl:f_thor: remove memset before memcpy
Jeroen Hofstee [Mon, 9 Jun 2014 13:28:58 +0000 (15:28 +0200)]
usb:g_dnl:f_thor: remove memset before memcpy

since ALLOC_CACHE_ALIGN_BUFFER defines a pointer and not a
buffer, the memset with sizeof(rqt) likely does something else
then intended. Since there is a memcpy directly after it with
the full size, drop the memset completely.

Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: Marek Vasut <marex@denx.de>
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
Acked-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb:composite: clear the whole common buffer
Jeroen Hofstee [Mon, 9 Jun 2014 13:28:59 +0000 (15:28 +0200)]
usb:composite: clear the whole common buffer

Since the struct fsg_common is calloced, reset it completely
with zero's when reused. While at it, make checkpatch happy.

cc: Lukasz Majewski <l.majewski@samsung.com>
cc: Piotr Wilczek <p.wilczek@samsung.com>
cc: Kyungmin Park <kyungmin.park@samsung.com>
cc: Marek Vasut <marek.vasut@gmail.com>
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
Acked-by: Marek Vasut <marex@denx.de>
Acked-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agodfu: Disable default calculation of CRC32
Lukasz Majewski [Tue, 10 Jun 2014 10:25:59 +0000 (12:25 +0200)]
dfu: Disable default calculation of CRC32

Patch (SHA1: bd694244db7bc969954)
dfu: Introduction of the "dfu_hash_algo" env variable for checksum method
setting

already introduced more generic handling of the crc32 calculation.
Up till now the CRC32 of received data was calculated unconditionally.
This patch changes this and from now - by default the crc32 is NOT
calculated anymore.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Cc: Marek Vasut <marex@denx.de>
9 years agodfu: Introduction of the "dfu_hash_algo" env variable for checksum method setting
Lukasz Majewski [Mon, 12 May 2014 08:43:36 +0000 (10:43 +0200)]
dfu: Introduction of the "dfu_hash_algo" env variable for checksum method setting

Up till now the CRC32 of received data was calculated unconditionally.
The standard crc32 implementation causes long delay when large images
were uploaded.

The "dfu_hash_algo" environment variable gives the opportunity to
disable on demand the hash (crc32) calculation.
It can be done without the need to recompile the u-boot binary.

By default the crc32 is calculated, which means that legacy behavior
has been preserved.

Tests results:
400 MiB ums.img file
With  crc32 calculation: 65 sec [avg 6.29 MB/s]
Without  crc32 calculation: 25 sec [avg 16.17 MB/s]

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Cc: Marek Vasut <marex@denx.de>
9 years agodfu: mmc: Provide support for eMMC boot partition access
Lukasz Majewski [Fri, 9 May 2014 14:58:15 +0000 (16:58 +0200)]
dfu: mmc: Provide support for eMMC boot partition access

Before this patch it was only possible to access the default eMMC HW
partition. By partition selection I mean the access to eMMC via the
ext_csd[179] register programming.

It sometimes happens that it is necessary to write to other partitions.
This patch adds extra attribute to "raw" sub type of the dfu_alt_info
environment variable (e.g. boot-mmc.bin raw 0x0 0x200 mmcpart 1;)

It saves the original boot value and restores it after storing the file.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb:gadget:f_thor: download_tail(): remove dfu_write with 0 size
Przemyslaw Marczak [Mon, 12 May 2014 10:05:34 +0000 (12:05 +0200)]
usb:gadget:f_thor: download_tail(): remove dfu_write with 0 size

Since dfu_flush() can write raw data, dfu_write() with zero size
can be removed from download_tail() in thor gadget.

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: Heiko Schocher <hs@denx.de>
Cc: Marek Vasut <marex@denx.de>
9 years agodrivers:dfu: dfu_flush(): add raw data flush to complete dfu write
Przemyslaw Marczak [Mon, 12 May 2014 10:05:33 +0000 (12:05 +0200)]
drivers:dfu: dfu_flush(): add raw data flush to complete dfu write

Before dfu write and flush operations separation,
dfu write data was flushed by host download request
with len of zero size.

Since above change manually calling dfu write with zero
size has non sense (e.g. in THOR). This should be done by
flush operation.
So now dfu_write_buffer_drain() is called in dfu_flush().
If there is any raw data to flush (like it can be in thor)
then it will be physically written to medium.

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: Heiko Schocher <hs@denx.de>
Cc: Marek Vasut <marex@denx.de>
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>
Conflicts:
board/samsung/common/Makefile
board/samsung/common/ums.c

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>
Conflicts:
board/samsung/common/ums.c
include/usb_mass_storage.h

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>
Conflicts:
board/samsung/common/ums.c

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: 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 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>
9 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>
9 years agousb:gadget:f_thor: cosmetic: Remove debug memset
Lukasz Majewski [Wed, 5 Feb 2014 09:10:46 +0000 (10:10 +0100)]
usb:gadget:f_thor: cosmetic: Remove debug memset

Apparently debug memset (with a 0x55 value) has been overlooked in the
f_thor code.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Cc: Marek Vasut <marex@denx.de>
9 years agousb:gadget:f_thor: Allocate request up to THOR_PACKET_SIZE not ep->maxpacket
Lukasz Majewski [Wed, 5 Feb 2014 09:10:45 +0000 (10:10 +0100)]
usb:gadget:f_thor: Allocate request up to THOR_PACKET_SIZE not ep->maxpacket

Now it is possible to allocate static request - which receives data from
the host (OUT transaction) to the size of THOR packet.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Cc: Marek Vasut <marex@denx.de>
9 years agousb:g_dnl:f_thor: USB download function to support TIZEN's THOR protocol
Lukasz Majewski [Tue, 8 Oct 2013 12:30:42 +0000 (14:30 +0200)]
usb:g_dnl:f_thor: USB download function to support TIZEN's THOR protocol

Implementation of USB download function which supports THOR protocol.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Cc: Marek Vasut <marex@denx.de>
Conflicts:
drivers/usb/gadget/Makefile

9 years agocmd:thor: Support for TIZEN's download command (thordown)
Lukasz Majewski [Tue, 8 Oct 2013 12:30:44 +0000 (14:30 +0200)]
cmd:thor: Support for TIZEN's download command (thordown)

New command - thordown - has been added to support downloading data
via lthor TIZEN program.
It is similar to dfu command syntax and reuses its code for flashing data.

Signed-off-by: Lukasz Majewski <l.majewski@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>
Conflicts:
include/configs/am335x_evm.h
include/configs/trats.h
include/configs/trats2.h

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: dwc2: Add driver for Synopsis DWC2 USB IP block
Oleksandr Tymoshenko [Sun, 2 Feb 2014 04:51:25 +0000 (21:51 -0700)]
usb: dwc2: Add driver for Synopsis DWC2 USB IP block

This is the USB host controller used on the Altera SoCFPGA and Raspbery Pi.

This code has three checkpatch warnings, but to make sure it stays at least
readable and clear, these are not fixed. These bugs are in the USB request
handling combinatorial logic, so any abstracting of those is out of question.

Tested on DENX MCV (Altera SoCFPGA 5CSFXC6C6U23C8N) and RPi B+ (BCM2835).

Signed-off-by: Oleksandr Tymoshenko <gonzo@bluezbox.com>
Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Chin Liang See <clsee@altera.com>
Cc: Dinh Nguyen <dinguyen@altera.com>
Acked-by: Pavel Machek <pavel@denx.de>
Cc: Vince Bridgers <vbridger@altera.com>
Tested-by: Dinh Nguyen <dinguyen@opensource.altera.com>
Conflicts:
drivers/usb/host/Makefile

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>
Conflicts:
board/samsung/origen/origen.c
board/samsung/trats/trats.c
board/samsung/trats2/trats2.c
board/samsung/universal_c210/universal.c
common/cmd_usb_mass_storage.c
include/configs/exynos4-dt.h

9 years agousb: ums: add ums exit feature by ctrl+c or by detach usb cable
Przemyslaw Marczak [Wed, 23 Oct 2013 12:30:46 +0000 (14:30 +0200)]
usb: ums: add ums exit feature by ctrl+c or by detach usb cable

This patch allows exiting from UMS mode to u-boot prompt
by detaching usb cable or by pressing ctrl+c.

Add new config: CONFIG_USB_CABLE_CHECK. If defined then board
file should provide function: usb_cable_connected() (include/usb.h)
that return 1 if cable is connected and 0 otherwise.

Changes v2:
- add a note to the README

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Cc: Marek Vasut <marex@denx.de>
9 years agousb: ums: fix disk capacity miscalculation and code cleanup
Przemyslaw Marczak [Wed, 23 Oct 2013 12:30:44 +0000 (14:30 +0200)]
usb: ums: fix disk capacity miscalculation and code cleanup

This patch prevents:
- ums disk capacity miscalculation because of integer overflow

Changes v2:
- Prevents passing zero size disk capacity to ums gadget driver
- Change function ums_get_capacity() to ums_disk_init() and do ums disk
  initialization before gadget init
- Remove unnecessary code from mass storage driver

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Cc: Marek Vasut <marex@denx.de>
Signed-off-by: Chanho Park <chanho61.park@samsung.com>
Conflicts:
board/samsung/trats/trats.c

9 years agousb: ums: allows using every mmc device with ums.
Przemyslaw Marczak [Wed, 23 Oct 2013 12:30:43 +0000 (14:30 +0200)]
usb: ums: allows using every mmc device with ums.

Before this change ums command only allowed use of mmc 0.
Now this argument can be set.

Changes:
- remove mmc device number checking because it is always positive number
- remove printing "no such device" - it is done by find_mmc_device()

Change-Id: I767e45151ad515c7bef19e6c13087374f5e23c11
Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Cc: Marek Vasut <marex@denx.de>
9 years agousb: ums: code refactoring to improve reusability on other boards.
Przemyslaw Marczak [Wed, 23 Oct 2013 12:30:42 +0000 (14:30 +0200)]
usb: ums: code refactoring to improve reusability on other boards.

This patch introduces some cleanups to ums code. Changes:

ums common:
- introduce UMS_START_SECTOR and UMS_NUM_SECTORS as defined in
  usb_mass_storage.h both default values as 0 if board config
  doesn't define them

common cleanup changes:
- change name of struct "ums_board_info" to "ums"
- "ums_device" fields are moved to struct ums and "dev_num" is removed
- change function name: board_ums_init to ums_init
- remove "extern" prefixes from usb_mass_storage.h

cmd_usb_mass_storage:
- change error() to printf() if need to print info message
- change return values to command_ret_t type at ums command code
- add command usage string

Changes v2:
ums common:
- always returns number of read/write sectors
- coding style clean-up
ums gadget:
- calculate amount of read/write from device returned value.

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Cc: Marek Vasut <marek.vasut@gmail.com>
Signed-off-by: Chanho Park <chanho61.park@samsung.com>
Conflicts:
board/samsung/trats/trats.c

9 years agousb:composite:fix Provide function data when addressing device with only one interface
Lukasz Majewski [Fri, 1 Mar 2013 14:30:18 +0000 (15:30 +0100)]
usb:composite:fix Provide function data when addressing device with only one interface

This commit fixes problems with some non-standard requests send with
device address instead of interface address (bmRequestType.Receipent field).

This happens with dfu-util (debian version: 0.5), which address non standard
requests (like w_value=0x21 and bRequest=GET_DESCRIPTOR) to device.
Without this fix, the above request is STALLED, and hence causes dfu-util
to assume some standard configuration (packet size = 1024B instead of 4096B)
In turn it displays following errors:
Error obtaining DFU functional descriptor
Warning: Assuming DFU version 1.0
Warning: Transfer size can not be detected
...
Warning: Trying default transfer size 1024

This fix allows passing non-standard request to function setup code, where
it shall be handled.

Tested at:  Trats (exynos4210)
Tested with:DFU and UMS gadgets

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
9 years agousb:composite: USB Mass Storage - storage_common.c from Linux kernel
Lukasz Majewski [Tue, 5 Mar 2013 11:10:15 +0000 (12:10 +0100)]
usb:composite: USB Mass Storage - storage_common.c from Linux kernel

The storage_common.c source file from v2.6.36 Linux kernel.

commit d26a6aa08b9f12b44fb1ee65625e7480d3d5bb81
Author: Michal Nazarewicz <m.nazarewicz@samsung.com>
Date:   Mon Nov 9 14:15:23 2009 +0100

USB: g_mass_storage: code cleaned up and comments updated

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
CC: Marek Vasut <marek.vasut@gmail.com>
9 years agodrivers:usb: use get|put_unaligned_le16
Piotr Wilczek [Wed, 26 Jun 2013 06:22:05 +0000 (08:22 +0200)]
drivers:usb: use get|put_unaligned_le16

This patch use get|put_unaligned_le16 to access structure data
to avoid data abort on some ARM platforms.

Signed-off-by: Piotr Wilczek <p.wilczek@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
CC: Marek Vasut <marex@denx.de>
9 years agousb: gadget: Use unaligned access for wMaxPacketSize
Vivek Gautam [Mon, 13 May 2013 10:23:38 +0000 (15:53 +0530)]
usb: gadget: Use unaligned access for wMaxPacketSize

Use get_unaligned() while fetching wMaxPacketSize to avoid
voilating any alignment rules.

Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: Piotr Wilczek <p.wilczek@samsung.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Lukasz Dalek <luk0104@gmail.com>
Cc: Marek Vasut <marex@denx.de>
Signed-off-by: Chanho Park <chanho61.park@samsung.com>
Conflicts:
drivers/usb/gadget/pxa25x_udc.c

9 years agousb:composite: USB Mass Storage - f_mass_storage.c from Linux kernel
Piotr Wilczek [Tue, 5 Mar 2013 11:10:16 +0000 (12:10 +0100)]
usb:composite: USB Mass Storage - f_mass_storage.c from Linux kernel

The f_mass_storage.c source file from v2.6.36 Linux kernel.

commit 8876f5e7d3b2a320777dd4f6f5301d474c97a06c
Author: Michal Nazarewicz <m.nazarewicz@samsung.com>
Date:   Mon Jun 21 13:57:09 2010 +0200

USB: gadget: f_mass_storage: added eject callback

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Piotr Wilczek <p.wilczek@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
CC: Marek Vasut <marek.vasut@gmail.com>
9 years agousb: add enum usb_init_type parameter to usb_lowlevel_init
Troy Kisky [Thu, 10 Oct 2013 22:27:56 +0000 (15:27 -0700)]
usb: add enum usb_init_type parameter to usb_lowlevel_init

This parameter will later be used to verify OTG ports.

Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
Conflicts:
drivers/usb/gadget/mv_udc.c
drivers/usb/host/ohci-s3c24xx.c
drivers/usb/host/r8a66597-hcd.c
drivers/usb/musb-new/musb_uboot.c

9 years agousb: rename board_usb_init_type to usb_init_type
Troy Kisky [Thu, 10 Oct 2013 22:27:55 +0000 (15:27 -0700)]
usb: rename board_usb_init_type to usb_init_type

This will be used by usb_lowlevel_init so it will
no longer be used by only board specific functions.

Move definition of enum usb_init_type higher in file
so that it will be available for usb_low_level_init.

Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
Conflicts:
board/amcc/canyonlands/canyonlands.c
board/balloon3/balloon3.c
board/esd/apc405/apc405.c
board/esd/pmc440/pmc440.c
board/samsung/trats/trats.c
board/toradex/colibri_pxa270/colibri_pxa270.c
board/trizepsiv/conxs.c
board/vpac270/vpac270.c

9 years agousb: new board-specific USB init interface
Mateusz Zalega [Fri, 4 Oct 2013 17:22:26 +0000 (19:22 +0200)]
usb: new board-specific USB init interface

This commit unifies board-specific USB initialization implementations
under one symbol (usb_board_init), declaration of which is available in
usb.h.

New API allows selective initialization of USB controllers whenever needed.

Signed-off-by: Mateusz Zalega <m.zalega@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Conflicts:
arch/arm/include/asm/arch-tegra/usb.h
arch/arm/include/asm/ehci-omap.h
board/compulab/cm_t35/cm_t35.c
board/htkw/mcx/mcx.c
board/icpdas/lp8x4x/lp8x4x.c
board/nvidia/common/board.c
board/samsung/trats/trats.c
board/technexion/twister/twister.c
board/teejet/mt_ventoux/mt_ventoux.c
board/ti/beagle/beagle.c
board/ti/omap5_uevm/evm.c
board/ti/panda/panda.c
drivers/usb/host/ehci-omap.c
drivers/usb/host/ehci-tegra.c

9 years agoUSB: xHCI: Add stack support for xHCI
Vivek Gautam [Sat, 14 Sep 2013 08:32:45 +0000 (14:02 +0530)]
USB: xHCI: Add stack support for xHCI

This adds stack layer for eXtensible Host Controller Interface
which facilitates use of USB 3.0 in host mode.

Adapting xHCI host controller driver in linux-kernel
by Sarah Sharp to needs in u-boot.

Initial porting from Linux kernel version 3.4, with following
top commit history of drivers/usb/host/xhci* :
cf84055 xHCI: Cleanup isoc transfer ring when TD length mismatch found

This adds the basic xHCI host controller driver with bare minimum
features:
- Control/Bulk transfer support has been added with required
  infrastructure for necessary xHC data structures.
- Stream protocol hasn't been supported yet.
- No support for quirky devices has been added.

Signed-off-by: Vikas C Sajjan <vikas.sajjan@samsung.com>
Signed-off-by: Julius Werner <jwerner@chromium.org>
Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Minkyu Kang <mk7.kang@samsung.com>
Cc: Dan Murphy <dmurphy@ti.com>
Cc: Marek Vasut <marex@denx.de>
Conflicts:
common/usb.c
include/usb.h

9 years agoUSB: SS: Add support for Super Speed USB interface
Vivek Gautam [Fri, 12 Apr 2013 11:04:38 +0000 (16:34 +0530)]
USB: SS: Add support for Super Speed USB interface

This adds usb framework support for super-speed usb, which will
further facilitate to add stack support for xHCI.

Signed-off-by: Vikas C Sajjan <vikas.sajjan@samsung.com>
Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com>
9 years agousb: ehci: Add 64-bit controller support
Vincent Palatin [Thu, 13 Dec 2012 01:55:22 +0000 (17:55 -0800)]
usb: ehci: Add 64-bit controller support

On EHCI controller with 64-bit address space support, we must initialize
properly the high word for the PCI bus master accesses.

Signed-off-by: Vincent Palatin <vpalatin@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agousb: Clean up newly allocated device nodes in case of configuration failure
Milind Choudhary [Thu, 13 Dec 2012 01:55:28 +0000 (17:55 -0800)]
usb: Clean up newly allocated device nodes in case of configuration failure

If probe of a newly connected device fails for some reason, clean up
the allocated entry in usb_dev array.

Signed-off-by: Milind Choudhary <milindc@codeaurora.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agousb: use linux/usb/ch9.h instead of usbdescriptors.h
Ilya Yanok [Tue, 6 Nov 2012 13:48:20 +0000 (13:48 +0000)]
usb: use linux/usb/ch9.h instead of usbdescriptors.h

Linux usb/ch9.h seems to have all the same information (and more)
as usbdescriptors.h so use the former instead of the later one.

As a consequense of this change USB_SPEED_* values don't correspond
directly to EHCI speed encoding anymore, I've added necessary
recoding in EHCI driver. Also there is no point to put speed into
pipe anymore so it's removed and a bunch of host drivers fixed to
look at usb_device->speed instead.

Old usbdescriptors.h included is not removed as it seems to be
used by old USB device code.

This makes usb.h and usbdevice.h incompatible. Fortunately the
only place that tries to include both are the old MUSB code and
it needs usb.h only for USB_DMA_MINALIGN used in aligned attribute
on musb_regs structure but this attribute seems to be unneeded
(old MUSB code doesn't support any DMA at all).

Signed-off-by: Ilya Yanok <ilya.yanok@cogentembedded.com>
Conflicts:
common/cmd_usb.c
drivers/usb/host/ehci-hcd.c

9 years agousb: do explicit unaligned accesses
Lucas Stach [Thu, 6 Sep 2012 06:00:13 +0000 (08:00 +0200)]
usb: do explicit unaligned accesses

usb_hub_descriptor has to be packed as it's used for
communication with the device. Member wHubCharacteristics
violates the natural alignment rules.

Use explicit unaligned access functions for this member.
Fixes ARMv7 traping while using USB.

v2: fix typo found by Thomas Langer

v3: rebased on top of u-boot-usb/master

Signed-off-by: Lucas Stach <dev@lynxeye.de>
9 years agoehci: Optimize qTD allocations
Benoît Thébaudeau [Fri, 10 Aug 2012 16:27:23 +0000 (18:27 +0200)]
ehci: Optimize qTD allocations

Relax the qTD transfer alignment constraints in order to need less qTDs for
buffers that are aligned to 512 bytes but not to pages.

Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Ilya Yanok <ilya.yanok@cogentembedded.com>
Cc: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
9 years agoehci-hcd: Boost transfer speed
Benoît Thébaudeau [Fri, 10 Aug 2012 16:22:32 +0000 (18:22 +0200)]
ehci-hcd: Boost transfer speed

This patch takes advantage of the hardware EHCI qTD queuing mechanism to avoid
software and transfer splitting overhead so as to make transfers as fast as
possible.

The only drawback is a call to memalign. However, this is fast compared to the
transfer timings, and the heap size to allocate is small, e.g. 128 kiB in the
worst case for a transfer length of 65535 packets of 512 bytes.

Tested on i.MX25, i.MX35 and i.MX51. In my test conditions, the speed gain was
very significant (several times faster), which is really appreciable when
accessing large files.

Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Ilya Yanok <ilya.yanok@cogentembedded.com>
Cc: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
9 years agoehci: cosmetic: Define used constants
Benoît Thébaudeau [Fri, 10 Aug 2012 16:22:11 +0000 (18:22 +0200)]
ehci: cosmetic: Define used constants

Make some light cosmetic code cleanup by the way.

Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Ilya Yanok <ilya.yanok@cogentembedded.com>
Cc: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
9 years agoehci: Fail for multi-transaction interrupt transfers
Benoît Thébaudeau [Thu, 9 Aug 2012 21:50:44 +0000 (23:50 +0200)]
ehci: Fail for multi-transaction interrupt transfers

Interrupt transfers requiring several transactions are not supported by
submit_int_msg() because bInterval is ignored. This patch returns a failure code
and prints an error message in this case.

Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Ilya Yanok <ilya.yanok@cogentembedded.com>
Cc: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
9 years agoehci: cosmetic: Define the number of qt_buffers
Benoît Thébaudeau [Thu, 19 Jul 2012 20:16:38 +0000 (22:16 +0200)]
ehci: cosmetic: Define the number of qt_buffers

Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Ilya Yanok <ilya.yanok@cogentembedded.com>
Cc: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
9 years agousb: fallback safely when a configuration descriptor is too large
Vincent Palatin [Tue, 24 Jul 2012 07:12:02 +0000 (07:12 +0000)]
usb: fallback safely when a configuration descriptor is too large

When a USB configuration descriptor was larger than our USB buffer
(512 bytes), we were skipping the full descriptor reading but then we
were still parsing and using it, triggering memory corruptions.
Now in that case, it just skips this device enumeration and displays the
appropriate message to the user, so he can fix the buffer if he wants.

This bug was triggered by some UVC webcams which have very large
configuration descriptors (e.g. a couple of kB) describing all their
supported video encodings.

Signed-off-by: Vincent Palatin <vpalatin@chromium.org>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agousb: add support for multiple usb controllers
Lucas Stach [Tue, 25 Sep 2012 22:14:36 +0000 (00:14 +0200)]
usb: add support for multiple usb controllers

Allows to initialize more than one USB controller at once.

v2: print message when controller stop fails

Signed-off-by: Lucas Stach <dev@lynxeye.de>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agousb.h: Add udc_disconnect prototype to usb.h
Lukasz Dalek [Tue, 2 Oct 2012 15:04:33 +0000 (17:04 +0200)]
usb.h: Add udc_disconnect prototype to usb.h

PXA25x gadget implements common function usb_disconnect().
This patch adds this function prototype into usb.h for boards using it.

Signed-off-by: Lukasz Dalek <luk0104@gmail.com>
9 years agousb: lowlevel interface change to support multiple controllers
Lucas Stach [Tue, 25 Sep 2012 22:14:34 +0000 (00:14 +0200)]
usb: lowlevel interface change to support multiple controllers

Carry an index in the lowlevel usb functions to make specify the
respective usb controller.

Also pass through an controller struct from lowlevel_init to the
creation of the root usb device of this controller.

Signed-off-by: Lucas Stach <dev@lynxeye.de>
Reviewed-by: Marek Vasut <marex@denx.de>
9 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>
9 years agodfu: mmc: Replace calls to u-boot commands with native mmc API
Łukasz Majewski [Fri, 21 Feb 2014 07:23:00 +0000 (08:23 +0100)]
dfu: mmc: Replace calls to u-boot commands with native mmc API

For some time we have been using the run_command() with properly crafted
string. Such approach turned to be unreliable and error prone.

Switch to "native" mmc subsystem API would allow better type checking and
shall improve speed.

Also, it seems that this API is changing less often than u-boot commands.
The approach similar to env operations on the eMMC has been reused.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: dfu: introduce dfuMANIFEST state
Heiko Schocher [Tue, 18 Mar 2014 07:09:56 +0000 (08:09 +0100)]
usb: dfu: introduce dfuMANIFEST state

on nand flash using ubi, after the download of the new image into
the flash, the "rest" of the nand sectors get erased while flushing
the medium. With current u-boot version dfu-util may show:

Starting download: [##################################################] finished!
state(7) = dfuMANIFEST, status(0) = No error condition is present
unable to read DFU status

as get_status is not answered while erasing sectors, if erasing
needs some time.

So do the following changes to prevent this:

- introduce dfuManifest state
  According to dfu specification
  ( http://www.usb.org/developers/devclass_docs/usbdfu10.pdf ) section 7:
  "the device enters the dfuMANIFEST-SYNC state and awaits the solicitation
   of the status report by the host. Upon receipt of the anticipated
   DFU_GETSTATUS, the device enters the dfuMANIFEST state, where it
   completes its reprogramming operations."

- when stepping into dfuManifest state, sending a PollTimeout
  DFU_MANIFEST_POLL_TIMEOUT in ms, to the host, so the host
  (dfu-util) waits the PollTimeout before sending a get_status again.

Signed-off-by: Heiko Schocher <hs@denx.de>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Pantelis Antoniou <panto@antoniou-consulting.com>
9 years agousb, dfu: extract flush code into seperate function
Heiko Schocher [Tue, 18 Mar 2014 07:09:55 +0000 (08:09 +0100)]
usb, dfu: extract flush code into seperate function

move the flushing code into an extra function dfu_flush(),
so it can be used from other code.

Signed-off-by: Heiko Schocher <hs@denx.de>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Pantelis Antoniou <panto@antoniou-consulting.com>
9 years agousb: dfu: add static alt num count in dfu_config_entities()
Przemyslaw Marczak [Fri, 28 Feb 2014 17:53:37 +0000 (18:53 +0100)]
usb: dfu: add static alt num count in dfu_config_entities()

Thanks to this multiple call of function dfu_config_entities()
gives continuous dfu alt numbering until call dfu_free_entities().

This allows to store dfu entities in multiple variables.

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Acked-by: Łukasz Majewski <l.majewski@samsung.com>
Tested-by: Heiko Schocher <hs@denx.de>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
9 years agodfu: mmc: fs: Fix format accepted by ext4write command
Lukasz Majewski [Thu, 20 Feb 2014 09:29:18 +0000 (10:29 +0100)]
dfu: mmc: fs: Fix format accepted by ext4write command

The commit:

"EXT4: Fix number base handling of "ext4write" command"
 SHA1: f7740f7712b8638f08b83a7e5d00bc1d6bb086a9

Cleaned up the ext4write command format.

This commit shall be regarded as a follow up, since the DFU subsystem is
using those commands for its normal operation.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: dfu: f_dfu: Provide infrastructure to adjust DFU's Poll Timeout value
Lukasz Majewski [Mon, 9 Dec 2013 15:20:14 +0000 (16:20 +0100)]
usb: dfu: f_dfu: Provide infrastructure to adjust DFU's Poll Timeout value

It is necessary to deter the host from sending subsequent DFU_GETSTATUS
request in the case of e.g. writing the buffer to medium.

Here the timeout is increased when we fill up the whole buffer. This delay
allows eMMC memory to perform its internal operations.
Otherwise we end up with HOST's error regarding GET_STATUS receive timeout.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agodfu: Export allocated dfu buffer size
Lukasz Majewski [Mon, 9 Dec 2013 15:20:13 +0000 (16:20 +0100)]
dfu: Export allocated dfu buffer size

The method for exporting size of allocated buffer is provided.
It is afterwards used by USB's dfu function code.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb, g_dnl: make bcdDevice value configurable
Heiko Schocher [Mon, 4 Nov 2013 13:05:02 +0000 (14:05 +0100)]
usb, g_dnl: make bcdDevice value configurable

add the possibility to set the bcdDevice number board specific.
Therefore the weak function g_dnl_get_board_bcd_device_number()
is introduced. Used on the siemens boards.

Signed-off-by: Heiko Schocher <hs@denx.de>
Acked-by: Lukasz Majewski <l.majewski@samsung.com>
Cc: Marek Vasut <marek.vasut@gmail.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
9 years agousb: dfu: make nand upload working
Bo Shen [Thu, 7 Nov 2013 06:29:41 +0000 (14:29 +0800)]
usb: dfu: make nand upload working

Nowhere pass a value to len, which always 0, make no transfer which
cause uploading failed.

This patch make nand upload working. However it needs enough malloc
buffer to store read data, that means the buffer at least equal to
the upload partition size, or else it doesn't work.

Signed-off-by: Bo Shen <voice.shen@atmel.com>
9 years agousb, g_dnl: make iSerialNumber board configurable
Heiko Schocher [Mon, 4 Nov 2013 13:05:01 +0000 (14:05 +0100)]
usb, g_dnl: make iSerialNumber board configurable

add the possibility to set the iSerialNumber board specific.
Default value for iSerialNumber is 0x0. This value can
changed board specific through the new function
g_dnl_set_serialnumber() which must be called from the
board specific function g_dnl_bind_fixup().

Signed-off-by: Heiko Schocher <hs@denx.de>
Cc: Marek Vasut <marek.vasut@gmail.com>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Tested-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: dfu: correct dfu buffer inited value
Bo Shen [Wed, 16 Oct 2013 09:26:38 +0000 (17:26 +0800)]
usb: dfu: correct dfu buffer inited value

After dfu buffer is initialized, the buffer should be all available,
while not 0. Initialize its value to min(dfu_buf_size, dfu->r_left).

Signed-off-by: Bo Shen <voice.shen@atmel.com>
Tested-by: Lukasz Majewski <l.majewski@samsung.com>
Acked-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: dfu: decrease dfu->r_left along with the transfer
Bo Shen [Wed, 16 Oct 2013 09:26:37 +0000 (17:26 +0800)]
usb: dfu: decrease dfu->r_left along with the transfer

The value of dfu->r_left need decrease along with the transfer

Signed-off-by: Bo Shen <voice.shen@atmel.com>
9 years agousb:g_dnl: Support for TIZEN's THOR function in generic download code
Lukasz Majewski [Tue, 8 Oct 2013 12:30:43 +0000 (14:30 +0200)]
usb:g_dnl: Support for TIZEN's THOR function in generic download code

Support of "thor" function in generic download code (g_dnl.c).

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Cc: Marek Vasut <marex@denx.de>
9 years agousb:g_dnl: Add name parameter to g_dnl_bind_fixup function
Lukasz Majewski [Tue, 8 Oct 2013 12:30:41 +0000 (14:30 +0200)]
usb:g_dnl: Add name parameter to g_dnl_bind_fixup function

New parameter, namely *name has been added to g_dnl_bind_fixup().
It is necessary (for compatibility reasons) to assign new USB idProduct
and idVendor for different usb functions.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Cc: Marek Vasut <marex@denx.de>
Conflicts:
board/siemens/common/factoryset.c

9 years agousb:g_dnl: Replace static usb_configuration structure with dynamically allocated one
Lukasz Majewski [Tue, 8 Oct 2013 12:30:40 +0000 (14:30 +0200)]
usb:g_dnl: Replace static usb_configuration structure with dynamically allocated one

When the usb_configuration structure is declared as static, it is very
hard to assure, that relevant fields (as e.g. config->interfaces[]) are
cleared out before new call to g_dnl related functions.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agodfu:core: Export dfu_{get|free}_buf functions
Lukasz Majewski [Tue, 8 Oct 2013 12:30:39 +0000 (14:30 +0200)]
dfu:core: Export dfu_{get|free}_buf functions

Define the dfu_get_buf() and dfu_free_buf() as global functions.
They are necessary for zero copy buffer management, when DFU backend is
used for storing data.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agodfu:core: Find DFU alt setting number by passing its name
Lukasz Majewski [Tue, 8 Oct 2013 12:30:38 +0000 (14:30 +0200)]
dfu:core: Find DFU alt setting number by passing its name

New function - dfu_get_alt() - has been added to dfu core. If present, it
returns alt setting's number corresponding to passed name.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agoarm: Switch to -mno-unaligned-access when supported by the compiler
Tom Rini [Tue, 25 Feb 2014 15:27:01 +0000 (10:27 -0500)]
arm: Switch to -mno-unaligned-access when supported by the compiler

When we tell the compiler to optimize for ARMv7 (and ARMv6 for that
matter) it assumes a default of SCTRL.A being cleared and unaligned
accesses being allowed and fast at the hardware level.  We set this bit
and must pass along -mno-unaligned-access so that the compiler will
still breakdown accesses and not trigger a data abort.

To better help understand the requirements of the project with respect
to unaligned memory access, the
Documentation/unaligned-memory-access.txt file has been added as
doc/README.unaligned-memory-access.txt and is taken from the v3.14-rc1
tag of the kernel.

Cc: Albert ARIBAUD <albert.u.boot@aribaud.net>
Cc: Mans Rullgard <mans@mansr.com>
Signed-off-by: Tom Rini <trini@ti.com>
Conflicts:
README
arch/arm/cpu/armv8/config.mk
common/Makefile
fs/ubifs/Makefile
lib/Makefile

9 years agocommon: gpt: include stdbool.h
Chanho Park [Thu, 23 Jul 2015 05:08:31 +0000 (14:08 +0900)]
common: gpt: include stdbool.h

Consolidation of 'bool' type was merged with a huge patch. Instead of
back-port it, just include the stdbool.h for cmd_gpt.

Signed-off-by: Chanho Park <chanho61.park@samsung.com>
9 years agolib: build rand.c with CONFIG_CMD_UUID
Chanho Park [Thu, 23 Jul 2015 05:06:41 +0000 (14:06 +0900)]
lib: build rand.c with CONFIG_CMD_UUID

This patch is intended to build rand.c when CMD_UUID option is turned
on.

Signed-off-by: Chanho Park <chanho61.park@samsung.com>
9 years agoide: Add printf format string for CONFIG_SYS_64BIT_LBA option
Gabe Black [Fri, 12 Oct 2012 14:26:06 +0000 (14:26 +0000)]
ide: Add printf format string for CONFIG_SYS_64BIT_LBA option

The size of an LBA type changes depending on this option. We need to
use a different printf() string in each case, so create a define for
this.

Signed-off-by: Gabe Black <gabeblack@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agocommon: cmd_part: start and size sub-commands introduction
Paul Kocialkowski [Mon, 15 Jun 2015 19:35:05 +0000 (21:35 +0200)]
common: cmd_part: start and size sub-commands introduction

This introduces the part start and part size sub-commands. The purpose of these
is to store the start block and size of a partition in a variable, given the
device and partition number.

This allows reading raw data that fits a single partition more easily.
For instance, this could be used to figure out the start block and size of a
kernel partition when a partition table is present, given the partition number.

Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
Acked-by: Stephen Warren <swarren@nvidia.com>
[trini: Change "%lx" to LBAF]
Signed-off-by: Tom Rini <trini@konsulko.com>
Conflicts:
common/cmd_part.c

9 years agocommon: cmd_part: Proper alignment
Paul Kocialkowski [Mon, 15 Jun 2015 19:35:04 +0000 (21:35 +0200)]
common: cmd_part: Proper alignment

This fixes a misaligned declaration.

Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
9 years agocmd_part: fix usage text
maxin.john@enea.com [Mon, 27 Apr 2015 23:44:58 +0000 (01:44 +0200)]
cmd_part: fix usage text

Fix the usage info from:
part part uuid <interface> <dev>:<part>
to
part uuid <interface> <dev>:<part>

Signed-off-by: Maxin B. John <maxin.john@enea.com>
Reviewed-By: Sjoerd Simons <sjoerd.simons@collabora.co.uk
9 years agopart: Add support for list filtering on bootable partitions
Sjoerd Simons [Wed, 25 Feb 2015 22:23:50 +0000 (23:23 +0100)]
part: Add support for list filtering on bootable partitions

Add an optional -bootable parameter to the part list commands to only
put the list of bootable partitions in the environment variable

Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
Reviewed-by: Stephen Warren <swarren@nvidia.com>
9 years agopart: let list put the list in an environment variable
Sjoerd Simons [Mon, 5 Jan 2015 17:13:37 +0000 (18:13 +0100)]
part: let list put the list in an environment variable

Add an optional third argument to the "part list" command which puts a
space seperated list of valid partitions into the given environment
variable. This is useful for allowing boot scripts to iterate of all
partitions of a device.

Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
Reviewed-by: Stephen Warren <swarren@nvidia.com>
9 years agocmd_part: fix typo in part command help text
Stephen Warren [Wed, 7 May 2014 18:19:00 +0000 (12:19 -0600)]
cmd_part: fix typo in part command help text

All the sub-commands start with the main command name, but it was
missing from one of the help texts.

<panto> typos fix.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Tom Rini <trini@ti.com>
Acked-by: Pantelis Antoniou <panto@antoniou-consulting.com>
9 years agocmd_part: don't print cmd name twice in help
Stephen Warren [Thu, 28 Feb 2013 15:05:34 +0000 (15:05 +0000)]
cmd_part: don't print cmd name twice in help

The core implementation of "help" already prints the command name before
the help text of a specific command. Remove it from part's own help text
to avoid it being printed twice:

Tegra114 (Dalmore) # help part
part - disk partition related commands

Usage:
part part uuid <interface> <dev>:<part>
    - print partition UUID
...

Signed-off-by: Stephen Warren <swarren@nvidia.com>
9 years agocmd_part: add partition-related command
Stephen Warren [Fri, 21 Sep 2012 09:51:01 +0000 (09:51 +0000)]
cmd_part: add partition-related command

This implements the following:

part uuid mmc 0:1
  -> print partition UUID
part uuid mmc 0:1 uuid
  -> set environment variable to partition UUID
part list mmc 0
  -> list the partitions on the specified device

"part uuid" can be useful when writing a bootcmd which searches all
known devices for something bootable, and then wants the kernel to
use the same partition as the root device, e.g.:

part uuid ${devtype} ${devnum}:${rootpart} uuid
setenv bootargs root=PARTUUID=${uuid} ...

Signed-off-by: Stephen Warren <swarren@nvidia.com>
9 years agoCOMMON: Add __stringify() function
Marek Vasut [Thu, 27 Sep 2012 15:08:15 +0000 (17:08 +0200)]
COMMON: Add __stringify() function

Copied from Linux kernel:
commit 8f7c2c37319a81ef4c2bfdec67b1ccd5744d97e4
Date:   Wed Apr 8 16:58:57 2009 +0800

Pull in the __stringify() macro from Linux kernel. This macro is usually used to
convert numbers to strings at preprocessor level, yet it is not limited only to
that. This is useful as it allows higher usage of puts() in favour of printf().

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Wolfgang Denk <wd@denx.de>
9 years agogpt: support random UUIDs without setting environment variables
Rob Herring [Mon, 26 Jan 2015 15:44:18 +0000 (09:44 -0600)]
gpt: support random UUIDs without setting environment variables

Currently, an environment variable must be used to store the randomly
generated UUID for each partition. This is not necessary, so make storing
the UUID optional. Now passing uuid_disk and uuid are optional when random
UUIDs are enabled.

Signed-off-by: Rob Herring <robh@kernel.org>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
9 years agogpt: fix error reporting on partition table write failures
Rob Herring [Mon, 26 Jan 2015 15:43:15 +0000 (09:43 -0600)]
gpt: fix error reporting on partition table write failures

The gpt command always reports success even if writing the partition table
failed. Propagate the return value of gpt_restore so we get proper status
reported.

Signed-off-by: Rob Herring <robh@kernel.org>
Reviewed-by: Przemyslaw Marczak <p.marczak@samsung.com>
9 years agocmd:gpt: randomly generate each partition uuid if undefined
Przemyslaw Marczak [Wed, 2 Apr 2014 08:20:06 +0000 (10:20 +0200)]
cmd:gpt: randomly generate each partition uuid if undefined

Changes:
- randomly generate partition uuid if any is undefined and CONFIG_RAND_UUID
  is defined
- print debug info about set/unset/generated uuid
- update doc/README.gpt

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Acked-by: Lukasz Majewski <l.majewski@samsung.com>
Cc: Piotr Wilczek <p.wilczek@samsung.com>
Cc: Tom Rini <trini@ti.com>
Cc: Stephen Warren <swarren@nvidia.com>
Cc: Lukasz Majewski <l.majewski@samsung.com>
9 years agogpt:doc: GPT (GUID Partition Table) documentation
Lukasz Majewski [Tue, 11 Dec 2012 10:09:44 +0000 (11:09 +0100)]
gpt:doc: GPT (GUID Partition Table) documentation

Documentation of the GPT format.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
9 years agonew commands: uuid and guid - generate random unique identifier
Przemyslaw Marczak [Wed, 2 Apr 2014 08:20:05 +0000 (10:20 +0200)]
new commands: uuid and guid - generate random unique identifier

Those commands basis on implementation of random UUID generator version 4
which is described in RFC4122. The same algorithm is used for generation
both ids but string representation is different as below.

char:  0        9    14   19   24         36
       xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
UUID:     be     be   be   be       be
GUID:     le     le   le   be       be

Commands usage:
- uuid [<varname>]
- guid [<varname>]

The result is saved in environment as a "varname" variable if argument is given,
if not then it is printed.

New config:
- CONFIG_CMD_UUID

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Cc: Stephen Warren <swarren@nvidia.com>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: trini@ti.com
Conflicts:
README
include/config_fallbacks.h

9 years agolib: uuid: add functions to generate UUID version 4
Przemyslaw Marczak [Wed, 2 Apr 2014 08:20:04 +0000 (10:20 +0200)]
lib: uuid: add functions to generate UUID version 4

This patch adds support to generate UUID (Universally Unique Identifier)
in version 4 based on RFC4122, which is randomly.

Source: https://www.ietf.org/rfc/rfc4122.txt

Changes:
- new configs:
  - CONFIG_LIB_UUID for compile lib/uuid.c
  - CONFIG_RANDOM_UUID for functions gen_rand_uuid() and gen_rand_uuid_str()
- add configs dependency to include/config_fallbacks.h for lib uuid.

lib/uuid.c:
- add gen_rand_uuid() - this function writes 16 bytes len binary representation
  of UUID v4 to the memory at given address.

- add gen_rand_uuid_str() - this function writes 37 bytes len hexadecimal
  ASCII string representation of UUID v4 to the memory at given address.

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Cc: Stephen Warren <swarren@nvidia.com>
Cc: Lukasz Majewski <l.majewski@samsung.com>
[trini: Add CONFIG_EFI_PARTITION to fallbacks]
Signed-off-by: Tom Rini <trini@ti.com>
Conflicts:
include/config_fallbacks.h
lib/Makefile

9 years agolib: uuid: code refactor for proper maintain between uuid bin and string
Przemyslaw Marczak [Wed, 2 Apr 2014 08:20:03 +0000 (10:20 +0200)]
lib: uuid: code refactor for proper maintain between uuid bin and string

Changes in lib/uuid.c to:
- uuid_str_to_bin()
- uuid_bin_to_str()

New parameter is added to specify input/output string format in listed functions
This change allows easy recognize which UUID type is or should be stored in given
string array. Binary data of UUID and GUID is always stored in big endian, only
string representations are different as follows.

String byte: 0                                  36
String char: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
string UUID:    be     be   be   be       be
string GUID:    le     le   le   be       be

This patch also updates functions calls and declarations in a whole code.

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Cc: Stephen Warren <swarren@nvidia.com>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: trini@ti.com
9 years agopart_efi: move uuid<->string conversion functions into lib/uuid.c
Przemyslaw Marczak [Wed, 2 Apr 2014 08:20:02 +0000 (10:20 +0200)]
part_efi: move uuid<->string conversion functions into lib/uuid.c

This commit introduces cleanup for uuid library.
Changes:
- move uuid<->string conversion functions into lib/uuid.c so they can be
  used by code outside part_efi.c.
- rename uuid_string() to uuid_bin_to_str() for consistency with existing
  uuid_str_to_bin()
- add an error return code to uuid_str_to_bin()
- update existing code to the new library functions.

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Cc: Stephen Warren <swarren@nvidia.com>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: trini@ti.com
Conflicts:
lib/Makefile

9 years agocmd/gpt: Support gpt command for all devices
Egbert Eich [Fri, 4 Oct 2013 16:53:04 +0000 (18:53 +0200)]
cmd/gpt: Support gpt command for all devices

The gpt command was only implemented for mmc devices. There is no reason
why this command should not be generalized and be applied all other
storage device classes.
This change both simplifies the implementation and eliminates a
build failure for systems that don't support mmcs.

Signed-off-by: Egbert Eich <eich@suse.com>
Tested-by: Piotr Wilczek <p.wilczek@samsung.com>
[trini: Change coding style slightly]
Signed-off-by: Tom Rini <trini@ti.com>
9 years agovsprintf: add ustrtoll function
Piotr Wilczek [Sun, 27 Jan 2013 22:59:24 +0000 (22:59 +0000)]
vsprintf: add ustrtoll function

Add 'ustrtoull' function to convert size from string (ex: 1GiB)
to unsigned long long type

Signed-off-by: Piotr Wilczek <p.wilczek@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Conflicts:
lib/vsprintf.c

9 years agovsprintf:fix: Change type returned by ustrtoul
Lukasz Majewski [Tue, 11 Dec 2012 10:09:42 +0000 (11:09 +0100)]
vsprintf:fix: Change type returned by ustrtoul

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

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

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
9 years agoUpdate set_working_fdt_addr() to use setenv_addr()
Simon Glass [Sun, 24 Feb 2013 17:33:21 +0000 (17:33 +0000)]
Update set_working_fdt_addr() to use setenv_addr()

We might as well use this common function instead of repeating the same
code.

Signed-off-by: Simon Glass <sjg@chromium.org>
Conflicts:
common/cmd_fdt.c

9 years agosandbox: Add un/map_sysmen() to deal with sandbox's ram_buf
Simon Glass [Sun, 24 Feb 2013 17:33:14 +0000 (17:33 +0000)]
sandbox: Add un/map_sysmen() to deal with sandbox's ram_buf

Sandbox doesn't actually provide U-Boot access to the machine's physical
memory. Instead it provides a RAM buffer of configurable size, and all
memory accesses are within that buffer. Sandbox memory starts at 0 and
is CONFIG_DRAM_SIZE bytes in size. Allowing access outside this buffer
might produce unpredictable results in the event of an error, and would
expose the host machine's memory architecture to the sandbox U-Boot.

Most U-Boot functions assume that they can just access memory at given
address. For sandbox this is not true.

Add a map_sysmem() call which converts a U-Boot address to a system
address. In most cases this is a NOP, but for sandbox it returns a
pointer to that memory inside the RAM buffer.

To get a U-Boot feature to work correctly within sandbox, you should call
map_sysmem() to get a pointer to the address, and then use that address for
any U-Boot memory accesses.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agocommon: remove endif of CONFIG_PPC
Chanho Park [Wed, 22 Jul 2015 11:50:25 +0000 (20:50 +0900)]
common: remove endif of CONFIG_PPC

Signed-off-by: Chanho Park <chanho61.park@samsung.com>