[Intel-gfx] [PATCH 1/2] drm/i915: Update VBT fields for child devices

Shubhangi Shrivastava shubhangi.shrivastava at intel.com
Thu Mar 31 10:42:25 UTC 2016



On Wednesday 30 March 2016 08:18 PM, Jani Nikula wrote:
> On Fri, 25 Mar 2016, Shubhangi Shrivastava <shubhangi.shrivastava at intel.com> wrote:
>> This patch adds new fields that are not yet added in drm code
>> in child devices struct
>>
>> Signed-off-by: Sivakumar Thulasimani <sivakumar.thulasimani at intel.com>
>> Signed-off-by: Durgadoss R <durgadoss.r at intel.com>
>> Signed-off-by: Shubhangi Shrivastava <shubhangi.shrivastava at intel.com>
>> Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
>> ---
>>   drivers/gpu/drm/i915/intel_bios.c     | 15 ++++++++++++++-
>>   drivers/gpu/drm/i915/intel_vbt_defs.h | 16 +++++++++++-----
>>   2 files changed, 25 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
>> index 083003b..e2f636c 100644
>> --- a/drivers/gpu/drm/i915/intel_bios.c
>> +++ b/drivers/gpu/drm/i915/intel_bios.c
>> @@ -1126,7 +1126,7 @@ static void parse_ddi_port(struct drm_i915_private *dev_priv, enum port port,
>>   	}
>>   
>>   	/* Parse the I_boost config for SKL and above */
>> -	if (bdb->version >= 196 && (child->common.flags_1 & IBOOST_ENABLE)) {
>> +	if (bdb->version >= 196 && child->common.iboost) {
>>   		info->dp_boost_level = translate_iboost(child->common.iboost_level & 0xF);
>>   		DRM_DEBUG_KMS("VBT (e)DP boost level for port %c: %d\n",
>>   			      port_name(port), info->dp_boost_level);
>> @@ -1244,6 +1244,19 @@ parse_device_mapping(struct drm_i915_private *dev_priv,
>>   		 */
>>   		memcpy(child_dev_ptr, p_child,
>>   		       min_t(size_t, p_defs->child_dev_size, sizeof(*p_child)));
>> +
>> +		/*
>> +		 * copied full block, now init values when they are not
>> +		 * available in current version
>> +		 */
>> +		if (bdb->version < 196) {
>> +			/* Set default values for bits added from v196 */
>> +			child_dev_ptr->common.iboost = 0;
>> +			child_dev_ptr->common.hpd_invert = 0;
>> +		}
>> +
>> +		if (bdb->version < 192)
>> +			child_dev_ptr->common.lspcon = 0;
>>   	}
>>   	return;
>>   }
>> diff --git a/drivers/gpu/drm/i915/intel_vbt_defs.h b/drivers/gpu/drm/i915/intel_vbt_defs.h
>> index 749dcea..2da7be8 100644
>> --- a/drivers/gpu/drm/i915/intel_vbt_defs.h
>> +++ b/drivers/gpu/drm/i915/intel_vbt_defs.h
>> @@ -261,9 +261,6 @@ struct old_child_dev_config {
>>    * versions. Notice that the meaning of the contents contents may still change,
>>    * but at least the offsets are consistent. */
>>   
>> -/* Definitions for flags_1 */
>> -#define IBOOST_ENABLE (1<<3)
>> -
>>   struct common_child_dev_config {
>>   	u16 handle;
>>   	u16 device_type;
>> @@ -272,8 +269,17 @@ struct common_child_dev_config {
>>   	u8 not_common2[2];
>>   	u8 ddc_pin;
>>   	u16 edid_ptr;
>> -	u8 obsolete;
>> -	u8 flags_1;
>> +	u8 dvo_cfg; /* See DEVICE_CFG_* above */
>> +	u8 efp_routed:1;
>> +	u8 lane_reversal:1;
>> +	u8 lspcon:1;
>> +	u8 iboost:1;
>> +	u8 hpd_invert:1;
>> +	u8 flag_reserved:3;
>> +	u8 hdmi_support:1;
>> +	u8 dp_support:1;
>> +	u8 tmds_support:1;
>> +	u8 support_reserved:5;
> You replace two bytes with three bytes, shifting the rest.

Oh yes.. Thats a miss. Thanks.. Fixed..

>
>>   	u8 not_common3[13];
>>   	u8 iboost_level;
>>   } __packed;



More information about the Intel-gfx mailing list