drivers/gpu/drm/amd/display/modules/inc/mod_power.h

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/amd/display/modules/inc/mod_power.h

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/amd/display/modules/inc/mod_power.h
Extension
.h
Size
14241 bytes
Lines
418
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.

Dependency Surface

Detected Declarations

Annotated Snippet

struct mod_power_init_params {

	bool disable_fractional_pwm;

	/* Use nits based brightness instead of brightness percentage
	 */
	bool use_nits_based_brightness;
	unsigned int panel_min_millinits;
	unsigned int panel_max_millinits;

	unsigned int min_backlight_pwm;
	unsigned int max_backlight_pwm;

	unsigned int min_abm_backlight;
	unsigned int num_backlight_levels;
	bool backlight_ramping_override;
	unsigned int backlight_ramping_reduction;
	unsigned int backlight_ramping_start;
	bool def_varibright_enable;
	unsigned int def_varibright_level;
	unsigned int varibright_level;
	unsigned int abm_config_setting;

	bool allow_psr_smu_optimizations;

	bool allow_psr_multi_disp_optimizations;

	bool use_custom_backlight_caps;
	unsigned int custom_backlight_caps_config_no;
	bool use_linear_backlight_curve;
};

struct mod_power {
	int dummy;
};

/* VariBright settings structure */
struct varibright_info {
	unsigned int level;
	bool enable;
	bool activate;
};

struct mod_power_psr_context {
    /* ddc line */
    unsigned int channel;
    /* Transmitter id */
    unsigned int transmitter_id;
    /* Engine Id is used for Dig Be source select */
    unsigned int engine_id;
    /* Controller Id used for Dig Fe source select */
    unsigned int controller_id;
    /* Pcie or Uniphy */
    unsigned int phy_type;
    /* Physical PHY Id used by SMU interpretation */
    unsigned int smu_phy_id;
    /* Vertical total pixels from crtc timing.
     * This is used for static screen detection.
     * ie. If we want to detect half a frame,
     * we use this to determine the hyst lines.
     */
    unsigned int crtc_timing_vertical_total;
    /* PSR supported from panel capabilities and
     * current display configuration
     */
    bool psr_supported_display_config;
    /* Whether fast link training is supported by the panel */
    bool psr_exit_link_training_required;
    /* If RFB setup time is greater than the total VBLANK time,
     * it is not possible for the sink to capture the video frame
     * in the same frame the SDP is sent. In this case,
     * the frame capture indication bit should be set and an extra
     * static frame should be transmitted to the sink.
     */
    bool psr_frame_capture_indication_req;
    /* Set the last possible line SDP may be transmitted without violating
     * the RFB setup time or entering the active video frame.
     */
    unsigned int sdp_transmit_line_num_deadline;
    /* The VSync rate in Hz used to calculate the
     * step size for smooth brightness feature
     */
    unsigned int vsync_rate_hz;
    unsigned int skip_psr_wait_for_pll_lock;
    unsigned int number_of_controllers;
    /* Unused, for future use. To indicate that first changed frame from
     * state3 shouldn't result in psr_inactive, but rather to perform
     * an automatic single frame rfb_update.
     */
    bool rfb_update_auto_en;

Annotation

Implementation Notes