2005-04-16 15:20:36 -07: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 ) 1992 - 1997 , 2000 - 2004 Silicon Graphics , Inc . All rights reserved .
*/
# ifndef _ASM_IA64_SN_PCI_PCIBUS_PROVIDER_H
# define _ASM_IA64_SN_PCI_PCIBUS_PROVIDER_H
/*
* SN pci asic types . Do not ever renumber these or reuse values . The
* values must agree with what prom thinks they are .
*/
# define PCIIO_ASIC_TYPE_UNKNOWN 0
# define PCIIO_ASIC_TYPE_PPB 1
# define PCIIO_ASIC_TYPE_PIC 2
# define PCIIO_ASIC_TYPE_TIOCP 3
2005-04-25 11:35:54 -07:00
# define PCIIO_ASIC_TYPE_TIOCA 4
2005-08-03 14:07:00 -07:00
# define PCIIO_ASIC_TYPE_TIOCE 5
2005-04-16 15:20:36 -07:00
2005-08-03 14:07:00 -07:00
# define PCIIO_ASIC_MAX_TYPES 6
2005-04-25 11:26:03 -07:00
2005-04-16 15:20:36 -07:00
/*
* Common pciio bus provider data . There should be one of these as the
* first field in any pciio based provider soft structure ( e . g . pcibr_soft
* tioca_soft , etc ) .
*/
struct pcibus_bussoft {
2006-01-16 19:54:40 -08:00
u32 bs_asic_type ; /* chipset type */
u32 bs_xid ; /* xwidget id */
u32 bs_persist_busnum ; /* Persistent Bus Number */
u32 bs_persist_segment ; /* Segment Number */
u64 bs_legacy_io ; /* legacy io pio addr */
u64 bs_legacy_mem ; /* legacy mem pio addr */
u64 bs_base ; /* widget base */
2005-04-16 15:20:36 -07:00
struct xwidget_info * bs_xwidget_info ;
} ;
2005-07-12 16:03:00 -07:00
struct pci_controller ;
2005-04-16 15:20:36 -07:00
/*
2005-04-25 11:26:03 -07:00
* SN pci bus indirection
2005-04-16 15:20:36 -07:00
*/
2005-04-25 11:26:03 -07:00
struct sn_pcibus_provider {
dma_addr_t ( * dma_map ) ( struct pci_dev * , unsigned long , size_t ) ;
dma_addr_t ( * dma_map_consistent ) ( struct pci_dev * , unsigned long , size_t ) ;
void ( * dma_unmap ) ( struct pci_dev * , dma_addr_t , int ) ;
2005-07-12 16:03:00 -07:00
void * ( * bus_fixup ) ( struct pcibus_bussoft * , struct pci_controller * ) ;
2005-08-03 14:06:00 -07:00
void ( * force_interrupt ) ( struct sn_irq_info * ) ;
2005-08-25 11:45:00 -07:00
void ( * target_interrupt ) ( struct sn_irq_info * ) ;
2005-04-25 11:26:03 -07:00
} ;
2005-04-16 15:20:36 -07:00
2005-04-25 11:26:03 -07:00
extern struct sn_pcibus_provider * sn_pci_provider [ ] ;
2005-04-16 15:20:36 -07:00
# endif /* _ASM_IA64_SN_PCI_PCIBUS_PROVIDER_H */