[Intel-gfx] [PATCH 5/6] drm/i915/bios: Define more BDB contents

Jani Nikula jani.nikula at linux.intel.com
Mon May 30 12:55:52 UTC 2022


On Fri, 27 May 2022, Ville Syrjala <ville.syrjala at linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> Add a bunch of new struff we're missing in various BDB blocks.
>
> TODO: Bunch of these might actually need to be taken
> into use...

Cc: Jouni, Lyude for some HDR backlight stuff below.

>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_vbt_defs.h | 50 ++++++++++++++++---
>  1 file changed, 43 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_vbt_defs.h b/drivers/gpu/drm/i915/display/intel_vbt_defs.h
> index 39109f204c6d..be99f585b1d0 100644
> --- a/drivers/gpu/drm/i915/display/intel_vbt_defs.h
> +++ b/drivers/gpu/drm/i915/display/intel_vbt_defs.h
> @@ -564,7 +564,9 @@ struct bdb_driver_features {
>  	u16 tbt_enabled:1;
>  	u16 psr_enabled:1;
>  	u16 ips_enabled:1;
> -	u16 reserved3:4;
> +	u16 reserved3:1;
> +	u16 dmrrs_enabled:1;

Should we start logging the version ranges here too, since it's obsolete
from 228. Kinda duplicating the info though. *shrug*.

> +	u16 reserved4:2;
>  	u16 pc_feature_valid:1;
>  } __packed;
>  
> @@ -666,6 +668,16 @@ struct edp_full_link_params {
>  	u8 vswing:4;
>  } __packed;
>  
> +struct edp_apical_params {
> +	u32 panel_oui;
> +	u32 dpcd_base_address;
> +	u32 dpcd_idridix_control_0;
> +	u32 dpcd_option_select;
> +	u32 dpcd_backlight;
> +	u32 ambient_light;
> +	u32 backlight_scale;
> +} __packed;
> +
>  struct bdb_edp {
>  	struct edp_power_seq power_seqs[16];
>  	u32 color_depth;
> @@ -681,6 +693,9 @@ struct bdb_edp {
>  	struct edp_pwm_delays pwm_delays[16];			/* 186 */
>  	u16 full_link_params_provided;				/* 199 */
>  	struct edp_full_link_params full_link_params[16];	/* 199 */
> +	u16 apical_enable;					/* 203 */
> +	struct edp_apical_params apical_params[16];		/* 203 */
> +	u16 edp_fast_link_training_rate[16];			/* 224 */

Another eDP port link rate param would go here? Could be added in
another patch.

>  } __packed;
>  
>  /*
> @@ -717,6 +732,7 @@ struct bdb_lvds_options {
>  
>  	u16 lcdvcc_s0_enable;					/* 200 */
>  	u32 rotation;						/* 228 */
> +	u32 position;						/* 240 */
>  } __packed;
>  
>  /*
> @@ -843,13 +859,22 @@ struct bdb_lfp_backlight_data {
>  	u8 level[16]; /* Obsolete from 234+ */
>  	struct lfp_backlight_control_method backlight_control[16];
>  	struct lfp_brightness_level brightness_level[16];		/* 234+ */
> -	struct lfp_brightness_level brightness_min_level[16];	/* 234+ */
> -	u8 brightness_precision_bits[16];						/* 236+ */
> +	struct lfp_brightness_level brightness_min_level[16];		/* 234+ */
> +	u8 brightness_precision_bits[16];				/* 236+ */
> +	u16 hdr_dpcd_refresh_timeout[16];				/* 239+ */

Jouni, Lyude, this is probably interesting to you:

"""
This table of values (for 16 panels, 1 value per panel) is used to
specify the time required by the TCON (with Intel HDR Aux Interface
Support) to refresh the DPCD set with Intel HDR CAPS (DPCD offset:
340h-344h).

The value is in units of 10 us(microseconds).
"""

>  } __packed;
>  
>  /*
>   * Block 44 - LFP Power Conservation Features Block
>   */
> +struct lfp_features {

Nit, maybe lfp_power_features.

Anyway,

Reviewed-by: Jani Nikula <jani.nikula at intel.com>


> +	u8 reserved1:1;
> +	u8 power_conservation_pref:3;
> +	u8 reserved2:1;
> +	u8 lace_enabled_status:1;
> +	u8 lace_support:1;
> +	u8 als_enable:1;
> +} __packed;
>  
>  struct als_data_entry {
>  	u16 backlight_adjust;
> @@ -861,10 +886,16 @@ struct aggressiveness_profile_entry {
>  	u8 lace_aggressiveness : 4;
>  } __packed;
>  
> +struct aggressiveness_profile2_entry {
> +	u8 opst_aggressiveness : 4;
> +	u8 elp_aggressiveness : 4;
> +} __packed;
> +
>  struct bdb_lfp_power {
> -	u8 lfp_feature_bits;
> +	struct lfp_features features;
>  	struct als_data_entry als[5];
> -	u8 lace_aggressiveness_profile;
> +	u8 lace_aggressiveness_profile:3;
> +	u8 reserved1:5;
>  	u16 dpst;
>  	u16 psr;
>  	u16 drrs;
> @@ -876,6 +907,9 @@ struct bdb_lfp_power {
>  	struct aggressiveness_profile_entry aggressiveness[16];
>  	u16 hobl; /* 232+ */
>  	u16 vrr_feature_enabled; /* 233+ */
> +	u16 elp; /* 247+ */
> +	u16 opst; /* 247+ */
> +	struct aggressiveness_profile2_entry aggressiveness2[16]; /* 247+ */
>  } __packed;
>  
>  /*
> @@ -885,8 +919,10 @@ struct bdb_lfp_power {
>  #define MAX_MIPI_CONFIGURATIONS	6
>  
>  struct bdb_mipi_config {
> -	struct mipi_config config[MAX_MIPI_CONFIGURATIONS];
> -	struct mipi_pps_data pps[MAX_MIPI_CONFIGURATIONS];
> +	struct mipi_config config[MAX_MIPI_CONFIGURATIONS]; /* 175 */
> +	struct mipi_pps_data pps[MAX_MIPI_CONFIGURATIONS]; /* 177 */
> +	struct edp_pwm_delays pwm_delays[MAX_MIPI_CONFIGURATIONS]; /* 186 */
> +	u8 pmic_i2c_bus_number[MAX_MIPI_CONFIGURATIONS]; /* 190 */
>  } __packed;
>  
>  /*

-- 
Jani Nikula, Intel Open Source Graphics Center


More information about the Intel-gfx mailing list