summaryrefslogtreecommitdiff
path: root/src/smilynx_crtc.c
AgeCommit message (Collapse)Author
2009-05-10Widen the pixel clock readjust interval for SM712.Francisco Jerez
Set it to 3MHz so that the pixel clock frequency is overridden when it's found to be 49MHz, which is reported to be unstable.
2009-02-04Wait for vertical retrace before writing registers at SMILynx_CrtcDPMS_*Francisco Jerez
2009-02-04Dynamically switch virtual refresh mode.Francisco Jerez
Probably this makes dualhead mode more useful because it makes possible displaying video on the LCD as long as the CRT output is disabled or cloned.
2008-12-29Some more quirks for the SM712.Francisco Jerez
* Program the MCLK to 157MHz on startup. * Adjust the requested pixel clock if it's near one of the known stable frequencies. * Prefer the clock alternative with post scalar turned on when the denominator is even.
2008-12-29Add support for clone mode on Lynx chipsets.Francisco Jerez
2008-12-21Add a CRTC/Output implementation using BIOS for modesetting.Francisco Jerez
After the RandR1.2 implementation the "UseBIOS" option wasn't actually programming the hardware through VESA BIOS, this brings back that functionality.
2008-12-21Allocate crtc->funcs and output->funcs in the heap.Francisco Jerez
2008-12-21Cleanup the Lynx register saving/restoring code.Francisco Jerez
Save some registers not previously tracked, and use pSmi->mode instead of continuously reading the hardware state.
2008-12-21Add some quirks for SM712 modesetting.Francisco Jerez
2008-12-17Some corrections on the Lynx modesetting code.Francisco Jerez
This fixes 1280x1024 modes on the VGA output with dual head on. Also, solve a build problem when using -DSMI_DEBUG, as pointed by Richard Schwarting.
2008-11-24Use a single debug macro for leaving functions.Paulo Cesar Pereira de Andrade
The LEAVE() macro, when debug is disabled, now is defined as: <hash>define LEAVE(...) return __VA_ARGS__ This avoids the requirement of a return statement after the LEAVE() macro call, what can be confusing.
2008-10-28Lynx hardware cursor code adapted to the CRTC interfaces.Francisco Jerez
2008-10-28Some corrections in the CRTC code.Francisco Jerez
* Make screen resizing behave better with XAA. * Move some local variable declarations to the top of the function definition to conform ANSI C. * Make the Lynx panel modesetting code to actually program the panel sync pulse width in dualhead mode. * Also, fix a crash when using libpciaccess (the memory wasn't being unmapped).
2008-10-14RandR1.2 initial implementation (WIP)Francisco Jerez
Moved most of the Lynx-specific code out of the main functions at smi_driver.c to some new files: smilynx_hw.c (With CRTC-independent code like global hardware initialization and mode saving/restoring), smilynx_crtc.c (With the CRTC-local procedures) and smilynx_output.c (Output power management, DDC and monitor detection, currently). Done something similar with the SMI501 code: split SMI501_ModeInit in three separate functions: SMI501_HWInit that does the global initialization, and the CRTC mode_set callbacks SMI501_ModeSet_crt and SMI501_ModeSet_lcd at smi501_crtc.c. The SMI501_ModeSet code is divided into SMI501_WriteMode_common, SMI501_WriteMode_lcd and SMI501_WriteMode_crt, each one updates a different register set in the hardware. Inside smi_crtc.c, there is mainly hardware independent code... Initial CRT controller allocation, shadows, rotation and framebuffer resizing code. The shadow code currently relies on EXA... I'm not sure what are the problems of the EXA implementation in MSOC. Does it work? I think it would be a good thing to get rid of XAA soon: The next thing I'll be working on will be EXA Composite... I hope it's possible to get EXA acceleration working at least as fast as the current XAA. (Although Teddy Wang confirmed me that the SMI720 DMA engine is broken...) So, the patch adds some features like new Lynx dualhead modesetting code, but it probably breaks some other things: * Video Overlay: I suppose it does work with EXA activated. It seems it is also possible to have simultaneous overlays in both CRTCs with the Lynx hardware (I have some code for this, but still work in progress). * Hardware Cursor (It needs more integration in the CRTC interfaces). * The old Shadow FB / rotation code, which we should probably drop. These are in my TODO list... Along with some more cleaning and other minor issues in the modesetting code. About the SMI501 RandR1.2 implementation... I suppose it's specially lacking per-output DPMS (The DPMS field in the System Control register only affects the CRT, doesn't it?).