profile/common/platform/kernel/u-boot-artik.git
9 years agousb: dwc3: add a workaround for too small OUT requests
Marek Szyprowski [Tue, 3 Mar 2015 16:32:10 +0000 (17:32 +0100)]
usb: dwc3: add a workaround for too small OUT requests

DWC3 hangs on OUT requests smaller than maxpacket size,
so HACK the request length to be at least equal to maxpacket size.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
9 years agousb: dwc3: make dwc3_set_mode to static
Joonyoung Shim [Tue, 3 Mar 2015 16:32:09 +0000 (17:32 +0100)]
usb: dwc3: make dwc3_set_mode to static

This commit makes the dwc3_set_mode() as static, to prevent collisions.

Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: dwc3: Remove BIT(x) macro from DWC3's gadget code
Lukasz Majewski [Tue, 3 Mar 2015 16:32:08 +0000 (17:32 +0100)]
usb: dwc3: Remove BIT(x) macro from DWC3's gadget code

The BIT() macro is used only in those places, so it is reasonable to
replace it by a constant value.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: composite: Add .reset callback to usb_gadget_driver structure
Lukasz Majewski [Tue, 3 Mar 2015 16:32:07 +0000 (17:32 +0100)]
usb: composite: Add .reset callback to usb_gadget_driver structure

DWC3 UDC driver requires presence of .reset callback in a composite driver.
This setting is similar to the one nowadays present in linux kernel.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: gadget: thor: Invoke board specific USB cleanup interface
Inha Song [Tue, 3 Mar 2015 16:32:06 +0000 (17:32 +0100)]
usb: gadget: thor: Invoke board specific USB cleanup interface

This patch invokes board-specific USB cleanup (board_usb_cleanup)
function in the thor gadget.

Signed-off-by: Inha Song <ideal.song@samsung.com>
Conflicts:
common/cmd_thordown.c

9 years agousb: gadget: UMS: Invoke board specific USB cleanup interface
Inha Song [Tue, 3 Mar 2015 16:32:05 +0000 (17:32 +0100)]
usb: gadget: UMS: Invoke board specific USB cleanup interface

This patch invokes board-specific USB cleanup (board_usb_cleanup)
function in the mass storage gadget

Signed-off-by: Inha Song <ideal.song@samsung.com>
9 years agousb: modify usb_gadget_handle_interrupts to take controller index
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:10:23 +0000 (18:40 +0530)]
usb: modify usb_gadget_handle_interrupts to take controller index

Since we support multiple dwc3 controllers to be existent at the same
time, in order to handle the interrupts of a particular dwc3 controller
usb_gadget_handle_interrutps should take controller index as an
argument.

Hence the API of usb_gadget_handle_interrupts is modified to take
controller index as an argument and made the corresponding changes to all
the usb_gadget_handle_interrupts calls.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
Conflicts:
board/ti/am43xx/board.c
board/ti/dra7xx/evm.c
common/cmd_fastboot.c
drivers/usb/gadget/atmel_usba_udc.c
drivers/usb/gadget/ci_udc.c
drivers/usb/gadget/fotg210.c

9 years agocommon: cmd_dfu: invoke board_usb_cleanup() for cleaning up
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:10:18 +0000 (18:40 +0530)]
common: cmd_dfu: invoke board_usb_cleanup() for cleaning up

Invoked board_usb_cleanup for cleaning up initialized USB. It
will be invoked if the user enterts ctrl-C.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: gadget: defer setting maxpacket till ->setup()
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:10:17 +0000 (18:40 +0530)]
usb: gadget: defer setting maxpacket till ->setup()

Taken from linux kernel with commit
commit 765f5b830e547229bb752e7b232ee83e2b3d49d5
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Thu Jun 23 14:26:11 2011 +0200

usb: gadget: defer setting maxpacket till ->setup()

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: dwc3: Makefile: Make dwc3 driver compile in u-boot
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:10:16 +0000 (18:40 +0530)]
usb: dwc3: Makefile: Make dwc3 driver compile in u-boot

Now that the entire dwc3 driver is adapted to compile with uboot build,
modify the Makefiles so that the dwc3 driver can be built.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
Conflicts:
Makefile

9 years agousb: dwc3: Add chained TRB support for ep0
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:10:15 +0000 (18:40 +0530)]
usb: dwc3: Add chained TRB support for ep0

dwc3 can do only max packet aligned transfers. So in case request length
is not max packet aligned and is bigger than DWC3_EP0_BOUNCE_SIZE
two chained TRBs is required to handle the transfer.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: dwc3: ep0: preparation for implementing chained TRB
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:10:14 +0000 (18:40 +0530)]
usb: dwc3: ep0: preparation for implementing chained TRB

No functional change. Modified few things so that there are no
code duplication while implementing chained TRB.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agodwc3: flush the buffers before using it
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:10:13 +0000 (18:40 +0530)]
dwc3: flush the buffers before using it

In the linux kernel, non cacheable buffers are used. However in uboot
since there are no APIs to allocate non cacheable memory, all
the buffers should be flushed before using it.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
9 years agousb: dwc3: TI PHY: PHY driver for dwc3 in TI platforms
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:10:12 +0000 (18:40 +0530)]
usb: dwc3: TI PHY: PHY driver for dwc3 in TI platforms

