summaryrefslogtreecommitdiffstats
path: root/sys/dev/fb
Commit message (Collapse)AuthorAgeFilesLines
...
* Re-add accidentally removed pixel format for direct memory model.jkim2010-02-231-2/+42
|
* Fix FBIO_ADPINFO ioctl on amd64.jkim2010-02-231-3/+3
|
* Map and report actual video memory we need.jkim2010-02-061-81/+34
|
* Replace some homegrown functions with better/correct ones.jkim2010-02-051-46/+7
|
* Remove dead code and fix style(9) bugs.jkim2010-02-031-66/+77
|
* Use bytes per scan line from mode table. The previous implementation didjkim2010-02-031-37/+13
| | | | not reflect actual number of bytes when it was not exactly width * bpp * 8.
* Correct virtual address of frame buffer for non-linear mode.jkim2010-02-031-1/+1
| | | | Reported by: Marc UBM Bocklet (ubm dot freebsd at googlemail dot com)
* Use VESA palette load/save functions if VESA BIOS says the current palettejkim2010-01-271-14/+22
| | | | | | | | format is higher than 6-bit instead of relying VGA compatibility flag. This fixes palette problem of NVIDIA GeForce 6600. Reduce code differences between palette load/save functions while we are here. Tested by: danfe
* Update d_mmap() to accept vm_ooffset_t and vm_memattr_t.rnoland2009-12-298-28/+30
| | | | | | | | | | | | | This replaces d_mmap() with the d_mmap2() implementation and also changes the type of offset to vm_ooffset_t. Purge d_mmap2(). All driver modules will need to be rebuilt since D_VERSION is also bumped. Reviewed by: jhb@ MFC after: Not in this lifetime...
* - Remove a redundant check for dpms(4).jkim2009-11-121-2/+2
| | | | - Test a cheaper function first.
* - Partially revert hackish r198964 and r199002.jkim2009-11-121-1/+0
| | | | | | | - Add a proxy driver vgapm to help vgapci to save/load VGA state. - Move device_set_desc() to the right place while we are here. Reviewed by: jhb
* Remove duplicate suspend/resume code from vga_pci.c and let vga(4) registerjkim2009-11-061-0/+1
| | | | | | itself to an associated PCI device if it exists. It is little bit hackish but it should fix build without frame buffer driver since r198964. Fix some style(9) nits in vga_isa.c while we are here.
* Save/restore VGA state from vga_pci.c instead of relying on vga_isa.c.jkim2009-11-051-49/+5
| | | | | It was not working because we were saving its state after the device was powered down. Simplify vesa_load_state() as the culprit is fixed now.
* Do not probe video mode if we are not going to use it.jkim2009-11-041-7/+9
|
* Restore color palette format if we reset video mode.jkim2009-11-041-0/+2
|
* Save/restore VGA color palette while suspending and resuming.jkim2009-11-041-0/+1
|
* Fix VESA color palette corruption:jkim2009-11-031-59/+36
| | | | | | | | | | | | - VBE 3.0 says palette format resets to 6-bit mode when video mode changes. We simply set 8-bit mode when we switch modes if the adapter supports it. - VBE 3.0 also says if the mode is not VGA compatible, we must use VBE function to save/restore palette. Otherwise, VGA function may be used. Thus, reinstate the save/load palette functions only for non-VGA compatible modes regardless of its palette format. - Let vesa(4) set VESA modes even if vga(4) claims to support it. - Reset default palette if VESA pixel mode is set initially. - Fix more style nits.
* Remove a redundant byte swapping in the previous commit.jkim2009-10-231-1/+0
|
* - When we restore VESA state, try BIOS POST earlier. VESA restore statejkim2009-10-232-25/+71
| | | | | | | | | | | | | function may not work properly if we don't. Turn off hardware cursor as vesa_set_mode() does. - Add VBE 3.0 specific fields in VESA mode structure and pack it. Note the padding is 190 bytes although VBE 3.0 says 189 bytes. It must be wrong because the size of structure becomes 255 bytes and the specification says it must be 256 bytes in total. In fact, an example code in the spec. does it right, though. While we are at it, fix some i386-isms. - Remove state buffer size limitation. It is no longer necessary since sys/compat/x86bios/x86bios.c r198251. - Move int 0x10 vector test into vesa_bios_post() as we always do it anyway.
* Rewrite x86bios and update its dependent drivers.jkim2009-10-191-304/+490
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Do not map entire real mode memory (1MB). Instead, we map IVT/BDA and ROM area separately. Most notably, ROM area is mapped as device memory (uncacheable) as it should be. User memory is dynamically allocated and free'ed with contigmalloc(9) and contigfree(9). Remove now redundant and potentially dangerous x86bios_alloc.c. If this emulator ever grows to support non-PC hardware, we may implement it with rman(9) later. - Move all host-specific initializations from x86emu_util.c to x86bios.c and remove now unnecessary x86emu_util.c. Currently, non-PC hardware is not supported. We may use bus_space(9) later when the KPI is fixed. - Replace all bzero() calls for emulated registers with more obviously named x86bios_init_regs(). This function also initializes DS and SS properly. - Add x86bios_get_intr(). This function checks if the interrupt vector is available for the platform. It is not necessary for PC-compatible hardware but it may be needed later. ;-) - Do not try turning off monitor if DPMS does not support the state. - Allocate stable memory for VESA OEM strings instead of just holding pointers to them. They may or may not be accessible always. Fix a memory leak of video mode table while I am here. - Add (experimental) BIOS POST call for vesa(4). This function calls VGA BIOS POST code from the current VGA option ROM. Some video controllers cannot save and restore the state properly even if it is claimed to be supported. Usually the symptom is blank display after resuming from suspend state. If the video mode does not match the previous mode after restoring, we try BIOS POST and force the known good initial state. Some magic was taken from NetBSD (and it was taken from vbetool, I believe.) - Add a loader tunable for vgapci(4) to give a hint to dpms(4) and vesa(4) to identify who owns the VESA BIOS. This is very useful for multi-display adapter setup. By default, the POST video controller is automatically probed and the tunable "hw.pci.default_vgapci_unit" is set to corresponding vgapci unit number. You may override it from loader but it is very unlikely to be necessary. Unfortunately only AGP/PCI/PCI-E controllers can be matched because ISA controller does not have necessary device IDs. - Fix a long standing bug in state save/restore function. The state buffer pointer should be ES:BX, not ES:DI according to VBE 3.0. If it ever worked, that's because BX was always zero. :-) - Clean up register initializations more clearer per VBE 3.0. - Fix a lot of style issues with vesa(4).
* Reject some VESA graphics modes if the controller does not have enoughjkim2009-09-251-34/+50
| | | | | | | memory to support them. Some adapters have expansible memory slots but video mode table is static. In this case, unusable modes may be reported. Submitted by: paradox (ddkprog yahoo com) (initial patch)
* Fix LINT build.delphij2009-09-251-1/+1
|
* Some broken VESA BIOSes, e.g., IBM T23, return wrong value fromjkim2009-09-241-4/+5
| | | | | | | vesa_bios_get_line_length() in graphics mode. Always calculate the value from known video info instead. Submitted by: paradox (ddkprog yahoo com)
* - Use FreeBSD function naming convention.jkim2009-09-241-41/+41
| | | | | | | - Change x86biosCall() to more appropriate x86bios_intr().[1] Discussed with: delphij, paradox (ddkprog yahoo com) Submitted by: paradox (ddkprog yahoo com)[1]
* Move sys/dev/x86bios to sys/compat/x86bios.jkim2009-09-231-1/+1
| | | | | | It may not be optimal but it is clearly better than the old place. OK'ed by: delphij, paradox (ddkprog yahoo com)
* Initialize registers to zero before calling the interrupt handlers insidedelphij2009-09-231-0/+19
| | | | | | emulator. This fixes VESA related freeze observed on some systems. Submitted by: paradox <ddkprog yahoo com>
* Style(9) fixes.delphij2009-09-211-6/+6
| | | | Submitted by: swell.k at gmail.com
* Collapase interrupt supporting functions to a new module, and switch fromdelphij2009-09-211-223/+192
| | | | | | | | | | x86emu to this new module. This changeset also brings a fix for bugs introduced with the initial x86emu commit, which prevents the user from using some display mode or cause instant reboots during mode switch. Submitted by: paradox <ddkprog yahoo com>
* Enable s3pci on amd64 which works on top of VESA, and allowdelphij2009-09-211-1/+0
| | | | | | static building it into kernel on i386 and amd64. Submitted by: swell.k at gmail.com
* Change cache attribute for VESA frame buffer from UC to write-combining.jkim2009-09-191-1/+2
| | | | This improves scrolling speed for high resolution graphics mode console.
* Enable BIOS modes on amd64.delphij2009-09-141-1/+1
| | | | Submitted by: paradox <ddkprog at yahoo com>
* - Teach vesa(4) and dpms(4) about x86emu. [1]delphij2009-09-094-244/+298
| | | | | | | | | | - Add vesa kernel options for amd64. - Connect libvgl library and splash kernel modules to amd64 build. - Connect manual page dpms(4) to amd64 build. - Remove old vesa/dpms files. Submitted by: paradox <ddkprog yahoo com> [1], swell k at gmail.com (with some minor tweaks)
* Copy the following files to new places, a subsequent commit would removedelphij2009-09-092-0/+1816
| | | | | | | | | them from the old place. This commit necessary so that the tree would not enter a broken state. sys/i386/isa/vesa.c -> dev/fb/vesa.c sys/i386/include/pc/vesa.h -> dev/fb/vesa.h sys/i386/isa/dpms.c -> dev/dpms/dpms.c
* - Change some softc members to be unsigned where more appropriate.marius2009-04-281-16/+14
| | | | | | | | | - Add some missing const. - Move the size of the window spun by the registers to the softc as neither using va_mem_size for this nor va_mem_base for the start of the bus addresses is appropriate. MFC after: 1 week
* Fix whitespace.marius2009-04-141-13/+13
|
* - Remove the second license as I'm also fine with the first one.marius2009-04-141-139/+131
| | | | | | | | | | | | | | | | | | | | | | | | - Remove redundant softc members for RIDs. - Change some softc members to be unsigned where more appropriate. - Add some missing const. - Remove support for mmap(2)'ing VGA I/O as it was broken [1] and not required by X.Org anyway. - Fix some confusion between bus, physical and virtual addresses which mostly consisted in using members of struct video_adapter inappropriately but wasn't fatal except for the regular framebuffer mmap(2)'ing. - Remove redundant bzero(9)'ing of the softc. - Don't map the framebuffer twice in case the firmware has already mapped it as besides wasting resources this isn't possible with all MMUs. This is a bit tricky as a) just because the firmware provides a property with a virtual address doesn't mean it's actually mapped (but typically is when the framebuffer is the console) and b) the firmware doesn't necessarily map the it with the same byteorder as we do. This make machfb(4) work on machines with cheetah-class MMUs (including X.Org). Reported by: Michael Plass [1] MFC after: 3 days
* Fix whitespace.marius2009-04-141-31/+31
|
* Third argument to the vi_mmap_t function is vm_paddr_t *.kib2008-11-291-1/+1
| | | | MFC after: 3 days
* Replace all calls to minor() with dev2unit().ed2008-09-272-2/+2
| | | | | | | | | | | | | | | After I removed all the unit2minor()/minor2unit() calls from the kernel yesterday, I realised calling minor() everywhere is quite confusing. Character devices now only have the ability to store a unit number, not a minor number. Remove the confusion by using dev2unit() everywhere. This commit could also be considered as a bug fix. A lot of drivers call minor(), while they should actually be calling dev2unit(). In -CURRENT this isn't a problem, but it turns out we never had any problem reports related to that issue in the past. I suspect not many people connect more than 256 pieces of the same hardware. Reviewed by: kib
* Convert amd64 and i386 to share the atrtc device driver.phk2008-04-141-1/+1
|
* Replace explicit calls to video methods with their respective variantswkoszek2007-12-297-59/+112
| | | | | | | | | | | | | | | implemented with macros. This patch improves code readability. Reasoning behind vidd_* is a sort of "video discipline". List of macros is supposed to be complete--all methods of video_switch ought to have their respective macros from now on. Functionally, this code should be no-op. My intention is to leave current behaviour of touched code as is. No objections: rwatson Silence on: freebsd-current@ Approved by: cognet
* Remove the internal use of __packed and put it on the structuresmjacob2007-07-111-29/+29
| | | | | | | themselves. Reviewed by: nate, peter, warner, robert Approved by: re (ken)
* Move the gallant 12 x 22 font data from a .h to a .c so it doesn't needmarius2007-06-164-6202/+30
| | | | | | | to be compiled into every driver making use of it. Use a const instance of struct gfb_font for this as the font isn't intended to be changed at run-time and in order to accompany the font data with height and width info.
* - Define data of struct gfb_font a const as it's only used to supply fontmarius2007-06-162-2/+2
| | | | | | | | | | | data and remove the array size from the definition as f.e. the gallant 12 x 22 font data is 256 * 44 in size, exceeding the previously hard- coded size. - Declare the bold8x16 instance of struct gfb_font as const as it's not intended to be changed at run-time as a whole either. - Use __FBSDID in xboxfb.c Tested by: rink
* Rototill the sparc64 nexus(4) (actually this brings in the code themarius2007-03-071-29/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | sun4v nexus(4) in turn is based on): o Change nexus(4) to manage the resources of its children so the respective device drivers don't need to figure them out of OFW themselves. o Change nexus(4) to provide the ofw_bus KOBJ interface instead of using IVARs for supplying the OFW node and the subset of standard properties of its children. Together with the previous change this also allows to fully take advantage of newbus in that drivers like fhc(4), which attach on multiple parent busses, no longer require different bus front-ends as obtaining the OFW node and properties as well as resource allocation works the same for all supported busses. As such this change also is part 4/4 of allowing creator(4) to work in USIII-based machines as it allows this driver to attach on both nexus(4) and upa(4). On the other hand removing these IVARs breaks API compatibility with the powerpc nexus(4) but which isn't that bad as a) sparc64 currently doesn't share any device driver hanging off of nexus(4) with powerpc and b) they were no longer compatible regarding OFW-related extensions at the pci(4) level since quite some time. o Provide bus_get_dma_tag methods in nexus(4) and its children in order to handle DMA tags in a hierarchical way and get rid of the sparc64_root_dma_tag kludge. Together with the previous two items this changes also allows to completely get rid of the nexus(4) IVAR interface. It also includes: - pushing the constraints previously specified by the nexus_dmatag down into the DMA tags of psycho(4) and sbus(4) as it's their IOMMUs which induce these restrictions (and nothing at the nexus(4) or anything that would warrant specifying them there), - fixing some obviously wrong constraints of the psycho(4) and sbus(4) DMA tags, which happened to not actually be used with the sparc64_root_dma_tag kludge in place and therefore didn't cause problems so far, - replacing magic constants for constraints with macros as far as it is obvious as to where they come from. This doesn't include taking advantage of the newbus way to get the parent DMA tags implemented by this change in order to divorce the IOTSBs of the PCI and SBus IOMMUs or for implementing the workaround for the DMA sync bug in Sabre (and Tomatillo) bridges, yet, though. o Get rid of the notion that nexus(4) (mostly) reflects an UPA bus by replacing ofw_upa.h and with ofw_nexus.h (which was repo-copied from ofw_upa.h) and renaming its content, which actually applies to all of Fireplane/Safari, JBus and UPA (in the host bus case), as appropriate. o Just use M_DEVBUF instead of a separate M_NEXUS malloc type for allocating the device info for the children of nexus(4). This is done in order to not need to export M_NEXUS when deriving drivers for subordinate busses from the nexus(4) class. o Use the DEFINE_CLASS_0() macro to declare the nexus(4) driver so we can derive subclasses from it. o Const'ify the nexus_excl_name and nexus_excl_type arrays as well as add 'associations' and 'rsc', which are pseudo-devices without resources and therefore of no real interest for nexus(4), to the former. o Let the nexus(4) device memory rman manage the entire 64-bit address space instead of just the UPA_MEMSTART to UPA_MEMEND subregion as Fireplane/Safari- and JBus-based machines use multiple ranges, which can't be as easily divided as in the case of UPA (limiting the address space only served for sanity checking anyway). o Use M_WAITOK instead of M_NOWAIT when allocating the device info for children of nexus(4) in order to give one less opportunity for adding devices to nexus(4) to fail. o While adapting the drivers affected by the above nexus(4) changes, change them to take advantage of rman_get_rid() instead of caching the RIDs assigned to allocated resources, now that the RIDs of resources are correctly set. o In iommu(4) and nexus(4) replace hard-coded functions names, which actually became outdated in several places, in panic strings and status massages with __func__. [1] o Use driver_filter_t in prototypes where appropriate. o Add my copyright to creator(4), fhc(4), nexus(4), psycho(4) and sbus(4) as I changed considerable amounts of these drivers as well as added a bunch of new features, workarounds for silicon bugs etc. o Fix some white space nits. Due to lack of access to Exx00 hardware, these changes, i.e. central(4) and fhc(4), couldn't be runtime tested on such a machine. Exx00 are currently reported to panic before trying to attach nexus(4) anyway though. PR: 76052 [1] Approved by: re (kensmith)
* On sparc64 also use the fillw() this header provides for ia64 somarius2007-01-181-2/+4
| | | | | the sparc64 MD code doesn't need to provide a memsetw() along with the ISA compat cruft.
* - Merge sys/sparc64/creator/creator_upa.c into sys/dev/fb/creator.c.marius2007-01-162-87/+452
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The separate bus front-end was inherited from the OpenBSD creator(4), which at that time had a mainbus(4) (for USI/II machines, which use an UPA interconnection bus as the nexus) and an upa(4) (for USIII machines, which use a subordinate/slave UPA bus hanging off from the Fireplane/Safari interconnection bus) front-end. With FreeBSD and newbus there is/will be no need to have two separate bus front-ends for these busses, so we can easily coallapse the shared front-end and the back-end into a single source file (note that the FreeBSD creator_upa.c was misnomer anyway; based on what it actually attached to that should have been creator_nexus.c), actually OpenBSD meanwhile also has moved to a shared front-end and a single source file. Due to the low-level console support creator.c also wasn't free from bus related things before. While at it, also split sys/sparc64/creator/creator.h into a sys/dev/fb/creatorreg.h that only contains register macros and move the structures to the top of sys/dev/fb/creator.c as suggested by style(9) so creator(4) is no longer scattered over two directories. - Use OF_decode_addr()/sparc64_fake_bustag() to obtain the bus tags and handles for the low-level console support instead of hardcoding support for AFB/FFB hanging off from nexus(4) only. This is part 2/4 of allowing creator(4) to work in USIII machines (which have a UPA bus hanging off from the Fireplane/Safari bus reflected by the nexus), which already makes it work as the low-level console there. - Allocate resources in the bus attach routine regardless of whether creator(4) is used as for the low-level console and thus the required bus tags and handles have been already obtained or not so the resources are marked as taken in the respective RMAN. - For both obtaining the bus tags and handles for the low-level console support as well as allocating the corresponding resources in the regular bus attach routine don't bother to get all for the maximum of 24 register banks but only (for) the two tag/handle pairs required for providing the video interface for syscons(4) support. If we can't allocate the rest of them just limit the memory range accessible via creator_fb_mmap() accordingly. - Sanity check the memory range spanned by the first and last resources and the resources in between as far as possible, as the XFree86/Xorg sunffb(4) expects to be able to access the whole region, even though the backing resources are actually non-continuous. Limit and check the memory range accessible via creator_fb_mmap() accordingly. - Reduce the size of buffers for OFW properties to what they actually need to hold. - Rename some tables to creator_<foo> for consistency. - Also for the sizes in the creator_fb_mmap() mapping table entries use macros for consistency, add macros for the remaining register banks for completeness.
* - Garbage collect more alpha remnants.marius2007-01-083-1102/+2
| | | | - Fix a typo in a comment in boot_font.c.
* Remove the DPMS code in creator_blank_display(), as it causes somemarius2006-08-241-9/+0
| | | | | | | | | | | | | | | | | LCDs to blink in the V_DISPLAY_ON case, at least in combination with some 13W3-VGA-adaptors (what's exactly going on is unclear though, as it happens when all of H-sync, V-sync and video output are enabled and not touching the sync bits from the preset fixes it). Thus creator_blank_display() now is reduced to turning the video output on/off. Although that DPMS code did what the XFree86/Xorg sunffb(4x) does, it was questionable in the first place, as both implementations also turn(ed) off the video output on standby and suspend, thus most likely causing the monitor to turn off instead of entering standby or suspend as intended (at least my monitors don't). Reported and tested by: Patrick Reich MFC after: 3 days
* Since DELAY() was moved, most <machine/clock.h> #includes have beenphk2006-05-162-2/+0
| | | | unnecessary.
OpenPOWER on IntegriCloud