summaryrefslogtreecommitdiff
path: root/sys/src/cmd/aux/vga
AgeCommit message (Collapse)Author
2018-03-04igfx: add support for T510 (thanks mycroftiv)cinap_lenrek
2017-12-23devvga: removing #v/vgabios, use /dev/realmodemem insteadcinap_lenrek
2017-11-13igfx: allocate backing memory for framebuffer and hw cursor when not done by ↵cinap_lenrek
bios (from qu7uux) new approach to graphics memory management: the kernel driver never really cared about the size of stolen memory directly. that was only to figure out the maximum allocation to place the hardware cursor image somewhere at the end of the allocation done by bios. qu7uux's gm965 bios however wont steal enougth memory for his native resolution so we have todo it manually. the userspace igfx driver will figure out how much the bios allocated by looking at the gtt only. then extend the memory by creating a "fixed" physical segment. the kernel driver allocates the memory for the cursor image from normal kernel memory, and just maps it into the gtt at the end of the virtual kernel framebuffer aperture. thanks to qu7uux for the patch.
2017-08-23igfx: fix cdclk and dpll settings for dual channel lvds on sandybridgeqwx
2017-08-20igfx: fix sandybridge fdi link training bits and orderingqwx
- fix wrong bitfield for txctl (different between snb and ivb), and enable tx before rx - DPLL_CTL_x snb/ivb: don't touch reserved bits
2017-06-25aux/vga: simplify vesa by adding rgbmask2chan() functioncinap_lenrek
2017-05-22igfx: add support for haswell graphicsqwx
add support for edp, dp and hdmi on haswell and haswell ult. vga, dvi and specific configurations like ulx are unimplemented. remaining issue: edp link training always fails (time out).
2016-08-20vga/igfx: work in progress fdi link train for sandy bridge, properly ↵cinap_lenrek
calculate fdi and displayport lane count
2016-06-30vga/igfx: fix integer overflow in datam calculation (from qu7uux)cinap_lenrek
data[mn] and link[mn] are 24-bit values. in the expression 'm = (n * ((freq * bpp)/8)) / (lsclk * lanes)', uvlongs are used to prevent integer overflow, but since freq, bpp, lsclk and lanes are all ints, the cast to uvlong does not happen until it's too late, getting a wrong value. instead, use u32int for m and n, and use casts where necessary. example of bad calculation: freq = 141400000 lsclk = 270000000 lanes = 2 bpp = 18 → 0x7f3ee1ca6 (correct value: 0x4b69d0)
2015-09-14igfx: fix typos (thanks qwx)cinap_lenrek
2015-08-03aux/vga: dont rely on atoi() being able to parse hexcinap_lenrek
2015-07-31aux/vga: sandybridge support for igfx (unfinished)cinap_lenrek
as usual, the dude with the hardware vanished so i cannot develop this further. setting mode worked the last time but only when using vesa before, so some bits are still missing. commiting this as it is so i dont have to start from scratch once we have hardware again.
2015-06-13aux/vga: == is not strncmpftrvxmtrx
2015-06-08aux/vga: disable nvidiascale() as it broke modeset on kenjis cardcinap_lenrek
this code needs revision, need a list of cards where this actually works.
2015-05-19aux/vga: dont use /proc/$pid/mem to access vga bioscinap_lenrek
using /proc/$pid/mem to access vga bios is not portable and crashes sgi machines when aux/vga is run. instead, try /dev/realmodemem first (provided by realemu), then #v/vgabios.
2015-02-26aux/vga: dont error when vesa setscale fails after modeset (thanks rx9p for ↵cinap_lenrek
reporting)
2015-02-09igfx: displayport support for ivy bridgecinap_lenrek
2015-02-07vga/igfx: add 0x2a02 for GM965/GL960/X3100; comment vid/did with name of chipsetstanley lieber
2015-02-05aux/vga: remove vbs/vbe from mode, use shs/ehs when sync is ment, prefer ↵cinap_lenrek
detailed timing in edid vbs/vbe members in Mode was only used in the vesadb and cannot be changed from vgadb. use shs/ehs in drivers when refering to the horizontal sync pulse. clarify the matter in a comment. link detailed timing modes at the head of the edid modelist. these are the modes we'r interested in, not the ones from vesadb.
2015-02-02aux/vga: fix mistale :-)cinap_lenrek
2015-02-02aux/vga: use optional edid information to determine mode when vgadb failscinap_lenrek
igfx and vesa can determine monitor timing information from ddc and store the edid info for connected monitors in vga->edid[]. when monitor type cannot be found in vgadb, we consult the edid information and make a mode based on the edid info. this avoids having to maintain a vgadb entry for each monitor. monitor can be set to "[width]x[height]@[freq]Hz" for a specific edid setting. when not found, a mode is searched based on the size. so the following should work: aux/vga -m 1366x768@60Hz -l 1366x768x32 aux/vga -m auto -l 1366x768x32
2015-02-01aux/vga: cleanup vesa codecinap_lenrek
dbvesamode() modified the passed in size string in the process of option parsing. this is a no-go because the string might be constant in the read only section. provide cracksize() function for the parsing and make a static copy. do the vendor specific monitor detection in vbesnarf() instead of vbecheck(). vbecheck()'s purpose is to check if vesa bios service is avialable, not snarf graphics card state. nvidiascale() was a no-op because it missed the vbecall() at the end of the function. this means it was never tested so i add the missing vbecall(), but disable nvidiascale for now until someone tests this. keep fancy stuff out of the Vbe structure. it is just there for making bios calls, not keep state about the graphics card.
2015-01-17igfx: fix wrong cursor position register addresscinap_lenrek
2015-01-16igfx: determine amount of preallocated stolen graphics memory for hw cursorcinap_lenrek
allocate the hardware cursor plane at the end of preallocated stolen graphics memory.
2015-01-16igfx: support for X60t with 1400x1050 panelcinap_lenrek
program secret plane size and position registers described as "reserved" in g45_vol_3_register_0_0.pdf that was found by inspecting vesa bios port traces. also, we have to set 18:19 (Cursor/Dispaly/Overlay Planes Off) in PIPExCONF while programming the planes on this card. this is what vesa bios does on modeset.
2015-01-13igfx: cursor/plane pipe assign is G45 only, add magic dsp a toggle from ↵cinap_lenrek
enable sequence
2015-01-12igfx: set the display/overlay/cursor plane override disbale bits for G45 ↵cinap_lenrek
(like bios)
2015-01-12igfx: fix typo, initialize more lvds bits for G45, T60 testingcinap_lenrek
2015-01-12igfx: reverting previous change, pci id is for the second graphics ↵cinap_lenrek
controller pci device
2015-01-12igfx: support for X200 (thanks bigato)cinap_lenrek
2015-01-12igfx: properly turn vga monitor offcinap_lenrek
2015-01-12igfx: aaand vga support for x200s :-)cinap_lenrek
2015-01-12igfx: vga support on x230, fix fdi link setup, LG Flatron L1730P vgadb entrycinap_lenrek
2015-01-11igfx: only use mmio... left from debuggingcinap_lenrek
2015-01-11igfx: cleanupcinap_lenrek
2015-01-11igfx: get edid information from lvdscinap_lenrek
2015-01-10igfx: use mmio to access registers instead of pio, fix wrong igfxmmio ↵cinap_lenrek
segment size initially, pio was used to access registers so i didnt need a kernel driver for initial testing. pio does not work under efi, so use mmio to access registers.
2015-01-10igfx: perserve frame start delay "magic" bits 27:28 in pipe conf registercinap_lenrek
it turns out, the "magic" bits 27:28 are the frame start delay setting that need to be preserved.
2015-01-09igfx: implement hardware cursorcinap_lenrek
this can even be used with the vesa driver, just enable the cursor after mode switch like: echo hwgc igfxhwgc >/dev/vgactl
2015-01-09igfx: fix some commentscinap_lenrek
2015-01-09igfx: just kidding, heres the code :)cinap_lenrek
2015-01-09igfx: work in progress intel graphics drivercinap_lenrek
this driver can modeset lvds on x200s and x230. everything else is completely untested. no hardware cursor implemented. no vgadb entries are provided.
2015-01-02aux/vga: revert vbegetmodeftrvxmtrx
2015-01-02aux/vga: do not set mode 3 unless connectedftrvxmtrx
2015-01-02aux/vga: fix switching with different modeftrvxmtrx
Prior to switching display, switch to text mode 3, which is supported by anything, then set display, search for the desired mode, load it if found. If not found, set the display to the old one and switch to the old mode back.
2015-01-01aux/vga: display switching for Intel adaptersftrvxmtrx
Magic was discovered by abusing INT 10 on several machines while switching cables back and forth and watching the end result.
2014-12-29aux/vga: scale only if mode was set successfullyftrvxmtrx
2014-12-29aux/vga: rescale after loading new modeftrvxmtrx
Intel VBIOS seem to not update its state unless in graphical mode, so set the scaling mode after loading new graphical mode.
2014-12-28aux/vga: remove -s option, move scaling to the size string itselfftrvxmtrx
2014-12-26aux/vga: scaling modes for VESAftrvxmtrx