Added a single driver for both USB2 PHY programming and USB3 PHY
programming.

USB3 PHY is taken from drivers/phy/phy-ti-pipe3.c in linux kernel.
commit 56042e : phy: ti-pipe3: Fix suspend/resume and module reload.

USB2 PHY is taken from drivers/phy/phy-omap-usb2.c in linux kernel.
commit eb82a3 : phy: omap-usb2: Balance pm_runtime_enable() on probe
failure and remove.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: dwc3: dwc3-omap: add interrupt status API to check for interrupts
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:10:11 +0000 (18:40 +0530)]
usb: dwc3: dwc3-omap: add interrupt status API to check for interrupts

Added an API to check for interrupt status. This API is generally
called from board file to check for interrupt status.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agodwc3: dwc3-omap: add support for multiple dwc3-omap controllers
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:10:10 +0000 (18:40 +0530)]
dwc3: dwc3-omap: add support for multiple dwc3-omap controllers

Added support for multiple dwc3 omap controllers. This gives uboot
the capability to control multiple dwc3 omap controllers.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: dwc3: dwc3-omap: change probe and remove to uboot init and uboot exit code
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:10:09 +0000 (18:40 +0530)]
usb: dwc3: dwc3-omap: change probe and remove to uboot init and uboot exit code

Removed probe and remove that are specific to linux and replaced it with
uboot init and uboot exit. These functions will be invoked from boardfile.

This will change once we have dwc3-omap driver adapted to use the uboot
driver model.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agoinclude: dwc3-omap-uboot: add a structure for populating dwc3-omap platform data
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:10:08 +0000 (18:40 +0530)]
include: dwc3-omap-uboot: add a structure for populating dwc3-omap platform data

Added a structure to populate dwc3 omap platform data. The board file should
populate these platform data before invoking dwc3 omap driver.

This will be removed once dwc3-omap driver is adapted to use the driver model.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: dwc3: dwc3-omap: make dwc3-omap build in uboot
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:10:07 +0000 (18:40 +0530)]
usb: dwc3: dwc3-omap: make dwc3-omap build in uboot

*) Changed the included header files to that used in u-boot.
*) Removed extcon_* APIs
*) Removed regulator_* APIs
*) Fixed other misc warnings
*) Added dwc3-omap.h to include the definitions of UTMI modes.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agodwc3: core: added an API to invoke irq handlers
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:10:06 +0000 (18:40 +0530)]
dwc3: core: added an API to invoke irq handlers

Since interrupt support is not present in u-boot, added an
API to handle the interrupts in dwc3 core. This API can be
polled to handle the interrupts.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agodwc3: core: add support for multiple dwc3 controllers
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:10:05 +0000 (18:40 +0530)]
dwc3: core: add support for multiple dwc3 controllers

Added support for multiple dwc3 controllers. This gives uboot
the capability to control multiple dwc3 controllers.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agodwc3: core: change probe and remove to uboot init and uboot exit code
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:10:04 +0000 (18:40 +0530)]
dwc3: core: change probe and remove to uboot init and uboot exit code

Removed probe and remove that are specific to linux and replaced it with
uboot init and uboot exit. These functions will be invoked from boardfile.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agoinclude: dwc3-uboot: add a structure for populating platform data
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:10:03 +0000 (18:40 +0530)]
include: dwc3-uboot: add a structure for populating platform data

Added a structure to populate dwc3 core platform data. The board file should
populate these platform data before invoking dwc3 driver.
This will be removed once we have dwc3 driver adapted to use the driver model.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: dwc3: core: make dwc3 core build in uboot
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:10:02 +0000 (18:40 +0530)]
usb: dwc3: core: make dwc3 core build in uboot

*) Changed the include header files to that used in u-boot.
*) Removed phy_* APIs
*) Removed jiffies and used a simple while loop
*) Used dma_alloc_coherent and dma_free_coherent APIs of u-boot
*) Fixed other misc warnings

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agoinclude: usb: composite: add USB_GADGET_DELAYED_STATUS to avoid compilation error
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:10:01 +0000 (18:40 +0530)]
include: usb: composite: add USB_GADGET_DELAYED_STATUS to avoid compilation error

Added USB_GADGET_DELAYED_STATUS to avoid the following compilation error.
error: ‘USB_GADGET_DELAYED_STATUS’ undeclared (first use in this function)
while compiling dwc3/ep0.c

While this is been added only to avoid compilation error, the complete fix
should be something like the one added in linux kernel. The complete fix
will be ported once we have the composite driver in u-boot look similar to
the one in linux kernel.
commit 1b9ba000177ee47bcc5b44c7c34e48e735f5f9b1
Author: Roger Quadros <roger.quadros@nokia.com>
Date:   Mon May 9 13:08:06 2011 +0300

    usb: gadget: composite: Allow function drivers to pause control transfers

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: dwc3: ep0: make dwc3 ep0 build in uboot
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:10:00 +0000 (18:40 +0530)]
usb: dwc3: ep0: make dwc3 ep0 build in uboot

*) Changed the included header files to that used in u-boot.
*) added dwc3_ep_event_string() used in ep0.c
*) Fixed other misc warnings

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agoinclude: asm: types: add resource_size_t type
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:09:59 +0000 (18:39 +0530)]
include: asm: types: add resource_size_t type

