Commit | Line | Data |
---|---|---|
45dc76aa SR |
1 | /* |
2 | * This file contains the "hypervisor call" interface which is used to | |
3 | * drive the hypervisor from SLIC. | |
4 | */ | |
ecb3ca27 KD |
5 | #ifndef _ASM_POWERPC_ISERIES_HV_CALL_XM_H |
6 | #define _ASM_POWERPC_ISERIES_HV_CALL_XM_H | |
1da177e4 | 7 | |
50592f5d | 8 | #include <asm/iseries/hv_call_sc.h> |
1ec65d76 | 9 | #include <asm/iseries/hv_types.h> |
1da177e4 | 10 | |
1da177e4 LT |
11 | #define HvCallXmGetTceTableParms HvCallXm + 0 |
12 | #define HvCallXmTestBus HvCallXm + 1 | |
13 | #define HvCallXmConnectBusUnit HvCallXm + 2 | |
14 | #define HvCallXmLoadTod HvCallXm + 8 | |
15 | #define HvCallXmTestBusUnit HvCallXm + 9 | |
16 | #define HvCallXmSetTce HvCallXm + 11 | |
17 | #define HvCallXmSetTces HvCallXm + 13 | |
18 | ||
e7eb22d2 SR |
19 | /* |
20 | * Structure passed to HvCallXm_getTceTableParms | |
21 | */ | |
22 | struct iommu_table_cb { | |
23 | unsigned long itc_busno; /* Bus number for this tce table */ | |
24 | unsigned long itc_start; /* Will be NULL for secondary */ | |
25 | unsigned long itc_totalsize; /* Size (in pages) of whole table */ | |
26 | unsigned long itc_offset; /* Index into real tce table of the | |
27 | start of our section */ | |
28 | unsigned long itc_size; /* Size (in pages) of our section */ | |
29 | unsigned long itc_index; /* Index of this tce table */ | |
30 | unsigned short itc_maxtables; /* Max num of tables for partition */ | |
31 | unsigned char itc_virtbus; /* Flag to indicate virtual bus */ | |
32 | unsigned char itc_slotno; /* IOA Tce Slot Index */ | |
33 | unsigned char itc_rsvd[4]; | |
34 | }; | |
35 | ||
45dc76aa | 36 | static inline void HvCallXm_getTceTableParms(u64 cb) |
1da177e4 LT |
37 | { |
38 | HvCall1(HvCallXmGetTceTableParms, cb); | |
1da177e4 | 39 | } |
45dc76aa SR |
40 | |
41 | static inline u64 HvCallXm_setTce(u64 tceTableToken, u64 tceOffset, u64 tce) | |
42 | { | |
6b7feecb | 43 | return HvCall3(HvCallXmSetTce, tceTableToken, tceOffset, tce); |
1da177e4 | 44 | } |
45dc76aa SR |
45 | |
46 | static inline u64 HvCallXm_setTces(u64 tceTableToken, u64 tceOffset, | |
47 | u64 numTces, u64 tce1, u64 tce2, u64 tce3, u64 tce4) | |
48 | { | |
6b7feecb SR |
49 | return HvCall7(HvCallXmSetTces, tceTableToken, tceOffset, numTces, |
50 | tce1, tce2, tce3, tce4); | |
1da177e4 | 51 | } |
45dc76aa SR |
52 | |
53 | static inline u64 HvCallXm_testBus(u16 busNumber) | |
1da177e4 | 54 | { |
6b7feecb | 55 | return HvCall1(HvCallXmTestBus, busNumber); |
1da177e4 | 56 | } |
45dc76aa SR |
57 | |
58 | static inline u64 HvCallXm_testBusUnit(u16 busNumber, u8 subBusNumber, | |
59 | u8 deviceId) | |
1da177e4 | 60 | { |
6b7feecb SR |
61 | return HvCall2(HvCallXmTestBusUnit, busNumber, |
62 | (subBusNumber << 8) | deviceId); | |
1da177e4 | 63 | } |
45dc76aa SR |
64 | |
65 | static inline u64 HvCallXm_connectBusUnit(u16 busNumber, u8 subBusNumber, | |
66 | u8 deviceId, u64 interruptToken) | |
1da177e4 | 67 | { |
6b7feecb SR |
68 | return HvCall5(HvCallXmConnectBusUnit, busNumber, |
69 | (subBusNumber << 8) | deviceId, interruptToken, 0, | |
70 | 0 /* HvLpConfig::mapDsaToQueueIndex(HvLpDSA(busNumber, xBoard, xCard)) */); | |
1da177e4 | 71 | } |
45dc76aa SR |
72 | |
73 | static inline u64 HvCallXm_loadTod(void) | |
1da177e4 | 74 | { |
6b7feecb | 75 | return HvCall0(HvCallXmLoadTod); |
1da177e4 | 76 | } |
1da177e4 | 77 | |
ecb3ca27 | 78 | #endif /* _ASM_POWERPC_ISERIES_HV_CALL_XM_H */ |