| 
									
										
										
										
											2005-11-17 15:50:01 -06:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * This file is subject to the terms and conditions of the GNU General Public | 
					
						
							|  |  |  |  * License.  See the file "COPYING" in the main directory of this archive | 
					
						
							|  |  |  |  * for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Copyright (c) 2003-2005 Silicon Graphics, Inc. All rights reserved. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2005-08-03 14:07:00 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | #ifndef _ASM_IA64_SN_CE_PROVIDER_H
 | 
					
						
							|  |  |  | #define _ASM_IA64_SN_CE_PROVIDER_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <asm/sn/pcibus_provider_defs.h>
 | 
					
						
							|  |  |  | #include <asm/sn/tioce.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*
 | 
					
						
							|  |  |  |  * Common TIOCE structure shared between the prom and kernel | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * DO NOT CHANGE THIS STRUCT WITHOUT MAKING CORRESPONDING CHANGES TO THE | 
					
						
							|  |  |  |  * PROM VERSION. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | struct tioce_common { | 
					
						
							|  |  |  | 	struct pcibus_bussoft	ce_pcibus;	/* common pciio header */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-01-16 19:54:40 -08:00
										 |  |  | 	u32		ce_rev; | 
					
						
							|  |  |  | 	u64		ce_kernel_private; | 
					
						
							|  |  |  | 	u64		ce_prom_private; | 
					
						
							| 
									
										
										
										
											2005-08-03 14:07:00 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct tioce_kernel { | 
					
						
							|  |  |  | 	struct tioce_common	*ce_common; | 
					
						
							|  |  |  | 	spinlock_t		ce_lock; | 
					
						
							|  |  |  | 	struct list_head	ce_dmamap_list; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-01-16 19:54:40 -08:00
										 |  |  | 	u64		ce_ate40_shadow[TIOCE_NUM_M40_ATES]; | 
					
						
							|  |  |  | 	u64		ce_ate3240_shadow[TIOCE_NUM_M3240_ATES]; | 
					
						
							|  |  |  | 	u32		ce_ate3240_pagesize; | 
					
						
							| 
									
										
										
										
											2005-08-03 14:07:00 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-01-16 19:54:40 -08:00
										 |  |  | 	u8			ce_port1_secondary; | 
					
						
							| 
									
										
										
										
											2005-08-03 14:07:00 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/* per-port resources */ | 
					
						
							|  |  |  | 	struct { | 
					
						
							|  |  |  | 		int 		dirmap_refcnt; | 
					
						
							| 
									
										
										
										
											2006-01-16 19:54:40 -08:00
										 |  |  | 		u64	dirmap_shadow; | 
					
						
							| 
									
										
										
										
											2005-08-03 14:07:00 -07:00
										 |  |  | 	} ce_port[TIOCE_NUM_PORTS]; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct tioce_dmamap { | 
					
						
							|  |  |  | 	struct list_head	ce_dmamap_list;	/* headed by tioce_kernel */ | 
					
						
							| 
									
										
										
										
											2006-01-16 19:54:40 -08:00
										 |  |  | 	u32		refcnt; | 
					
						
							| 
									
										
										
										
											2005-08-03 14:07:00 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-01-16 19:54:40 -08:00
										 |  |  | 	u64		nbytes;		/* # bytes mapped */ | 
					
						
							| 
									
										
										
										
											2005-08-03 14:07:00 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-01-16 19:54:40 -08:00
										 |  |  | 	u64		ct_start;	/* coretalk start address */ | 
					
						
							|  |  |  | 	u64		pci_start;	/* bus start address */ | 
					
						
							| 
									
										
										
										
											2005-08-03 14:07:00 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-10-10 22:46:27 +01:00
										 |  |  | 	u64		__iomem *ate_hw;/* hw ptr of first ate in map */ | 
					
						
							| 
									
										
										
										
											2006-01-16 19:54:40 -08:00
										 |  |  | 	u64		*ate_shadow;	/* shadow ptr of firat ate */ | 
					
						
							|  |  |  | 	u16		ate_count;	/* # ate's in the map */ | 
					
						
							| 
									
										
										
										
											2005-08-03 14:07:00 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | extern int tioce_init_provider(void); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif  /* __ASM_IA64_SN_CE_PROVIDER_H */
 |