Message ID | 1308639827-2121-3-git-send-email-p.paneri@samsung.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi, On Tue, Jun 21, 2011 at 12:33:44PM +0530, p.paneri@samsung.com wrote: > From: Praveen Paneri <p.paneri@samsung.com> > > Adding dwc driver name in existing platform device > to probe DWC OTG driver. > Introduced otg_set_platdata function to pass platform data > Added selectable config option to add DWC OTG driver for different > machines. > > Signed-off-by: Praveen Paneri <p.paneri@samsung.com> > --- > arch/arm/plat-samsung/Kconfig | 6 ++++++ > arch/arm/plat-samsung/Makefile | 1 + > arch/arm/plat-samsung/dev-usb-hsotg.c | 20 ++++++++++++++++++++ > 3 files changed, 27 insertions(+), 0 deletions(-) > > diff --git a/arch/arm/plat-samsung/Kconfig b/arch/arm/plat-samsung/Kconfig > index 4d79519..58ed8b1 100644 > --- a/arch/arm/plat-samsung/Kconfig > +++ b/arch/arm/plat-samsung/Kconfig > @@ -227,6 +227,12 @@ config S3C_DEV_USB_HSOTG > help > Compile in platform device definition for USB high-speed OtG > > +config S3C_DEV_DWC_OTG > + bool > + help > + Compile in platform device definition for DWC OTG. This > + will make it selectable for different machines. > + > config S3C_DEV_WDT > bool > default y if ARCH_S3C2410 > diff --git a/arch/arm/plat-samsung/Makefile b/arch/arm/plat-samsung/Makefile > index 53eb15b..785ca79 100644 > --- a/arch/arm/plat-samsung/Makefile > +++ b/arch/arm/plat-samsung/Makefile > @@ -49,6 +49,7 @@ obj-$(CONFIG_S3C_DEV_FB) += dev-fb.o > obj-y += dev-uart.o > obj-$(CONFIG_S3C_DEV_USB_HOST) += dev-usb.o > obj-$(CONFIG_S3C_DEV_USB_HSOTG) += dev-usb-hsotg.o > +obj-$(CONFIG_S3C_DEV_DWC_OTG) += dev-usb-hsotg.o > obj-$(CONFIG_S3C_DEV_WDT) += dev-wdt.o > obj-$(CONFIG_S3C_DEV_NAND) += dev-nand.o > obj-$(CONFIG_S3C_DEV_ONENAND) += dev-onenand.o > diff --git a/arch/arm/plat-samsung/dev-usb-hsotg.c b/arch/arm/plat-samsung/dev-usb-hsotg.c > index 33a844a..7e6228b 100644 > --- a/arch/arm/plat-samsung/dev-usb-hsotg.c > +++ b/arch/arm/plat-samsung/dev-usb-hsotg.c > @@ -20,6 +20,8 @@ > #include <mach/map.h> > > #include <plat/devs.h> > +#include <plat/otg.h> > +#include <plat/usb-phy.h> > > static struct resource s3c_usb_hsotg_resources[] = { > [0] = { > @@ -37,7 +39,12 @@ static struct resource s3c_usb_hsotg_resources[] = { > static u64 s3c_hsotg_dmamask = DMA_BIT_MASK(32); > > struct platform_device s3c_device_usb_hsotg = { > +#ifdef CONFIG_S3C_DEV_USB_HSOTG > .name = "s3c-hsotg", > +#endif > +#ifdef CONFIG_S3C_DEV_DWC_OTG > + .name = "dwc_otg", > +#endif no, don't do that. See we're going through a big re-factor on the gadget framework to allow multiple UDC drivers to be compiled as modules. The idea is to be able to have distro-like kernels for embedded too. Take a look at my gadget branch [1] and see how the gadget controllers are modified to start allowing that. I also have patch to the Kconfig allowing all controllers to be enabled as modules, I just need some more time to figure out one warning on the renenesas controller. IOW, it's best to add both platform devices. Or move to device tree.
Hello. On 21-06-2011 11:03, p.paneri@samsung.com wrote: > From: Praveen Paneri<p.paneri@samsung.com> > Adding dwc driver name in existing platform device > to probe DWC OTG driver. > Introduced otg_set_platdata function to pass platform data > Added selectable config option to add DWC OTG driver for different > machines. > Signed-off-by: Praveen Paneri<p.paneri@samsung.com> [...] > diff --git a/arch/arm/plat-samsung/dev-usb-hsotg.c b/arch/arm/plat-samsung/dev-usb-hsotg.c > index 33a844a..7e6228b 100644 > --- a/arch/arm/plat-samsung/dev-usb-hsotg.c > +++ b/arch/arm/plat-samsung/dev-usb-hsotg.c [...] > @@ -37,7 +39,12 @@ static struct resource s3c_usb_hsotg_resources[] = { > static u64 s3c_hsotg_dmamask = DMA_BIT_MASK(32); > > struct platform_device s3c_device_usb_hsotg = { > +#ifdef CONFIG_S3C_DEV_USB_HSOTG > .name = "s3c-hsotg", > +#endif > +#ifdef CONFIG_S3C_DEV_DWC_OTG > + .name = "dwc_otg", > +#endif I'd done it as: +#if defined(CONFIG_S3C_DEV_USB_HSOTG) .name = "s3c-hsotg", +#elif defined(CONFIG_S3C_DEV_DWC_OTG) + .name = "dwc_otg", +#endif WBR, Sergei
Hi, On Tue, Jun 21, 2011 at 03:47:04PM +0400, Sergei Shtylyov wrote: > Hello. > > On 21-06-2011 11:03, p.paneri@samsung.com wrote: > > >From: Praveen Paneri<p.paneri@samsung.com> > > >Adding dwc driver name in existing platform device > >to probe DWC OTG driver. > >Introduced otg_set_platdata function to pass platform data > >Added selectable config option to add DWC OTG driver for different > >machines. > > >Signed-off-by: Praveen Paneri<p.paneri@samsung.com> > [...] > > >diff --git a/arch/arm/plat-samsung/dev-usb-hsotg.c b/arch/arm/plat-samsung/dev-usb-hsotg.c > >index 33a844a..7e6228b 100644 > >--- a/arch/arm/plat-samsung/dev-usb-hsotg.c > >+++ b/arch/arm/plat-samsung/dev-usb-hsotg.c > [...] > >@@ -37,7 +39,12 @@ static struct resource s3c_usb_hsotg_resources[] = { > > static u64 s3c_hsotg_dmamask = DMA_BIT_MASK(32); > > > > struct platform_device s3c_device_usb_hsotg = { > >+#ifdef CONFIG_S3C_DEV_USB_HSOTG > > .name = "s3c-hsotg", > >+#endif > >+#ifdef CONFIG_S3C_DEV_DWC_OTG > >+ .name = "dwc_otg", > >+#endif > > I'd done it as: > > +#if defined(CONFIG_S3C_DEV_USB_HSOTG) > .name = "s3c-hsotg", > +#elif defined(CONFIG_S3C_DEV_DWC_OTG) > + .name = "dwc_otg", > +#endif no... don't do that. How many times do I have to repeat ? No ifdefs!! we want both drivers to be able to be compiled as modules, so add both platform devices.
Hello. On 21-06-2011 15:49, Felipe Balbi wrote: >>> From: Praveen Paneri<p.paneri@samsung.com> >>> Adding dwc driver name in existing platform device >>> to probe DWC OTG driver. >>> Introduced otg_set_platdata function to pass platform data >>> Added selectable config option to add DWC OTG driver for different >>> machines. >>> Signed-off-by: Praveen Paneri<p.paneri@samsung.com> >> [...] >>> diff --git a/arch/arm/plat-samsung/dev-usb-hsotg.c b/arch/arm/plat-samsung/dev-usb-hsotg.c >>> index 33a844a..7e6228b 100644 >>> --- a/arch/arm/plat-samsung/dev-usb-hsotg.c >>> +++ b/arch/arm/plat-samsung/dev-usb-hsotg.c >> [...] >>> @@ -37,7 +39,12 @@ static struct resource s3c_usb_hsotg_resources[] = { >>> static u64 s3c_hsotg_dmamask = DMA_BIT_MASK(32); >>> >>> struct platform_device s3c_device_usb_hsotg = { >>> +#ifdef CONFIG_S3C_DEV_USB_HSOTG >>> .name = "s3c-hsotg", >>> +#endif >>> +#ifdef CONFIG_S3C_DEV_DWC_OTG >>> + .name = "dwc_otg", >>> +#endif >> I'd done it as: >> +#if defined(CONFIG_S3C_DEV_USB_HSOTG) >> .name = "s3c-hsotg", >> +#elif defined(CONFIG_S3C_DEV_DWC_OTG) >> + .name = "dwc_otg", >> +#endif > no... don't do that. How many times do I have to repeat ? No ifdefs!! we > want both drivers to be able to be compiled as modules, so add both > platform devices. Sorry, hadn't seen your mail when replying. WBR, Sergei
diff --git a/arch/arm/plat-samsung/Kconfig b/arch/arm/plat-samsung/Kconfig index 4d79519..58ed8b1 100644 --- a/arch/arm/plat-samsung/Kconfig +++ b/arch/arm/plat-samsung/Kconfig @@ -227,6 +227,12 @@ config S3C_DEV_USB_HSOTG help Compile in platform device definition for USB high-speed OtG +config S3C_DEV_DWC_OTG + bool + help + Compile in platform device definition for DWC OTG. This + will make it selectable for different machines. + config S3C_DEV_WDT bool default y if ARCH_S3C2410 diff --git a/arch/arm/plat-samsung/Makefile b/arch/arm/plat-samsung/Makefile index 53eb15b..785ca79 100644 --- a/arch/arm/plat-samsung/Makefile +++ b/arch/arm/plat-samsung/Makefile @@ -49,6 +49,7 @@ obj-$(CONFIG_S3C_DEV_FB) += dev-fb.o obj-y += dev-uart.o obj-$(CONFIG_S3C_DEV_USB_HOST) += dev-usb.o obj-$(CONFIG_S3C_DEV_USB_HSOTG) += dev-usb-hsotg.o +obj-$(CONFIG_S3C_DEV_DWC_OTG) += dev-usb-hsotg.o obj-$(CONFIG_S3C_DEV_WDT) += dev-wdt.o obj-$(CONFIG_S3C_DEV_NAND) += dev-nand.o obj-$(CONFIG_S3C_DEV_ONENAND) += dev-onenand.o diff --git a/arch/arm/plat-samsung/dev-usb-hsotg.c b/arch/arm/plat-samsung/dev-usb-hsotg.c index 33a844a..7e6228b 100644 --- a/arch/arm/plat-samsung/dev-usb-hsotg.c +++ b/arch/arm/plat-samsung/dev-usb-hsotg.c @@ -20,6 +20,8 @@ #include <mach/map.h> #include <plat/devs.h> +#include <plat/otg.h> +#include <plat/usb-phy.h> static struct resource s3c_usb_hsotg_resources[] = { [0] = { @@ -37,7 +39,12 @@ static struct resource s3c_usb_hsotg_resources[] = { static u64 s3c_hsotg_dmamask = DMA_BIT_MASK(32); struct platform_device s3c_device_usb_hsotg = { +#ifdef CONFIG_S3C_DEV_USB_HSOTG .name = "s3c-hsotg", +#endif +#ifdef CONFIG_S3C_DEV_DWC_OTG + .name = "dwc_otg", +#endif .id = -1, .num_resources = ARRAY_SIZE(s3c_usb_hsotg_resources), .resource = s3c_usb_hsotg_resources, @@ -46,3 +53,16 @@ struct platform_device s3c_device_usb_hsotg = { .coherent_dma_mask = DMA_BIT_MASK(32), }, }; + +void __init s5p_otg_set_platdata(struct s5p_otg_platdata *pd) +{ + struct s5p_otg_platdata *npd; + + npd = s3c_set_platdata(pd, sizeof(struct s5p_otg_platdata), + &s3c_device_usb_hsotg); + + if (!npd->phy_init) + npd->phy_init = s5p_usb_phy_init; + if (!npd->phy_exit) + npd->phy_exit = s5p_usb_phy_exit; +}