[Intel-gfx] [PATCH 5/6] drm/i915/bios: Define more BDB contents
Lyude Paul
lyude at redhat.com
Tue May 31 18:24:00 UTC 2022
On Mon, 2022-05-30 at 15:55 +0300, Jani Nikula wrote:
> 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;
If we could get some more info on what all of this stuff is that'd be
appreciated! I had thought that knowing which
> > +
> > 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).
> """
Ville had actually mentioned this one before! I hadn't added support for it
quite yet though since I don't think any of the machines I've run into thus
far actually had this present in their VBTs. Since we're adding this here
though, I may as well dig up the patch I wrote for that and post it in a bit
>
> > } __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;
> >
> > /*
>
--
Cheers,
Lyude Paul (she/her)
Software Engineer at Red Hat
More information about the Intel-gfx
mailing list