From 028ada50d897f6bf2c0aeb01780da1666602052c Mon Sep 17 00:00:00 2001 From: Tony LIU Date: Wed, 2 May 2012 14:58:42 +0800 Subject: [PATCH] ENGR00209480-3 mx6sl_usb: fix too many wakeup interrupt issue modify usb wakeup interrupt number for mx6sl Signed-off-by: Tony LIU --- arch/arm/mach-mx6/devices-imx6q.h | 4 ++++ arch/arm/mach-mx6/usb_h1.c | 5 ++++- arch/arm/plat-mxc/devices/platform-fsl-usb2-wakeup.c | 10 +++++++++- arch/arm/plat-mxc/include/mach/mx6.h | 4 ++-- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/arch/arm/mach-mx6/devices-imx6q.h b/arch/arm/mach-mx6/devices-imx6q.h index cf7f3c85524b..1b069b66b51e 100644 --- a/arch/arm/mach-mx6/devices-imx6q.h +++ b/arch/arm/mach-mx6/devices-imx6q.h @@ -86,6 +86,10 @@ extern const struct imx_fsl_usb2_wakeup_data imx6q_fsl_hs_wakeup_data[] __initco #define imx6q_add_fsl_usb2_hs_wakeup(id, pdata) \ imx_add_fsl_usb2_wakeup(&imx6q_fsl_hs_wakeup_data[id - 1], pdata) +extern const struct imx_fsl_usb2_wakeup_data imx6sl_fsl_hs_wakeup_data[] __initconst; +#define imx6sl_add_fsl_usb2_hs_wakeup(id, pdata) \ + imx_add_fsl_usb2_wakeup(&imx6sl_fsl_hs_wakeup_data[id - 1], pdata) + extern const struct imx_imx_esai_data imx6q_imx_esai_data[] __initconst; #define imx6q_add_imx_esai(id, pdata) \ imx_add_imx_esai(&imx6q_imx_esai_data[id], pdata) diff --git a/arch/arm/mach-mx6/usb_h1.c b/arch/arm/mach-mx6/usb_h1.c index e36ec6f837f4..215509867843 100644 --- a/arch/arm/mach-mx6/usb_h1.c +++ b/arch/arm/mach-mx6/usb_h1.c @@ -355,7 +355,10 @@ void __init mx6_usb_h1_init(void) else pdev = imx6q_add_fsl_ehci_hs(1, &usbh1_config); usbh1_wakeup_config.usb_pdata[0] = pdev->dev.platform_data; - pdev_wakeup = imx6q_add_fsl_usb2_hs_wakeup(1, &usbh1_wakeup_config); + if (cpu_is_mx6sl()) + pdev_wakeup = imx6sl_add_fsl_usb2_hs_wakeup(1, &usbh1_wakeup_config); + else + pdev_wakeup = imx6q_add_fsl_usb2_hs_wakeup(1, &usbh1_wakeup_config); ((struct fsl_usb2_platform_data *)(pdev->dev.platform_data))->wakeup_pdata = (struct fsl_usb2_wakeup_platform_data *)(pdev_wakeup->dev.platform_data); /* Some phy and power's special controls for host1 diff --git a/arch/arm/plat-mxc/devices/platform-fsl-usb2-wakeup.c b/arch/arm/plat-mxc/devices/platform-fsl-usb2-wakeup.c index 523c5d4599e1..cc6732db0dd6 100644 --- a/arch/arm/plat-mxc/devices/platform-fsl-usb2-wakeup.c +++ b/arch/arm/plat-mxc/devices/platform-fsl-usb2-wakeup.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved. + * Copyright (C) 2011-2012 Freescale Semiconductor, Inc. All Rights Reserved. * * Copyright (C) 2010 Pengutronix * Uwe Kleine-Koenig @@ -27,6 +27,14 @@ const struct imx_fsl_usb2_wakeup_data imx6q_fsl_hs_wakeup_data[] __initconst = { }; #endif /* ifdef CONFIG_SOC_IMX6Q */ +#ifdef CONFIG_SOC_IMX6SL +const struct imx_fsl_usb2_wakeup_data imx6sl_fsl_hs_wakeup_data[] __initconst = { + imx_fsl_usb2_wakeup_data_entry_single(MX6SL, 1, HS1), + imx_fsl_usb2_wakeup_data_entry_single(MX6SL, 2, HS2), + imx_fsl_usb2_wakeup_data_entry_single(MX6SL, 3, HS3), +}; +#endif /* ifdef CONFIG_SOC_IMX6Q */ + struct platform_device *__init imx_add_fsl_usb2_wakeup( const struct imx_fsl_usb2_wakeup_data *data, const struct fsl_usb2_wakeup_platform_data *pdata) diff --git a/arch/arm/plat-mxc/include/mach/mx6.h b/arch/arm/plat-mxc/include/mach/mx6.h index 9cf2a21959ed..ca4daece7fba 100644 --- a/arch/arm/plat-mxc/include/mach/mx6.h +++ b/arch/arm/plat-mxc/include/mach/mx6.h @@ -364,9 +364,9 @@ #define MX6Q_INT_USB_HS1 72 #define MX6SL_INT_USB_HS1 74 #define MX6Q_INT_USB_HS2 73 -#define MX6SL_INT_USB_HS2 73 +#define MX6SL_INT_USB_HS2 72 #define MX6Q_INT_USB_HS3 74 -#define MX6SL_INT_USB_HS3 72 +#define MX6SL_INT_USB_HS3 73 #define MX6Q_INT_USB_OTG 75 #define MX6Q_INT_USB_PHY0 76 #define MX6Q_INT_USB_PHY1 77 -- 2.39.5