Re: [PATCH v5] EHCI bus glue for on-chip PMC MSP USB controller
From: Anoop P A <hidden>
Date: 2011-02-23 12:59:07
Also in:
lkml
On Tue, 2011-02-22 at 23:04 +0300, Dan Carpenter wrote:
On Tue, Feb 22, 2011 at 09:05:33PM +0530, Anoop P.A wrote:quoted
From: Anoop <paanoop1@paanoop1-desktop.(none)> This patch add bus glue for USB controller commonly found in PMC-Sierra MSP71xx family of SoC's. Signed-off-by: Anoop P A <redacted> --- Changes. ehci-pmcmsp.c is based on latest ehci-pci.c.Addressed some stylistic issue pointed by Greg. Addressed comments from Matthieu CASTET.Could you spell that out more completely next time?
OK
quoted
+config USB_EHCI_HCD_PMC_MSP + tristate "EHCI support for on-chip PMC MSP USB controller"Better to say "EHCI support for on-chip PMC-Sierra MSP71xx USB controllers"
Ok will change that
quoted
+ depends on USB_EHCI_HCD && MSP_HAS_USB + default yNew features always default to No.
O.k
quoted
+#include <msp_usb.h>Cannot find the msp_usb.h in linux-next. Doesn't compile.
msp_usb.h has made it's way to linux-mips queue tree along with the platform code
quoted
+static void usb_hcd_tdi_set_mode(struct ehci_hcd *ehci) +{ + u8 *base; + u8 *statreg; + u8 *fiforeg; + u32 val; + struct ehci_regs *reg_base = ehci->regs; + + /* get register base */ + base = (u8 *)reg_base + USB_EHCI_REG_USB_MODE; + statreg = (u8 *)reg_base + USB_EHCI_REG_USB_STATUS; + fiforeg = (u8 *)reg_base + USB_EHCI_REG_USB_FIFO; + + /* Disable controller mode stream */ + val = ehci_readl(ehci, (u32 *)base);It doesn't compile so I can't test this, but I think that this will cause a sparse warning. "base" should have an __iomem tag. Please run sparse on this driver.
Looks like mips platform build has been broken on linux-next ( unable to configure) . However I have tested code with linux-queue tree ( mips) and didn't see any such warnings
quoted
+/* called after powerup, by probe or system-pm "wakeup" */ +static int ehci_msp_reinit(struct ehci_hcd *ehci) +{ + ehci_port_power(ehci, 0); + + return 0;Better to make this function void.
O.K
quoted
+} + +/* called during probe() after chip reset completes */ +static int ehci_msp_setup(struct usb_hcd *hcd) +{ + struct ehci_hcd *ehci = hcd_to_ehci(hcd); + u32 temp; + int retval;Needs a blank line here to separate declarations from code.
O.K
quoted
+ ehci->big_endian_mmio = 1; + ehci->big_endian_desc = 1; + + ehci->caps = hcd->regs; + ehci->regs = hcd->regs + + HC_LENGTH(ehci_readl(ehci, &ehci->caps->hc_capbase));[snip]quoted
+ /* data structure init */ + retval = ehci_init(hcd); + if (retval) + return retval; + + temp = HCS_N_CC(ehci->hcs_params) * HCS_N_PCC(ehci->hcs_params); + temp &= 0x0f;companion HCs * ports per CC & 0xf? What's the &= 0x0f for? It's left out of the printk.
Code got carried forward from ehci-pci.c . Is that says ehci-pci.c is uptodate? .
quoted
+ if (temp && HCS_N_PORTS(ehci->hcs_params) > temp) { + ehci_dbg(ehci, "bogus port configuration: " + "cc=%d x pcc=%d < ports=%d\n", + HCS_N_CC(ehci->hcs_params), + HCS_N_PCC(ehci->hcs_params), + HCS_N_PORTS(ehci->hcs_params)); + }[snip]quoted
+/*-------------------------------------------------------------------------*/No need for these blank comments.
O.K
quoted
+ +static void msp_start_hc(struct platform_device *dev) +{ +} + +static void msp_stop_hc(struct platform_device *dev) +{ +} +I don't understand the point of these empty functions.
Will remove it.
quoted
+static int ehci_msp_suspend(struct device *dev) +{ + struct usb_hcd *hcd = dev_get_drvdata(dev); + struct ehci_hcd *ehci = hcd_to_ehci(hcd); + unsigned long flags; + int rc; + + return 0; + rc = 0; + + if (time_before(jiffies, ehci->next_statechange)) + usleep(10000);Is there still a usleep() function? Either way, can you send us something that compiles on linux-next?
Again code got carried from ehci-pci.c .(changed msleep to usleep as checkpatch complained about it). I am unable to compile mips targets in linux-next tree . However this patch is tested with both linux-stable and linux-queue tree of l-m-o
regards, dan carpenter