0001
0002
0003
0004
0005
0006
0007
0008 #ifdef __KERNEL__
0009 #ifndef __POWERPC_FSL_PCI_H
0010 #define __POWERPC_FSL_PCI_H
0011
0012 struct platform_device;
0013
0014
0015
0016 #define PCI_FSL_BRR1 0xbf8
0017 #define PCI_FSL_BRR1_VER 0xffff
0018
0019 #define PCIE_LTSSM 0x0404
0020 #define PCIE_LTSSM_L0 0x16
0021 #define PCIE_FSL_CSR_CLASSCODE 0x474
0022 #define PCIE_IP_REV_2_2 0x02080202
0023 #define PCIE_IP_REV_3_0 0x02080300
0024 #define PIWAR_EN 0x80000000
0025 #define PIWAR_PF 0x20000000
0026 #define PIWAR_TGI_LOCAL 0x00f00000
0027 #define PIWAR_READ_SNOOP 0x00050000
0028 #define PIWAR_WRITE_SNOOP 0x00005000
0029 #define PIWAR_SZ_MASK 0x0000003f
0030
0031 #define PEX_PMCR_PTOMR 0x1
0032 #define PEX_PMCR_EXL2S 0x2
0033
0034 #define PME_DISR_EN_PTOD 0x00008000
0035 #define PME_DISR_EN_ENL23D 0x00002000
0036 #define PME_DISR_EN_EXL23D 0x00001000
0037
0038
0039 struct pci_outbound_window_regs {
0040 __be32 potar;
0041 __be32 potear;
0042 __be32 powbar;
0043 u8 res1[4];
0044 __be32 powar;
0045 u8 res2[12];
0046 };
0047
0048
0049 struct pci_inbound_window_regs {
0050 __be32 pitar;
0051 u8 res1[4];
0052 __be32 piwbar;
0053 __be32 piwbear;
0054 __be32 piwar;
0055 u8 res2[12];
0056 };
0057
0058
0059 struct ccsr_pci {
0060 __be32 config_addr;
0061 __be32 config_data;
0062 __be32 int_ack;
0063 __be32 pex_otb_cpl_tor;
0064 __be32 pex_conf_tor;
0065 __be32 pex_config;
0066 __be32 pex_int_status;
0067 u8 res2[4];
0068 __be32 pex_pme_mes_dr;
0069 __be32 pex_pme_mes_disr;
0070 __be32 pex_pme_mes_ier;
0071 __be32 pex_pmcr;
0072 u8 res3[3016];
0073 __be32 block_rev1;
0074 __be32 block_rev2;
0075
0076
0077
0078
0079
0080
0081 struct pci_outbound_window_regs pow[5];
0082 u8 res14[96];
0083 struct pci_inbound_window_regs pmit;
0084 u8 res6[96];
0085
0086
0087
0088
0089 struct pci_inbound_window_regs piw[4];
0090
0091 __be32 pex_err_dr;
0092 u8 res21[4];
0093 __be32 pex_err_en;
0094 u8 res22[4];
0095 __be32 pex_err_disr;
0096 u8 res23[12];
0097 __be32 pex_err_cap_stat;
0098 u8 res24[4];
0099 __be32 pex_err_cap_r0;
0100 __be32 pex_err_cap_r1;
0101 __be32 pex_err_cap_r2;
0102 __be32 pex_err_cap_r3;
0103 u8 res_e38[200];
0104 __be32 pdb_stat;
0105 u8 res_f04[16];
0106 __be32 pex_csr0;
0107 #define PEX_CSR0_LTSSM_MASK 0xFC
0108 #define PEX_CSR0_LTSSM_SHIFT 2
0109 #define PEX_CSR0_LTSSM_L0 0x11
0110 __be32 pex_csr1;
0111 u8 res_f1c[228];
0112
0113 };
0114
0115 extern int fsl_add_bridge(struct platform_device *pdev, int is_primary);
0116 extern void fsl_pcibios_fixup_bus(struct pci_bus *bus);
0117 extern void fsl_pcibios_fixup_phb(struct pci_controller *phb);
0118 extern int mpc83xx_add_bridge(struct device_node *dev);
0119 u64 fsl_pci_immrbar_base(struct pci_controller *hose);
0120
0121 extern struct device_node *fsl_pci_primary;
0122
0123 #ifdef CONFIG_PCI
0124 void __init fsl_pci_assign_primary(void);
0125 #else
0126 static inline void fsl_pci_assign_primary(void) {}
0127 #endif
0128
0129 #ifdef CONFIG_FSL_PCI
0130 extern int fsl_pci_mcheck_exception(struct pt_regs *);
0131 #else
0132 static inline int fsl_pci_mcheck_exception(struct pt_regs *regs) {return 0; }
0133 #endif
0134
0135 #endif
0136 #endif