drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c- Extension
.c- Size
- 74815 bytes
- Lines
- 1862
- Domain
- Driver Families
- Bucket
- drivers/gpu
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
intel_cx0_phy.hintel_ddi.hintel_ddi_buf_trans.hintel_de.hintel_display_types.hintel_display_utils.hintel_dp.hintel_lt_phy.h
Detected Declarations
function is_hobl_buf_transfunction use_edp_hoblfunction use_edp_low_vswingfunction intel_get_buf_transfunction hsw_get_buf_transfunction bdw_get_buf_transfunction skl_buf_trans_num_entriesfunction _skl_get_buf_trans_dpfunction skl_y_get_buf_transfunction skl_u_get_buf_transfunction skl_get_buf_transfunction kbl_y_get_buf_transfunction kbl_u_get_buf_transfunction kbl_get_buf_transfunction bxt_get_buf_transfunction icl_get_combo_buf_trans_dpfunction icl_get_combo_buf_trans_edpfunction icl_get_combo_buf_transfunction icl_get_mg_buf_trans_dpfunction icl_get_mg_buf_transfunction ehl_get_combo_buf_trans_edpfunction ehl_get_combo_buf_transfunction jsl_get_combo_buf_trans_edpfunction jsl_get_combo_buf_transfunction tgl_get_combo_buf_trans_dpfunction tgl_get_combo_buf_trans_edpfunction tgl_get_combo_buf_transfunction dg1_get_combo_buf_trans_dpfunction dg1_get_combo_buf_trans_edpfunction dg1_get_combo_buf_transfunction rkl_get_combo_buf_trans_dpfunction rkl_get_combo_buf_trans_edpfunction rkl_get_combo_buf_transfunction adls_get_combo_buf_trans_dpfunction adls_get_combo_buf_trans_edpfunction adls_get_combo_buf_transfunction adlp_get_combo_buf_trans_dpfunction adlp_get_combo_buf_trans_edpfunction adlp_get_combo_buf_transfunction tgl_get_dkl_buf_trans_dpfunction tgl_get_dkl_buf_transfunction adlp_get_dkl_buf_trans_dpfunction adlp_get_dkl_buf_transfunction dg2_get_snps_buf_transfunction mtl_get_c10_buf_transfunction mtl_get_c20_buf_transfunction xe3plpd_get_lt_buf_transfunction intel_ddi_buf_trans_init
Annotated Snippet
if (display->platform.tigerlake_uy) {
return intel_get_buf_trans(&tgl_uy_combo_phy_trans_dp_hbr2,
n_entries);
} else {
return intel_get_buf_trans(&tgl_combo_phy_trans_dp_hbr2,
n_entries);
}
} else {
return intel_get_buf_trans(&tgl_combo_phy_trans_dp_hbr,
n_entries);
}
}
static const struct intel_ddi_buf_trans *
tgl_get_combo_buf_trans_edp(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
int *n_entries)
{
if (crtc_state->port_clock > 540000) {
return intel_get_buf_trans(&icl_combo_phy_trans_dp_hbr2_edp_hbr3,
n_entries);
} else if (use_edp_hobl(encoder)) {
return intel_get_buf_trans(&tgl_combo_phy_trans_edp_hbr2_hobl,
n_entries);
} else if (use_edp_low_vswing(encoder)) {
return intel_get_buf_trans(&icl_combo_phy_trans_edp_hbr2,
n_entries);
}
return tgl_get_combo_buf_trans_dp(encoder, crtc_state, n_entries);
}
static const struct intel_ddi_buf_trans *
tgl_get_combo_buf_trans(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
int *n_entries)
{
if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI))
return intel_get_buf_trans(&icl_combo_phy_trans_hdmi, n_entries);
else if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_EDP))
return tgl_get_combo_buf_trans_edp(encoder, crtc_state, n_entries);
else
return tgl_get_combo_buf_trans_dp(encoder, crtc_state, n_entries);
}
static const struct intel_ddi_buf_trans *
dg1_get_combo_buf_trans_dp(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
int *n_entries)
{
if (crtc_state->port_clock > 270000)
return intel_get_buf_trans(&dg1_combo_phy_trans_dp_hbr2_hbr3,
n_entries);
else
return intel_get_buf_trans(&dg1_combo_phy_trans_dp_rbr_hbr,
n_entries);
}
static const struct intel_ddi_buf_trans *
dg1_get_combo_buf_trans_edp(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
int *n_entries)
{
if (crtc_state->port_clock > 540000)
return intel_get_buf_trans(&icl_combo_phy_trans_dp_hbr2_edp_hbr3,
n_entries);
else if (use_edp_hobl(encoder))
return intel_get_buf_trans(&tgl_combo_phy_trans_edp_hbr2_hobl,
n_entries);
else if (use_edp_low_vswing(encoder))
return intel_get_buf_trans(&icl_combo_phy_trans_edp_hbr2,
n_entries);
else
return dg1_get_combo_buf_trans_dp(encoder, crtc_state, n_entries);
}
static const struct intel_ddi_buf_trans *
dg1_get_combo_buf_trans(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
int *n_entries)
{
if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI))
return intel_get_buf_trans(&icl_combo_phy_trans_hdmi, n_entries);
else if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_EDP))
return dg1_get_combo_buf_trans_edp(encoder, crtc_state, n_entries);
else
return dg1_get_combo_buf_trans_dp(encoder, crtc_state, n_entries);
}
static const struct intel_ddi_buf_trans *
Annotation
- Immediate include surface: `intel_cx0_phy.h`, `intel_ddi.h`, `intel_ddi_buf_trans.h`, `intel_de.h`, `intel_display_types.h`, `intel_display_utils.h`, `intel_dp.h`, `intel_lt_phy.h`.
- Detected declarations: `function is_hobl_buf_trans`, `function use_edp_hobl`, `function use_edp_low_vswing`, `function intel_get_buf_trans`, `function hsw_get_buf_trans`, `function bdw_get_buf_trans`, `function skl_buf_trans_num_entries`, `function _skl_get_buf_trans_dp`, `function skl_y_get_buf_trans`, `function skl_u_get_buf_trans`.
- Atlas domain: Driver Families / drivers/gpu.
- 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.