Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2)  * Copyright © 2014 Red Hat Inc.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  * Permission is hereby granted, free of charge, to any person obtaining a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  * copy of this software and associated documentation files (the "Software"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  * to deal in the Software without restriction, including without limitation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7)  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)  * and/or sell copies of the Software, and to permit persons to whom the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9)  * Software is furnished to do so, subject to the following conditions:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11)  * The above copyright notice and this permission notice shall be included in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12)  * all copies or substantial portions of the Software.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14)  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15)  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16)  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17)  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18)  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19)  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20)  * OTHER DEALINGS IN THE SOFTWARE.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) #ifndef DRM_DISPLAYID_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) #define DRM_DISPLAYID_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) #define DATA_BLOCK_PRODUCT_ID 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) #define DATA_BLOCK_DISPLAY_PARAMETERS 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) #define DATA_BLOCK_COLOR_CHARACTERISTICS 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) #define DATA_BLOCK_TYPE_1_DETAILED_TIMING 0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) #define DATA_BLOCK_TYPE_2_DETAILED_TIMING 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) #define DATA_BLOCK_TYPE_3_SHORT_TIMING 0x05
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) #define DATA_BLOCK_TYPE_4_DMT_TIMING 0x06
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) #define DATA_BLOCK_VESA_TIMING 0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) #define DATA_BLOCK_CEA_TIMING 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) #define DATA_BLOCK_VIDEO_TIMING_RANGE 0x09
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) #define DATA_BLOCK_PRODUCT_SERIAL_NUMBER 0x0a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) #define DATA_BLOCK_GP_ASCII_STRING 0x0b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) #define DATA_BLOCK_DISPLAY_DEVICE_DATA 0x0c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) #define DATA_BLOCK_INTERFACE_POWER_SEQUENCING 0x0d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) #define DATA_BLOCK_TRANSFER_CHARACTERISTICS 0x0e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) #define DATA_BLOCK_DISPLAY_INTERFACE 0x0f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) #define DATA_BLOCK_STEREO_DISPLAY_INTERFACE 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) #define DATA_BLOCK_TILED_DISPLAY 0x12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) #define DATA_BLOCK_CTA 0x81
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) #define DATA_BLOCK_VENDOR_SPECIFIC 0x7f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) #define PRODUCT_TYPE_EXTENSION 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) #define PRODUCT_TYPE_TEST 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) #define PRODUCT_TYPE_PANEL 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) #define PRODUCT_TYPE_MONITOR 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) #define PRODUCT_TYPE_TV 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) #define PRODUCT_TYPE_REPEATER 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) #define PRODUCT_TYPE_DIRECT_DRIVE 6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) struct displayid_hdr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 	u8 rev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 	u8 bytes;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 	u8 prod_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 	u8 ext_count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) struct displayid_block {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 	u8 tag;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 	u8 rev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 	u8 num_bytes;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) struct displayid_tiled_block {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 	struct displayid_block base;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 	u8 tile_cap;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 	u8 topo[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 	u8 tile_size[4];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 	u8 tile_pixel_bezel[5];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 	u8 topology_id[8];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) struct displayid_detailed_timings_1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 	u8 pixel_clock[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 	u8 flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 	u8 hactive[2];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 	u8 hblank[2];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 	u8 hsync[2];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 	u8 hsw[2];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 	u8 vactive[2];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 	u8 vblank[2];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 	u8 vsync[2];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 	u8 vsw[2];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) struct displayid_detailed_timing_block {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 	struct displayid_block base;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 	struct displayid_detailed_timings_1 timings[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) #define for_each_displayid_db(displayid, block, idx, length) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 	for ((block) = (struct displayid_block *)&(displayid)[idx]; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 	     (idx) + sizeof(struct displayid_block) <= (length) && \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 	     (idx) + sizeof(struct displayid_block) + (block)->num_bytes <= (length) && \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 	     (block)->num_bytes > 0; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 	     (idx) += sizeof(struct displayid_block) + (block)->num_bytes, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 	     (block) = (struct displayid_block *)&(displayid)[idx])
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) #endif