[Intel-gfx] [PATCH] drm/i915: Disable VGA plane reliably

Ma, Ling ling.ma at intel.com
Wed Jul 22 11:34:38 CEST 2009



>-----Original Message-----
>From: Jesse Barnes [mailto:jbarnes at virtuousgeek.org]
>Sent: 2009年7月22日 0:51
>To: Ma, Ling
>Cc: eric at anholt.net; Ma, Ling; intel-gfx at lists.freedesktop.org
>Subject: Re: [Intel-gfx] [PATCH] drm/i915: Disable VGA plane reliably
>
>On Tue, 21 Jul 2009 11:00:00 +0800
>ling.ma at intel.com wrote:
>
>> VGA random hang on recent G45/43 board. From spec, SR01
>> bit 5 should be set before VGA plane disable through
>> control register, otherwise we might get random crash
>> and lockups.
>>
>> sync up with 2D driver which fixed freedesktop.org bug #17235
>>
>> Signed-off-by: Ma Ling <ling.ma at intel.com>
>> ---
>>  drivers/gpu/drm/i915/intel_display.c |   30
>> +++++++++++++++++++++++++++++- 1 files changed, 29 insertions(+), 1
>> deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_display.c
>> b/drivers/gpu/drm/i915/intel_display.c index b6c6a3e..d4e09e6 100644
>> --- a/drivers/gpu/drm/i915/intel_display.c
>> +++ b/drivers/gpu/drm/i915/intel_display.c
>> @@ -1273,6 +1273,34 @@ static void igdng_crtc_dpms(struct drm_crtc
>> *crtc, int mode) }
>>  }
>>
>> +static void
>> +intel_crtc_disable_vga_plane(struct drm_device *dev)
>> +{
>> +	struct drm_i915_private *dev_priv = dev->dev_private;
>> +	int vgacntrl = I915_READ(VGACNTRL);
>> +	uint8_t sr01;
>> +
>> +	if (vgacntrl & VGA_DISP_DISABLE)
>> +		return;
>> +	/*
>> +	 * Set bit 5 of SR01;
>> +	 * Wait 30us;
>> +	 */
>> +
>> +	I915_WRITE8(SRX_INDEX, 1);
>> +	sr01 = I915_READ8(SRX_DATA);
>> +	I915_WRITE8(SRX_DATA, sr01 | (1 << 5));
>
>What is bit 5?  Can you use a #define here?  
Fixed
Also, shouldn't you be
>using the I/O port accessors to get at VGA port space rather than the
>MMIO accessors?
MMIO map has included VGA and VGA Extended Registers, so we can use
MMIO accessor directly.
>
>> +	udelay(30);
>> +	/* disable center mode on 965GM and G4X platform */
>> +	if (IS_I965GM(dev) || IS_G4X(dev))
>> +		vgacntrl &= ~(3 << 24);
>> +	vgacntrl |= VGA_DISP_DISABLE;
>
>3<<24 should probably be a #define or set of #defines too.
>
Fixed 
Thanks
Ma Ling
>Thanks,



More information about the Intel-gfx mailing list