summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2009-04-21Increase the maximum clock value to 200MHz on SM712.Francisco Jerez
The default MCLK setting was higher than the clock limit, and it failed.
2009-04-21Don't attempt monitor detection on SM712.Francisco Jerez
The databook says nothing about it, and it doesn't work.
2009-03-20Stop clearing of "VESA compliance power down mode" bitJamie Lentin
Clearing this bit causes an OQO 01+ w/SMI720 to power down the LCD, leave it alone. Signed-off-by: Jamie Lentin <jm@lentin.co.uk> Signed-off-by: Francisco Jerez <currojerez@riseup.net>
2009-03-13Fix direct access to IO space on chipsets with no IOBase mapping.Matthieu Herrb
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
2009-02-11siliconmotion: Fix disabling of debugging if SMI501_CLI_DEBUG is set to 0Niels de Vos
Due to checking if SMI501_CLI_DEBUG is defined, some debugging will be enabled if SMI501_CLI_DEBUG is set to 0. A single #if should be used instead. Some debugging code already does this. Signed-off-by: Niels de Vos <niels.devos@wincor-nixdorf.com> Signed-off-by: Francisco Jerez <currojerez@riseup.net>
2009-02-04Wait for vertical retrace before writing registers at SMILynx_CrtcDPMS_*Francisco Jerez
2009-02-04Set dualhead to on by default on SM72x chipsets.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-29Use util-macros XORG_CHANGELOG and XORG_CWARNFLAGS.Paulo Cesar Pereira de Andrade
Also correct only compilation warning about possibly uninitialized variable.
2008-12-29Simplification and redundancy removal in video code.Paulo Cesar Pereira de Andrade
FOURCC_YV12 and FOURCC_I420 handling also was buggy. First it was doing a noop by swapping offset2 and offset3 values twice, and second, swap is not required when using smi 501/502 CSC video. Changed SMI_DisplayVideo0501_CSC() to not set static values to registers in a possible loop, if there is clipping.
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-21Fix SMI_CrtcShadowAllocate.Francisco Jerez
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-19Enable the SMI 501/502 command list interpreter in a "debug" build.Paulo Cesar Pereira de Andrade
To enable it, set SMI501_CLI_DEBUG to 1 in smi.h, and use Option "AcellMethod "EXA" in the Device section of /etc/X11/xorg.conf This code is enabled mainly for debug purposes. To make if have an actual performance gain (like when using a sm50x with a "low profile" "main" processor") it should be required to actually do busy loops in kernel mode (and hope the costs of context switch will pay it). In kernel mode it is possible to wait for an interrupt being triggered when the command list is processed, or when the 2d engine is idle. This commit should be functional, but, mainly due to debug messages, should be significantly slower then a build with MI501_CLI_DEBUG defined to 0.
2008-12-18Add definitions for the SMI 501/502 "command list interpreter".Paulo Cesar Pereira de Andrade
This also changes some bit operations to use a "bitfield" equivalent one, with named fields, that should make it easier to understand what is being tested. The enum smi_cli_cmd_code in smi_501.h is code that was added to a experimental smi_drm.h, but the hardware only supports basic 2d accel, and to compensate for the extra overhead for maintaining a command list (assuming it worked correctly) it would be required to have a special handling, like calling an ioctl to do the "busy loop" in the kernel (that is, should wait for an irq or a timeout). The problem is that even if waiting for a idle engine before crafting a command, and waiting again after submitting the command, there would be corruption on screen after some time. So, the "busy loop" in the kernel would only be useful if still using direct writes to mmio registers.
2008-12-17Fix crashes when switching VTs with EXA enabled.Francisco Jerez
Call ModifyPixmapHeader on SMI_EnterVT to update the screen pixmap address tracked by EXA. Set memoryBase in the ExaDriverRec to NULL when switching out: some pixmap could get allocated near the former aperture address and it could be erroneously considered as being in offscreen memory.
2008-12-17Enable linear memory mode on SMI_MapMmio.Francisco Jerez
Set UseBIOS to off by default for SM720. Some improvements on the debugging output.
2008-12-17Fall back to UseBIOS off when VBEInit fails.Francisco Jerez
2008-12-17Fix XAA SolidFill with 32 bpp framebuffer.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-12-17Disable screen centering on mode initialization.Francisco Jerez
2008-12-13Janitor/maintenance patches.Paulo Cesar Pereira de Andrade
o Define HAVE_XMODES in config.h. o Correct the LEAVE() macro declaration when SMI_DEBUG is defined. o Remove prototype for SMI_DGAInit() if HAVE_XMODES is not defined. o Properly scale value read from sm501 CURRENT_CLOCK register, to print an appropriate message on startup.
2008-12-12Unless there is a xorg.conf option, don't modify mclck neither mxclck.Paulo Cesar Pereira de Andrade
The option set_mclck was renamed to just MCLK, and a new MXCLCK option was added for smi501/502 chips. Note that previously, on MSOC chips, the set_mclck option actually changed mxclck, what is now done by the MXCLK option. The manpage was also update to reflect the options usage. A new SMI501_FindMemClock() function was added, as a possible placeholder for choosing alternate clocks when programming MMIO 0x68. But it should be noted that the smi 501 databook says: Miscellaneous Timing Read/Write MMIO_base + 0x000068 Power-on Default 0x00000000 [...] 5:4 Divider Output Frequency Selection for Second PLL. 00: 336 MHz. 01: 288 MHz. 10: 240 MHz. 11: 192 MHz. while the 502 databook says: Miscellaneous Timing Read/Write MMIO_base + 0x000068 Power-on Default 0b0000.00xx.0000.1001.0000.1001.0000.0000 [...] 5:4 Reserved These bits are reserved. but still tells to refer to those bits.
2008-11-28Properly restore console on the smi 501/502.Paulo Cesar Pereira de Andrade
The current kernel framebuffer module expects accelerations registers in the default boot state, otherwise, it will display some corruption, or not correctly clear the screen, among other side effects. Now it should be restoring everything the kernel framebuffer relies on not being modified.
2008-11-28DGA is dependent on HAVE_XMODES.Paulo Cesar Pereira de Andrade
2008-11-25Remove smi_dga.c and polylines code from smi_xaa.c.Paulo Cesar Pereira de Andrade
DGA was also not being properly test to not enable the pSmi fields, but since the dga implementation is very basic, it is better to just remove it (if compiling the sources on pre 1.4 X Server, DGA will be disabled). The polylines code in xmi_xaa.c was already if 0'ed for some time, but it may be reinstantiated to accelerate (back) xaa rotated modes. Currently only randr+exa accelerates rotated modes.
2008-11-25Ensure the engine is idle before switching to a virtual terminal.Paulo Cesar Pereira de Andrade
At least in the smi501/502, it may even completely lock in some special cases (like when there is a browser playing some youtube video). The code in SMI_CloseScreen() was almost identical to SMI_LeaveVT(), so it now just call SMI_Leave() if required.
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-11-19Declare DGA fields only when not using xf86DiDGAInit.Paulo Cesar Pereira de Andrade
2008-11-17Enable XAA and randr rotated modes.Paulo Cesar Pereira de Andrade
Use the same logic for offscreen memory management as used in smi_video.c. This also makes the functions SMI_AllocateMemory and SMI_FreeMemory no longer static in smi_video.c.
2008-11-14Correct EXA+Randr+rotated mode.Paulo Cesar Pereira de Andrade
The smi 501/502 cannot rotate-blt more than 32 bytes at a time. Patch based on smi's sample smi_shadow.c. XAA + randr + rotated mode currently not supported.
2008-11-14Don't explicitly call the cursor routines.Paulo Cesar Pereira de Andrade
On the MSOC, the hardware cursor was remaining on screen, when using EXA and a randr rotated mode.
2008-11-14Only compile smi_dga.c when xf86DiDGAInit is not available.Paulo Cesar Pereira de Andrade
Besides reducing driver size, this should make DGA+EXA accelerated.
2008-11-14Correct regressions in CSCVideoPaulo Cesar Pereira de Andrade
Commit 0870d46718fe4e01953efd63cec46c54140b20f9 broke the clipping code. That has been corrected in this patch. Anyway, the hardware color space conversion should not be hidden down in the driver code, instead it should be usable by external programs as well, instead of having some applications doing it by software.
2008-11-14MSOC: Hide cursor on mode setup when using software cursor.Paulo Cesar Pereira de Andrade
The kernel framebuffer module uses the hw cursor for the console cursor, so the driver must ensure it is hidden when setting a video mode.
2008-11-14Be more liberal about mode width validation.Paulo Cesar Pereira de Andrade
The code was inherited from first import of latest smi sources, but the driver actually programs a mode, so there is no need to check if there will be a table entry with register contents matching the requested mode.
2008-11-13Don't restore alpha registers, as they are not being modified.Paulo Cesar Pereira de Andrade
Restoring the registers "without need" caused some instability, with random locks.
2008-11-13Changed to use panel plane tl and tr to center modes smaller then panel size.Paulo Cesar Pereira de Andrade
The code is under "<hash>ifdef USE_PANEL_CENTER", as it is buggy, and regardless of value set to right and bottom, it will crop from 0 to mode-width/mode-height, and then display a lot of screen artifacts, due to improper programming. Either way, the CRT in clone mode will display correctly.
2008-11-13Enable gamma correction on the MSOC.Paulo Cesar Pereira de Andrade
2008-11-11Correct a problem in CSC video on the smi 501/502.Paulo Cesar Pereira de Andrade
This significantly simplify the function SMI_DisplayVideo0501_CSC(), but the real cause of the problem that this patch corrects is that whenever MMIO 0x1000fc bit 24 (Vertical Linear Filter Control) is set, the last line of the rendered video will display only noisy, regardless of video being rendered 1x1, or scaled up or down.
2008-11-11Disable detection of crt for the smi 501/502.Paulo Cesar Pereira de Andrade
As described by siliconmotion, it does not work on the smi 502. Does it work on older revisions? Keeping <hash>ifdef'ed out for now as it hopefully will be corrected in a newer hardware revision.
2008-11-11Implement an argb cursor using the alpha layer.Paulo Cesar Pereira de Andrade
The code is <hash>ifdef'ed out by <hash>if SMI_CURSOR_ALPHA_PLANE because the smi 502 hardware is buggy, but it appears to have worked for some older hardware revisions (by looking at code available at ftp.siliconmotion.com.tw). Keeping it at least for now, as it serves as a simple way to reproduce the problems described in smi.h.
2008-11-11Add support for the reading/writing the alpha layer registers.Paulo Cesar Pereira de Andrade
2008-11-11Correct wrong offset value for secondary hardware cursor.Paulo Cesar Pereira de Andrade
Hardware cursor is still disabled in dual head mode due to some problems, usually when having both panel and crt mapped to the same address, what appears to confuse the "modes" code.
2008-11-08Remove unused fifo_* options.Francisco Jerez
2008-11-08Remove the ZoomOnLCD option and update manpage for PCIRetry.Paulo Cesar Pereira de Andrade
ZoomOnLCD controlled if Ctrl/Alt/+ or Ctrl/Alt/- could be used to reprogram the mode on the panel. The option was not used, and now, if different resolutions could be used, it should be advertised by randr. PCIBurst and PCIRetry options are now enabled by default. The fifo_xxx options need a review, as they appear to be associated with the older WaitQueue macro, that did ignore its argument. But these options are not used, and may be removed or reimplemented at some time.