Skip to content

Commit

Permalink
USB: gadget: Introduce ci13xxx_udc_driver struct
Browse files Browse the repository at this point in the history
Introduces ci13xxx_udc_driver struct for bus glue drivers to hint
ci13xxx_udc core about their special requirements.  The flags include
avoiding hardware register access when controller is not in peripheral
mode, enabling pull-up upon VBUS, disabling streaming mode and dependency
on transceiver driver.

Initialize gadget_ops in udc_probe so that transceiver can notify VBUS
presence even when no gadget driver is bounded.

A notify_event callback is embedded in the same struct. This patch implements
two events called CONTROLLER_RESET_EVENT and CONTROLLER_STOPPED_EVENT to
notify the bus glue driver after resetting and stopping the controller for
performing SoC specific quirks.

Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Pavankumar Kondeti authored and Greg Kroah-Hartman committed Dec 10, 2010
1 parent 61948ee commit f01ef57
Show file tree
Hide file tree
Showing 3 changed files with 175 additions and 55 deletions.
6 changes: 5 additions & 1 deletion drivers/usb/gadget/ci13xxx_pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ static irqreturn_t ci13xxx_pci_irq(int irq, void *pdev)
return udc_irq();
}

static struct ci13xxx_udc_driver ci13xxx_pci_udc_driver = {
.name = UDC_DRIVER_NAME,
};

/**
* ci13xxx_pci_probe: PCI probe
* @pdev: USB device controller being probed
Expand Down Expand Up @@ -82,7 +86,7 @@ static int __devinit ci13xxx_pci_probe(struct pci_dev *pdev,
pci_set_master(pdev);
pci_try_set_mwi(pdev);

retval = udc_probe(&pdev->dev, regs, UDC_DRIVER_NAME);
retval = udc_probe(&ci13xxx_pci_udc_driver, &pdev->dev, regs);
if (retval)
goto iounmap;

Expand Down
Loading

0 comments on commit f01ef57

Please sign in to comment.