drivers/gpu/drm/gma500/psb_intel_sdvo.c
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/gma500/psb_intel_sdvo.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/gma500/psb_intel_sdvo.c- Extension
.c- Size
- 80383 bytes
- Lines
- 2528
- 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.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/delay.hlinux/i2c.hlinux/kernel.hlinux/module.hlinux/slab.hdrm/drm_crtc.hdrm/drm_crtc_helper.hdrm/drm_edid.hdrm/drm_modeset_helper_vtables.hdrm/drm_print.hpsb_drv.hpsb_intel_drv.hpsb_intel_reg.hpsb_intel_sdvo_regs.h
Detected Declarations
struct psb_intel_sdvostruct psb_intel_sdvo_connectorfunction issuesfunction psb_intel_sdvo_read_bytefunction psb_intel_sdvo_debug_writefunction psb_intel_sdvo_write_cmdfunction psb_intel_sdvo_read_responsefunction psb_intel_sdvo_get_pixel_multiplierfunction psb_intel_sdvo_set_control_bus_switchfunction psb_intel_sdvo_set_valuefunction psb_intel_sdvo_get_valuefunction psb_intel_sdvo_set_target_inputfunction psb_intel_sdvo_get_trained_inputsfunction psb_intel_sdvo_set_active_outputsfunction psb_intel_sdvo_set_encoder_power_statefunction psb_intel_sdvo_get_input_pixel_clock_rangefunction psb_intel_sdvo_set_target_outputfunction psb_intel_sdvo_set_timingfunction psb_intel_sdvo_set_input_timingfunction psb_intel_sdvo_set_output_timingfunction psb_intel_sdvo_create_preferred_input_timingfunction psb_intel_sdvo_get_preferred_input_timingfunction psb_intel_sdvo_set_clock_rate_multfunction psb_intel_sdvo_get_dtd_from_modefunction psb_intel_sdvo_get_mode_from_dtdfunction psb_intel_sdvo_check_supp_encodefunction psb_intel_sdvo_set_encodefunction psb_intel_sdvo_set_colorimetryfunction psb_intel_sdvo_dump_hdmi_buffunction psb_intel_sdvo_set_avi_infoframefunction psb_intel_sdvo_set_tv_formatfunction psb_intel_sdvo_set_output_timings_from_modefunction psb_intel_sdvo_set_input_timings_for_modefunction psb_intel_sdvo_mode_fixupfunction psb_intel_sdvo_mode_setfunction psb_intel_sdvo_dpmsfunction psb_intel_sdvo_mode_validfunction psb_intel_sdvo_get_capabilitiesfunction psb_intel_sdvo_multifunc_encoderfunction psb_intel_sdvo_get_edidfunction psb_intel_sdvo_get_analog_edidfunction psb_intel_sdvo_hdmi_sink_detectfunction psb_intel_sdvo_detectfunction psb_intel_sdvo_get_ddc_modesfunction psb_intel_sdvo_get_tv_modesfunction psb_intel_sdvo_get_lvds_modesfunction psb_intel_sdvo_get_modesfunction psb_intel_sdvo_destroy
Annotated Snippet
struct psb_intel_sdvo {
struct gma_encoder base;
struct i2c_adapter *i2c;
u8 target_addr;
struct i2c_adapter ddc;
/* Register for the SDVO device: SDVOB or SDVOC */
int sdvo_reg;
/* Active outputs controlled by this SDVO output */
uint16_t controlled_output;
/*
* Capabilities of the SDVO device returned by
* i830_sdvo_get_capabilities()
*/
struct psb_intel_sdvo_caps caps;
/* Pixel clock limitations reported by the SDVO device, in kHz */
int pixel_clock_min, pixel_clock_max;
/*
* For multiple function SDVO device,
* this is for current attached outputs.
*/
uint16_t attached_output;
/**
* This is used to select the color range of RBG outputs in HDMI mode.
* It is only valid when using TMDS encoding and 8 bit per color mode.
*/
uint32_t color_range;
/**
* This is set if we're going to treat the device as TV-out.
*
* While we have these nice friendly flags for output types that ought
* to decide this for us, the S-Video output on our HDMI+S-Video card
* shows up as RGB1 (VGA).
*/
bool is_tv;
/* This is for current tv format name */
int tv_format_index;
/**
* This is set if we treat the device as HDMI, instead of DVI.
*/
bool is_hdmi;
bool has_hdmi_monitor;
bool has_hdmi_audio;
/**
* This is set if we detect output of sdvo device as LVDS and
* have a valid fixed mode to use with the panel.
*/
bool is_lvds;
/**
* This is sdvo fixed panel mode pointer
*/
struct drm_display_mode *sdvo_lvds_fixed_mode;
/* DDC bus used by this SDVO encoder */
uint8_t ddc_bus;
u8 pixel_multiplier;
/* Input timings for adjusted_mode */
struct psb_intel_sdvo_dtd input_dtd;
/* Saved SDVO output states */
uint32_t saveSDVO; /* Can be SDVOB or SDVOC depending on sdvo_reg */
};
struct psb_intel_sdvo_connector {
struct gma_connector base;
/* Mark the type of connector */
uint16_t output_flag;
int force_audio;
/* This contains all current supported TV format */
u8 tv_format_supported[ARRAY_SIZE(tv_format_names)];
int format_supported_num;
struct drm_property *tv_format;
Annotation
- Immediate include surface: `linux/delay.h`, `linux/i2c.h`, `linux/kernel.h`, `linux/module.h`, `linux/slab.h`, `drm/drm_crtc.h`, `drm/drm_crtc_helper.h`, `drm/drm_edid.h`.
- Detected declarations: `struct psb_intel_sdvo`, `struct psb_intel_sdvo_connector`, `function issues`, `function psb_intel_sdvo_read_byte`, `function psb_intel_sdvo_debug_write`, `function psb_intel_sdvo_write_cmd`, `function psb_intel_sdvo_read_response`, `function psb_intel_sdvo_get_pixel_multiplier`, `function psb_intel_sdvo_set_control_bus_switch`, `function psb_intel_sdvo_set_value`.
- 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.