Added resource_size_t type in order to get rid of the following
compilation error whiel building dwc3 gadget.
include/linux/ioport.h:19:2: error: unknown type name ‘resource_size_t’

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: dwc3: gadget: make dwc3 gadget build in uboot
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:09:58 +0000 (18:39 +0530)]
usb: dwc3: gadget: make dwc3 gadget build in uboot

Did a bunch of things to get dwc3/gadget.c compile in u-boot without
build errors and warnings
*) Changed the included header files to that used in u-boot.
*) Used dma_alloc_coherent and dma_free_coherent APIs of u-boot
*) removed sg support
*) remove jiffies and used a simple while loop
*) removed irq support and added a function to call these interrupt handler.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
Conflicts:
include/linux/usb/gadget.h

9 years agofdt: Add a subnodes iterator macro
Thierry Reding [Tue, 26 Aug 2014 15:33:55 +0000 (17:33 +0200)]
fdt: Add a subnodes iterator macro

The fdt_for_each_subnode() iterator macro provided by this patch can be
used to iterate over a device tree node's subnodes. At each iteration a
loop variable will be set to the next subnode.

Acked-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Thierry Reding <treding@nvidia.com>
9 years agofdt: Add functions to retrieve strings
Thierry Reding [Tue, 26 Aug 2014 15:33:52 +0000 (17:33 +0200)]
fdt: Add functions to retrieve strings

Given a device tree node, a property name and an index, the new function
fdt_get_string_index() will return in an output argument a pointer to
the index'th string in the property's value.

The fdt_get_string() is a shortcut for the above with the index being 0.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agofdt: Add a function to get the index of a string
Thierry Reding [Tue, 26 Aug 2014 15:33:51 +0000 (17:33 +0200)]
fdt: Add a function to get the index of a string

Given a device tree node and a property name, the new fdt_find_string()
function will look up a given string in the string list contained in the
property's value and return its index.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agofdt: Add a function to count strings
Thierry Reding [Tue, 26 Aug 2014 15:33:50 +0000 (17:33 +0200)]
fdt: Add a function to count strings

Given a device tree node and a property name, the fdt_count_strings()
function counts the number of strings found in the property value.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agolib, linux: move linux specific defines to linux/compat.h
Heiko Schocher [Tue, 24 Jun 2014 08:10:03 +0000 (10:10 +0200)]
lib, linux: move linux specific defines to linux/compat.h

- move linux specific defines from usb and video code
  into linux/compat.h
- move common linux specific defines from include/ubi_uboot.h
  to linux/compat.h
- add for new mtd/ubi/ubifs sync new needed linux specific
  defines to linux/compat.h

Signed-off-by: Heiko Schocher <hs@denx.de>
Cc: Marek Vasut <marex@denx.de>
Cc: Anatolij Gustschin <agust@denx.de>
[trini: Add spin_lock_irqsave/spin_unlock_irqrestore dummies from
usb/lin_gadet_compat.h]
Signed-off-by: Tom Rini <trini@ti.com>
Conflicts:
drivers/usb/gadget/ether.c
drivers/usb/musb-new/linux-compat.h
drivers/video/exynos_dp.c
drivers/video/exynos_mipi_dsi.c
lib/Makefile

9 years agolibfdt: Add fdt_find_regions()
Simon Glass [Thu, 13 Jun 2013 22:10:08 +0000 (15:10 -0700)]
libfdt: Add fdt_find_regions()

Add a function to find regions in device tree given a list of nodes to
include and properties to exclude.

See the header file for full documentation.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agolibfdt: Add fdt_next_subnode() to permit easy subnode iteration
Simon Glass [Tue, 7 May 2013 06:11:50 +0000 (06:11 +0000)]
libfdt: Add fdt_next_subnode() to permit easy subnode iteration

Iterating through subnodes with libfdt is a little painful to write as we
need something like this:

for (depth = 0, count = 0,
offset = fdt_next_node(fdt, parent_offset, &depth);
     (offset >= 0) && (depth > 0);
     offset = fdt_next_node(fdt, offset, &depth)) {
if (depth == 1) {
/* code body */
}
}

Using fdt_next_subnode() we can instead write this, which is shorter and
easier to get right:

for (offset = fdt_first_subnode(fdt, parent_offset);
     offset >= 0;
     offset = fdt_next_subnode(fdt, offset)) {
/* code body */
}

Also, it doesn't require two levels of indentation for the loop body.

Signed-off-by: Simon Glass <sjg@chromium.org>
(Cherry-picked from dtc commit 4e76ec79)
Acked-by: Gerald Van Baren <vanbaren@cideas.com>
9 years agoFix typo
François Revol [Sat, 2 Feb 2013 23:52:21 +0000 (00:52 +0100)]
Fix typo

Ref: DTC commit cc11e522

Signed-off-by: François Revol <revol@free.fr>
9 years agoExport fdt_stringlist_contains()
Simon Glass [Mon, 21 Jan 2013 20:59:18 +0000 (12:59 -0800)]
Export fdt_stringlist_contains()

This function is useful outside libfdt, so export it.

Ref: DTC commit b7aa300e

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
9 years agolibfdt: update from upstream dtc commit 142419e
Kim Phillips [Wed, 16 Jan 2013 13:59:50 +0000 (13:59 +0000)]
libfdt: update from upstream dtc commit 142419e

