0001
0002
0003
0004
0005
0006
0007
0008 #ifndef _POWERPC_SYSDEV_FSL_MSI_H
0009 #define _POWERPC_SYSDEV_FSL_MSI_H
0010
0011 #include <linux/of.h>
0012 #include <asm/msi_bitmap.h>
0013
0014 #define NR_MSI_REG_MSIIR 8
0015 #define NR_MSI_REG_MSIIR1 16
0016 #define NR_MSI_REG_MAX NR_MSI_REG_MSIIR1
0017 #define IRQS_PER_MSI_REG 32
0018 #define NR_MSI_IRQS_MAX (NR_MSI_REG_MAX * IRQS_PER_MSI_REG)
0019
0020 #define FSL_PIC_IP_MASK 0x0000000F
0021 #define FSL_PIC_IP_MPIC 0x00000001
0022 #define FSL_PIC_IP_IPIC 0x00000002
0023 #define FSL_PIC_IP_VMPIC 0x00000003
0024
0025 #define MSI_HW_ERRATA_ENDIAN 0x00000010
0026
0027 struct fsl_msi_cascade_data;
0028
0029 struct fsl_msi {
0030 struct irq_domain *irqhost;
0031
0032 unsigned long cascade_irq;
0033
0034 u32 msiir_offset;
0035 u32 ibs_shift;
0036 u32 srs_shift;
0037 void __iomem *msi_regs;
0038 u32 feature;
0039 struct fsl_msi_cascade_data *cascade_array[NR_MSI_REG_MAX];
0040
0041 struct msi_bitmap bitmap;
0042
0043 struct list_head list;
0044
0045 phandle phandle;
0046 };
0047
0048 #endif
0049