Please ignore this mail, It's wrongly sent out. Thanks. <br><br><div class="gmail_quote">On Sat, Dec 31, 2011 at 12:51 AM, Jason Jin <span dir="ltr"><<a href="mailto:Jason.jin@freescale.com">Jason.jin@freescale.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">From: Pan Jiafei <<a href="mailto:Jiafei.Pan@freescale.com">Jiafei.Pan@freescale.com</a>><br>
<br>
extract from vendor drop QorIQ-DPAA-SDK-20111026-systembuilder.iso<br>
<br>
Previously a check was done on an ID register at the base of a CPU's<br>
internal USB registers to determine if system interface regsiters were<br>
present.  The check looked for an ID register that had the format<br>
ID[0:5] == ~ID[8:13] as described in the MPC5121 User's Manual to<br>
determine if a MPC5121 or MPC83xx/85xx was being used.<br>
<br>
There are two issues with this method:<br>
- The ID register is not defined on the MPC83xx/85xx CPUs, so its<br>
  unclear what is being checked on them.<br>
- Newer CPUs such as the P4080 also don't document the ID register, but<br>
  do share the same format as the MPC5121.  Thus the previous code did<br>
  not set 'have_sysif_regs' properly which results in the P4080 not<br>
  properly initializing its USB ports.<br>
<br>
Using the device tree 'compatible' node is a cleaner way to determine if<br>
'have_sysif_regs' should be set and resolves the USB initialization issue<br>
seen on the P4080.<br>
<br>
Tested on a P4080-based system and compile tested on mpc512x_defconfig<br>
with Freescale EHCI driver enabled.<br>
<br>
Cc: Anatolij Gustschin <<a href="mailto:agust@denx.de">agust@denx.de</a>><br>
Cc: David Brownell <<a href="mailto:dbrownell@users.sourceforge.net">dbrownell@users.sourceforge.net</a>><br>
Cc: Kumar Gala <<a href="mailto:galak@kernel.crashing.org">galak@kernel.crashing.org</a>><br>
Cc: <a href="mailto:linuxppc-dev@lists.ozlabs.org">linuxppc-dev@lists.ozlabs.org</a><br>
Signed-off-by: Peter Tyser <<a href="mailto:ptyser@xes-inc.com">ptyser@xes-inc.com</a>><br>
Signed-off-by: Greg Kroah-Hartman <<a href="mailto:gregkh@suse.de">gregkh@suse.de</a>><br>
Integrated-by: Pan Jiafei <<a href="mailto:Jiafei.Pan@freescale.com">Jiafei.Pan@freescale.com</a>><br>
---<br>
 drivers/usb/host/ehci-fsl.c      |   13 -------------<br>
 drivers/usb/host/ehci-fsl.h      |    3 ---<br>
 drivers/usb/host/fsl-mph-dr-of.c |   11 ++++++++---<br>
 3 files changed, 8 insertions(+), 19 deletions(-)<br>
