root/drivers/gpu/drm/vboxvideo/hgsmi_defs.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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     0x03
   9 /* Single buffer, not a part of a sequence. */
  10 #define HGSMI_BUFFER_HEADER_F_SEQ_SINGLE   0x00
  11 /* The first buffer in a sequence. */
  12 #define HGSMI_BUFFER_HEADER_F_SEQ_START    0x01
  13 /* A middle buffer in a sequence. */
  14 #define HGSMI_BUFFER_HEADER_F_SEQ_CONTINUE 0x02
  15 /* The last buffer in a sequence. */
  16 #define HGSMI_BUFFER_HEADER_F_SEQ_END      0x03
  17 
  18 /* 16 bytes buffer header. */
  19 struct 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 and
  45                  * HGSMI_BUFFER_HEADER_F_SEQ_END
  46                  */
  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. */
  57 struct hgsmi_buffer_tail {
  58         /* Reserved, must be initialized to 0. */
  59         u32 reserved;
  60         /*
  61          * One-at-a-Time Hash: http://www.burtleburtle.net/bob/hash/doobs.html
  62          * 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 0x100
  72 
  73 #endif

/* [<][>][^][v][top][bottom][index][help] */