]>
Commit | Line | Data |
---|---|---|
2874c5fd | 1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
577830b0 ME |
2 | /* |
3 | * Copyright 2006 IBM Corporation. | |
577830b0 ME |
4 | */ |
5 | ||
6 | #ifndef _PSERIES_PSERIES_H | |
7 | #define _PSERIES_PSERIES_H | |
8 | ||
32c96f77 | 9 | #include <linux/interrupt.h> |
999e2dad | 10 | #include <asm/rtas.h> |
32c96f77 MN |
11 | |
12 | struct device_node; | |
13 | ||
14 | extern void request_event_sources_irqs(struct device_node *np, | |
15 | irq_handler_t handler, const char *name); | |
16 | ||
20648974 NF |
17 | #include <linux/of.h> |
18 | ||
577830b0 ME |
19 | struct pt_regs; |
20 | ||
21 | extern int pSeries_system_reset_exception(struct pt_regs *regs); | |
22 | extern int pSeries_machine_check_exception(struct pt_regs *regs); | |
a43c1590 | 23 | extern long pseries_machine_check_realmode(struct pt_regs *regs); |
577830b0 | 24 | |
8feaeca2 | 25 | #ifdef CONFIG_SMP |
86425bed | 26 | extern void smp_init_pseries(void); |
16560e88 ME |
27 | |
28 | /* Get state of physical CPU from query_cpu_stopped */ | |
29 | int smp_query_cpu_stopped(unsigned int pcpu); | |
30 | #define QCSS_STOPPED 0 | |
31 | #define QCSS_STOPPING 1 | |
32 | #define QCSS_NOT_STOPPED 2 | |
33 | #define QCSS_HARDWARE_ERROR -1 | |
34 | #define QCSS_HARDWARE_BUSY -2 | |
8feaeca2 | 35 | #else |
86425bed | 36 | static inline void smp_init_pseries(void) { }; |
8feaeca2 ME |
37 | #endif |
38 | ||
d739d2ca | 39 | extern void pseries_kexec_cpu_down(int crash_shutdown, int secondary); |
dce623e0 | 40 | |
3d5134ee BH |
41 | extern void pSeries_final_fixup(void); |
42 | ||
5d30bf30 MA |
43 | /* Poweron flag used for enabling auto ups restart */ |
44 | extern unsigned long rtas_poweron_auto; | |
45 | ||
4d2bb3f5 BH |
46 | /* Provided by HVC VIO */ |
47 | extern void hvc_vio_init_early(void); | |
21cf9133 | 48 | |
20648974 NF |
49 | /* Dynamic logical Partitioning/Mobility */ |
50 | extern void dlpar_free_cc_nodes(struct device_node *); | |
51 | extern void dlpar_free_cc_property(struct property *); | |
d6f1e7ab BR |
52 | extern struct device_node *dlpar_configure_connector(__be32, |
53 | struct device_node *); | |
215ee763 | 54 | extern int dlpar_attach_node(struct device_node *, struct device_node *); |
20648974 | 55 | extern int dlpar_detach_node(struct device_node *); |
5e51d3c2 NF |
56 | extern int dlpar_acquire_drc(u32 drc_index); |
57 | extern int dlpar_release_drc(u32 drc_index); | |
20648974 | 58 | |
fd12527a NF |
59 | void queue_hotplug_event(struct pseries_hp_errorlog *hp_errlog); |
60 | int handle_dlpar_errorlog(struct pseries_hp_errorlog *hp_errlog); | |
61 | ||
999e2dad NF |
62 | #ifdef CONFIG_MEMORY_HOTPLUG |
63 | int dlpar_memory(struct pseries_hp_errorlog *hp_elog); | |
4c5d87db | 64 | int dlpar_hp_pmem(struct pseries_hp_errorlog *hp_elog); |
999e2dad NF |
65 | #else |
66 | static inline int dlpar_memory(struct pseries_hp_errorlog *hp_elog) | |
67 | { | |
68 | return -EOPNOTSUPP; | |
69 | } | |
4c5d87db OH |
70 | static inline int dlpar_hp_pmem(struct pseries_hp_errorlog *hp_elog) |
71 | { | |
72 | return -EOPNOTSUPP; | |
73 | } | |
999e2dad | 74 | #endif |
20648974 | 75 | |
ac713800 NF |
76 | #ifdef CONFIG_HOTPLUG_CPU |
77 | int dlpar_cpu(struct pseries_hp_errorlog *hp_elog); | |
78 | #else | |
79 | static inline int dlpar_cpu(struct pseries_hp_errorlog *hp_elog) | |
80 | { | |
81 | return -EOPNOTSUPP; | |
82 | } | |
83 | #endif | |
84 | ||
d82fb31a KSS |
85 | /* PCI root bridge prepare function override for pseries */ |
86 | struct pci_host_bridge; | |
87 | int pseries_root_bridge_prepare(struct pci_host_bridge *bridge); | |
88 | ||
38ae9ec4 DA |
89 | extern struct pci_controller_ops pseries_pci_controller_ops; |
90 | ||
a5d86257 AB |
91 | unsigned long pseries_memory_block_size(void); |
92 | ||
8f272a5d ME |
93 | extern int CMO_PrPSP; |
94 | extern int CMO_SecPSP; | |
95 | extern unsigned long CMO_PageSize; | |
96 | ||
97 | static inline int cmo_get_primary_psp(void) | |
98 | { | |
99 | return CMO_PrPSP; | |
100 | } | |
101 | ||
102 | static inline int cmo_get_secondary_psp(void) | |
103 | { | |
104 | return CMO_SecPSP; | |
105 | } | |
106 | ||
107 | static inline unsigned long cmo_get_page_size(void) | |
108 | { | |
109 | return CMO_PageSize; | |
110 | } | |
111 | ||
e2d59152 ME |
112 | int dlpar_workqueue_init(void); |
113 | ||
921bc6cf ME |
114 | void pseries_setup_rfi_flush(void); |
115 | ||
577830b0 | 116 | #endif /* _PSERIES_PSERIES_H */ |