powerpc/usb: fix type cast for address of ioremap to compatible with 64-bit
authorShaohui Xie <Shaohui.Xie@freescale.com>
Mon, 7 Nov 2011 08:58:20 +0000 (16:58 +0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 14 Nov 2011 23:52:11 +0000 (15:52 -0800)
Below are codes for accessing usb sysif_regs in driver:

usb_sys_regs = (struct usb_sys_interface *)
((u32)dr_regs + USB_DR_SYS_OFFSET);

these codes work in 32-bit, but in 64-bit, use u32 to type cast the address
of ioremap is not right, and accessing members of 'usb_sys_regs' will cause
call trace, so use (void *) for both 32-bit and 64-bit.

Signed-off-by: Shaohui Xie <Shaohui.Xie@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/gadget/fsl_udc_core.c

index d786ba31fc07f45ea20e53e368a4d57e0b2d7ed6..b3b3d83b7c3354744ec1fc4d4dc2765f19293a7c 100644 (file)
@@ -2480,8 +2480,7 @@ static int __init fsl_udc_probe(struct platform_device *pdev)
 
 #ifndef CONFIG_ARCH_MXC
        if (pdata->have_sysif_regs)
-               usb_sys_regs = (struct usb_sys_interface *)
-                               ((u32)dr_regs + USB_DR_SYS_OFFSET);
+               usb_sys_regs = (void *)dr_regs + USB_DR_SYS_OFFSET;
 #endif
 
        /* Initialize USB clocks */