
Dear Lijun Pan,
In message 1402690280-8848-1-git-send-email-Lijun.Pan@freescale.com you wrote:
[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, also remove the definition in drivers/usb/host/xhci.h. 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
v3: change the comment message for lower_32_bits() and upper_32_bits() change the commit message to argue the necessity of this patch. v2: add git SHA of linux kernel tree.
I think it would be better to split this commit into two separate patches.
One, which in my opinion should be part of a patch series that adds more users of these functions, would add the new functions. The other would then convert the only existing user (drivers/usb/host/xhci.h) to use these.
But before we convert drivers/usb/host/xhci.h, we should fix the FIXME there - this looks very much like a bug to me:
1119 static inline void xhci_writeq(__le64 volatile *regs, const u64 val) 1120 { 1121 __u32 *ptr = (__u32 *)regs; 1122 u32 val_lo = lower_32_bits(val); 1123 /* FIXME */ 1124 u32 val_hi = 0;
I think this should rather be
u32 val_hi = upper_32_bits(val);
and I cannot think of any good reason why it is not...
Best regards,
Wolfgang Denk