Message ID | 1287087330-11172-1-git-send-email-timur@freescale.com (mailing list archive) |
---|---|
State | Accepted, archived |
Commit | b49d81ded47e9d01f7128fce50d224ccc2150960 |
Delegated to: | Kumar Gala |
Headers | show |
On Oct 14, 2010, at 3:15 PM, Timur Tabi wrote: > Fix the warnings genereted by arch/powerpc/include/asm/immap_qe.h when > CONFIG_PHYS_ADDR_T_64BIT is defined: > > immap_qe.h: In function 'immrbar_virt_to_phys': > immap_qe.h:472:8: warning: cast from pointer to integer of different size > immap_qe.h:472:24: warning: cast from pointer to integer of different size > immap_qe.h:473:5: warning: cast from pointer to integer of different size > immap_qe.h:473:21: warning: cast from pointer to integer of different size > immap_qe.h:474:36: warning: cast from pointer to integer of different size > > Note that the QE does not support 36-bit physical addresses, so even when > CONFIG_PHYS_ADDR_T_64BIT is defined, the QE MURAM must be located below the > 4GB boundary. > > Signed-off-by: Timur Tabi <timur@freescale.com> > --- > arch/powerpc/include/asm/immap_qe.h | 21 +++++++++++++++------ > 1 files changed, 15 insertions(+), 6 deletions(-) applied to next - k
diff --git a/arch/powerpc/include/asm/immap_qe.h b/arch/powerpc/include/asm/immap_qe.h index 4e10f50..0edb684 100644 --- a/arch/powerpc/include/asm/immap_qe.h +++ b/arch/powerpc/include/asm/immap_qe.h @@ -467,13 +467,22 @@ struct qe_immap { extern struct qe_immap __iomem *qe_immr; extern phys_addr_t get_qe_base(void); -static inline unsigned long immrbar_virt_to_phys(void *address) +/* + * Returns the offset within the QE address space of the given pointer. + * + * Note that the QE does not support 36-bit physical addresses, so if + * get_qe_base() returns a number above 4GB, the caller will probably fail. + */ +static inline phys_addr_t immrbar_virt_to_phys(void *address) { - if ( ((u32)address >= (u32)qe_immr) && - ((u32)address < ((u32)qe_immr + QE_IMMAP_SIZE)) ) - return (unsigned long)(address - (u32)qe_immr + - (u32)get_qe_base()); - return (unsigned long)virt_to_phys(address); + void *q = (void *)qe_immr; + + /* Is it a MURAM address? */ + if ((address >= q) && (address < (q + QE_IMMAP_SIZE))) + return get_qe_base() + (address - q); + + /* It's an address returned by kmalloc */ + return virt_to_phys(address); } #endif /* __KERNEL__ */
Fix the warnings genereted by arch/powerpc/include/asm/immap_qe.h when CONFIG_PHYS_ADDR_T_64BIT is defined: immap_qe.h: In function 'immrbar_virt_to_phys': immap_qe.h:472:8: warning: cast from pointer to integer of different size immap_qe.h:472:24: warning: cast from pointer to integer of different size immap_qe.h:473:5: warning: cast from pointer to integer of different size immap_qe.h:473:21: warning: cast from pointer to integer of different size immap_qe.h:474:36: warning: cast from pointer to integer of different size Note that the QE does not support 36-bit physical addresses, so even when CONFIG_PHYS_ADDR_T_64BIT is defined, the QE MURAM must be located below the 4GB boundary. Signed-off-by: Timur Tabi <timur@freescale.com> --- arch/powerpc/include/asm/immap_qe.h | 21 +++++++++++++++------ 1 files changed, 15 insertions(+), 6 deletions(-)