commit 142419e "dtc/libfdt: sparse fixes", for u-boot's libfdt copy.

Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
Cc: Jerry Van Baren <gvb.uboot@gmail.com>
9 years agolibfdt: Add helpers for 64-bit integer properties
David Gibson [Tue, 28 Aug 2012 00:39:00 +0000 (19:39 -0500)]
libfdt: Add helpers for 64-bit integer properties

In device trees in the world, properties consisting of a single 64-bit
integer are not as common as those consisting of a single 32-bit, cell
sized integer, but they're common enough that they're worth including
convenience functions for.

This patch adds helper wrappers of fdt_setprop_inplace(), fdt_setprop() and
fdt_appendprop() for handling 64-bit integer quantities in properties.  For
better consistency with the names of these new *_u64() functions we also
add *_u32() functions as alternative names for the existing *_cell()
functions handling 32-bit integers.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
9 years agolibfdt: Add helper function to create a trivial, empty tree
Gerald Van Baren [Tue, 16 Oct 2012 02:24:36 +0000 (22:24 -0400)]
libfdt: Add helper function to create a trivial, empty tree

The libfdt read/write functions are now usable enough that it's become a
moderately common pattern to use them to build and manipulate a device
tree from scratch.  For example, we do so ourself in our rw_tree1 testcase,
and qemu is starting to use this model when building device trees for some
targets such as e500.

However, the read/write functions require some sort of valid tree to begin
with, so this necessitates either having a trivial canned dtb to begin with
or, more commonly, creating an empty tree using the serial-write functions
first.

This patch adds a helper function which uses the serial-write functions to
create a trivial, empty but complete and valid tree in a supplied buffer,
ready for manipulation with the read/write functions.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
From git://git.jdl.com/software/dtc.git patch hash be6026838 with
adaptations to include/libfdt.h and lib/libfdt/Makefile for the U-Boot
environment.

Signed-off-by: Gerald Van Baren <vanbaren@cideas.com>
9 years agolibfdt: Add support for appending the values to a existing property
Minghuan Lian [Tue, 28 Aug 2012 00:38:59 +0000 (19:38 -0500)]
libfdt: Add support for appending the values to a existing property

Some properties may contain multiple values, these values may need
to be added to the property respectively. this patch provides this
functionality. The main purpose of fdt_append_prop() is to append
the values to a existing property, or create a new property if it
dose not exist.

Signed-off-by: Minghuan Lian <Minghuan.Lian@freescale.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
9 years agolinux/compat.h: port lower_32_bits and upper_32_bits from Linux
Lijun Pan [Fri, 20 Jun 2014 17:17:29 +0000 (12:17 -0500)]
linux/compat.h: port lower_32_bits and upper_32_bits from Linux

[backport from linux commit 204b885e and 218e180e7]
64 bit processors are becomming more and more popular.
lower_32_bits and upper_32_bits save our labor doing
shifts/manipulations like (u32)(n) and (u32)((n) >> 32).
They are good helpers in both little and big endian cases.
Port these two functions here from Linux:include/linux/kernel.h,
cater the comment message to little/big endian cases.
Later on, developers could include linux/compat.h if they want to
use these two functions.

Signed-off-by: Lijun Pan <Lijun.Pan@freescale.com>
9 years agolinux/compat.h: move dev_err, dev_info and dev_dbg from usb driver to compat.h
Wu, Josh [Wed, 3 Jul 2013 03:11:47 +0000 (11:11 +0800)]
linux/compat.h: move dev_err, dev_info and dev_dbg from usb driver to compat.h

Since kernel code current use many dev_xxx() instead of using printk. To
compatible, move those dev_xxx from usb driver to linux/compat.h. Then all
driver code can use dev_err, dev_info and dev_vdbg.

This patch also removed duplicated macro definitions in usb driver.

Signed-off-by: Josh Wu <josh.wu@atmel.com>
Acked-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
Conflicts:
drivers/usb/musb-new/linux-compat.h

9 years agoinclude/linux/compat.h: fix warning: preprocessor token {__iomem, __user} redefined
Kim Phillips [Mon, 29 Oct 2012 13:34:24 +0000 (13:34 +0000)]
include/linux/compat.h: fix warning: preprocessor token {__iomem, __user} redefined

include/linux/compat.h:4:9: warning: preprocessor token __user redefined
include/linux/compiler.h:7:10: this was the original definition
include/linux/compat.h:5:9: warning: preprocessor token __iomem redefined
include/linux/compiler.h:12:10: this was the original definition

fixup __iomem, __user definitions in compat.h code appears to be placed
there as a cover up from a code import from linux when u-boot didn't yet
have a compiler.h, introduced by commit
932394ac43e2e778e664eeb6e456fecd0fae6e59 "Rewrite of NAND code based on
what is in 2.6.12 Linux kernel".

Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
9 years agousb: dwc3: linux-compat: Add header for dwc3 linux compatibiltiy
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:09:57 +0000 (18:39 +0530)]
usb: dwc3: linux-compat: Add header for dwc3 linux compatibiltiy

Added a header file to include various linux specific APIs like
pr_debug, WARN_ WARN_ON_ONCE etc.. in order to avoid compilation
error while building dwc3 driver.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agoarm: asm: dma-mapping: added dma_free_coherent API
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:09:56 +0000 (18:39 +0530)]
arm: asm: dma-mapping: added dma_free_coherent API

