1fb4d8502Sjsg /* 2fb4d8502Sjsg * Copyright 2012-15 Advanced Micro Devices, Inc. 3fb4d8502Sjsg * 4fb4d8502Sjsg * Permission is hereby granted, free of charge, to any person obtaining a 5fb4d8502Sjsg * copy of this software and associated documentation files (the "Software"), 6fb4d8502Sjsg * to deal in the Software without restriction, including without limitation 7fb4d8502Sjsg * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8fb4d8502Sjsg * and/or sell copies of the Software, and to permit persons to whom the 9fb4d8502Sjsg * Software is furnished to do so, subject to the following conditions: 10fb4d8502Sjsg * 11fb4d8502Sjsg * The above copyright notice and this permission notice shall be included in 12fb4d8502Sjsg * all copies or substantial portions of the Software. 13fb4d8502Sjsg * 14fb4d8502Sjsg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15fb4d8502Sjsg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16fb4d8502Sjsg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17fb4d8502Sjsg * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 18fb4d8502Sjsg * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 19fb4d8502Sjsg * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 20fb4d8502Sjsg * OTHER DEALINGS IN THE SOFTWARE. 21fb4d8502Sjsg * 22fb4d8502Sjsg * Authors: AMD 23fb4d8502Sjsg * 24fb4d8502Sjsg */ 25fb4d8502Sjsg 26fb4d8502Sjsg #ifndef __DAL_DPCD_DEFS_H__ 27fb4d8502Sjsg #define __DAL_DPCD_DEFS_H__ 28fb4d8502Sjsg 291bb76ff1Sjsg #include <drm/display/drm_dp_helper.h> 30fb4d8502Sjsg #ifndef DP_SINK_HW_REVISION_START // can remove this once the define gets into linux drm_dp_helper.h 31fb4d8502Sjsg #define DP_SINK_HW_REVISION_START 0x409 32fb4d8502Sjsg #endif 33fb4d8502Sjsg 34fb4d8502Sjsg enum dpcd_revision { 35fb4d8502Sjsg DPCD_REV_10 = 0x10, 36fb4d8502Sjsg DPCD_REV_11 = 0x11, 37fb4d8502Sjsg DPCD_REV_12 = 0x12, 38fb4d8502Sjsg DPCD_REV_13 = 0x13, 39fb4d8502Sjsg DPCD_REV_14 = 0x14 40fb4d8502Sjsg }; 41fb4d8502Sjsg 42fb4d8502Sjsg /* these are the types stored at DOWNSTREAMPORT_PRESENT */ 43fb4d8502Sjsg enum dpcd_downstream_port_type { 44fb4d8502Sjsg DOWNSTREAM_DP = 0, 45fb4d8502Sjsg DOWNSTREAM_VGA, 46c349dbc7Sjsg DOWNSTREAM_DVI_HDMI_DP_PLUS_PLUS,/* DVI, HDMI, DP++ */ 47fb4d8502Sjsg DOWNSTREAM_NONDDC /* has no EDID (TV,CV) */ 48fb4d8502Sjsg }; 49fb4d8502Sjsg 50fb4d8502Sjsg enum dpcd_link_test_patterns { 51fb4d8502Sjsg LINK_TEST_PATTERN_NONE = 0, 52fb4d8502Sjsg LINK_TEST_PATTERN_COLOR_RAMP, 53fb4d8502Sjsg LINK_TEST_PATTERN_VERTICAL_BARS, 54fb4d8502Sjsg LINK_TEST_PATTERN_COLOR_SQUARES 55fb4d8502Sjsg }; 56fb4d8502Sjsg 57fb4d8502Sjsg enum dpcd_test_color_format { 58fb4d8502Sjsg TEST_COLOR_FORMAT_RGB = 0, 59fb4d8502Sjsg TEST_COLOR_FORMAT_YCBCR422, 60fb4d8502Sjsg TEST_COLOR_FORMAT_YCBCR444 61fb4d8502Sjsg }; 62fb4d8502Sjsg 63fb4d8502Sjsg enum dpcd_test_bit_depth { 64fb4d8502Sjsg TEST_BIT_DEPTH_6 = 0, 65fb4d8502Sjsg TEST_BIT_DEPTH_8, 66fb4d8502Sjsg TEST_BIT_DEPTH_10, 67fb4d8502Sjsg TEST_BIT_DEPTH_12, 68fb4d8502Sjsg TEST_BIT_DEPTH_16 69fb4d8502Sjsg }; 70fb4d8502Sjsg 71fb4d8502Sjsg /* PHY (encoder) test patterns 72fb4d8502Sjsg The order of test patterns follows DPCD register PHY_TEST_PATTERN (0x248) 73fb4d8502Sjsg */ 74fb4d8502Sjsg enum dpcd_phy_test_patterns { 75fb4d8502Sjsg PHY_TEST_PATTERN_NONE = 0, 76fb4d8502Sjsg PHY_TEST_PATTERN_D10_2, 77fb4d8502Sjsg PHY_TEST_PATTERN_SYMBOL_ERROR, 78fb4d8502Sjsg PHY_TEST_PATTERN_PRBS7, 79fb4d8502Sjsg PHY_TEST_PATTERN_80BIT_CUSTOM,/* For DP1.2 only */ 80fb4d8502Sjsg PHY_TEST_PATTERN_CP2520_1, 81fb4d8502Sjsg PHY_TEST_PATTERN_CP2520_2, 82fb4d8502Sjsg PHY_TEST_PATTERN_CP2520_3, /* same as TPS4 */ 831bb76ff1Sjsg PHY_TEST_PATTERN_128b_132b_TPS1 = 0x8, 841bb76ff1Sjsg PHY_TEST_PATTERN_128b_132b_TPS2 = 0x10, 851bb76ff1Sjsg PHY_TEST_PATTERN_PRBS9 = 0x18, 861bb76ff1Sjsg PHY_TEST_PATTERN_PRBS11 = 0x20, 871bb76ff1Sjsg PHY_TEST_PATTERN_PRBS15 = 0x28, 881bb76ff1Sjsg PHY_TEST_PATTERN_PRBS23 = 0x30, 891bb76ff1Sjsg PHY_TEST_PATTERN_PRBS31 = 0x38, 901bb76ff1Sjsg PHY_TEST_PATTERN_264BIT_CUSTOM = 0x40, 91f005ef32Sjsg PHY_TEST_PATTERN_SQUARE = 0x48, 92f005ef32Sjsg PHY_TEST_PATTERN_SQUARE_PRESHOOT_DISABLED = 0x49, 93f005ef32Sjsg PHY_TEST_PATTERN_SQUARE_DEEMPHASIS_DISABLED = 0x4A, 94f005ef32Sjsg PHY_TEST_PATTERN_SQUARE_PRESHOOT_DEEMPHASIS_DISABLED = 0x4B, 95fb4d8502Sjsg }; 96fb4d8502Sjsg 97fb4d8502Sjsg enum dpcd_test_dyn_range { 98fb4d8502Sjsg TEST_DYN_RANGE_VESA = 0, 99fb4d8502Sjsg TEST_DYN_RANGE_CEA 100fb4d8502Sjsg }; 101fb4d8502Sjsg 102fb4d8502Sjsg enum dpcd_audio_test_pattern { 103fb4d8502Sjsg AUDIO_TEST_PATTERN_OPERATOR_DEFINED = 0,/* direct HW translation */ 104fb4d8502Sjsg AUDIO_TEST_PATTERN_SAWTOOTH 105fb4d8502Sjsg }; 106fb4d8502Sjsg 107fb4d8502Sjsg enum dpcd_audio_sampling_rate { 108fb4d8502Sjsg AUDIO_SAMPLING_RATE_32KHZ = 0,/* direct HW translation */ 109fb4d8502Sjsg AUDIO_SAMPLING_RATE_44_1KHZ, 110fb4d8502Sjsg AUDIO_SAMPLING_RATE_48KHZ, 111fb4d8502Sjsg AUDIO_SAMPLING_RATE_88_2KHZ, 112fb4d8502Sjsg AUDIO_SAMPLING_RATE_96KHZ, 113fb4d8502Sjsg AUDIO_SAMPLING_RATE_176_4KHZ, 114fb4d8502Sjsg AUDIO_SAMPLING_RATE_192KHZ 115fb4d8502Sjsg }; 116fb4d8502Sjsg 117fb4d8502Sjsg enum dpcd_audio_channels { 118fb4d8502Sjsg AUDIO_CHANNELS_1 = 0,/* direct HW translation */ 119fb4d8502Sjsg AUDIO_CHANNELS_2, 120fb4d8502Sjsg AUDIO_CHANNELS_3, 121fb4d8502Sjsg AUDIO_CHANNELS_4, 122fb4d8502Sjsg AUDIO_CHANNELS_5, 123fb4d8502Sjsg AUDIO_CHANNELS_6, 124fb4d8502Sjsg AUDIO_CHANNELS_7, 125fb4d8502Sjsg AUDIO_CHANNELS_8, 126fb4d8502Sjsg 127fb4d8502Sjsg AUDIO_CHANNELS_COUNT 128fb4d8502Sjsg }; 129fb4d8502Sjsg 130fb4d8502Sjsg enum dpcd_audio_test_pattern_periods { 131fb4d8502Sjsg DPCD_AUDIO_TEST_PATTERN_PERIOD_NOTUSED = 0,/* direct HW translation */ 132fb4d8502Sjsg DPCD_AUDIO_TEST_PATTERN_PERIOD_3, 133fb4d8502Sjsg DPCD_AUDIO_TEST_PATTERN_PERIOD_6, 134fb4d8502Sjsg DPCD_AUDIO_TEST_PATTERN_PERIOD_12, 135fb4d8502Sjsg DPCD_AUDIO_TEST_PATTERN_PERIOD_24, 136fb4d8502Sjsg DPCD_AUDIO_TEST_PATTERN_PERIOD_48, 137fb4d8502Sjsg DPCD_AUDIO_TEST_PATTERN_PERIOD_96, 138fb4d8502Sjsg DPCD_AUDIO_TEST_PATTERN_PERIOD_192, 139fb4d8502Sjsg DPCD_AUDIO_TEST_PATTERN_PERIOD_384, 140fb4d8502Sjsg DPCD_AUDIO_TEST_PATTERN_PERIOD_768, 141fb4d8502Sjsg DPCD_AUDIO_TEST_PATTERN_PERIOD_1536 142fb4d8502Sjsg }; 143fb4d8502Sjsg 144fb4d8502Sjsg /* This enum is for programming DPCD TRAINING_PATTERN_SET */ 145fb4d8502Sjsg enum dpcd_training_patterns { 146fb4d8502Sjsg DPCD_TRAINING_PATTERN_VIDEOIDLE = 0,/* direct HW translation! */ 147fb4d8502Sjsg DPCD_TRAINING_PATTERN_1, 148fb4d8502Sjsg DPCD_TRAINING_PATTERN_2, 149fb4d8502Sjsg DPCD_TRAINING_PATTERN_3, 1501bb76ff1Sjsg DPCD_TRAINING_PATTERN_4 = 7, 1511bb76ff1Sjsg DPCD_128b_132b_TPS1 = 1, 1521bb76ff1Sjsg DPCD_128b_132b_TPS2 = 2, 1531bb76ff1Sjsg DPCD_128b_132b_TPS2_CDS = 3, 154fb4d8502Sjsg }; 155fb4d8502Sjsg 156fb4d8502Sjsg /* This enum is for use with PsrSinkPsrStatus.bits.sinkSelfRefreshStatus 157fb4d8502Sjsg It defines the possible PSR states. */ 158fb4d8502Sjsg enum dpcd_psr_sink_states { 159fb4d8502Sjsg PSR_SINK_STATE_INACTIVE = 0, 160fb4d8502Sjsg PSR_SINK_STATE_ACTIVE_CAPTURE_DISPLAY_ON_SOURCE_TIMING = 1, 161fb4d8502Sjsg PSR_SINK_STATE_ACTIVE_DISPLAY_FROM_SINK_RFB = 2, 162fb4d8502Sjsg PSR_SINK_STATE_ACTIVE_CAPTURE_DISPLAY_ON_SINK_TIMING = 3, 163fb4d8502Sjsg PSR_SINK_STATE_ACTIVE_CAPTURE_TIMING_RESYNC = 4, 164fb4d8502Sjsg PSR_SINK_STATE_SINK_INTERNAL_ERROR = 7, 165fb4d8502Sjsg }; 166fb4d8502Sjsg 1671bb76ff1Sjsg #define DP_SOURCE_SEQUENCE 0x30c 168c349dbc7Sjsg #define DP_SOURCE_TABLE_REVISION 0x310 169c349dbc7Sjsg #define DP_SOURCE_PAYLOAD_SIZE 0x311 170c349dbc7Sjsg #define DP_SOURCE_SINK_CAP 0x317 171c349dbc7Sjsg #define DP_SOURCE_BACKLIGHT_LEVEL 0x320 172c349dbc7Sjsg #define DP_SOURCE_BACKLIGHT_CURRENT_PEAK 0x326 173c349dbc7Sjsg #define DP_SOURCE_BACKLIGHT_CONTROL 0x32E 174c349dbc7Sjsg #define DP_SOURCE_BACKLIGHT_ENABLE 0x32F 1755ca02815Sjsg #define DP_SOURCE_MINIMUM_HBLANK_SUPPORTED 0x340 176f005ef32Sjsg #define DP_SINK_PR_REPLAY_STATUS 0x378 177f005ef32Sjsg #define DP_SINK_PR_PIXEL_DEVIATION_PER_LINE 0x379 178f005ef32Sjsg #define DP_SINK_PR_MAX_NUMBER_OF_DEVIATION_LINE 0x37A 179c349dbc7Sjsg 180*07e6c96cSjsg /* Remove once drm_dp_helper.h is updated upstream */ 181*07e6c96cSjsg #ifndef DP_TOTAL_LTTPR_CNT 182*07e6c96cSjsg #define DP_TOTAL_LTTPR_CNT 0xF000A /* 2.1 */ 183*07e6c96cSjsg #endif 184*07e6c96cSjsg 185fb4d8502Sjsg #endif /* __DAL_DPCD_DEFS_H__ */ 186