On Thu, Mar 07, 2013 at 04:40:20PM +0200, Aaro Koskinen wrote: > omap-otg platform device will be needed also by other transceivers. > It's not possible to have multiple instances of the driver, so it needs > to be moved into a separate file so that other drivers can hook into it. > > Start this change with a very simplest implementation, much of the > OMAP OTG code in isp1301 is tightly coupled with isp1301 and cannot be > trivially moved out, but still this provides a way for other drivers to > register to OTG interrupt. > > Signed-off-by: Aaro Koskinen <aaro.koskinen@xxxxxx> > --- > drivers/usb/otg/Kconfig | 5 ++ > drivers/usb/otg/Makefile | 1 + > drivers/usb/otg/isp1301_omap.c | 78 ++----------------------------- > drivers/usb/otg/omap-otg.c | 99 ++++++++++++++++++++++++++++++++++++++++ I'm getting rid of drivers/usb/otg/ directory, you'd have to rebase on my -next branch as soon as I make that immutable. > include/linux/usb/omap-otg.h | 30 ++++++++++++ > 5 files changed, 138 insertions(+), 75 deletions(-) > create mode 100644 drivers/usb/otg/omap-otg.c > create mode 100644 include/linux/usb/omap-otg.h > > diff --git a/drivers/usb/otg/Kconfig b/drivers/usb/otg/Kconfig > index 37962c9..12af870 100644 > --- a/drivers/usb/otg/Kconfig > +++ b/drivers/usb/otg/Kconfig > @@ -27,9 +27,14 @@ config USB_GPIO_VBUS > optionally control of a D+ pullup GPIO as well as a VBUS > current limit regulator. > > +config OMAP_OTG > + tristate > + depends on ARCH_OMAP_OTG > + > config ISP1301_OMAP > tristate "Philips ISP1301 with OMAP OTG" > depends on I2C && ARCH_OMAP_OTG > + select OMAP_OTG if USB_OTG no selects anymore, please :-s > diff --git a/drivers/usb/otg/Makefile b/drivers/usb/otg/Makefile > index a844b8d..4e05c6a 100644 > --- a/drivers/usb/otg/Makefile > +++ b/drivers/usb/otg/Makefile > @@ -10,6 +10,7 @@ obj-$(CONFIG_USB_OTG_UTILS) += otg.o > > # transceiver drivers > obj-$(CONFIG_USB_GPIO_VBUS) += gpio_vbus.o > +obj-$(CONFIG_OMAP_OTG) += omap-otg.o > obj-$(CONFIG_ISP1301_OMAP) += isp1301_omap.o > obj-$(CONFIG_TWL4030_USB) += twl4030-usb.o > obj-$(CONFIG_TWL6030_USB) += twl6030-usb.o > diff --git a/drivers/usb/otg/isp1301_omap.c b/drivers/usb/otg/isp1301_omap.c > index af9cb11..5217b7e 100644 > --- a/drivers/usb/otg/isp1301_omap.c > +++ b/drivers/usb/otg/isp1301_omap.c ideally isp1301_omap.c wouldn't even exist. isp1301 is a generic transceiver which has nothing to do with OMAP at all. I'd much rather see patches fixing up drivers/usb/phy/isp1301.c so that it can be reused by anyone actually using this transceiver. > @@ -28,6 +28,7 @@ > #include <linux/gpio.h> > #include <linux/usb/ch9.h> > #include <linux/usb/gadget.h> > +#include <linux/usb/omap-otg.h> > #include <linux/usb.h> > #include <linux/usb/otg.h> > #include <linux/i2c.h> > @@ -74,22 +75,6 @@ struct isp1301 { > # define WORK_STOP 7 /* don't resubmit */ > }; > > - > -/* bits in OTG_CTRL */ > - > -#define OTG_XCEIV_OUTPUTS \ > - (OTG_ASESSVLD|OTG_BSESSEND|OTG_BSESSVLD|OTG_VBUSVLD|OTG_ID) > -#define OTG_XCEIV_INPUTS \ > - (OTG_PULLDOWN|OTG_PULLUP|OTG_DRV_VBUS|OTG_PD_VBUS|OTG_PU_VBUS|OTG_PU_ID) > -#define OTG_CTRL_BITS \ > - (OTG_A_BUSREQ|OTG_A_SETB_HNPEN|OTG_B_BUSREQ|OTG_B_HNPEN|OTG_BUSDROP) > - /* and OTG_PULLUP is sometimes written */ > - > -#define OTG_CTRL_MASK (OTG_DRIVER_SEL| \ > - OTG_XCEIV_OUTPUTS|OTG_XCEIV_INPUTS| \ > - OTG_CTRL_BITS) > - > - > /*-------------------------------------------------------------------------*/ > > /* board-specific PM hooks */ > @@ -822,15 +807,10 @@ static irqreturn_t omap_otg_irq(int irq, void *_isp) > return ret; > } > > -static struct platform_device *otg_dev; > - > static int isp1301_otg_init(struct isp1301 *isp) > { > u32 l; > > - if (!otg_dev) > - return -ENODEV; > - > dump_regs(isp, __func__); > /* some of these values are board-specific... */ > l = omap_readl(OTG_SYSCON_2); > @@ -864,58 +844,6 @@ static int isp1301_otg_init(struct isp1301 *isp) > return 0; > } > > -static int otg_probe(struct platform_device *dev) > -{ > - // struct omap_usb_config *config = dev->platform_data; > - > - otg_dev = dev; > - return 0; > -} why is this otg_dev even needed ? Can you refresh my memory ? -- balbi
Attachment:
signature.asc
Description: Digital signature