drivers/gpu/drm/radeon/radeon_mode.h
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/radeon/radeon_mode.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/radeon/radeon_mode.h- Extension
.h- Size
- 28799 bytes
- Lines
- 951
- 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
drm/display/drm_dp_helper.hdrm/drm_crtc.hdrm/drm_encoder.hdrm/drm_fixed.hdrm/drm_modeset_helper_vtables.hlinux/i2c.hlinux/i2c-algo-bit.h
Detected Declarations
struct drm_fb_helperstruct drm_fb_helper_surface_sizestruct drm_format_infostruct edidstruct drm_edidstruct radeon_bostruct radeon_devicestruct radeon_i2c_bus_recstruct radeon_tmds_pllstruct radeon_pllstruct radeon_i2c_chanstruct radeon_afmtstruct radeon_mode_infostruct radeon_backlight_privdatastruct radeon_tv_regsstruct radeon_atom_ssstruct radeon_crtcstruct radeon_encoder_primary_dacstruct radeon_encoder_lvdsstruct radeon_encoder_tv_dacstruct radeon_encoder_int_tmdsstruct radeon_encoder_ext_tmdsstruct radeon_encoder_atom_digstruct radeon_encoder_atom_dacstruct radeon_encoderstruct radeon_connector_atom_digstruct radeon_gpio_recstruct radeon_hpdstruct radeon_routerstruct radeon_connectorstruct atom_clock_dividersstruct atom_mpll_paramstruct atom_memory_infostruct atom_memory_clock_range_tablestruct atom_mc_reg_entrystruct atom_mc_register_addressstruct atom_mc_reg_tablestruct atom_voltage_table_entrystruct atom_voltage_tableenum radeon_rmx_typeenum radeon_tv_stdenum radeon_underscan_typeenum radeon_hpd_idenum radeon_output_cscenum radeon_connector_tableenum radeon_dvo_chipenum radeon_flip_statusenum radeon_connector_audio
Annotated Snippet
struct radeon_i2c_bus_rec {
bool valid;
/* id used by atom */
uint8_t i2c_id;
/* id used by atom */
enum radeon_hpd_id hpd;
/* can be used with hw i2c engine */
bool hw_capable;
/* uses multi-media i2c engine */
bool mm_i2c;
/* regs and bits */
uint32_t mask_clk_reg;
uint32_t mask_data_reg;
uint32_t a_clk_reg;
uint32_t a_data_reg;
uint32_t en_clk_reg;
uint32_t en_data_reg;
uint32_t y_clk_reg;
uint32_t y_data_reg;
uint32_t mask_clk_mask;
uint32_t mask_data_mask;
uint32_t a_clk_mask;
uint32_t a_data_mask;
uint32_t en_clk_mask;
uint32_t en_data_mask;
uint32_t y_clk_mask;
uint32_t y_data_mask;
};
struct radeon_tmds_pll {
uint32_t freq;
uint32_t value;
};
#define RADEON_MAX_BIOS_CONNECTOR 16
/* pll flags */
#define RADEON_PLL_USE_BIOS_DIVS (1 << 0)
#define RADEON_PLL_NO_ODD_POST_DIV (1 << 1)
#define RADEON_PLL_USE_REF_DIV (1 << 2)
#define RADEON_PLL_LEGACY (1 << 3)
#define RADEON_PLL_PREFER_LOW_REF_DIV (1 << 4)
#define RADEON_PLL_PREFER_HIGH_REF_DIV (1 << 5)
#define RADEON_PLL_PREFER_LOW_FB_DIV (1 << 6)
#define RADEON_PLL_PREFER_HIGH_FB_DIV (1 << 7)
#define RADEON_PLL_PREFER_LOW_POST_DIV (1 << 8)
#define RADEON_PLL_PREFER_HIGH_POST_DIV (1 << 9)
#define RADEON_PLL_USE_FRAC_FB_DIV (1 << 10)
#define RADEON_PLL_PREFER_CLOSEST_LOWER (1 << 11)
#define RADEON_PLL_USE_POST_DIV (1 << 12)
#define RADEON_PLL_IS_LCD (1 << 13)
#define RADEON_PLL_PREFER_MINM_OVER_MAXP (1 << 14)
struct radeon_pll {
/* reference frequency */
uint32_t reference_freq;
/* fixed dividers */
uint32_t reference_div;
uint32_t post_div;
/* pll in/out limits */
uint32_t pll_in_min;
uint32_t pll_in_max;
uint32_t pll_out_min;
uint32_t pll_out_max;
uint32_t lcd_pll_out_min;
uint32_t lcd_pll_out_max;
uint32_t best_vco;
/* divider limits */
uint32_t min_ref_div;
uint32_t max_ref_div;
uint32_t min_post_div;
uint32_t max_post_div;
uint32_t min_feedback_div;
uint32_t max_feedback_div;
uint32_t min_frac_feedback_div;
uint32_t max_frac_feedback_div;
/* flags for the current clock */
uint32_t flags;
/* pll id */
uint32_t id;
};
struct radeon_i2c_chan {
struct i2c_adapter adapter;
struct drm_device *dev;
Annotation
- Immediate include surface: `drm/display/drm_dp_helper.h`, `drm/drm_crtc.h`, `drm/drm_encoder.h`, `drm/drm_fixed.h`, `drm/drm_modeset_helper_vtables.h`, `linux/i2c.h`, `linux/i2c-algo-bit.h`.
- Detected declarations: `struct drm_fb_helper`, `struct drm_fb_helper_surface_size`, `struct drm_format_info`, `struct edid`, `struct drm_edid`, `struct radeon_bo`, `struct radeon_device`, `struct radeon_i2c_bus_rec`, `struct radeon_tmds_pll`, `struct radeon_pll`.
- 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.