70 lines
		
	
	
	
		
			1.9 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			70 lines
		
	
	
	
		
			1.9 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /*
 | ||
|  |  * Copyright 2012 Tilera Corporation. All Rights Reserved. | ||
|  |  * | ||
|  |  *   This program is free software; you can redistribute it and/or | ||
|  |  *   modify it under the terms of the GNU General Public License | ||
|  |  *   as published by the Free Software Foundation, version 2. | ||
|  |  * | ||
|  |  *   This program is distributed in the hope that it will be useful, but | ||
|  |  *   WITHOUT ANY WARRANTY; without even the implied warranty of | ||
|  |  *   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or | ||
|  |  *   NON INFRINGEMENT.  See the GNU General Public License for | ||
|  |  *   more details. | ||
|  |  * | ||
|  |  * Register the Tile-Gx USB interfaces as platform devices. | ||
|  |  * | ||
|  |  * The actual USB driver is just some glue (in | ||
|  |  * drivers/usb/host/[eo]hci-tilegx.c) which makes the registers available | ||
|  |  * to the standard kernel EHCI and OHCI drivers. | ||
|  |  */ | ||
|  | 
 | ||
|  | #include <linux/dma-mapping.h>
 | ||
|  | #include <linux/platform_device.h>
 | ||
|  | #include <linux/usb/tilegx.h>
 | ||
|  | #include <linux/types.h>
 | ||
|  | 
 | ||
|  | static u64 ehci_dmamask = DMA_BIT_MASK(32); | ||
|  | 
 | ||
|  | #define USB_HOST_DEF(unit, type, dmamask) \
 | ||
|  | 	static struct \ | ||
|  | 	    tilegx_usb_platform_data tilegx_usb_platform_data_ ## type ## \ | ||
|  | 		hci ## unit = { \ | ||
|  | 		.dev_index = unit, \ | ||
|  | 	}; \ | ||
|  | 	\ | ||
|  | 	static struct platform_device tilegx_usb_ ## type ## hci ## unit = { \ | ||
|  | 		.name		= "tilegx-" #type "hci", \ | ||
|  | 		.id		= unit, \ | ||
|  | 		.dev = { \ | ||
|  | 			.dma_mask		= dmamask, \ | ||
|  | 			.coherent_dma_mask	= DMA_BIT_MASK(32), \ | ||
|  | 			.platform_data = \ | ||
|  | 				&tilegx_usb_platform_data_ ## type ## hci ## \ | ||
|  | 				unit, \ | ||
|  | 		}, \ | ||
|  | 	}; | ||
|  | 
 | ||
|  | USB_HOST_DEF(0, e, &ehci_dmamask) | ||
|  | USB_HOST_DEF(0, o, NULL) | ||
|  | USB_HOST_DEF(1, e, &ehci_dmamask) | ||
|  | USB_HOST_DEF(1, o, NULL) | ||
|  | 
 | ||
|  | #undef USB_HOST_DEF
 | ||
|  | 
 | ||
|  | static struct platform_device *tilegx_usb_devices[] __initdata = { | ||
|  | 	&tilegx_usb_ehci0, | ||
|  | 	&tilegx_usb_ehci1, | ||
|  | 	&tilegx_usb_ohci0, | ||
|  | 	&tilegx_usb_ohci1, | ||
|  | }; | ||
|  | 
 | ||
|  | /** Add our set of possible USB devices. */ | ||
|  | static int __init tilegx_usb_init(void) | ||
|  | { | ||
|  | 	platform_add_devices(tilegx_usb_devices, | ||
|  | 			     ARRAY_SIZE(tilegx_usb_devices)); | ||
|  | 
 | ||
|  | 	return 0; | ||
|  | } | ||
|  | arch_initcall(tilegx_usb_init); |