Sergei Shtylyov <sshtylyov@xxxxxxxxxxxxx> writes: > Add the function to register the OHCI platform device, given the root hub > related platform data passed from the board specific code. The platfrom > data provide for overriding the OHCI port power and over-current bits at > the board level. > > Signed-off-by: Sergei Shtylyov <sshtylyov@xxxxxxxxxxxxx> This generates compiler warnings... > --- > The patch is against the recent DaVinci tree... > > Changes since the previous take: > - moved the USB 2.0 clock entry change to another patch; > - moved the OHCI platform devices from devices-da8xx.c to usb.c... > > arch/arm/mach-davinci/include/mach/da8xx.h | 2 + > arch/arm/mach-davinci/include/mach/usb.h | 20 ++++++++++++++++ > arch/arm/mach-davinci/usb.c | 36 ++++++++++++++++++++++++++++- > 3 files changed, 57 insertions(+), 1 deletion(-) > > Index: linux-davinci/arch/arm/mach-davinci/include/mach/da8xx.h > =================================================================== > --- linux-davinci.orig/arch/arm/mach-davinci/include/mach/da8xx.h > +++ linux-davinci/arch/arm/mach-davinci/include/mach/da8xx.h > @@ -19,6 +19,7 @@ > #include <mach/emac.h> > #include <mach/asp.h> > #include <mach/mmc.h> > +#include <mach/usb.h> > > extern void __iomem *da8xx_syscfg_base; > > @@ -80,6 +81,7 @@ int da8xx_cppi41_init(void); > int da8xx_register_edma(void); > int da8xx_register_i2c(int instance, struct davinci_i2c_platform_data *pdata); > int da8xx_register_watchdog(void); > +int da8xx_register_usb11(struct da8xx_ohci_root_hub *pdata); > int da8xx_register_emac(void); > int da8xx_register_lcdc(struct da8xx_lcdc_platform_data *pdata); > int da8xx_register_mmcsd0(struct davinci_mmc_config *config); > Index: linux-davinci/arch/arm/mach-davinci/include/mach/usb.h > =================================================================== > --- linux-davinci.orig/arch/arm/mach-davinci/include/mach/usb.h > +++ linux-davinci/arch/arm/mach-davinci/include/mach/usb.h > @@ -34,4 +34,24 @@ > #define CFGCHIP2_REFFREQ_24MHZ (2 << 0) > #define CFGCHIP2_REFFREQ_48MHZ (3 << 0) > > +struct da8xx_ohci_root_hub; > + > +typedef void (*da8xx_ocic_handler_t)(struct da8xx_ohci_root_hub *hub, > + unsigned port); > + > +/* Passed as the platform data to the OHCI driver */ > +struct da8xx_ohci_root_hub { > + /* Switch the port power on/off */ > + int (*set_power)(unsigned port, int on); > + /* Read the port power status */ > + int (*get_power)(unsigned port); > + /* Read the port over-current indicator */ > + int (*get_oci)(unsigned port); > + /* Over-current indicator change notification (pass NULL to disable) */ > + int (*ocic_notify)(da8xx_ocic_handler_t handler); > + > + /* Time from power on to power good (in 2 ms units) */ > + u8 potpgt; > +}; > + > #endif /* ifndef __ASM_ARCH_USB_H */ > Index: linux-davinci/arch/arm/mach-davinci/usb.c > =================================================================== > --- linux-davinci.orig/arch/arm/mach-davinci/usb.c > +++ linux-davinci/arch/arm/mach-davinci/usb.c > @@ -15,7 +15,8 @@ > #include <mach/irqs.h> > #include <mach/cputype.h> #include <mach/usb.h> needed here for 'struct da8xx_ohci_root_hub' define. I'll fix up before pushing. Kevin > > -#define DAVINCI_USB_OTG_BASE 0x01C64000 > +#define DAVINCI_USB_OTG_BASE 0x01c64000 > +#define DA8XX_USB1_BASE 0x01e25000 > > #if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE) > static struct musb_hdrc_eps_bits musb_eps[] = { > @@ -108,3 +109,36 @@ void __init setup_usb(unsigned mA, unsig > > #endif /* CONFIG_USB_MUSB_HDRC */ > > +#ifdef CONFIG_ARCH_DAVINCI_DA8XX > +static struct resource da8xx_usb11_resources[] = { > + [0] = { > + .start = DA8XX_USB1_BASE, > + .end = DA8XX_USB1_BASE + SZ_4K - 1, > + .flags = IORESOURCE_MEM, > + }, > + [1] = { > + .start = IRQ_DA8XX_IRQN, > + .end = IRQ_DA8XX_IRQN, > + .flags = IORESOURCE_IRQ, > + }, > +}; > + > +static u64 da8xx_usb11_dma_mask = DMA_BIT_MASK(32); > + > +static struct platform_device da8xx_usb11_device = { > + .name = "ohci", > + .id = 0, > + .dev = { > + .dma_mask = &da8xx_usb11_dma_mask, > + .coherent_dma_mask = DMA_BIT_MASK(32), > + }, > + .num_resources = ARRAY_SIZE(da8xx_usb11_resources), > + .resource = da8xx_usb11_resources, > +}; > + > +int __init da8xx_register_usb11(struct da8xx_ohci_root_hub *pdata) > +{ > + da8xx_usb11_device.dev.platform_data = pdata; > + return platform_device_register(&da8xx_usb11_device); > +} > +#endif /* CONFIG_DAVINCI_DA8XX */ -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html