diff options
author | Stephen Warren <swarren@nvidia.com> | 2014-07-01 11:41:16 -0600 |
---|---|---|
committer | Marek Vasut <marex@denx.de> | 2014-07-02 15:45:38 +0200 |
commit | 7e5418877550d8d7a9a2c5d73f93fc95ecd595a9 (patch) | |
tree | 81a85ea5413382af8e9d294191b8241101754762 /drivers/gpio | |
parent | 06b38fcbae9294d337578d583309f99de12a0d23 (diff) | |
download | u-boot-imx-7e5418877550d8d7a9a2c5d73f93fc95ecd595a9.zip u-boot-imx-7e5418877550d8d7a9a2c5d73f93fc95ecd595a9.tar.gz u-boot-imx-7e5418877550d8d7a9a2c5d73f93fc95ecd595a9.tar.bz2 |
usb: ci_udc: fix items array size/stride calculation
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 <swarren@nvidia.com>
Diffstat (limited to 'drivers/gpio')
0 files changed, 0 insertions, 0 deletions