diff options
Diffstat (limited to 'arch/sparc/kernel/psycho_common.h')
-rw-r--r-- | arch/sparc/kernel/psycho_common.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/arch/sparc/kernel/psycho_common.h b/arch/sparc/kernel/psycho_common.h new file mode 100644 index 000000000000..092c278ef28d --- /dev/null +++ b/arch/sparc/kernel/psycho_common.h | |||
@@ -0,0 +1,48 @@ | |||
1 | #ifndef _PSYCHO_COMMON_H | ||
2 | #define _PSYCHO_COMMON_H | ||
3 | |||
4 | /* U2P Programmer's Manual, page 13-55, configuration space | ||
5 | * address format: | ||
6 | * | ||
7 | * 32 24 23 16 15 11 10 8 7 2 1 0 | ||
8 | * --------------------------------------------------------- | ||
9 | * |0 0 0 0 0 0 0 0 1| bus | device | function | reg | 0 0 | | ||
10 | * --------------------------------------------------------- | ||
11 | */ | ||
12 | #define PSYCHO_CONFIG_BASE(PBM) \ | ||
13 | ((PBM)->config_space | (1UL << 24)) | ||
14 | #define PSYCHO_CONFIG_ENCODE(BUS, DEVFN, REG) \ | ||
15 | (((unsigned long)(BUS) << 16) | \ | ||
16 | ((unsigned long)(DEVFN) << 8) | \ | ||
17 | ((unsigned long)(REG))) | ||
18 | |||
19 | static inline void *psycho_pci_config_mkaddr(struct pci_pbm_info *pbm, | ||
20 | unsigned char bus, | ||
21 | unsigned int devfn, | ||
22 | int where) | ||
23 | { | ||
24 | return (void *) | ||
25 | (PSYCHO_CONFIG_BASE(pbm) | | ||
26 | PSYCHO_CONFIG_ENCODE(bus, devfn, where)); | ||
27 | } | ||
28 | |||
29 | enum psycho_error_type { | ||
30 | UE_ERR, CE_ERR, PCI_ERR | ||
31 | }; | ||
32 | |||
33 | extern void psycho_check_iommu_error(struct pci_pbm_info *pbm, | ||
34 | unsigned long afsr, | ||
35 | unsigned long afar, | ||
36 | enum psycho_error_type type); | ||
37 | |||
38 | extern irqreturn_t psycho_pcierr_intr(int irq, void *dev_id); | ||
39 | |||
40 | extern int psycho_iommu_init(struct pci_pbm_info *pbm, int tsbsize, | ||
41 | u32 dvma_offset, u32 dma_mask, | ||
42 | unsigned long write_complete_offset); | ||
43 | |||
44 | extern void psycho_pbm_init_common(struct pci_pbm_info *pbm, | ||
45 | struct of_device *op, | ||
46 | const char *chip_name, int chip_type); | ||
47 | |||
48 | #endif /* _PSYCHO_COMMON_H */ | ||