aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/fb/creator.c
Commit message (Collapse)AuthorAgeFilesLines
* MFC: 1.10Marius Strobl2006-08-271-9/+0
| | | | | | | Remove the DPMS code in creator_blank_display(). Notes: svn path=/stable/6/; revision=161668
* MFC: creator.c 1.9, fbreg.h 1.19, gfb.c 1.8, machfb.c 1.4,Marius Strobl2005-10-051-5/+5
| | | | | | | | | | | | | | | | | | ofw_syscons.c 1.9, s3_pci.c 1.10, scgfbrndr.c 1.23, scmouse.c 1.40, scvgarndr.c 1.20, scvidctl.c 1.37, syscons.c 1.439, syscons.h 1.85, tga.c 1.8, vesa.c 1.52, vga.c 1.35 Add a font width argument to vi_load_font_t, vi_save_font_t and vi_putm_t and do some preparations for handling 12x22 fonts (currently lots of code implies and/or hardcodes a font width of 8 pixels). This will be required on sparc64 which uses a default font size of 12x22 in order to add font loading and saving support as well as to use a syscons(4)-supplied mouse pointer image. Approved by: re (scottl) Notes: svn path=/stable/6/; revision=150981
* - Declare lookup tables etc. const.Marius Strobl2005-07-101-91/+167
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Let creator_bitblt() return ENODEV as it's not implemented (missed in sys/dev/fb/creator.c rev. 1.6). - As a speed optimization inline the creator_ras_wait() etc. helper functions and also cache setting the font increment, font width and plane mask. [1] - I got the meaning of V_DISPLAY_BLANK wrong, it's blank like turn off and not blank like turn on and clear the screen. So move clearing the screen to creator_clear() were it hopefully belongs. - Properly implement V_DISPLAY_BLANK, V_DISPLAY_STAND_BY and V_DISPLAY_SUSPEND. This makes blank_saver.ko and green_saver.ko work. [1] - Change the order of operations in creator_fill_rect(), i.e. write y before x and cy before cx. This fixes drawing the top part of the border with Elite3D cards when switching from Xorg to a VTY. - Move setting the chip configuration we use and invalidating the cache variables to creator_set_mode() and set the V_ADP_MODECHANGE flag. This causes creator_set_mode() to be called when the X server shuts down which fixes the screen corruption caused most of the time by Xorg not restoring the original configuration present at startup. Inspired by/based on: Xorg [1] Approved by: re (scottl) Notes: svn path=/head/; revision=147880
* - In creator_configure() when probed for the high-level console returnMarius Strobl2005-06-041-38/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | the number of registered adapters instead of determining again whether stdout is a supported card (and which might have failed to attach and register). - Drop creator_set_mode() and move the relevant parts to creator_fill_rect() and creator_putc() respectively. This is a bit cleaner than having to make sure that creator_set_mode() was called before creator_fill_rect() or creator_putc() are used and matches better what Xorg does. - Fix a bug in the handling of the FBIOSCURSOR IOCTL; the code was meant to return ENODEV for all invocations expect when used to disable the cursor and not just when used for enabling the cursor. - In case the adapter is the OFW stdout move its OFW cursor to the start of the last line on halt so OFW output doesn't get intermixed with what FreeBSD left on the screen. With hindsight this is what the faking of a hardware cursor which was removed in the last revision really was about, i.e. to keep the OFW updated about the current cursor position. The new approach however is simpler while producing the same result and doesn't cause the first letter of the OFW output to be turned into a blank and a newline. - Add variable names to the prototypes of creator_cursor_*() which were added in the last revision and list them alphabetically in order to match the style of this file. Notes: svn path=/head/; revision=146970
* o creator(4):Marius Strobl2005-05-211-157/+236
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Use register macros instead of magic values in the code. [1] - Check the return values of OF_getprop() and other stuff that actually can fail. - Let the unimplemented video driver methods return ENODEV rather than 0 so other code isn't tricked into thinking a certain operation was successfull. In case of e.g. the video driver creator_ioctl() this caused vidcontrol(1) to return random garbage information. Remove the TODO macros in the unimplemented video driver methods which did a printf("%s: unimplemented\n", __func__). Under certain circumstances these managed to invoke a printf() when a low-level console device wasn't attached, yet, causing a Fast Data Access MMU Miss. These macros were only really usefull for development anyway. - Set the struct video_adapter and struct video_info va_flags and vi_flags etc. as appropriate. - In creator_configure() don't rely on hitting the node which is the chosen console device first when searching the OFW tree for adapters compatible with this driver. Instead just check whether the chosen console device is a viable target for this driver. Targets that are not the console (including additional cards in multi-head configs) will be attached through creator_upa_attach(). I think this how the code in creator_configure() was actually meant to work. Honour the VIO_PROBE_ONLY flag and don't initialise and register the console device twice when creator_configure() is called a second time during sc_probe_unit(). Let creator_configure() return the number of the found adapters, i.e. 1 in case probing succeeds, as it's expected. The return values of video adapter configure functions however currently aren't checked so this doesn't make a difference at the moment. - In creator_upa_attach() don't rely on probing and attaching the adapter which is the console first, in case there are multiple adpaters and one of them is the console this could lead into using the video adapter unit 0 twice. - Make the check for DACs with inverted cursor control a bit more precise and actually honour that information when turning the cursor on or off. Add a helper function creator_cursor_enable() for this in order to keep code duplication low. [1] - Don't bother with faking a hardware cursor in case a device is the console. Apparently this was meant to start kernel output right after where the firmware left. In general this isn't worth the fuzz and also had no real effect as creator_set_mode() did clear the screen in any case, not just in case a device was not the console. - Implement creator_fill_rect() and use it to actually blank the display in creator_blank_display() when the mode is V_DISPLAY_BLANK, moving blanking the display out of creator_set_mode(). Use it also to implement creator_set_border() so the border can be re-drawn when switching to a VTY from X, exiting X, etc. (which leaves us with a black border most of the time). - Implement the video driver creator_ioctl(), moving the implementation of the IOCTL interface from the fbN CDEV version of creator_ioctl() into the video driver version and use the latter to implement the former. Use fb_commonioctl() to handle most of the FBIO IOCTLs. This gives programs like vidcontrol(1) which use the video driver creator_ioctl() a chance of working. Implement turning off the cursor via the FBIOSCURSOR IOCTL, which Xorg uses to in order to inform the OS that it's taking over the cursor. In creator_putm() check whether the cursor is enabled and (re-)install it if necessary, moving installing the cursor out of creator_init() and into a helper function creator_cursor_install(). This fixes the missing mouse pointer when switching to a VTY from X, exiting X, etc. - Some clean-up (remove unused/useless code, etc.). o sparc64/creator/creator_upa.c / sparc64/sparc64/sc_machdep.c: - Attach syscons(4) as an own pseudo-device on the nexus rather than directly in creator_upa_attach(), similiar to attaching syscons(4) as a pseudo-device on isa(4) on other archs. This makes it a whole lot easier to do the right thing in multi-head configs, especially with different types of graphics adapters. [2] - Set SC_AUTODETECT_KBD by default so USB keyboards work out of the box. [2] Based on/obtained from: Xorg 'ffb' driver [1] Based on/obtained from: FreeBSD/powerpc [2] Notes: svn path=/head/; revision=146480
* - Add missing <sys/module.h>. [1]Marius Strobl2004-07-091-6/+2
| | | | | | | | | | - Remove unused includes. - Sort includes. Reported by: Pyun YongHyeon <yongari@kt-is.co.kr> [1] Notes: svn path=/head/; revision=131887
* - Use an ihandle_t to store the stdout instance handle instead of aThomas Moestl2004-04-041-2/+2
| | | | | | | | | | | | | | | phandle_t. Since both are typedefed to unsigned int, this is more or less cosmetic. - Fix the code that determines whether a creator instance was used for firmware output (and should not be blanked on initialization). Since r1.2 of dev/fb/creator.c, this consisted comparing a handle of an instance of a package with a handle of the package itself. Use the test from r1.1, which utilizes OF_instance_to_package(). Submitted by: Marius Strobl <marius@alchemy.franken.de> Notes: svn path=/head/; revision=127838
* Don't confuse NULL with 0.David E. O'Brien2004-01-021-3/+3
| | | | Notes: svn path=/head/; revision=124072
* Fix a typo. Allow for the creator not being stdout.Jake Burkholder2003-11-111-9/+8
| | | | Notes: svn path=/head/; revision=122471
* Add a driver for creator upa frame buffers found in many sparc64 machines.Jake Burkholder2003-08-241-0/+648
These are fixed resolution and operate only in pixel mode so they present a challenge to syscons (square peg, round hole, etc, etc). The driver provides a video driver interface for syscons and a separate character device for X to mmap. Wherever possible the creator's accelarated graphics functions are used so text mode is very fast. Based roughly on the openbsd driver. Notes: svn path=/head/; revision=119381