0001
0002
0003
0004
0005
0006 #ifndef __LINUX_GUD_H
0007 #define __LINUX_GUD_H
0008
0009 #include <linux/types.h>
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039 struct gud_display_descriptor_req {
0040 __le32 magic;
0041 #define GUD_DISPLAY_MAGIC 0x1d50614d
0042 __u8 version;
0043 __le32 flags;
0044 #define GUD_DISPLAY_FLAG_STATUS_ON_SET BIT(0)
0045 #define GUD_DISPLAY_FLAG_FULL_UPDATE BIT(1)
0046 __u8 compression;
0047 #define GUD_COMPRESSION_LZ4 BIT(0)
0048 __le32 max_buffer_size;
0049 __le32 min_width;
0050 __le32 max_width;
0051 __le32 min_height;
0052 __le32 max_height;
0053 } __packed;
0054
0055
0056
0057
0058
0059
0060 struct gud_property_req {
0061 __le16 prop;
0062 __le64 val;
0063 } __packed;
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081 struct gud_display_mode_req {
0082 __le32 clock;
0083 __le16 hdisplay;
0084 __le16 hsync_start;
0085 __le16 hsync_end;
0086 __le16 htotal;
0087 __le16 vdisplay;
0088 __le16 vsync_start;
0089 __le16 vsync_end;
0090 __le16 vtotal;
0091 __le32 flags;
0092 #define GUD_DISPLAY_MODE_FLAG_PHSYNC BIT(0)
0093 #define GUD_DISPLAY_MODE_FLAG_NHSYNC BIT(1)
0094 #define GUD_DISPLAY_MODE_FLAG_PVSYNC BIT(2)
0095 #define GUD_DISPLAY_MODE_FLAG_NVSYNC BIT(3)
0096 #define GUD_DISPLAY_MODE_FLAG_INTERLACE BIT(4)
0097 #define GUD_DISPLAY_MODE_FLAG_DBLSCAN BIT(5)
0098 #define GUD_DISPLAY_MODE_FLAG_CSYNC BIT(6)
0099 #define GUD_DISPLAY_MODE_FLAG_PCSYNC BIT(7)
0100 #define GUD_DISPLAY_MODE_FLAG_NCSYNC BIT(8)
0101 #define GUD_DISPLAY_MODE_FLAG_HSKEW BIT(9)
0102
0103 #define GUD_DISPLAY_MODE_FLAG_DBLCLK BIT(12)
0104 #define GUD_DISPLAY_MODE_FLAG_CLKDIV2 BIT(13)
0105 #define GUD_DISPLAY_MODE_FLAG_USER_MASK \
0106 (GUD_DISPLAY_MODE_FLAG_PHSYNC | GUD_DISPLAY_MODE_FLAG_NHSYNC | \
0107 GUD_DISPLAY_MODE_FLAG_PVSYNC | GUD_DISPLAY_MODE_FLAG_NVSYNC | \
0108 GUD_DISPLAY_MODE_FLAG_INTERLACE | GUD_DISPLAY_MODE_FLAG_DBLSCAN | \
0109 GUD_DISPLAY_MODE_FLAG_CSYNC | GUD_DISPLAY_MODE_FLAG_PCSYNC | \
0110 GUD_DISPLAY_MODE_FLAG_NCSYNC | GUD_DISPLAY_MODE_FLAG_HSKEW | \
0111 GUD_DISPLAY_MODE_FLAG_DBLCLK | GUD_DISPLAY_MODE_FLAG_CLKDIV2)
0112
0113 #define GUD_DISPLAY_MODE_FLAG_PREFERRED BIT(10)
0114 } __packed;
0115
0116
0117
0118
0119
0120
0121
0122
0123
0124
0125 struct gud_connector_descriptor_req {
0126 __u8 connector_type;
0127 #define GUD_CONNECTOR_TYPE_PANEL 0
0128 #define GUD_CONNECTOR_TYPE_VGA 1
0129 #define GUD_CONNECTOR_TYPE_COMPOSITE 2
0130 #define GUD_CONNECTOR_TYPE_SVIDEO 3
0131 #define GUD_CONNECTOR_TYPE_COMPONENT 4
0132 #define GUD_CONNECTOR_TYPE_DVI 5
0133 #define GUD_CONNECTOR_TYPE_DISPLAYPORT 6
0134 #define GUD_CONNECTOR_TYPE_HDMI 7
0135 __le32 flags;
0136 #define GUD_CONNECTOR_FLAGS_POLL_STATUS BIT(0)
0137 #define GUD_CONNECTOR_FLAGS_INTERLACE BIT(1)
0138 #define GUD_CONNECTOR_FLAGS_DOUBLESCAN BIT(2)
0139 } __packed;
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149
0150
0151
0152
0153
0154
0155 struct gud_set_buffer_req {
0156 __le32 x;
0157 __le32 y;
0158 __le32 width;
0159 __le32 height;
0160 __le32 length;
0161 __u8 compression;
0162 __le32 compressed_length;
0163 } __packed;
0164
0165
0166
0167
0168
0169
0170
0171
0172
0173
0174 struct gud_state_req {
0175 struct gud_display_mode_req mode;
0176 __u8 format;
0177 __u8 connector;
0178 struct gud_property_req properties[];
0179 } __packed;
0180
0181
0182
0183
0184 #define GUD_PROPERTY_TV_LEFT_MARGIN 1
0185 #define GUD_PROPERTY_TV_RIGHT_MARGIN 2
0186 #define GUD_PROPERTY_TV_TOP_MARGIN 3
0187 #define GUD_PROPERTY_TV_BOTTOM_MARGIN 4
0188 #define GUD_PROPERTY_TV_MODE 5
0189
0190 #define GUD_PROPERTY_TV_BRIGHTNESS 6
0191
0192 #define GUD_PROPERTY_TV_CONTRAST 7
0193
0194 #define GUD_PROPERTY_TV_FLICKER_REDUCTION 8
0195
0196 #define GUD_PROPERTY_TV_OVERSCAN 9
0197
0198 #define GUD_PROPERTY_TV_SATURATION 10
0199
0200 #define GUD_PROPERTY_TV_HUE 11
0201
0202
0203
0204
0205
0206
0207
0208
0209
0210 #define GUD_PROPERTY_BACKLIGHT_BRIGHTNESS 12
0211
0212
0213
0214
0215
0216
0217
0218
0219
0220 #define GUD_PROPERTY_ROTATION 50
0221 #define GUD_ROTATION_0 BIT(0)
0222 #define GUD_ROTATION_90 BIT(1)
0223 #define GUD_ROTATION_180 BIT(2)
0224 #define GUD_ROTATION_270 BIT(3)
0225 #define GUD_ROTATION_REFLECT_X BIT(4)
0226 #define GUD_ROTATION_REFLECT_Y BIT(5)
0227 #define GUD_ROTATION_MASK (GUD_ROTATION_0 | GUD_ROTATION_90 | \
0228 GUD_ROTATION_180 | GUD_ROTATION_270 | \
0229 GUD_ROTATION_REFLECT_X | GUD_ROTATION_REFLECT_Y)
0230
0231
0232
0233
0234 #define GUD_REQ_GET_STATUS 0x00
0235
0236 #define GUD_STATUS_OK 0x00
0237 #define GUD_STATUS_BUSY 0x01
0238 #define GUD_STATUS_REQUEST_NOT_SUPPORTED 0x02
0239 #define GUD_STATUS_PROTOCOL_ERROR 0x03
0240 #define GUD_STATUS_INVALID_PARAMETER 0x04
0241 #define GUD_STATUS_ERROR 0x05
0242
0243
0244 #define GUD_REQ_GET_DESCRIPTOR 0x01
0245
0246
0247 #define GUD_REQ_GET_FORMATS 0x40
0248 #define GUD_FORMATS_MAX_NUM 32
0249 #define GUD_PIXEL_FORMAT_R1 0x01
0250 #define GUD_PIXEL_FORMAT_R8 0x08
0251 #define GUD_PIXEL_FORMAT_XRGB1111 0x20
0252 #define GUD_PIXEL_FORMAT_RGB332 0x30
0253 #define GUD_PIXEL_FORMAT_RGB565 0x40
0254 #define GUD_PIXEL_FORMAT_RGB888 0x50
0255 #define GUD_PIXEL_FORMAT_XRGB8888 0x80
0256 #define GUD_PIXEL_FORMAT_ARGB8888 0x81
0257
0258
0259
0260
0261
0262 #define GUD_REQ_GET_PROPERTIES 0x41
0263 #define GUD_PROPERTIES_MAX_NUM 32
0264
0265
0266
0267
0268 #define GUD_REQ_GET_CONNECTORS 0x50
0269 #define GUD_CONNECTORS_MAX_NUM 32
0270
0271
0272
0273
0274
0275 #define GUD_REQ_GET_CONNECTOR_PROPERTIES 0x51
0276 #define GUD_CONNECTOR_PROPERTIES_MAX_NUM 32
0277
0278
0279
0280
0281
0282
0283 #define GUD_REQ_GET_CONNECTOR_TV_MODE_VALUES 0x52
0284 #define GUD_CONNECTOR_TV_MODE_NAME_LEN 16
0285 #define GUD_CONNECTOR_TV_MODE_MAX_NUM 16
0286
0287
0288 #define GUD_REQ_SET_CONNECTOR_FORCE_DETECT 0x53
0289
0290
0291
0292
0293
0294
0295
0296
0297 #define GUD_REQ_GET_CONNECTOR_STATUS 0x54
0298 #define GUD_CONNECTOR_STATUS_DISCONNECTED 0x00
0299 #define GUD_CONNECTOR_STATUS_CONNECTED 0x01
0300 #define GUD_CONNECTOR_STATUS_UNKNOWN 0x02
0301 #define GUD_CONNECTOR_STATUS_CONNECTED_MASK 0x03
0302 #define GUD_CONNECTOR_STATUS_CHANGED BIT(7)
0303
0304
0305
0306
0307
0308
0309
0310
0311
0312
0313 #define GUD_REQ_GET_CONNECTOR_MODES 0x55
0314 #define GUD_CONNECTOR_MAX_NUM_MODES 128
0315
0316
0317 #define GUD_REQ_GET_CONNECTOR_EDID 0x56
0318 #define GUD_CONNECTOR_MAX_EDID_LEN 2048
0319
0320
0321 #define GUD_REQ_SET_BUFFER 0x60
0322
0323
0324 #define GUD_REQ_SET_STATE_CHECK 0x61
0325
0326
0327 #define GUD_REQ_SET_STATE_COMMIT 0x62
0328
0329
0330 #define GUD_REQ_SET_CONTROLLER_ENABLE 0x63
0331
0332
0333 #define GUD_REQ_SET_DISPLAY_ENABLE 0x64
0334
0335 #endif