[U-Boot] [PATCH 3/5] usb: ehci: Implement V2P mapping

Marek Vasut marex at denx.de
Fri Feb 26 17:55:12 CET 2016


On 02/26/2016 05:48 PM, Stephen Warren wrote:
> On 01/26/2016 07:14 PM, Marek Vasut wrote:
>> Certain processor architectures, like MIPS, require that the USB
>> structures and transfer buffers are passed with their PA to the
>> USB controller. If VA is passed, the USB will not work. Add the
>> necessary virt_to_phys() calls into the USB EHCI code to make it
>> work.
> 
> FYI, this causes some cast size warnings, e.g.:
> 
>> +make
>> O=/home/swarren/shared/git_wa/tegra-uboot-flasher/u-boot/build-p2371-2180
>> -s p2371-2180_defconfig
>> +make
>> O=/home/swarren/shared/git_wa/tegra-uboot-flasher/u-boot/build-p2371-2180
>> -s -j8
>> In file included from ../arch/arm/include/asm/byteorder.h:29:0,
>>                  from ../include/compiler.h:125,
>>                  from ../include/image.h:19,
>>                  from ../include/common.h:88,
>>                  from ../drivers/usb/host/ehci-hcd.c:10:
>> ../drivers/usb/host/ehci-hcd.c: In function ‘ehci_td_buffer’:
>> ../drivers/usb/host/ehci-hcd.c:248:49: warning: cast to pointer from
>> integer of different size [-Wint-to-pointer-cast]
>>    td->qt_buffer[idx] = cpu_to_hc32(virt_to_phys((void *)addr));
>>                                                  ^
>> ../include/linux/byteorder/little_endian.h:34:51: note: in definition
>> of macro ‘__cpu_to_le32’
>>  #define __cpu_to_le32(x) ((__force __le32)(__u32)(x))
>>                                                    ^
>> ../drivers/usb/host/ehci-hcd.c:248:24: note: in expansion of macro
>> ‘cpu_to_hc32’
>>    td->qt_buffer[idx] = cpu_to_hc32(virt_to_phys((void *)addr));
>>                         ^
> 
> (This is a 64-bit ARM platform, so I had CROSS_COMPILE=aarch64-linux-gnu-)

Tom reported this to me too, sorry :-(

Do you have an idea how to fix this too? I am now installing arm64
toolchain.

Do you know about some nice arm64 board with USB for testing?


More information about the U-Boot mailing list