[Intel-gfx] [PATCH 1/2] drm/i915/display/vlv: fix pixel overlap register update

Jani Nikula jani.nikula at linux.intel.com
Mon Jan 30 12:58:18 UTC 2023


On Mon, 19 Dec 2022, Jani Nikula <jani.nikula at linux.intel.com> wrote:
> On Mon, 19 Dec 2022, Andrzej Hajda <andrzej.hajda at intel.com> wrote:
>> To update properly bits in the register the mask should be used
>> to clear old value and then the result should be or-ed with new
>> value, for such updates there is separate helper intel_de_rmw.
>>
>> Signed-off-by: Andrzej Hajda <andrzej.hajda at intel.com>
>
> Seems like the right thing to do.
>
> Reviewed-by: Jani Nikula <jani.nikula at intel.com>

And pushed both to din, thanks for the patches.

BR,
Jani.


>
>
>> ---
>>  drivers/gpu/drm/i915/display/vlv_dsi.c | 24 +++++++++---------------
>>  1 file changed, 9 insertions(+), 15 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/vlv_dsi.c b/drivers/gpu/drm/i915/display/vlv_dsi.c
>> index 662bdb656aa304..f5268997a3e172 100644
>> --- a/drivers/gpu/drm/i915/display/vlv_dsi.c
>> +++ b/drivers/gpu/drm/i915/display/vlv_dsi.c
>> @@ -649,23 +649,17 @@ static void intel_dsi_port_enable(struct intel_encoder *encoder,
>>  	enum port port;
>>  
>>  	if (intel_dsi->dual_link == DSI_DUAL_LINK_FRONT_BACK) {
>> -		u32 temp;
>> +		u32 temp = intel_dsi->pixel_overlap;
>> +
>>  		if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) {
>> -			for_each_dsi_port(port, intel_dsi->ports) {
>> -				temp = intel_de_read(dev_priv,
>> -						     MIPI_CTRL(port));
>> -				temp &= ~BXT_PIXEL_OVERLAP_CNT_MASK |
>> -					intel_dsi->pixel_overlap <<
>> -					BXT_PIXEL_OVERLAP_CNT_SHIFT;
>> -				intel_de_write(dev_priv, MIPI_CTRL(port),
>> -					       temp);
>> -			}
>> +			for_each_dsi_port(port, intel_dsi->ports)
>> +				intel_de_rmw(dev_priv, MIPI_CTRL(port),
>> +					     BXT_PIXEL_OVERLAP_CNT_MASK,
>> +					     temp << BXT_PIXEL_OVERLAP_CNT_SHIFT);
>>  		} else {
>> -			temp = intel_de_read(dev_priv, VLV_CHICKEN_3);
>> -			temp &= ~PIXEL_OVERLAP_CNT_MASK |
>> -					intel_dsi->pixel_overlap <<
>> -					PIXEL_OVERLAP_CNT_SHIFT;
>> -			intel_de_write(dev_priv, VLV_CHICKEN_3, temp);
>> +			intel_de_rmw(dev_priv, VLV_CHICKEN_3,
>> +				     PIXEL_OVERLAP_CNT_MASK,
>> +				     temp << PIXEL_OVERLAP_CNT_SHIFT);
>>  		}
>>  	}

-- 
Jani Nikula, Intel Open Source Graphics Center


More information about the Intel-gfx mailing list