Added dma_free_coherent corresponding to the dma_alloc_coherent in
dma-mapping.h in order to free memory allocated using dma_alloc_coherent.
This API is used in dwc3 driver.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: dwc3: remove pm related operations from dwc3 driver
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:09:55 +0000 (18:39 +0530)]
usb: dwc3: remove pm related operations from dwc3 driver

Removed all pm related operations including pm_runtime APIs,
suspend/resume hooks as support for these are not present in u-boot.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: dwc3: fix dwc3 header files
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:09:54 +0000 (18:39 +0530)]
usb: dwc3: fix dwc3 header files

Changed the header files included in core.h and io.h to the u-boot header
files so that these files can be included in other dwc3 source files and
be compiled in uboot. Also added otg.h which has the defines for dr_mode.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: dwc3: remove trace_* APIs from dwc3 driver
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:09:53 +0000 (18:39 +0530)]
usb: dwc3: remove trace_* APIs from dwc3 driver

Removed most of the trace_* APIs from dwc3 driver since tracepoints are not
supported in u-boot. Replaced some of the trace_* API with dev_dbg/dev/vdbg.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Review-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: dwc3: Modify the file headers to u-boot format
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:09:52 +0000 (18:39 +0530)]
usb: dwc3: Modify the file headers to u-boot format

Modified the file header to the format that is used in u-boot. Also
included in the header, the commit in linux kernel from which each of
these files are added.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: dwc3: remove un-used files from dwc3 folder
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:09:51 +0000 (18:39 +0530)]
usb: dwc3: remove un-used files from dwc3 folder

removed un-used/un-supported files from dwc3. These files can be added
later as and when the support is added.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: dwc3: add dwc3 folder from linux kernel to u-boot
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:09:50 +0000 (18:39 +0530)]
usb: dwc3: add dwc3 folder from linux kernel to u-boot

Added dwc3 folder from linux kernel 3.19-rc1 (97bf6af1f9)
to u-boot. This will be adapted to work with u-boot in the
following patches.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agoinclude: asm: dma-mapping: get rid of the compilation warning in udc-core
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:09:49 +0000 (18:39 +0530)]
include: asm: dma-mapping: get rid of the compilation warning in udc-core

Fixed the following warning here.
"warning: ‘dma_alloc_coherent’ defined but not used" while compiling
udc-core

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agoinclude: usb: modify gadget.h to include udc support
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:09:47 +0000 (18:39 +0530)]
include: usb: modify gadget.h to include udc support

Made changes in gadget.h that is required after adding udc-core.c
except changes that might break other platforms.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: gadget: udc: make udc-core compile in u-boot build
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:09:48 +0000 (18:39 +0530)]
usb: gadget: udc: make udc-core compile in u-boot build

Make udc-core compile in u-boot by removing all linux specific
stuff and having only the bare minimal udc-core required for
usb gadget drivers. Also modified the file header to a format that is
generally being used in u-boot.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: gadget: udc: add udc-core from linux kernel to u-boot
Kishon Vijay Abraham I [Mon, 23 Feb 2015 13:09:46 +0000 (18:39 +0530)]
usb: gadget: udc: add udc-core from linux kernel to u-boot

Added udc-core.c from linux kernel 3.19-rc1 (97bf6af1f9) to u-boot.
This will be adapted to work with u-boot in the
following patches.
Adding support for udc will help to seamlessly port dwc3 driver from
linux kernel to u-boot (since dwc3 uses udc-core) and it'll also help
to add support for multiple gadget controllers to be functional at the
same time.
All other gadget drivers can also be adapted to use udc-core.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: mass-storage: Build warning fixes for 64-bit
Thierry Reding [Fri, 20 Mar 2015 11:41:25 +0000 (12:41 +0100)]
usb: mass-storage: Build warning fixes for 64-bit

Fix a printf format mismatch warning seen on 64-bit builds.

Cc: Łukasz Majewski <l.majewski@samsung.com>
Cc: Marek Vasut <marex@denx.de>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Acked-by: Lukasz Majewski <l.majewski@samsung.com>
Tested-by: Lukasz Majewski <l.majewski@samsung.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agodfu: mmc: file buffer: remove static allocation
Przemyslaw Marczak [Wed, 4 Mar 2015 13:01:23 +0000 (14:01 +0100)]
dfu: mmc: file buffer: remove static allocation

For writing files, DFU implementation requires the file buffer
with the len at least of file size. For big files it requires
the same big buffer.

Previously the file buffer was allocated as a static variable,
so it was a part of U-Boot .bss section. For 32MiB len of buffer
we have 32MiB of additional space, required for this section.

The .bss needs to be cleared after the relocation.
This introduces an additional boot delay at every start, but usually
the dfu feature is not required at the standard boot, so the buffer
should be allocated only if required.

This patch removes the static allocation of this buffer,
and alloc it with memalign after first call of function:
- dfu_fill_entity_mmc()
and the buffer is freed on dfu_free_entity() call.

