diff options
| author | Dave Airlie <airlied@redhat.com> | 2009-08-20 13:38:04 +1000 | 
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2009-08-20 13:38:04 +1000 | 
| commit | 51c8b4071d84d46cc100baa5931ad06b2a823c95 (patch) | |
| tree | 098cf9d41ce1c548d922708a770a9efe35e434df /drivers/gpu/drm/drm_edid.c | |
| parent | a987fcaa805fcb24ba885c2e29fd4fdb6816f08f (diff) | |
| parent | 6c30c53fd5ae6a99a23ad78e90c428d2c8ffb07f (diff) | |
| download | olio-linux-3.10-51c8b4071d84d46cc100baa5931ad06b2a823c95.tar.xz olio-linux-3.10-51c8b4071d84d46cc100baa5931ad06b2a823c95.zip  | |
Merge Linus master to drm-next
linux-next conflict reported needed resolution.
Conflicts:
	drivers/gpu/drm/drm_crtc.c
	drivers/gpu/drm/drm_edid.c
	drivers/gpu/drm/i915/intel_sdvo.c
	drivers/gpu/drm/radeon/radeon_ttm.c
	drivers/gpu/drm/ttm/ttm_bo.c
Diffstat (limited to 'drivers/gpu/drm/drm_edid.c')
| -rw-r--r-- | drivers/gpu/drm/drm_edid.c | 72 | 
1 files changed, 34 insertions, 38 deletions
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index bbcb2e22675..a1cab5de2f4 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -547,12 +547,41 @@ static int add_detailed_info(struct drm_connector *connector,  		struct detailed_non_pixel *data = &timing->data.other_data;  		struct drm_display_mode *newmode; -		/* EDID up to and including 1.2 may put monitor info here */ -		if (edid->version == 1 && edid->revision < 3) -			continue; +		/* X server check is version 1.1 or higher */ +		if (edid->version == 1 && edid->revision >= 1 && +		    !timing->pixel_clock) { +			/* Other timing or info */ +			switch (data->type) { +			case EDID_DETAIL_MONITOR_SERIAL: +				break; +			case EDID_DETAIL_MONITOR_STRING: +				break; +			case EDID_DETAIL_MONITOR_RANGE: +				/* Get monitor range data */ +				break; +			case EDID_DETAIL_MONITOR_NAME: +				break; +			case EDID_DETAIL_MONITOR_CPDATA: +				break; +			case EDID_DETAIL_STD_MODES: +				/* Five modes per detailed section */ +				for (j = 0; j < 5; i++) { +					struct std_timing *std; +					struct drm_display_mode *newmode; -		/* Detailed mode timing */ -		if (timing->pixel_clock) { +					std = &data->data.timings[j]; +					newmode = drm_mode_std(dev, std, +							       timing_level); +					if (newmode) { +						drm_mode_probed_add(connector, newmode); +						modes++; +					} +				} +				break; +			default: +				break; +			} +		} else {  			newmode = drm_mode_detailed(dev, edid, timing, quirks);  			if (!newmode)  				continue; @@ -563,39 +592,6 @@ static int add_detailed_info(struct drm_connector *connector,  			drm_mode_probed_add(connector, newmode);  			modes++; -			continue; -		} - -		/* Other timing or info */ -		switch (data->type) { -		case EDID_DETAIL_MONITOR_SERIAL: -			break; -		case EDID_DETAIL_MONITOR_STRING: -			break; -		case EDID_DETAIL_MONITOR_RANGE: -			/* Get monitor range data */ -			break; -		case EDID_DETAIL_MONITOR_NAME: -			break; -		case EDID_DETAIL_MONITOR_CPDATA: -			break; -		case EDID_DETAIL_STD_MODES: -			/* Five modes per detailed section */ -			for (j = 0; j < 5; i++) { -				struct std_timing *std; -				struct drm_display_mode *newmode; - -				std = &data->data.timings[j]; -				newmode = drm_mode_std(dev, std, -							timing_level); -				if (newmode) { -					drm_mode_probed_add(connector, newmode); -					modes++; -				} -			} -			break; -		default: -			break;  		}  	}  |