drivers/gpu/drm/i915/display/intel_cx0_phy.c
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/i915/display/intel_cx0_phy.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/i915/display/intel_cx0_phy.c- Extension
.c- Size
- 116318 bytes
- Lines
- 3860
- 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
linux/log2.hlinux/math64.hdrm/drm_print.hintel_alpm.hintel_cx0_phy.hintel_cx0_phy_regs.hintel_display_regs.hintel_ddi.hintel_ddi_buf_trans.hintel_de.hintel_display_types.hintel_display_utils.hintel_dp.hintel_dpll.hintel_hdmi.hintel_lt_phy.hintel_panel.hintel_psr.hintel_snps_hdmi_pll.hintel_tc.h
Detected Declarations
struct intel_cx0pll_paramsfunction for_each_iffunction lane_mask_to_lanefunction intel_cx0_get_owned_lane_maskfunction assert_dc_offfunction intel_cx0_program_msgbus_timerfunction intel_cx0_phy_transaction_endfunction intel_cx0_clear_response_ready_flagfunction intel_cx0_bus_resetfunction intel_cx0_wait_for_ackfunction __intel_cx0_read_oncefunction __intel_cx0_readfunction intel_cx0_readfunction __intel_cx0_write_oncefunction __intel_cx0_writefunction intel_cx0_writefunction intel_c20_sram_writefunction intel_c20_sram_readfunction __intel_cx0_rmwfunction intel_cx0_rmwfunction intel_c10_get_tx_vboost_lvlfunction intel_c10_get_tx_term_ctlfunction intel_c10_msgbus_access_beginfunction intel_c10_msgbus_access_commitfunction intel_cx0_phy_set_signal_levelsfunction intel_c10pll_tables_getfunction intel_cx0pll_update_sscfunction intel_c10pll_ssc_enabledfunction intel_c10pll_update_pllfunction c10pll_state_is_dpfunction c20pll_state_is_dpfunction cx0pll_state_is_dpfunction intel_c10pll_calc_port_clockfunction intel_c20phy_use_mpllbfunction intel_c20pll_calc_port_clockfunction intel_c20pll_calc_state_from_tablefunction intel_c10pll_calc_statefunction intel_readout_lane_countfunction readout_ssc_statefunction intel_c10pll_readout_hw_statefunction intel_c10_pll_programfunction intel_c10pll_dump_hw_statefunction is_arrowlake_s_by_host_bridgefunction intel_c20_hdmi_tmds_tx_cgf_1function is_arrowlake_s_by_host_bridgefunction intel_c20_compute_hdmi_tmds_pllfunction intel_c20_pll_tables_getfunction intel_c20_get_dp_rate
Annotated Snippet
struct intel_cx0pll_params {
const char *name;
bool is_c10;
bool is_hdmi;
int clock_rate;
union {
const struct intel_c10pll_state *c10;
const struct intel_c20pll_state *c20;
};
};
#define __C10PLL_PARAMS(__is_hdmi, __clock_rate, __state) { \
.name = __stringify(__state), \
.is_c10 = true, \
.is_hdmi = __is_hdmi, \
.clock_rate = __clock_rate, \
.c10 = &__state, \
}
#define __C20PLL_PARAMS(__is_hdmi, __clock_rate, __state) { \
.name = __stringify(__state), \
.is_c10 = false, \
.is_hdmi = __is_hdmi, \
.clock_rate = __clock_rate, \
.c20 = &__state, \
}
#define C10PLL_HDMI_PARAMS(__clock_rate, __state) __C10PLL_PARAMS(true, __clock_rate, __state)
#define C10PLL_DP_PARAMS(__clock_rate, __state) __C10PLL_PARAMS(false, __clock_rate, __state)
#define C20PLL_HDMI_PARAMS(__clock_rate, __state) __C20PLL_PARAMS(true, __clock_rate, __state)
#define C20PLL_DP_PARAMS(__clock_rate, __state) __C20PLL_PARAMS(false, __clock_rate, __state)
static const struct intel_cx0pll_params mtl_c10_dp_tables[] = {
C10PLL_DP_PARAMS(162000, mtl_c10_dp_rbr),
C10PLL_DP_PARAMS(270000, mtl_c10_dp_hbr1),
C10PLL_DP_PARAMS(540000, mtl_c10_dp_hbr2),
C10PLL_DP_PARAMS(810000, mtl_c10_dp_hbr3),
{}
};
static const struct intel_cx0pll_params mtl_c10_edp_tables[] = {
C10PLL_DP_PARAMS(162000, mtl_c10_dp_rbr),
C10PLL_DP_PARAMS(216000, mtl_c10_edp_r216),
C10PLL_DP_PARAMS(243000, mtl_c10_edp_r243),
C10PLL_DP_PARAMS(270000, mtl_c10_dp_hbr1),
C10PLL_DP_PARAMS(324000, mtl_c10_edp_r324),
C10PLL_DP_PARAMS(432000, mtl_c10_edp_r432),
C10PLL_DP_PARAMS(540000, mtl_c10_dp_hbr2),
C10PLL_DP_PARAMS(675000, mtl_c10_edp_r675),
C10PLL_DP_PARAMS(810000, mtl_c10_dp_hbr3),
{}
};
/* C20 basic DP 1.4 tables */
static const struct intel_c20pll_state mtl_c20_dp_rbr = {
.tx = { 0xbe88, /* tx cfg0 */
0x5800, /* tx cfg1 */
0x0000, /* tx cfg2 */
},
.cmn = {0x0500, /* cmn cfg0*/
0x0005, /* cmn cfg1 */
0x0000, /* cmn cfg2 */
0x0000, /* cmn cfg3 */
},
.mpllb = { 0x50a8, /* mpllb cfg0 */
0x2120, /* mpllb cfg1 */
0xcd9a, /* mpllb cfg2 */
0xbfc1, /* mpllb cfg3 */
0x5ab8, /* mpllb cfg4 */
0x4c34, /* mpllb cfg5 */
0x2000, /* mpllb cfg6 */
0x0001, /* mpllb cfg7 */
0x6000, /* mpllb cfg8 */
0x0000, /* mpllb cfg9 */
0x0000, /* mpllb cfg10 */
},
};
static const struct intel_c20pll_state mtl_c20_dp_hbr1 = {
.tx = { 0xbe88, /* tx cfg0 */
0x4800, /* tx cfg1 */
0x0000, /* tx cfg2 */
},
.cmn = {0x0500, /* cmn cfg0*/
0x0005, /* cmn cfg1 */
0x0000, /* cmn cfg2 */
0x0000, /* cmn cfg3 */
},
.mpllb = { 0x308c, /* mpllb cfg0 */
Annotation
- Immediate include surface: `linux/log2.h`, `linux/math64.h`, `drm/drm_print.h`, `intel_alpm.h`, `intel_cx0_phy.h`, `intel_cx0_phy_regs.h`, `intel_display_regs.h`, `intel_ddi.h`.
- Detected declarations: `struct intel_cx0pll_params`, `function for_each_if`, `function lane_mask_to_lane`, `function intel_cx0_get_owned_lane_mask`, `function assert_dc_off`, `function intel_cx0_program_msgbus_timer`, `function intel_cx0_phy_transaction_end`, `function intel_cx0_clear_response_ready_flag`, `function intel_cx0_bus_reset`, `function intel_cx0_wait_for_ack`.
- 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.