This was tested on Trats2.
A quick test with trace. Boot time from start to main_loop() entry:
- ~888ms - before this change (arch memset enabled for .bss clear)
- ~464ms - after this change

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: Stephen Warren <swarren@nvidia.com>
Cc: Pantelis Antoniou <panto@antoniou-consulting.com>
Cc: Tom Rini <trini@konsulko.com>
Cc: Marek Vasut <marek.vasut@gmail.com>
9 years agocmd_usb_mass_storage: Remove extra 'ums' string in the usage text
Fabio Estevam [Wed, 25 Feb 2015 16:03:19 +0000 (13:03 -0300)]
cmd_usb_mass_storage: Remove extra 'ums' string in the usage text

Currently the usage text for the 'ums' command looks like this:

Usage:
ums ums <USB_controller> [<devtype>] <devnum>  e.g. ums 0 mmc 0

,so remove the extra 'ums' in the text.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Acked-by: Otavio Salvador <otavio@ossystems.com.br>
Acked-by: Marek Vasut <marex@denx.de>
9 years agodfu: samsung: move call to set_dfu_alt_info() to dfu common code
Przemyslaw Marczak [Tue, 17 Feb 2015 11:24:11 +0000 (12:24 +0100)]
dfu: samsung: move call to set_dfu_alt_info() to dfu common code

This common call can be used for setting proper entities based
on dfu command arguments.
The config: CONFIG_SET_DFU_ALT_INFO, was used only for few configs,
and now it is common.

The board file should implement:
- set_dfu_alt_info() function

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Tested-by: Lukasz Majewski <l.majewski@samsung.com>
[Test HW: Odroid U3 (Exynos 4412)]

Conflicts:
board/samsung/common/board.c
board/samsung/common/misc.c
include/samsung/misc.h

9 years agodfu: dfu_get_buf: check the value of env dfu_bufsiz before use
Przemyslaw Marczak [Mon, 15 Dec 2014 09:34:11 +0000 (10:34 +0100)]
dfu: dfu_get_buf: check the value of env dfu_bufsiz before use

In function dfu_get_buf(), the size of allocated buffer could
be defined by the env variable. The size from this variable
was passed for memalign() without checking its value.
And the the memalign will return non null pointer for size 0.

This could possibly cause data abort, so now the value of var
is checked before use. And if this variable is set to 0 then
the default size will be used.

This commit also changes the base passed to simple_strtoul()
to 0. Now decimal and hex values can be used for the variable
dfu_bufsiz.

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Tested-by: Lukasz Majewski <l.majewski@samsung.com>
[TestHW: Exynos4412-Trats2]

9 years agogadget: f_thor: check pointers before use in download_tail()
Przemyslaw Marczak [Mon, 15 Dec 2014 09:34:10 +0000 (10:34 +0100)]
gadget: f_thor: check pointers before use in download_tail()

Some pointers in function download_tail() were not checked
before the use. This could possibly cause the data abort.
To avoid this, check if the pointers are not null is added.

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Tested-by: Lukasz Majewski <l.majewski@samsung.com>
[TestHW: Exynos4412-Trats2]

9 years agodfu: mmc: check if mmc device exists in mmc_block_op()
Przemyslaw Marczak [Mon, 15 Dec 2014 09:34:09 +0000 (10:34 +0100)]
dfu: mmc: check if mmc device exists in mmc_block_op()

The function mmc_block_op() is the last function before
the physicall data write, but the mmc device pointer is not
checked. If mmc device not exists, then data abort will occur.
To avoid this, first the mmc device pointer is checked.

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Tested-by: Lukasz Majewski <l.majewski@samsung.com>
[TestHW: Exynos4412-Trats2]

9 years agousb, g_dnl: generalize DFU detach functions
Rob Herring [Wed, 10 Dec 2014 20:43:03 +0000 (14:43 -0600)]
usb, g_dnl: generalize DFU detach functions

In order to add detach functions for fastboot, make the DFU detach related
functions common so they can be shared.

Signed-off-by: Rob Herring <robh@kernel.org>
Tested-by: Lukasz Majewski <l.majewski@samsung.com>
[TestHW: Exynos4412-Trats2]

9 years agodfu: thor: fix: Modify dfu_get_alt() function to support absolute paths
Lukasz Majewski [Wed, 5 Nov 2014 09:54:16 +0000 (10:54 +0100)]
dfu: thor: fix: Modify dfu_get_alt() function to support absolute paths

Recently the ext4 file system imposed passing absolute path with its file
name parameter.
As a result dfu_alt_info env variable has been modified to provide absolute
path when ext4 file system is accessed (e.g. /uImage ext4 0 2;).

Unfortunately, lthor flashing program provides plain file name (like uImage)
and hence those two file names do not match anymore.

Presented commit also allows lthor to write files to sub directories (like
/boot/bin/uImage).

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agousb: f_mass_storage: set removable flag in do_inquiry based on LUN
Eric Nelson [Sat, 20 Sep 2014 00:06:46 +0000 (17:06 -0700)]
usb: f_mass_storage: set removable flag in do_inquiry based on LUN

Without this flag, tools like Alex Page's USB Image Tool
won't see drives exposed over USB Gadget as removable,
and won't allow access to them.
http://www.alexpage.de/usb-image-tool/

The code was pulled from the main-line kernel:
drivers/usb/gadget/function/f_mass_storage.c