<br>
diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/host/ehci-fsl.c<br>
index ac5f38d..22baaec 100644<br>
--- a/drivers/usb/host/ehci-fsl.c<br>
+++ b/drivers/usb/host/ehci-fsl.c<br>
@@ -52,7 +52,6 @@ static int usb_hcd_fsl_probe(const struct hc_driver *driver,<br>
        struct resource *res;<br>
        int irq;<br>
        int retval;<br>
-       unsigned int temp;<br>
<br>
        pr_debug("initializing FSL-SOC USB Controller\n");<br>
<br>
@@ -126,18 +125,6 @@ static int usb_hcd_fsl_probe(const struct hc_driver *driver,<br>
                goto err3;<br>
        }<br>
<br>
-       /*<br>
-        * Check if it is MPC5121 SoC, otherwise set pdata->have_sysif_regs<br>
-        * flag for 83xx or 8536 system interface registers.<br>
-        */<br>
-       if (pdata->big_endian_mmio)<br>
-               temp = in_be32(hcd->regs + FSL_SOC_USB_ID);<br>
-       else<br>
-               temp = in_le32(hcd->regs + FSL_SOC_USB_ID);<br>
-<br>
-       if ((temp & ID_MSK) != (~((temp & NID_MSK) >> 8) & ID_MSK))<br>
-               pdata->have_sysif_regs = 1;<br>
-<br>
        /* Enable USB controller, 83xx or 8536 */<br>
        if (pdata->have_sysif_regs)<br>
                setbits32(hcd->regs + FSL_SOC_USB_CTRL, 0x4);<br>
diff --git a/drivers/usb/host/ehci-fsl.h b/drivers/usb/host/ehci-fsl.h<br>
index 2c83537..3fabed3 100644<br>
--- a/drivers/usb/host/ehci-fsl.h<br>
+++ b/drivers/usb/host/ehci-fsl.h<br>
@@ -19,9 +19,6 @@<br>
 #define _EHCI_FSL_H<br>
<br>
 /* offsets for the non-ehci registers in the FSL SOC USB controller */<br>
-#define FSL_SOC_USB_ID         0x0<br>
-#define ID_MSK                 0x3f<br>
-#define NID_MSK                        0x3f00<br>
 #define FSL_SOC_USB_ULPIVP     0x170<br>
 #define FSL_SOC_USB_PORTSC1    0x184<br>
 #define PORT_PTS_MSK           (3<<30)<br>
diff --git a/drivers/usb/host/fsl-mph-dr-of.c b/drivers/usb/host/fsl-mph-dr-of.c<br>
index 574b99e..79a66d6 100644<br>
--- a/drivers/usb/host/fsl-mph-dr-of.c<br>
+++ b/drivers/usb/host/fsl-mph-dr-of.c<br>
@@ -262,19 +262,24 @@ static void fsl_usb2_mpc5121_exit(struct platform_device *pdev)<br>
        }<br>
 }<br>
<br>
-struct fsl_usb2_platform_data fsl_usb2_mpc5121_pd = {<br>
+static struct fsl_usb2_platform_data fsl_usb2_mpc5121_pd = {<br>
        .big_endian_desc = 1,<br>
        .big_endian_mmio = 1,<br>
        .es = 1,<br>
+       .have_sysif_regs = 0,<br>
        .le_setup_buf = 1,<br>
        .init = fsl_usb2_mpc5121_init,<br>
        .exit = fsl_usb2_mpc5121_exit,<br>
 };<br>
 #endif /* CONFIG_PPC_MPC512x */<br>
<br>
+static struct fsl_usb2_platform_data fsl_usb2_mpc8xxx_pd = {<br>
+       .have_sysif_regs = 1,<br>
+};<br>
+<br>
 static const struct of_device_id fsl_usb2_mph_dr_of_match[] = {<br>
-       { .compatible = "fsl-usb2-mph", },<br>
-       { .compatible = "fsl-usb2-dr", },<br>
+       { .compatible = "fsl-usb2-mph", .data = &fsl_usb2_mpc8xxx_pd, },<br>
+       { .compatible = "fsl-usb2-dr", .data = &fsl_usb2_mpc8xxx_pd, },<br>
 #ifdef CONFIG_PPC_MPC512x<br>
        { .compatible = "fsl,mpc5121-usb2-dr", .data = &fsl_usb2_mpc5121_pd, },<br>
 #endif<br>
<font color="#888888">--<br>
1.7.5.1<br>
<br>
<br>
_______________________________________________<br>
Linuxppc-dev mailing list<br>
<a href="mailto:Linuxppc-dev@lists.ozlabs.org">Linuxppc-dev@lists.ozlabs.org</a><br>
<a href="https://lists.ozlabs.org/listinfo/linuxppc-dev" target="_blank">https://lists.ozlabs.org/listinfo/linuxppc-dev</a><br>
</font></blockquote></div><br><br clear="all"><div><br></div>-- <br>Best Regards,<br>Zhengxiong Jin<br>