|  | @@ -181,3 +181,121 @@ static struct resource udc_resources[] = {
 | 
	
		
			
				|  |  |  		.start		= INT_USB_IRQ_GEN,
 | 
	
		
			
				|  |  |  		.flags		= IORESOURCE_IRQ,
 | 
	
		
			
				|  |  |  	}, {		/* PIO IRQ */
 | 
	
		
			
				|  |  | +		.start		= INT_USB_IRQ_NISO,
 | 
	
		
			
				|  |  | +		.flags		= IORESOURCE_IRQ,
 | 
	
		
			
				|  |  | +	}, {		/* SOF IRQ */
 | 
	
		
			
				|  |  | +		.start		= INT_USB_IRQ_ISO,
 | 
	
		
			
				|  |  | +		.flags		= IORESOURCE_IRQ,
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static u64 udc_dmamask = ~(u32)0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct platform_device udc_device = {
 | 
	
		
			
				|  |  | +	.name		= "omap_udc",
 | 
	
		
			
				|  |  | +	.id		= -1,
 | 
	
		
			
				|  |  | +	.dev = {
 | 
	
		
			
				|  |  | +		.dma_mask		= &udc_dmamask,
 | 
	
		
			
				|  |  | +		.coherent_dma_mask	= 0xffffffff,
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	.num_resources	= ARRAY_SIZE(udc_resources),
 | 
	
		
			
				|  |  | +	.resource	= udc_resources,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static inline void udc_device_init(struct omap_usb_config *pdata)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	/* IRQ numbers for omap7xx */
 | 
	
		
			
				|  |  | +	if(cpu_is_omap7xx()) {
 | 
	
		
			
				|  |  | +		udc_resources[1].start = INT_7XX_USB_GENI;
 | 
	
		
			
				|  |  | +		udc_resources[2].start = INT_7XX_USB_NON_ISO;
 | 
	
		
			
				|  |  | +		udc_resources[3].start = INT_7XX_USB_ISO;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	pdata->udc_device = &udc_device;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static inline void udc_device_init(struct omap_usb_config *pdata)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#if	defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* The dmamask must be set for OHCI to work */
 | 
	
		
			
				|  |  | +static u64 ohci_dmamask = ~(u32)0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct resource ohci_resources[] = {
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		.start	= OMAP_OHCI_BASE,
 | 
	
		
			
				|  |  | +		.end	= OMAP_OHCI_BASE + 0xff,
 | 
	
		
			
				|  |  | +		.flags	= IORESOURCE_MEM,
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		.start	= INT_USB_IRQ_HGEN,
 | 
	
		
			
				|  |  | +		.flags	= IORESOURCE_IRQ,
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct platform_device ohci_device = {
 | 
	
		
			
				|  |  | +	.name			= "ohci",
 | 
	
		
			
				|  |  | +	.id			= -1,
 | 
	
		
			
				|  |  | +	.dev = {
 | 
	
		
			
				|  |  | +		.dma_mask		= &ohci_dmamask,
 | 
	
		
			
				|  |  | +		.coherent_dma_mask	= 0xffffffff,
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	.num_resources	= ARRAY_SIZE(ohci_resources),
 | 
	
		
			
				|  |  | +	.resource		= ohci_resources,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static inline void ohci_device_init(struct omap_usb_config *pdata)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	if (cpu_is_omap7xx())
 | 
	
		
			
				|  |  | +		ohci_resources[1].start = INT_7XX_USB_HHC_1;
 | 
	
		
			
				|  |  | +	pdata->ohci_device = &ohci_device;
 | 
	
		
			
				|  |  | +	pdata->ocpi_enable = &ocpi_enable;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static inline void ohci_device_init(struct omap_usb_config *pdata)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#if	defined(CONFIG_USB_OTG) && defined(CONFIG_ARCH_OMAP_OTG)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct resource otg_resources[] = {
 | 
	
		
			
				|  |  | +	/* order is significant! */
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		.start		= OTG_BASE,
 | 
	
		
			
				|  |  | +		.end		= OTG_BASE + 0xff,
 | 
	
		
			
				|  |  | +		.flags		= IORESOURCE_MEM,
 | 
	
		
			
				|  |  | +	}, {
 | 
	
		
			
				|  |  | +		.start		= INT_USB_IRQ_OTG,
 | 
	
		
			
				|  |  | +		.flags		= IORESOURCE_IRQ,
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct platform_device otg_device = {
 | 
	
		
			
				|  |  | +	.name		= "omap_otg",
 | 
	
		
			
				|  |  | +	.id		= -1,
 | 
	
		
			
				|  |  | +	.num_resources	= ARRAY_SIZE(otg_resources),
 | 
	
		
			
				|  |  | +	.resource	= otg_resources,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static inline void otg_device_init(struct omap_usb_config *pdata)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	if (cpu_is_omap7xx())
 | 
	
		
			
				|  |  | +		otg_resources[1].start = INT_7XX_USB_OTG;
 | 
	
		
			
				|  |  | +	pdata->otg_device = &otg_device;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static inline void otg_device_init(struct omap_usb_config *pdata)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 |