Sergei Shtylyov <[email protected]> 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 <[email protected]>

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 */

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to