radeon/r128 fails to read hsync/vsync rates when range descriptor is missing
henry.zhao@oracle.com
Submitted byAssigned to henry.zhao@oracle.com
Description
radeon/r128 driver uses its own validation function RADEONValidateDDCModes()
for mode validation when it detects a DFP/LCD monitor, uses server's
xf86ValidateMode() for mode validation when it detects a CRT monitor, or
RADEONValidateDDCModes() failes (mostly due to unavailability of DDC data). In
either cases, it calls RADEONSetSyncRangeFromEdid() to get monitor hsync/vsync
numbers if these numbers are not available in a config file.
However, RADEONSetSyncRangeFromEdid() only tries to read Range Limits
Descriptor from DDC to get hsync/vsync, and if no Range Limits Descriptor exits
in DDC, it fall backs immediately to default numbers. This is not right,
since some monitors do not provide Range Limits Descriptor and if this
happens, xf86ValidateMode() makes attempts to derive hsyn/vsync numbers from
other timing sectors.