Signed-off-by: Eric Nelson <eric.nelson@boundarydevices.com>
9 years agousb: dfu: add fullspeed support for DFU
Heiko Schocher [Wed, 10 Sep 2014 06:55:00 +0000 (08:55 +0200)]
usb: dfu: add fullspeed support for DFU

DFU now can use also fullspeed.

Signed-off-by: Heiko Schocher <hs@denx.de>
Cc: Tom Rini <trini@ti.com>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Liu Bin <b-liu@ti.com>
Cc: Lukas Stockmann <lukas.stockmann@siemens.com>
9 years agousb: dfu: thor: gadget: Remove dead code
Lukasz Majewski [Thu, 11 Sep 2014 13:26:10 +0000 (15:26 +0200)]
usb: dfu: thor: gadget: Remove dead code

This code is not used anymore in the current DFU implementation and
can be safely removed.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: s3c-otg: Allow custom gusbcfg
Marek Vasut [Tue, 4 Nov 2014 03:23:25 +0000 (04:23 +0100)]
usb: s3c-otg: Allow custom gusbcfg

Allow passing in a custom configuration of the gusbcfg register
via platform data.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Chin Liang See <clsee@altera.com>
Cc: Dinh Nguyen <dinguyen@opensource.altera.com>
Cc: Vince Bridgers <vbridger@altera.com>
Acked-by: Pavel Machek <pavel@denx.de>
Cc: Stefan Roese <sr@denx.de>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
Tested-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: s3c-otg: Split out PHY control
Marek Vasut [Tue, 4 Nov 2014 03:13:57 +0000 (04:13 +0100)]
usb: s3c-otg: Split out PHY control

Split the Samsung specific PHY control into a separate file
and compile this into the S3C OTG driver only if used on a
Samsung system.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Chin Liang See <clsee@altera.com>
Cc: Dinh Nguyen <dinguyen@opensource.altera.com>
Cc: Vince Bridgers <vbridger@altera.com>
Acked-by: Pavel Machek <pavel@denx.de>
Cc: Stefan Roese <sr@denx.de>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
Tested-by: Lukasz Majewski <l.majewski@samsung.com>
Conflicts:
drivers/usb/gadget/Makefile
include/configs/exynos4-common.h
include/configs/smdkv310.h

9 years agousb: s3c-otg: Encapsulate PHY control
Marek Vasut [Tue, 4 Nov 2014 03:08:18 +0000 (04:08 +0100)]
usb: s3c-otg: Encapsulate PHY control

Encapsulate the Samsung PHY control and its register accesses
into the otg_phy_init() and otg_phy_off() functions.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Chin Liang See <clsee@altera.com>
Cc: Dinh Nguyen <dinguyen@opensource.altera.com>
Cc: Vince Bridgers <vbridger@altera.com>
Cc: Stefan Roese <sr@denx.de>
Acked-by: Pavel Machek <pavel@denx.de>
Acked-by: Lukasz Majewski <l.majewski@samsung.com>
Tested-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb: s3c-otg: Remove useless include
Marek Vasut [Tue, 4 Nov 2014 02:43:47 +0000 (03:43 +0100)]
usb: s3c-otg: Remove useless include

Remove the useless inclusion of arch/arm/gpio.h , which is completely
bogus in this driver.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Chin Liang See <clsee@altera.com>
Cc: Dinh Nguyen <dinguyen@opensource.altera.com>
Cc: Vince Bridgers <vbridger@altera.com>
Cc: Stefan Roese <sr@denx.de>
Acked-by: Pavel Machek <pavel@denx.de>
Acked-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agoUSB: gadget: s3c: get rid of debug compile warning
Bo Shen [Wed, 27 Aug 2014 09:28:18 +0000 (17:28 +0800)]
USB: gadget: s3c: get rid of debug compile warning

When enable debug option to compile, it will give the following
warning, this patch is used to get rid of it.
--->8---
warning: 'flags' is used uninitialized in this function [-Wuninitialized]
---8<---

Signed-off-by: Bo Shen <voice.shen@atmel.com>
9 years agoudc: dfu: s3c_udc: Provide function to check if USB reset was asserted
Lukasz Majewski [Mon, 25 Aug 2014 09:07:29 +0000 (11:07 +0200)]
udc: dfu: s3c_udc: Provide function to check if USB reset was asserted

New dfu_usb_get_reset() method is necessary to distinct two different
use cases of dfu-util program.
This method checks if the USB bus reset has been really performed after
DFU DETACH.

Without this function the previous DFU behavior is preserved.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agousb:udc:samsung: Zero copy approach for data passed to Samsung's UDC driver
Lukasz Majewski [Wed, 5 Feb 2014 09:10:44 +0000 (10:10 +0100)]
usb:udc:samsung: Zero copy approach for data passed to Samsung's UDC driver

The Samsung's UDC driver is not anymore copying data from USB requests to
aligned internal buffers. Now it works directly in data allocated in the
upper layers like UMS, DFU, THOR.

This change is possible since those gadgets now must take care to allocate
buffers aligned to cache line (CONFIG_SYS_CACHELINE_SIZE).

This can be achieved by using DEFINE_CACHE_ALIGN_BUFFER() or
ALLOC_CACHE_ALIGN_BUFFER() macros. Those take care to allocate buffer
aligned to cache line in both starting address and its size.
Sometimes it is enough to just use memalign() with size being a
multiplication of cache line size.

