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);
							 |