60Hz SXGA+ success on X61
Posted: Mon Jul 06, 2015 4:08 pm
My main gripe with the X61, SXGA+ or even XGA, is that it is stuck at 50Hz. Sometimes the OS will tell you it is at 60Hz, but the dropped frames and slower vblank-synchronized content makes it clear that it is not the case.
I have the middleton SXGA+ BIOS installed, which respects the EDID information from the panel. I have an HV121P01 panel, and even in the datasheet the EDID information clearly shows the detailed timing specifications for a 50Hz refresh. A few "standard timing" options are selected, like the industry standard 640x480 and 1024x768 resolutions, but all of them seem to respect the panel timings in the first detailed block. Since the LCD itself has no scaler I suspect the graphics hardware uses the detailed block to determine what the LCD can do, and will do scaling to that specification on its own.
All I really had to do in the end was take the pixel clock, multiply it by 6/5, put it back, and fix the checksum. The next step is to flash it to the EEPROM in the display.
Many celebrate Powerstrip as a paid utility to do that. The registered version could read the EDID, but claimed it could not find a valid device to write to. An open source utility called edid-rw could also read it, but writes failed silently. When I read back the EDID, it still had the original data after re-writing.
I determined that the EDID chip's WP pin (write protect, active high) needed to be grounded. I lifted pin 7 off the board and put a jumper to ground. After that, Powerstrip still failed to see it, but the linux edid-rw utility worked perfectly.
After flashing the EDID, I rebooted, and I had 60Hz! No fancy config, nothing crazy. It just works like any other laptop that supports the industry standard refresh of 60Hz
So, I'm glad this glaring irritating issue is now fixed. If you want the modified EDID, it is here:
http://mikejmoffitt.com/edid-sxga60.bin
I am sure someone will ask, so I'll address this now: "LCDs don't flicker, so why do you care about the refresh rate?"
The reason is that I develop some games and some audiovisual applications that may synchronize to the refresh of the display, as they are intended for use on an NTSC-timing-derived monitor, which invariably refreshes around 60Hz. At 50Hz, the content must either be slowed down, or frameskipping must occur. The former is slow, and the latter is unpleasant, with jerkiness and possibly tearing occuring.
I have the middleton SXGA+ BIOS installed, which respects the EDID information from the panel. I have an HV121P01 panel, and even in the datasheet the EDID information clearly shows the detailed timing specifications for a 50Hz refresh. A few "standard timing" options are selected, like the industry standard 640x480 and 1024x768 resolutions, but all of them seem to respect the panel timings in the first detailed block. Since the LCD itself has no scaler I suspect the graphics hardware uses the detailed block to determine what the LCD can do, and will do scaling to that specification on its own.
All I really had to do in the end was take the pixel clock, multiply it by 6/5, put it back, and fix the checksum. The next step is to flash it to the EEPROM in the display.
Many celebrate Powerstrip as a paid utility to do that. The registered version could read the EDID, but claimed it could not find a valid device to write to. An open source utility called edid-rw could also read it, but writes failed silently. When I read back the EDID, it still had the original data after re-writing.
I determined that the EDID chip's WP pin (write protect, active high) needed to be grounded. I lifted pin 7 off the board and put a jumper to ground. After that, Powerstrip still failed to see it, but the linux edid-rw utility worked perfectly.
After flashing the EDID, I rebooted, and I had 60Hz! No fancy config, nothing crazy. It just works like any other laptop that supports the industry standard refresh of 60Hz
So, I'm glad this glaring irritating issue is now fixed. If you want the modified EDID, it is here:
http://mikejmoffitt.com/edid-sxga60.bin
I am sure someone will ask, so I'll address this now: "LCDs don't flicker, so why do you care about the refresh rate?"
The reason is that I develop some games and some audiovisual applications that may synchronize to the refresh of the display, as they are intended for use on an NTSC-timing-derived monitor, which invariably refreshes around 60Hz. At 50Hz, the content must either be slowed down, or frameskipping must occur. The former is slow, and the latter is unpleasant, with jerkiness and possibly tearing occuring.