]>
Commit | Line | Data |
---|---|---|
af831145 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
19528057 SW |
2 | /* |
3 | * Copyright (C) 2010 - 2015 UNISYS CORPORATION | |
12e364b9 | 4 | * All rights reserved. |
12e364b9 KC |
5 | */ |
6 | ||
7 | #ifndef __VBUSCHANNEL_H__ | |
8 | #define __VBUSCHANNEL_H__ | |
9 | ||
19528057 SW |
10 | /* |
11 | * The vbus channel is the channel area provided via the BUS_CREATE controlvm | |
12 | * message for each virtual bus. This channel area is provided to both server | |
13 | * and client ends of the bus. The channel header area is initialized by | |
14 | * the server, and the remaining information is filled in by the client. | |
15 | * We currently use this for the client to provide various information about | |
16 | * the client devices and client drivers for the server end to see. | |
12e364b9 | 17 | */ |
19528057 | 18 | |
90addb02 | 19 | #include <linux/uuid.h> |
93d3ad90 | 20 | #include <linux/visorbus.h> |
12e364b9 KC |
21 | |
22 | /* {193b331b-c58f-11da-95a9-00e08161165f} */ | |
b32c5cb8 AS |
23 | #define VISOR_VBUS_CHANNEL_GUID \ |
24 | GUID_INIT(0x193b331b, 0xc58f, 0x11da, \ | |
25 | 0x95, 0xa9, 0x0, 0xe0, 0x81, 0x61, 0x16, 0x5f) | |
12e364b9 | 26 | |
19528057 SW |
27 | /* |
28 | * Must increment this whenever you insert or delete fields within this channel | |
e3f8f77c EA |
29 | * struct. Also increment whenever you change the meaning of fields within this |
30 | * channel struct so as to break pre-existing software. Note that you can | |
31 | * usually add fields to the END of the channel struct withOUT needing to | |
32 | * increment this. | |
33 | */ | |
73472174 | 34 | #define VISOR_VBUS_CHANNEL_VERSIONID 1 |
12e364b9 | 35 | |
6f77a2ee MF |
36 | /* |
37 | * struct visor_vbus_deviceinfo | |
19528057 SW |
38 | * @devtype: Short string identifying the device type. |
39 | * @drvname: Driver .sys file name. | |
40 | * @infostrs: Kernel vversion. | |
41 | * @reserved: Pad size to 256 bytes. | |
42 | * | |
b5b46dd7 SW |
43 | * An array of this struct is present in the channel area for each vbus. It is |
44 | * filled in by the client side to provide info about the device and driver from | |
45 | * the client's perspective. | |
b6d0fa15 | 46 | */ |
55c71eba | 47 | struct visor_vbus_deviceinfo { |
19528057 SW |
48 | u8 devtype[16]; |
49 | u8 drvname[16]; | |
50 | u8 infostrs[96]; | |
51 | u8 reserved[128]; | |
2c97273e | 52 | } __packed; |
b6d0fa15 | 53 | |
19528057 SW |
54 | /* |
55 | * struct visor_vbus_headerinfo | |
56 | * @struct_bytes: Size of this struct in bytes. | |
57 | * @device_info_struct_bytes: Size of VISOR_VBUS_DEVICEINFO. | |
58 | * @dev_info_count: Num of items in DevInfo member. This is the | |
59 | * allocated size. | |
60 | * @chp_info_offset: Byte offset from beginning of this struct to the | |
61 | * ChpInfo struct. | |
62 | * @bus_info_offset: Byte offset from beginning of this struct to the | |
63 | * BusInfo struct. | |
64 | * @dev_info_offset: Byte offset from beginning of this struct to the | |
65 | * DevInfo array. | |
b5b46dd7 | 66 | * @reserved: Natural alignment. |
19528057 | 67 | */ |
55c71eba | 68 | struct visor_vbus_headerinfo { |
19528057 SW |
69 | u32 struct_bytes; |
70 | u32 device_info_struct_bytes; | |
71 | u32 dev_info_count; | |
72 | u32 chp_info_offset; | |
73 | u32 bus_info_offset; | |
74 | u32 dev_info_offset; | |
c242233e | 75 | u8 reserved[104]; |
2c97273e | 76 | } __packed; |
12e364b9 | 77 | |
19528057 SW |
78 | /* |
79 | * struct visor_vbus_channel | |
80 | * @channel_header: Initialized by server. | |
81 | * @hdr_info: Initialized by server. | |
82 | * @chp_info: Describes client chipset device and driver. | |
83 | * @bus_info: Describes client bus device and driver. | |
84 | * @dev_info: Describes client device and driver for each device on the | |
85 | * bus. | |
86 | */ | |
55c71eba | 87 | struct visor_vbus_channel { |
19528057 SW |
88 | struct channel_header channel_header; |
89 | struct visor_vbus_headerinfo hdr_info; | |
55c71eba | 90 | struct visor_vbus_deviceinfo chp_info; |
55c71eba | 91 | struct visor_vbus_deviceinfo bus_info; |
55c71eba | 92 | struct visor_vbus_deviceinfo dev_info[0]; |
2c97273e | 93 | } __packed; |
12e364b9 KC |
94 | |
95 | #endif |