Hi, On Tue, Dec 13, 2011 at 08:13:44PM +0800, Neil Zhang wrote: > This patch do the following things: > 1. Change the Kconfig information. > 2. Rename the driver name. > 3. Don't do any type cast to io memory. > 4. Add dummy stub for clk framework. thanks :-) Will apply tomorrow. > Signed-off-by: Neil Zhang <zhangwm@xxxxxxxxxxx> > --- > drivers/usb/gadget/Kconfig | 10 +++++----- > drivers/usb/gadget/Makefile | 2 +- > drivers/usb/gadget/mv_udc.h | 2 +- > drivers/usb/gadget/mv_udc_core.c | 14 +++++++------- > include/linux/platform_data/mv_usb.h | 12 ++++++++++-- > 5 files changed, 24 insertions(+), 16 deletions(-) > > diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig > index 23a4473..a591376 100644 > --- a/drivers/usb/gadget/Kconfig > +++ b/drivers/usb/gadget/Kconfig > @@ -310,13 +310,13 @@ config USB_S3C_HSUDC > > This driver has been tested on S3C2416 and S3C2450 processors. > > -config USB_PXA_U2O > - tristate "PXA9xx Processor USB2.0 controller" > - depends on ARCH_MMP > +config USB_MV_UDC > + tristate "Marvell USB2.0 Device Controller" > select USB_GADGET_DUALSPEED > help > - PXA9xx Processor series include a high speed USB2.0 device > - controller, which support high speed and full speed USB peripheral. > + Marvell Socs (including PXA and MMP series) include a high speed > + USB2.0 OTG controller, which can be configured as high speed or > + full speed USB peripheral. > > config USB_GADGET_DWC3 > tristate "DesignWare USB3.0 (DRD) Controller" > diff --git a/drivers/usb/gadget/Makefile b/drivers/usb/gadget/Makefile > index b54ac61..b7f6eef 100644 > --- a/drivers/usb/gadget/Makefile > +++ b/drivers/usb/gadget/Makefile > @@ -27,7 +27,7 @@ obj-$(CONFIG_USB_S3C_HSOTG) += s3c-hsotg.o > obj-$(CONFIG_USB_S3C_HSUDC) += s3c-hsudc.o > obj-$(CONFIG_USB_LANGWELL) += langwell_udc.o > obj-$(CONFIG_USB_EG20T) += pch_udc.o > -obj-$(CONFIG_USB_PXA_U2O) += mv_udc.o > +obj-$(CONFIG_USB_MV_UDC) += mv_udc.o > mv_udc-y := mv_udc_core.o > obj-$(CONFIG_USB_CI13XXX_MSM) += ci13xxx_msm.o > obj-$(CONFIG_USB_FUSB300) += fusb300_udc.o > diff --git a/drivers/usb/gadget/mv_udc.h b/drivers/usb/gadget/mv_udc.h > index daa75c1..de67f3d 100644 > --- a/drivers/usb/gadget/mv_udc.h > +++ b/drivers/usb/gadget/mv_udc.h > @@ -180,7 +180,7 @@ struct mv_udc { > > struct mv_cap_regs __iomem *cap_regs; > struct mv_op_regs __iomem *op_regs; > - unsigned int phy_regs; > + void __iomem *phy_regs; > unsigned int max_eps; > struct mv_dqh *ep_dqh; > size_t ep_dqh_size; > diff --git a/drivers/usb/gadget/mv_udc_core.c b/drivers/usb/gadget/mv_udc_core.c > index 8924121..cd422ba 100644 > --- a/drivers/usb/gadget/mv_udc_core.c > +++ b/drivers/usb/gadget/mv_udc_core.c > @@ -2132,8 +2132,8 @@ static int __devexit mv_udc_remove(struct platform_device *dev) > udc->cap_regs = NULL; > > if (udc->phy_regs) > - iounmap((void *)udc->phy_regs); > - udc->phy_regs = 0; > + iounmap(udc->phy_regs); > + udc->phy_regs = NULL; do you need to set this to NULL ? Aren't you going to free udc anyway ? > @@ -2213,8 +2213,8 @@ static int __devinit mv_udc_probe(struct platform_device *dev) > goto err_iounmap_capreg; > } > > - udc->phy_regs = (unsigned int)ioremap(r->start, resource_size(r)); > - if (udc->phy_regs == 0) { > + udc->phy_regs = ioremap(r->start, resource_size(r)); > + if (udc->phy_regs == NULL) { > dev_err(&dev->dev, "failed to map phy I/O memory\n"); > retval = -EBUSY; > goto err_iounmap_capreg; > @@ -2391,7 +2391,7 @@ err_disable_clock: > udc->pdata->phy_deinit(udc->phy_regs); > udc_clock_disable(udc); > err_iounmap_phyreg: > - iounmap((void *)udc->phy_regs); > + iounmap(udc->phy_regs); > err_iounmap_capreg: > iounmap(udc->cap_regs); > err_put_clk: > @@ -2457,13 +2457,13 @@ static struct platform_driver udc_driver = { > .shutdown = mv_udc_shutdown, > .driver = { > .owner = THIS_MODULE, > - .name = "pxa-u2o", > + .name = "mv-udc", > #ifdef CONFIG_PM > .pm = &mv_udc_pm_ops, > #endif > }, > }; > -MODULE_ALIAS("platform:pxa-u2o"); > +MODULE_ALIAS("platform:mv-udc"); > > MODULE_DESCRIPTION(DRIVER_DESC); > MODULE_AUTHOR("Chao Xie <chao.xie@xxxxxxxxxxx>"); > diff --git a/include/linux/platform_data/mv_usb.h b/include/linux/platform_data/mv_usb.h > index e9d9149..f3fbb5d 100644 > --- a/include/linux/platform_data/mv_usb.h > +++ b/include/linux/platform_data/mv_usb.h > @@ -42,9 +42,17 @@ struct mv_usb_platform_data { > /* only valid for HCD. OTG or Host only*/ > unsigned int mode; > > - int (*phy_init)(unsigned int regbase); > - void (*phy_deinit)(unsigned int regbase); > + int (*phy_init)(void __iomem *regbase); > + void (*phy_deinit)(void __iomem *regbase); not related to $SUBJECT, but it really seems like these should be part of a PHY driver under drivers/usb/otg. > int (*set_vbus)(unsigned int vbus); > }; > > +#ifndef CONFIG_HAVE_CLK > +/* Dummy stub for clk framework */ > +#define clk_get(dev, id) NULL > +#define clk_put(clock) do {} while (0) > +#define clk_enable(clock) do {} while (0) > +#define clk_disable(clock) do {} while (0) > +#endif hopefully the generic clock work will help you drop this in the near future. What about moving your platform to pm_runtime, though ? -- balbi
Attachment:
signature.asc
Description: Digital signature