diff options
Diffstat (limited to 'include/asm-powerpc/iseries/vio.h')
-rw-r--r-- | include/asm-powerpc/iseries/vio.h | 116 |
1 files changed, 112 insertions, 4 deletions
diff --git a/include/asm-powerpc/iseries/vio.h b/include/asm-powerpc/iseries/vio.h index 7a95d296abd1..f9ac0d00b951 100644 --- a/include/asm-powerpc/iseries/vio.h +++ b/include/asm-powerpc/iseries/vio.h | |||
@@ -51,6 +51,116 @@ | |||
51 | */ | 51 | */ |
52 | #define VIO_MAX_SUBTYPES 8 | 52 | #define VIO_MAX_SUBTYPES 8 |
53 | 53 | ||
54 | #define VIOMAXBLOCKDMA 12 | ||
55 | |||
56 | struct open_data { | ||
57 | u64 disk_size; | ||
58 | u16 max_disk; | ||
59 | u16 cylinders; | ||
60 | u16 tracks; | ||
61 | u16 sectors; | ||
62 | u16 bytes_per_sector; | ||
63 | }; | ||
64 | |||
65 | struct rw_data { | ||
66 | u64 offset; | ||
67 | struct { | ||
68 | u32 token; | ||
69 | u32 reserved; | ||
70 | u64 len; | ||
71 | } dma_info[VIOMAXBLOCKDMA]; | ||
72 | }; | ||
73 | |||
74 | struct vioblocklpevent { | ||
75 | struct HvLpEvent event; | ||
76 | u32 reserved; | ||
77 | u16 version; | ||
78 | u16 sub_result; | ||
79 | u16 disk; | ||
80 | u16 flags; | ||
81 | union { | ||
82 | struct open_data open_data; | ||
83 | struct rw_data rw_data; | ||
84 | u64 changed; | ||
85 | } u; | ||
86 | }; | ||
87 | |||
88 | #define vioblockflags_ro 0x0001 | ||
89 | |||
90 | enum vioblocksubtype { | ||
91 | vioblockopen = 0x0001, | ||
92 | vioblockclose = 0x0002, | ||
93 | vioblockread = 0x0003, | ||
94 | vioblockwrite = 0x0004, | ||
95 | vioblockflush = 0x0005, | ||
96 | vioblockcheck = 0x0007 | ||
97 | }; | ||
98 | |||
99 | struct viocdlpevent { | ||
100 | struct HvLpEvent event; | ||
101 | u32 reserved; | ||
102 | u16 version; | ||
103 | u16 sub_result; | ||
104 | u16 disk; | ||
105 | u16 flags; | ||
106 | u32 token; | ||
107 | u64 offset; /* On open, max number of disks */ | ||
108 | u64 len; /* On open, size of the disk */ | ||
109 | u32 block_size; /* Only set on open */ | ||
110 | u32 media_size; /* Only set on open */ | ||
111 | }; | ||
112 | |||
113 | enum viocdsubtype { | ||
114 | viocdopen = 0x0001, | ||
115 | viocdclose = 0x0002, | ||
116 | viocdread = 0x0003, | ||
117 | viocdwrite = 0x0004, | ||
118 | viocdlockdoor = 0x0005, | ||
119 | viocdgetinfo = 0x0006, | ||
120 | viocdcheck = 0x0007 | ||
121 | }; | ||
122 | |||
123 | struct viotapelpevent { | ||
124 | struct HvLpEvent event; | ||
125 | u32 reserved; | ||
126 | u16 version; | ||
127 | u16 sub_type_result; | ||
128 | u16 tape; | ||
129 | u16 flags; | ||
130 | u32 token; | ||
131 | u64 len; | ||
132 | union { | ||
133 | struct { | ||
134 | u32 tape_op; | ||
135 | u32 count; | ||
136 | } op; | ||
137 | struct { | ||
138 | u32 type; | ||
139 | u32 resid; | ||
140 | u32 dsreg; | ||
141 | u32 gstat; | ||
142 | u32 erreg; | ||
143 | u32 file_no; | ||
144 | u32 block_no; | ||
145 | } get_status; | ||
146 | struct { | ||
147 | u32 block_no; | ||
148 | } get_pos; | ||
149 | } u; | ||
150 | }; | ||
151 | |||
152 | enum viotapesubtype { | ||
153 | viotapeopen = 0x0001, | ||
154 | viotapeclose = 0x0002, | ||
155 | viotaperead = 0x0003, | ||
156 | viotapewrite = 0x0004, | ||
157 | viotapegetinfo = 0x0005, | ||
158 | viotapeop = 0x0006, | ||
159 | viotapegetpos = 0x0007, | ||
160 | viotapesetpos = 0x0008, | ||
161 | viotapegetstatus = 0x0009 | ||
162 | }; | ||
163 | |||
54 | /* | 164 | /* |
55 | * Each subtype can register a handler to process their events. | 165 | * Each subtype can register a handler to process their events. |
56 | * The handler must have this interface. | 166 | * The handler must have this interface. |
@@ -68,6 +178,8 @@ extern void vio_set_hostlp(void); | |||
68 | extern void *vio_get_event_buffer(int subtype); | 178 | extern void *vio_get_event_buffer(int subtype); |
69 | extern void vio_free_event_buffer(int subtype, void *buffer); | 179 | extern void vio_free_event_buffer(int subtype, void *buffer); |
70 | 180 | ||
181 | extern struct vio_dev *vio_create_viodasd(u32 unit); | ||
182 | |||
71 | extern HvLpIndex viopath_hostLp; | 183 | extern HvLpIndex viopath_hostLp; |
72 | extern HvLpIndex viopath_ourLp; | 184 | extern HvLpIndex viopath_ourLp; |
73 | 185 | ||
@@ -150,8 +262,4 @@ enum viochar_rc { | |||
150 | viochar_rc_ebusy = 1 | 262 | viochar_rc_ebusy = 1 |
151 | }; | 263 | }; |
152 | 264 | ||
153 | struct device; | ||
154 | |||
155 | extern struct device *iSeries_vio_dev; | ||
156 | |||
157 | #endif /* _ASM_POWERPC_ISERIES_VIO_H */ | 265 | #endif /* _ASM_POWERPC_ISERIES_VIO_H */ |