03 Jul, 2014
1 commit
-
Signed-off-by: Tom Rini
02 Jul, 2014
8 commits
-
Almost all of ci_udc.c uses variable name "ep" for a struct usb_ep and
"ci_ep" for a struct ci_ep. This is nice and consistent, and helps people
know what type a variable is without searching for the declaration.
handle_ep_complete() doesn't do this, so fix it to be consistent.Signed-off-by: Stephen Warren
-
A UDC's alloc_request method should zero out the newly allocated request.
Ensure the Atmel driver does so. This issue was found by code inspection,
following the investigation of an intermittent issue with ci_udc, which
was tracked down to failing to zero out allocated requests following some
of my changes. All other UDC drivers already zero out requests in one
way or another.Signed-off-by: Stephen Warren
-
struct ci_req is a purely software structure, and needs no specific
memory alignment. Hence, allocate it with calloc() rather than
memalign(). The use of memalign() was left-over from when struct ci_req
was going to hold the aligned bounce buffer, but this is now dynamically
allocated.Signed-off-by: Stephen Warren
-
There's no need to store an array of QTD pointers in the controller.
Since the calculation is so simple, just have ci_get_qtd() perform it
at run-time, rather than pre-calculating everything.Signed-off-by: Stephen Warren
-
2 QTDs are allocated for each EP. The current allocation scheme aligns
the first QTD in each pair, but simply adds the struct size to calculate
the second QTD's address. This will result in a non-cache-aligned
addresss IF the system's ARCH_DMA_MINALIGN is not 32 bytes (i.e. the
size of struct ept_queue_item).Similarly, the original ilist_ent_sz calculation aligned the value to
ARCH_DMA_MINALIGN but didn't take the USB HW's 32-byte alignment
requirement into account. This doesn't cause a practical issue unless
ARCH_DMA_MINALIGN < 32 (which I suspect is quite unlikely), but we may
as well fix the code to be explicit, so it's obviously completely
correct.The new value of ILIST_ENT_SZ takes all alignment requirements into
account, so we can simplify ci_{flush,invalidate}_qtd() by simply using
that macro rather than calling roundup().Similarly, the calculation of controller.items[i] can be simplified,
since each QTD is evenly spaced at its individual alignment requirement,
rather than each pair being aligned, and entries within the pair being
spaced apart only by structure size.Signed-off-by: Stephen Warren
-
This will allow functions other than ci_udc_probe() to make use of the
constants in a future change.This in turn requires converting the const int variables to #defines,
since the initialization of one global const int can't depend on the
value of another const int; the compiler thinks it's non-constant if
that dependency exists.Signed-off-by: Stephen Warren
-
Fix ci_ep_submit_next_request()'s ZLP transmission code to explicitly
call ci_get_qtd() to find the address of the other QTD to use. This
will allow us to correctly align each QTD individually in the future,
which may involve leaving a gap between the QTDs.Signed-off-by: Stephen Warren
-
ci_udc_probe() initializes a pair of QHs and QTDs for each EP. After
each pair has been initialized, the pair is cache-flushed. The
conversion from QH/QTD index [0..2*NUM_END_POINTS) to EP index
[0..NUM_ENDPOINTS] is incorrect; it simply subtracts 1 (which yields
the QH/QTD index of the first entry in the pair) rather than dividing
by two (which scales the range). Fix this.On my system, this avoids cache debug prints due to requests to flush
unaligned ranges. This is caused because the flush calls happen before
the items[] array entries are initialized for all but EP0.Signed-off-by: Stephen Warren
26 Jun, 2014
11 commits
-
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
Acked-by: Lukasz Majewski
Tested-by: Lukasz Majewski -
Add LAN9500A product ID (0x9e00) in order to support LAN9500A based dongles.
Tested on cm_t335.Signed-off-by: Ilya Ledvich
Acked-by: Marek Vasut -
cb_getvar tries to prevent overflowing the response buffer
by using strncat. But strncat takes the number of data bytes
copied as a limit not the total buffer length so it can still
overflow. Pass the correct value instead.cc: Sebastian Andrzej Siewior
cc: Rob Herring
Signed-off-by: Jeroen Hofstee -
Because of the brackets the & and && is evaluated before
the comparison. This is likely not the intention. Change
it to test the first and second condition to both be true.cc: Marek Vasut
Signed-off-by: Jeroen Hofstee -
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
Cc: Marek Vasut
Signed-off-by: Jeroen Hofstee
Acked-by: Lukasz Majewski -
Since the struct fsg_common is calloced, reset it completely
with zero's when reused. While at it, make checkpatch happy.cc: Lukasz Majewski
cc: Piotr Wilczek
cc: Kyungmin Park
cc: Marek Vasut
Signed-off-by: Jeroen Hofstee
Acked-by: Marek Vasut
Acked-by: Lukasz Majewski -
Initialization of r8a66597 info structure is not enough.
Because initilization was used size of pointer.
This fixes that use size of r8a6659 info structure.Signed-off-by: Yasuhisa Umano
-
This driver is processed as two USB hub despite one.
The number of root hub is defined in R8A66597_MAX_ROOT_HUB.
This fixes that register is accessed by using the definition
of R8A66597_MAX_ROOT_HUB.Signed-off-by: Yasuhisa Umano
-
For plain array const can be either before or after
the type definition. Adding both is simply redundand.
Remove the later one.cc: marex@denx.de
Signed-off-by: Jeroen Hofstee -
s/ot/to/
Signed-off-by: Stephen Warren
-
ci_udc.c's usb_gadget_unregister_driver() doesn't call driver->unbind()
unlike other USB gadget drivers. Fix it to do this.Without this, when ether.c's CDC Ethernet device is torn down,
eth_unbind() is never called, so dev->gadget is never set to NULL.
For some reason, usb_eth_halt() is called both at the end of the first
use of the Ethernet device, and prior to any subsequent use. Since
dev->gadget is never cleared, all calls to usb_eth_halt() attempt to
stop, disconnect, and clean up the device, resulting in double cleanup,
which hangs U-Boot on my Tegra device at least.ci_udc allocates its own singleton EP0 request object, and cleans it up
during usb_gadget_unregister_driver(). This appears necessary when using
the USB gadget framework in U-Boot, since that does not allocate/free
the EP0 request. However, the CDC Ethernet driver *does* allocate and
free its own EP0 requests. Consequently, we must protect
ci_ep_free_request() against double-freeing the request.Signed-off-by: Stephen Warren
25 Jun, 2014
2 commits
24 Jun, 2014
4 commits
-
local_irq_save() should be a macro, not a function
because local_irq_save() saves flag to the given argument.GCC is silent about this issue, but Clang warns:
In file included from lib/asm-offsets.c:15:
In file included from include/common.h:20:
In file included from include/linux/bitops.h:110:
arch/sandbox/include/asm/bitops.h:59:17:
warning: variable 'flags' is uninitialized when used here
[-Wuninitialized]
local_irq_save(flags);
^~~~~That change causes another warning:
In file included from include/linux/bitops.h:110:0,
from include/common.h:20,
from lib/asm-offsets.c:15:
arch/sandbox/include/asm/bitops.h: In function ‘test_and_set_bit’:
arch/sandbox/include/asm/bitops.h:56:16: warning: unused variable ‘flags’ [-Wunused-variable]So, flags should be set to __always_unused.
Signed-off-by: Masahiro Yamada
Cc: Simon Glass
Cc: Jeroen Hofstee
Acked-by: Simon Glass
Acked-by: Jeroen Hofstee -
Each node in the linked-list that os_dirent_ls() returns has its next
pointer set only when the next node is created. For the last node in the
list, there is no next node, so this never happens, and the next pointer
is never initialized. Explicitly initialize the next pointer so that it
isn't dangling. Without this, "sb ls" might crash.Signed-off-by: Stephen Warren
Acked-by: Simon Glass -
Commit 95fac6ab4589 "sandbox: Use os functions to read host device tree"
removed the ability for get_device_and_partition() to handle the "host"
device type, and redirect accesses to it to the host filesystem. This
broke some unit tests that use this feature. So, revert that change. The
code added back by this patch is slightly different to pacify checkpatch.However, we're then left with "host" being both:
- A pseudo device that accesses the hosts real filesystem.
- An emulated block device, which accesses "sectors" inside a file stored
on the host.In order to resolve this discrepancy, rename the pseudo device from host
to hostfs, and adjust the unit-tests for this change.The "help sb" output is modified to reflect this rename, and state where
the host and hostfs devices should be used.Signed-off-by: Stephen Warren
Tested-by: Josh Wu
Acked-by: Simon Glass
Tested-by: Simon Glass -
Until now building the x86 arch boards required 32-bit toolchain. As
many x86_64 toolchains come with 32-bit support (multilib) that's a
good idea to enable build with such toolchains.The change required was to specify the usage of 32-bit explicitly to
the compiler and the linker (-m32 and -m elf_i386 flags) and locate
the right libgcc path.Signed-off-by: Vasili Galka
Acked-by: Simon Glass
23 Jun, 2014
2 commits
-
- add CONFIG_SYS_GENERIC_BOARD
- remove CONFIG_OF_CONTROL to boot againSigned-off-by: Heiko Schocher
Acked-by: Kim Phillips
Acked-by: Simon Glass -
move fdtdec_get_int() out of lib/fdtdec.c into lib/fdtdec_common.c
as this function is also used, if CONFIG_OF_CONTROL is not
used. Poped up on the ids8313 board using signed FIT images,
and activating CONFIG_SYS_GENERIC_BOARD. Without this patch
it shows on boot:No valid FDT found - please append one to U-Boot binary, use u-boot-dtb.bin or define CONFIG_OF_EMBED. For sandbox, use -d
With this patch, it boots again with CONFIG_SYS_GENERIC_BOARD
enabled.Signed-off-by: Heiko Schocher
Acked-by: Simon Glass
Cc: Tom Rini
22 Jun, 2014
2 commits
-
Make both dm enumeration commands support showing whether a driver is active
or not, and use a consistent indicator (an asterisk).Signed-off-by: Simon Glass
Acked-by: Marek Vasut -
cc: Simon Glass
Signed-off-by: Jeroen Hofstee
Acked-by: Simon Glass
21 Jun, 2014
10 commits
-
The lifecycle of a device is an important part of driver model. Add to the
existing documentation and clarify it.Reported-by: Jon Loeliger
Signed-off-by: Simon Glass
-
There is a spelling mistake and two functions are missing comments
altogether. Also the flags declaration is correct, but doesn't follow
style. Finally, the uclass_get_device() function has some errors in
its documentation.Fix these problems.
Signed-off-by: Simon Glass
Acked-by: Marek Vasut -
Enable driver model for Tegra boards.
Signed-off-by: Simon Glass
Acked-by: Stephen Warren -
These files are taken from Linux 3.14.
Signed-off-by: Simon Glass
Acked-by: Stephen Warren -
The values here are int, but the map_to_sysmem() call can return a long.
Add a cast to deal with this.Signed-off-by: Simon Glass
-
The GPIO tests require the sandbox GPIO driver, so cannot be run on other
platforms. Similarly for the 'dm test' command.Signed-off-by: Simon Glass
-
In a very few cases we need to adjust the driver model root device, such as
when setting it up at initialisation. Add a macro to make this easier.Signed-off-by: Simon Glass
-
These files don't compile in some architectures. Fix it by adding the
missing headers.Signed-off-by: Simon Glass
-
We want 'N0' and 'n0' to mean the same thing, so ensure that case is not
considered when naming GPIO banks.Signed-off-by: Simon Glass