1*16242d27SWill Deacon #ifndef KVM__OF_PCI_H 2*16242d27SWill Deacon #define KVM__OF_PCI_H 3*16242d27SWill Deacon 4*16242d27SWill Deacon #include <linux/types.h> 5*16242d27SWill Deacon 6*16242d27SWill Deacon /* 7*16242d27SWill Deacon * Definitions for implementing parts of the OpenFirmware PCI Bus Binding 8*16242d27SWill Deacon * Specification (IEEE Std 1275-1994). 9*16242d27SWill Deacon */ 10*16242d27SWill Deacon 11*16242d27SWill Deacon struct of_pci_unit_address { 12*16242d27SWill Deacon u32 hi, mid, lo; 13*16242d27SWill Deacon } __attribute__((packed)); 14*16242d27SWill Deacon 15*16242d27SWill Deacon struct of_pci_irq_mask { 16*16242d27SWill Deacon struct of_pci_unit_address pci_addr; 17*16242d27SWill Deacon u32 pci_pin; 18*16242d27SWill Deacon } __attribute__((packed)); 19*16242d27SWill Deacon 20*16242d27SWill Deacon struct of_pci_ranges_entry { 21*16242d27SWill Deacon struct of_pci_unit_address pci_addr; 22*16242d27SWill Deacon u64 cpu_addr; 23*16242d27SWill Deacon u64 length; 24*16242d27SWill Deacon } __attribute__((packed)); 25*16242d27SWill Deacon 26*16242d27SWill Deacon /* Macros to operate with address in OF binding to PCI */ 27*16242d27SWill Deacon #define __b_x(x, p, l) (((x) & ((1<<(l))-1)) << (p)) 28*16242d27SWill Deacon #define of_pci_b_n(x) __b_x((x), 31, 1) /* 0 if relocatable */ 29*16242d27SWill Deacon #define of_pci_b_p(x) __b_x((x), 30, 1) /* 1 if prefetchable */ 30*16242d27SWill Deacon #define of_pci_b_t(x) __b_x((x), 29, 1) /* 1 if the address is aliased */ 31*16242d27SWill Deacon #define of_pci_b_ss(x) __b_x((x), 24, 2) /* the space code */ 32*16242d27SWill Deacon #define of_pci_b_bbbbbbbb(x) __b_x((x), 16, 8) /* bus number */ 33*16242d27SWill Deacon #define of_pci_b_ddddd(x) __b_x((x), 11, 5) /* device number */ 34*16242d27SWill Deacon #define of_pci_b_fff(x) __b_x((x), 8, 3) /* function number */ 35*16242d27SWill Deacon #define of_pci_b_rrrrrrrr(x) __b_x((x), 0, 8) /* register number */ 36*16242d27SWill Deacon 37*16242d27SWill Deacon #define OF_PCI_SS_CONFIG 0 38*16242d27SWill Deacon #define OF_PCI_SS_IO 1 39*16242d27SWill Deacon #define OF_PCI_SS_M32 2 40*16242d27SWill Deacon #define OF_PCI_SS_M64 3 41*16242d27SWill Deacon 42*16242d27SWill Deacon #define OF_PCI_IRQ_MAP_MAX 256 /* 5 bit device + 3 bit pin */ 43*16242d27SWill Deacon 44*16242d27SWill Deacon #endif /* KVM__OF_PCI_H */ 45