include/drm/display/drm_dp_helper.h
Source file repositories/reference/linux-study-clean/include/drm/display/drm_dp_helper.h
File Facts
- System
- Linux kernel
- Corpus path
include/drm/display/drm_dp_helper.h- Extension
.h- Size
- 36636 bytes
- Lines
- 1035
- Domain
- Repository Root And Misc
- Bucket
- include
- Inferred role
- Repository Root And Misc: implementation source
- Status
- source implementation candidate
Why This File Exists
Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.
- Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/delay.hlinux/i2c.hdrm/display/drm_dp.hdrm/drm_connector.h
Detected Declarations
struct drm_devicestruct drm_dp_auxstruct drm_panelstruct drm_dp_vsc_sdpstruct drm_dp_as_sdpstruct drm_dp_aux_msgstruct cec_adapterstruct drm_connectorstruct drm_edidstruct drm_dp_aux_cecstruct drm_dp_auxstruct drm_dp_descstruct drm_dp_dpcd_identstruct drm_dp_descstruct drm_edp_backlight_infostruct drm_dp_phy_test_paramsenum drm_dp_quirkfunction drm_dp_max_link_ratefunction drm_dp_max_lane_countfunction drm_dp_enhanced_frame_capfunction drm_dp_post_lt_adj_req_supportedfunction drm_dp_fast_training_capfunction drm_dp_tps3_supportedfunction drm_dp_max_downspreadfunction drm_dp_tps4_supportedfunction drm_dp_training_pattern_maskfunction drm_dp_is_branchfunction drm_dp_sink_supports_dscfunction drm_edp_dsc_sink_output_bppfunction drm_dp_dsc_sink_max_slice_widthfunction drm_dp_dsc_sink_supports_formatfunction drm_dp_sink_supports_fecfunction drm_dp_channel_coding_supportedfunction drm_dp_128b132b_supportedfunction drm_dp_alternate_scrambler_reset_capfunction drm_dp_sink_can_do_video_without_timing_msafunction drm_edp_backlight_supportedfunction drm_dp_is_uhbr_ratefunction drm_dp_dpcd_readbfunction drm_dp_dpcd_read_datafunction drm_dp_dpcd_write_datafunction drm_dp_dpcd_writebfunction drm_dp_dpcd_read_bytefunction drm_dp_dpcd_write_bytefunction drm_dp_has_quirkfunction drm_panel_dp_aux_backlightfunction drm_dp_cec_irq
Annotated Snippet
struct drm_dp_vsc_sdp {
unsigned char sdp_type;
unsigned char revision;
unsigned char length;
enum dp_pixelformat pixelformat;
enum dp_colorimetry colorimetry;
int bpc;
enum dp_dynamic_range dynamic_range;
enum dp_content_type content_type;
};
/**
* struct drm_dp_as_sdp - drm DP Adaptive Sync SDP
*
* This structure represents a DP AS SDP of drm
* It is based on DP 2.1 spec [Table 2-126: Adaptive-Sync SDP Header Bytes] and
* [Table 2-127: Adaptive-Sync SDP Payload for DB0 through DB8]
*
* @sdp_type: Secondary-data packet type
* @revision: Revision Number
* @length: Number of valid data bytes
* @vtotal: Minimum Vertical Vtotal
* @target_rr: Target Refresh
* @duration_incr_ms: Successive frame duration increase
* @duration_decr_ms: Successive frame duration decrease
* @target_rr_divider: Target refresh rate divider
* @mode: Adaptive Sync Operation Mode
*/
struct drm_dp_as_sdp {
unsigned char sdp_type;
unsigned char revision;
unsigned char length;
int vtotal;
int target_rr;
int duration_incr_ms;
int duration_decr_ms;
bool target_rr_divider;
enum operation_mode mode;
int coasting_vtotal;
};
void drm_dp_as_sdp_log(struct drm_printer *p,
const struct drm_dp_as_sdp *as_sdp);
void drm_dp_vsc_sdp_log(struct drm_printer *p, const struct drm_dp_vsc_sdp *vsc);
bool drm_dp_vsc_sdp_supported(struct drm_dp_aux *aux, const u8 dpcd[DP_RECEIVER_CAP_SIZE]);
bool drm_dp_as_sdp_supported(struct drm_dp_aux *aux, const u8 dpcd[DP_RECEIVER_CAP_SIZE]);
int drm_dp_psr_setup_time(const u8 psr_cap[EDP_PSR_RECEIVER_CAP_SIZE]);
static inline int
drm_dp_max_link_rate(const u8 dpcd[DP_RECEIVER_CAP_SIZE])
{
return drm_dp_bw_code_to_link_rate(dpcd[DP_MAX_LINK_RATE]);
}
static inline u8
drm_dp_max_lane_count(const u8 dpcd[DP_RECEIVER_CAP_SIZE])
{
return dpcd[DP_MAX_LANE_COUNT] & DP_MAX_LANE_COUNT_MASK;
}
static inline bool
drm_dp_enhanced_frame_cap(const u8 dpcd[DP_RECEIVER_CAP_SIZE])
{
return dpcd[DP_DPCD_REV] >= 0x11 &&
(dpcd[DP_MAX_LANE_COUNT] & DP_ENHANCED_FRAME_CAP);
}
static inline bool
drm_dp_post_lt_adj_req_supported(const u8 dpcd[DP_RECEIVER_CAP_SIZE])
{
return dpcd[DP_DPCD_REV] >= 0x13 &&
(dpcd[DP_MAX_LANE_COUNT] & DP_POST_LT_ADJ_REQ_SUPPORTED);
}
static inline bool
drm_dp_fast_training_cap(const u8 dpcd[DP_RECEIVER_CAP_SIZE])
{
return dpcd[DP_DPCD_REV] >= 0x11 &&
(dpcd[DP_MAX_DOWNSPREAD] & DP_NO_AUX_HANDSHAKE_LINK_TRAINING);
}
static inline bool
drm_dp_tps3_supported(const u8 dpcd[DP_RECEIVER_CAP_SIZE])
{
return dpcd[DP_DPCD_REV] >= 0x12 &&
dpcd[DP_MAX_LANE_COUNT] & DP_TPS3_SUPPORTED;
}
Annotation
- Immediate include surface: `linux/delay.h`, `linux/i2c.h`, `drm/display/drm_dp.h`, `drm/drm_connector.h`.
- Detected declarations: `struct drm_device`, `struct drm_dp_aux`, `struct drm_panel`, `struct drm_dp_vsc_sdp`, `struct drm_dp_as_sdp`, `struct drm_dp_aux_msg`, `struct cec_adapter`, `struct drm_connector`, `struct drm_edid`, `struct drm_dp_aux_cec`.
- Atlas domain: Repository Root And Misc / include.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.