diff mbox

powerpc: fix warning when compiling immap_qe.h

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

Commit Message

Timur Tabi Oct. 14, 2010, 8:15 p.m. UTC
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(-)

Comments

Kumar Gala Jan. 13, 2011, 12:08 a.m. UTC | #1
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 mbox

Patch

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__ */