74 lines · c
1/* SPDX-License-Identifier: MIT */2/* Copyright (C) 2006-2017 Oracle Corporation */3 4#ifndef __HGSMI_DEFS_H__5#define __HGSMI_DEFS_H__6 7/* Buffer sequence type mask. */8#define HGSMI_BUFFER_HEADER_F_SEQ_MASK 0x039/* Single buffer, not a part of a sequence. */10#define HGSMI_BUFFER_HEADER_F_SEQ_SINGLE 0x0011/* The first buffer in a sequence. */12#define HGSMI_BUFFER_HEADER_F_SEQ_START 0x0113/* A middle buffer in a sequence. */14#define HGSMI_BUFFER_HEADER_F_SEQ_CONTINUE 0x0215/* The last buffer in a sequence. */16#define HGSMI_BUFFER_HEADER_F_SEQ_END 0x0317 18/* 16 bytes buffer header. */19struct hgsmi_buffer_header {20 u32 data_size; /* Size of data that follows the header. */21 u8 flags; /* HGSMI_BUFFER_HEADER_F_* */22 u8 channel; /* The channel the data must be routed to. */23 u16 channel_info; /* Opaque to the HGSMI, used by the channel. */24 25 union {26 /* Opaque placeholder to make the union 8 bytes. */27 u8 header_data[8];28 29 /* HGSMI_BUFFER_HEADER_F_SEQ_SINGLE */30 struct {31 u32 reserved1; /* A reserved field, initialize to 0. */32 u32 reserved2; /* A reserved field, initialize to 0. */33 } buffer;34 35 /* HGSMI_BUFFER_HEADER_F_SEQ_START */36 struct {37 /* Must be the same for all buffers in the sequence. */38 u32 sequence_number;39 /* The total size of the sequence. */40 u32 sequence_size;41 } sequence_start;42 43 /*44 * HGSMI_BUFFER_HEADER_F_SEQ_CONTINUE and45 * HGSMI_BUFFER_HEADER_F_SEQ_END46 */47 struct {48 /* Must be the same for all buffers in the sequence. */49 u32 sequence_number;50 /* Data offset in the entire sequence. */51 u32 sequence_offset;52 } sequence_continue;53 } u;54} __packed;55 56/* 8 bytes buffer tail. */57struct hgsmi_buffer_tail {58 /* Reserved, must be initialized to 0. */59 u32 reserved;60 /*61 * One-at-a-Time Hash: https://www.burtleburtle.net/bob/hash/doobs.html62 * Over the header, offset and for first 4 bytes of the tail.63 */64 u32 checksum;65} __packed;66 67/*68 * The size of the array of channels. Array indexes are u8.69 * Note: the value must not be changed.70 */71#define HGSMI_NUMBER_OF_CHANNELS 0x10072 73#endif74