2015-04-08 21:21:35 +03:00
/*
* Copyright ( C ) 2014 - 2015 Broadcom Corporation
*
* 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 " as is " WITHOUT ANY WARRANTY of any
* kind , whether express or implied ; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*/
# ifndef _PCIE_IPROC_H
# define _PCIE_IPROC_H
# define IPROC_PCIE_MAX_NUM_IRQS 6
/**
* iProc PCIe device
* @ dev : pointer to device data structure
* @ base : PCIe host controller I / O register base
* @ resources : linked list of all PCI resources
2015-07-22 04:29:40 +03:00
* @ sysdata : Per PCI controller data ( ARM - specific )
2015-04-08 21:21:35 +03:00
* @ root_bus : pointer to root bus
* @ phy : optional PHY device that controls the Serdes
* @ irqs : interrupt IDs
*/
struct iproc_pcie {
struct device * dev ;
void __iomem * base ;
2015-07-22 04:29:40 +03:00
# ifdef CONFIG_ARM
2015-04-08 21:21:35 +03:00
struct pci_sys_data sysdata ;
2015-07-22 04:29:40 +03:00
# endif
2015-04-08 21:21:35 +03:00
struct pci_bus * root_bus ;
struct phy * phy ;
int irqs [ IPROC_PCIE_MAX_NUM_IRQS ] ;
2015-05-13 00:23:00 +03:00
int ( * map_irq ) ( const struct pci_dev * , u8 , u8 ) ;
2015-04-08 21:21:35 +03:00
} ;
2015-05-24 23:37:02 +03:00
int iproc_pcie_setup ( struct iproc_pcie * pcie , struct list_head * res ) ;
2015-04-08 21:21:35 +03:00
int iproc_pcie_remove ( struct iproc_pcie * pcie ) ;
# endif /* _PCIE_IPROC_H */