Test condition
- test HW + measurement: Trats - Exynos4210 rev.1
- test HW Trats2 - Exynos4412 rev.1
400 MiB compressed rootfs image download with `thor 0 mmc 0`

Measurement:
Transmission speed: 27.04 MiB/s

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Cc: Marek Vasut <marex@denx.de>
9 years agodriver:usb:s3c_udc: add support for Exynos4x12
Piotr Wilczek [Thu, 21 Nov 2013 14:46:44 +0000 (15:46 +0100)]
driver:usb:s3c_udc: add support for Exynos4x12

This patch add new defines for usb phy for Exynos4x12.

Signed-off-by: Piotr Wilczek <p.wilczek@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
9 years agodfu: Provide means to find difference between dfu-util -e and -R
Lukasz Majewski [Mon, 25 Aug 2014 09:07:28 +0000 (11:07 +0200)]
dfu: Provide means to find difference between dfu-util -e and -R

This commit provides distinction between DFU device detach and reset.
The -R behavior is preserved with proper handling of the dfu-util's -e
switch, which detach the DFU device.

By running dfu-util -e; one can force device to finish the execution of
dfu command on target and execute some other scripted commands.

Moreover, some naming has been changed - the dfu_reset() method now is known
as dfu_detach(). New name better reflects the purpose of the code.

It was also necessary to increase the number of usb_gadget_handle_interrupts()
calls since we also must wait for detection of the USB reset event.

Example usage:
1. -e (detach) switch
 dfu-util -a0 -D file1.bin;dfu-util -a3 -D uImage;dfu-util -e

 access to u-boot prompt.

2. -R (reset) switch
 dfu-util -a0 -D file1.bin;dfu-util -R -a3 -D uImage

 target board reset

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Reviewed-by: Stephen Warren <swarren@nvidia.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
9 years agodfu: fix readback buffer overflow test
Stephen Warren [Tue, 1 Jul 2014 18:16:57 +0000 (12:16 -0600)]
dfu: fix readback buffer overflow test

The buffer is too small if it's < size to read, not if it's <= the size.
This fixes the 1MB test case on Tegra, which has a 1MB buffer.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
9 years agodfu: add SF backend
Stephen Warren [Wed, 11 Jun 2014 22:03:36 +0000 (16:03 -0600)]
dfu: add SF backend

This allows SPI Flash to be programmed using DFU.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Conflicts:
drivers/dfu/Makefile

9 years agodfu: add free_entity() to struct dfu_entity
Stephen Warren [Wed, 11 Jun 2014 22:03:35 +0000 (16:03 -0600)]
dfu: add free_entity() to struct dfu_entity

This allows the backend to free any resources allocated during the
relevant dfu_fill_entity_*() call. This will soon be used by the
SF backend.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
9 years agodfu: allow backend to specify a maximum buffer size
Stephen Warren [Wed, 11 Jun 2014 22:03:34 +0000 (16:03 -0600)]
dfu: allow backend to specify a maximum buffer size

CONFIG_SYS_DFU_DATA_BUF_SIZE may be large to allow for FAT/ext layouts
to transfer large files. However, this means that individual write
operations will take a long time. Allow backends to specify a maximum
buffer size, so that each write operation is limited to a smaller data
block. This prevents the DFU protocol from timing out when e.g. writing
to SPI flash. I would guess that NAND might benefit from setting this
value too, but I can't test that.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
9 years agodfu: defer parsing of device string to IO backend
Stephen Warren [Wed, 11 Jun 2014 22:03:33 +0000 (16:03 -0600)]
dfu: defer parsing of device string to IO backend

Devices are not all identified by a single integer. To support
this, defer the parsing of the device string to the IO backed, so that
it can apply the appropriate rules.

SPI devices are specified as controller:chip_select. SPI/SF support will
be added soon.

MMC devices can also be specified as controller[.hwpart][:partition] in
many commands, although we don't support that syntax in DFU.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Conflicts:
drivers/dfu/dfu.c
drivers/dfu/dfu_nand.c

9 years agodfu: add write error handling
Stephen Warren [Wed, 11 Jun 2014 18:48:08 +0000 (12:48 -0600)]
dfu: add write error handling

Fix calls to dfu_write() and dfu_flush() to detect errors in the I/O
itself. This could happen due to problems with the storage medium, or
simply when trying to write a FAT/ext file that is larger than the buffer
dfu_mmc.c maintains for this purpose.

Signal the error by switching the DFU state/status. This will be picked
up by the DFU client when it sends the next DFU request. Note that errors
can't simply be returned from e.g. dnload_request_complete(), since that
function has no way to pass errors back to the DFU client; a call to
dnload_request_complete() simply means that a USB OUT completed.

This error state/status needs to be cleared when the next DFU client
connects. While there is a DFU_CLRSTATUS request, no DFU client seems to
send this. Hence, clear this when selecting the USB alternate setting on
the USB interface.

Finally, dfu.c relies on a call to dfu_flush() to clear up the internal
state of the write transaction. Now that errors in dfu_write() are
detected, dfu_flush() may no longer be called for every transaction.
Separate out the cleanup code into a new function, and call it whenever
dfu_write() fails, as well as from any call to dfu_flush().

Signed-off-by: Stephen Warren <swarren@nvidia.com>
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>