drivers/gpu/drm/i915/display/intel_sdvo.c
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/i915/display/intel_sdvo.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/i915/display/intel_sdvo.c- Extension
.c- Size
- 106594 bytes
- Lines
- 3524
- 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.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- 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/export.hlinux/i2c.hlinux/slab.hdrm/display/drm_hdmi_helper.hdrm/drm_atomic_helper.hdrm/drm_crtc.hdrm/drm_edid.hdrm/drm_eld.hdrm/drm_print.hdrm/drm_probe_helper.hintel_atomic.hintel_audio.hintel_connector.hintel_crtc.hintel_de.hintel_display_driver.hintel_display_regs.hintel_display_types.hintel_fifo_underrun.hintel_gmbus.hintel_hdmi.hintel_hotplug.hintel_link_bw.hintel_panel.hintel_sdvo.hintel_sdvo_regs.h
Detected Declarations
struct intel_sdvostruct intel_sdvo_ddcstruct intel_sdvostruct intel_sdvo_connectorstruct intel_sdvo_connector_statefunction to_intel_sdvo_connectorfunction issuesfunction intel_sdvo_read_bytefunction intel_sdvo_debug_writefunction __intel_sdvo_write_cmdfunction intel_sdvo_write_cmdfunction intel_sdvo_read_responsefunction intel_sdvo_get_pixel_multiplierfunction __intel_sdvo_set_control_bus_switchfunction intel_sdvo_set_valuefunction intel_sdvo_get_valuefunction intel_sdvo_set_target_inputfunction intel_sdvo_get_trained_inputsfunction intel_sdvo_set_active_outputsfunction intel_sdvo_get_active_outputsfunction intel_sdvo_set_encoder_power_statefunction intel_sdvo_get_input_pixel_clock_rangefunction intel_sdvo_set_target_outputfunction intel_sdvo_set_timingfunction intel_sdvo_get_timingfunction intel_sdvo_set_input_timingfunction intel_sdvo_set_output_timingfunction intel_sdvo_get_input_timingfunction intel_sdvo_create_preferred_input_timingfunction intel_sdvo_get_preferred_input_timingfunction intel_sdvo_set_clock_rate_multfunction intel_sdvo_get_dtd_from_modefunction intel_sdvo_get_mode_from_dtdfunction intel_sdvo_check_supp_encodefunction intel_sdvo_set_encodefunction intel_sdvo_set_colorimetryfunction intel_sdvo_set_pixel_replicationfunction intel_sdvo_set_audio_statefunction intel_sdvo_get_hbuf_sizefunction intel_sdvo_dump_hdmi_buffunction intel_sdvo_write_infoframefunction intel_sdvo_read_infoframefunction intel_sdvo_compute_avi_infoframefunction intel_sdvo_set_avi_infoframefunction intel_sdvo_get_avi_infoframefunction intel_sdvo_get_eldfunction intel_sdvo_set_tv_formatfunction intel_sdvo_set_output_timings_from_mode
Annotated Snippet
struct intel_sdvo_ddc {
struct i2c_adapter ddc;
struct intel_sdvo *sdvo;
u8 ddc_bus;
};
struct intel_sdvo {
struct intel_encoder base;
struct i2c_adapter *i2c;
u8 target_addr;
struct intel_sdvo_ddc ddc[3];
/* Register for the SDVO device: SDVOB or SDVOC */
intel_reg_t sdvo_reg;
/*
* Capabilities of the SDVO device returned by
* intel_sdvo_get_capabilities()
*/
struct intel_sdvo_caps caps;
u8 colorimetry_cap;
/* Pixel clock limitations reported by the SDVO device, in kHz */
int pixel_clock_min, pixel_clock_max;
/*
* Hotplug activation bits for this device
*/
u16 hotplug_active;
/*
* the sdvo flag gets lost in round trip: dtd->adjusted_mode->dtd
*/
u8 dtd_sdvo_flags;
};
struct intel_sdvo_connector {
struct intel_connector base;
/* Mark the type of connector */
u16 output_flag;
/* This contains all current supported TV format */
u8 tv_format_supported[TV_FORMAT_NUM];
int format_supported_num;
struct drm_property *tv_format;
/* add the property for the SDVO-TV */
struct drm_property *left;
struct drm_property *right;
struct drm_property *top;
struct drm_property *bottom;
struct drm_property *hpos;
struct drm_property *vpos;
struct drm_property *contrast;
struct drm_property *saturation;
struct drm_property *hue;
struct drm_property *sharpness;
struct drm_property *flicker_filter;
struct drm_property *flicker_filter_adaptive;
struct drm_property *flicker_filter_2d;
struct drm_property *tv_chroma_filter;
struct drm_property *tv_luma_filter;
struct drm_property *dot_crawl;
/* add the property for the SDVO-TV/LVDS */
struct drm_property *brightness;
/* this is to get the range of margin.*/
u32 max_hscan, max_vscan;
/**
* This is set if we treat the device as HDMI, instead of DVI.
*/
bool is_hdmi;
};
struct intel_sdvo_connector_state {
/* base.base: tv.saturation/contrast/hue/brightness */
struct intel_digital_connector_state base;
struct {
unsigned overscan_h, overscan_v, hpos, vpos, sharpness;
unsigned flicker_filter, flicker_filter_2d, flicker_filter_adaptive;
unsigned chroma_filter, luma_filter, dot_crawl;
} tv;
};
Annotation
- Immediate include surface: `linux/delay.h`, `linux/export.h`, `linux/i2c.h`, `linux/slab.h`, `drm/display/drm_hdmi_helper.h`, `drm/drm_atomic_helper.h`, `drm/drm_crtc.h`, `drm/drm_edid.h`.
- Detected declarations: `struct intel_sdvo`, `struct intel_sdvo_ddc`, `struct intel_sdvo`, `struct intel_sdvo_connector`, `struct intel_sdvo_connector_state`, `function to_intel_sdvo_connector`, `function issues`, `function intel_sdvo_read_byte`, `function intel_sdvo_debug_write`, `function __intel_sdvo_write_cmd`.
- Atlas domain: Driver Families / drivers/gpu.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
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.