Home | History | Annotate | Download | only in ic
History log of /src/sys/dev/ic/vga_raster.c
RevisionDateAuthorComments
 1.50  07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.49  24-Apr-2021  thorpej branches: 1.49.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.48  24-Apr-2020  ad branches: 1.48.4;
BUS_SPACE_MAP_PREFETCHABLE yields a write combining region on x86 and that's
not what I intended.. BUS_SPACE_MAP_CACHEABLE is enough.
 1.47  04-Apr-2020  riastradh branches: 1.47.2;
Mark res __diagused; #ifdef DIAGNOSTIC panic ---> KASSERT.
 1.46  01-Dec-2019  ad Map the video RAM cacheable/prefetchable, it's very slow and this helps a bit.
 1.45  10-Nov-2019  chs in many device attach paths, allocate memory with M_WAITOK instead of M_NOWAIT
and remove code to handle failures that can no longer happen.
 1.44  01-Mar-2015  mlelstv branches: 1.44.18;
Also unmap video memory when detaching console
 1.43  14-Jan-2015  chs remove BIOS-mapping code that was #if-0'd in the previous commit.
 1.42  21-Aug-2014  macallan branches: 1.42.2;
#if 0 code to map the VGA BIOS
I've been unable to find any code that actually uses the mapping and we may
want to read the ROM from drm2.
If no users show up within a week or so I'll delete it.
 1.41  12-Jul-2014  mlelstv branches: 1.41.2;
detach wscons when detaching console
 1.40  18-Apr-2014  mlelstv more unused variables.
 1.39  18-Apr-2014  mlelstv include VGA kernel options
 1.38  18-Apr-2014  mlelstv handle unused variables
 1.37  14-Apr-2013  christos branches: 1.37.4; 1.37.8;
return something reasonable for WSDISPLAYIO_GINFO
 1.36  21-Jan-2013  mlelstv Make internal functions static
 1.35  11-Jan-2012  macallan branches: 1.35.6;
wsfont_matches() and wsfont_find() take an extra parameter now
 1.34  24-Mar-2010  tnn branches: 1.34.8; 1.34.12;
sys/dev/ic/videomode.h is almost identical to sys/dev/videomode/videomode.h
Remove the former.
 1.33  19-Oct-2008  jmcneill branches: 1.33.14; 1.33.16;
Calculate maxdispoffset rather than hard-coding it. Fixes scrolling in
80x25 mode.

XXX This doesn't handle odd modes like 80x30 on 640x480, but the driver
didn't allow that selection previously so at least it's an improvement
over the previous behaviour.
 1.32  19-Oct-2008  jmcneill vga_cnattach: calling wsdisplay_screentype_pick with a NULL type will
select the first entry in the list, which overrides the selected screen
type. Only call it a second time if the original selection is invalid.
 1.31  15-Jun-2008  nonaka branches: 1.31.2;
fix compile failure.
 1.30  19-Oct-2007  ad branches: 1.30.16; 1.30.18; 1.30.20; 1.30.22; 1.30.24;
machine/{bus,cpu,intr}.h -> sys/{bus,cpu,intr}.h
 1.29  28-Jul-2007  mjf branches: 1.29.4; 1.29.6; 1.29.10; 1.29.12;
Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.
 1.28  09-Jul-2007  ad branches: 1.28.2;
Merge some of the less invasive changes from the vmlocking branch:

- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
 1.27  15-Mar-2007  dogcow Some delicious copypasta from sys/dev/ic/vga.c, so that unichromefb will
compile (and possibly work) when option VGA_RASTERCONSOLE is present.
 1.26  04-Mar-2007  christos branches: 1.26.2; 1.26.4; 1.26.6;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.25  16-Nov-2006  christos branches: 1.25.2; 1.25.4; 1.25.8;
__unused removal on arguments; approved by core.
 1.24  12-Oct-2006  christos - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
 1.23  03-Sep-2006  christos branches: 1.23.2; 1.23.4;
add missing initializers
 1.22  26-Apr-2006  rpaulo In vga_cnattach(), intialize typestr to NULL.
 1.21  12-Apr-2006  jmmv Add an extra cookie to the ioctl and mmap wsdisplay accessops that points
to the screen on which they are being called. The driver cannot guess
this by itself but it is needed to implement, at least, the getwschar and
putwschar functions in the correct place. There are no functional changes
yet.

Tested on i386 (vga, vga_raster, machfb, vesafb), macppc and sparc64.
Suggested and reviewed by macallan@.
 1.20  12-Dec-2005  christos branches: 1.20.4; 1.20.6; 1.20.8; 1.20.10; 1.20.12;
more proc->lwp changes.
 1.19  11-Dec-2005  christos merge ktrace-lwp.
 1.18  21-Oct-2005  dbj decrement nscreens in vga_free_screen
this cleans up a crash on failed allocation, although
vga_free_screen may still be leaking resources
 1.17  07-Jul-2005  christos branches: 1.17.2;
add a missing const.
 1.16  27-Feb-2005  perry branches: 1.16.2; 1.16.4; 1.16.6; 1.16.8;
nuke trailing whitespace
 1.15  13-Aug-2004  mycroft branches: 1.15.4; 1.15.6;
Remove a really gratuitous 1s delay.
 1.14  30-Jul-2004  jmmv Implement the replaceattr emulop.
 1.13  30-Jul-2004  jmmv Fix the eraserows operation, which was using an incorrect value to paint
the background. The problem was exposed when setting a non-black color
as the background, as the shift did not produce the expected fill value
(for black it worked because 0 is black).
 1.12  14-Jul-2003  lukem branches: 1.12.2; 1.12.4; 1.12.6;
add missing __KERNEL_RCSID()
 1.11  07-Apr-2003  junyoung branches: 1.11.2;
As beginning of merging uwscons to -current:
- Add a (temporary) printf to vga_raster_load_font() for tracking font
loading process. If you encountered "vga_raster_load_font: called"
kernel message, please let me know.
- While here, some KNF.
 1.10  31-Jan-2003  tsutsui Changes to allow machines which don't use text mode at the boot time
to use generic VGA driver(s):
- Allow VGA drivers to use wsfont instead of builtin font.
- Add vga_reset() function, which will be called from MD consinit(),
to put VGA into text mode. This function is enabled by options VGA_RESET.
 1.9  27-Jan-2003  tsutsui Set a value for MISCOUT register correctly in vga_setup_regs().
 1.8  27-Jan-2003  tsutsui const'ify.
 1.7  27-Jan-2003  tsutsui - Replace some magic numbers with proper macro.
- Use vga_6845_{read,write}() defined in pcdisplayvar.h and
remove vga_crtc_{read,write}() macros in vgareg.h.
 1.6  27-Jan-2003  tsutsui KNF and space/TAB cleanup.
 1.5  28-Nov-2002  junyoung Fix compile error.
 1.4  04-Nov-2002  junyoung Missing '.'
 1.3  31-Oct-2002  junyoung Now VGA_CONSOLE_SCREENTYPE can be specified with VGA_RASTERCONSOLE.
Currently only 80x25 and 80x30 modes are supported.
 1.2  31-Oct-2002  junyoung Simplify vga_raster_setscreentype() and clean up code.
 1.1  15-Oct-2002  junyoung branches: 1.1.2;
Add VGA raster graphics console driver. It is written as an extension
to char-cell based vga(4) driver, and fully compatible with existing
apps like XFree86. Currently it supports 80x25, 80x30, 80x40 and 80x50
text modes using emulation. You can enable it by specifying `options
VGA_RASTERCONSOLE' in your kernel config file.

Note that displaying multilingual text doesn't work yet. Necessary
code is already there, but userland stuff and some functionality isn't
ready for prime time yet. I'm working on them.
 1.1.2.4  11-Dec-2002  thorpej Sync with HEAD.
 1.1.2.3  11-Nov-2002  nathanw Catch up to -current
 1.1.2.2  18-Oct-2002  nathanw Catch up to -current.
 1.1.2.1  15-Oct-2002  nathanw file vga_raster.c was added on branch nathanw_sa on 2002-10-18 02:42:01 +0000
 1.11.2.6  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.11.2.5  04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.11.2.4  21-Sep-2004  skrll Fix the sync with head I botched.
 1.11.2.3  18-Sep-2004  skrll Sync with HEAD.
 1.11.2.2  25-Aug-2004  skrll Sync with HEAD.
 1.11.2.1  03-Aug-2004  skrll Sync with HEAD
 1.12.6.1  12-Aug-2007  bouyer Pull up following revision(s) (requested by mjf in ticket #11348):
Pull up following revision(s) (requested by mjf in ticket #11348):
sys/dev/ic/pcdisplay_subr.c: revision 1.33 via patch
sys/dev/ic/vga_raster.c: revision 1.29 via patch
sys/dev/ic/vga.c: revision 1.95 via patch
sys/dev/rasops/rasops.c: revision 1.56 via patch
sys/dev/isa/ega.c: revision 1.23 via patch
Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.
Set the 'ri' pointer before use.
 1.12.4.1  11-Aug-2007  bouyer Pull up following revision(s) (requested by mjf in ticket #11348):
sys/dev/ic/pcdisplay_subr.c: revision 1.33 via patch
sys/dev/ic/vga_raster.c: revision 1.29 via patch
sys/dev/ic/vga.c: revision 1.95 via patch
sys/dev/rasops/rasops.c: revision 1.56 via patch
sys/dev/isa/ega.c: revision 1.23 via patch
Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.
Set the 'ri' pointer before use.
 1.12.2.1  12-Aug-2007  bouyer Pull up following revision(s) (requested by mjf in ticket #11348):
Pull up following revision(s) (requested by mjf in ticket #11348):
sys/dev/ic/pcdisplay_subr.c: revision 1.33 via patch
sys/dev/ic/vga_raster.c: revision 1.29 via patch
sys/dev/ic/vga.c: revision 1.95 via patch
sys/dev/rasops/rasops.c: revision 1.56 via patch
sys/dev/isa/ega.c: revision 1.23 via patch
Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.
Set the 'ri' pointer before use.
 1.15.6.1  19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.15.4.1  29-Apr-2005  kent sync with -current
 1.16.8.1  06-Aug-2007  ghen Pull up following revision(s) (requested by mjf in ticket #1815):
sys/dev/ic/pcdisplay_subr.c: revision 1.33 via patch
sys/dev/ic/vga_raster.c: revision 1.29 via patch
sys/dev/ic/vga.c: revision 1.95 via patch
sys/dev/rasops/rasops.c: revision 1.56 via patch
sys/dev/isa/ega.c: revision 1.23 via patch
Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.
Set the 'ri' pointer before use.
 1.16.6.1  06-Aug-2007  ghen Pull up following revision(s) (requested by mjf in ticket #1815):
sys/dev/ic/pcdisplay_subr.c: revision 1.33 via patch
sys/dev/ic/vga_raster.c: revision 1.29 via patch
sys/dev/ic/vga.c: revision 1.95 via patch
sys/dev/rasops/rasops.c: revision 1.56 via patch
sys/dev/isa/ega.c: revision 1.23 via patch
Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.
Set the 'ri' pointer before use.
 1.16.4.4  27-Oct-2007  yamt sync with head.
 1.16.4.3  03-Sep-2007  yamt sync with head.
 1.16.4.2  30-Dec-2006  yamt sync with head.
 1.16.4.1  21-Jun-2006  yamt sync with head.
 1.16.2.1  06-Aug-2007  ghen Pull up following revision(s) (requested by mjf in ticket #1815):
sys/dev/ic/pcdisplay_subr.c: revision 1.33 via patch
sys/dev/ic/vga_raster.c: revision 1.29 via patch
sys/dev/ic/vga.c: revision 1.95 via patch
sys/dev/rasops/rasops.c: revision 1.56 via patch
sys/dev/isa/ega.c: revision 1.23 via patch
Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.
Set the 'ri' pointer before use.
 1.17.2.1  26-Oct-2005  yamt sync with head
 1.20.12.1  24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.20.10.2  11-May-2006  elad sync with head
 1.20.10.1  19-Apr-2006  elad sync with head.
 1.20.8.2  14-Sep-2006  yamt sync with head.
 1.20.8.1  24-May-2006  yamt sync with head.
 1.20.6.2  01-Jun-2006  kardel Sync with head.
 1.20.6.1  22-Apr-2006  simonb Sync with head.
 1.20.4.1  09-Sep-2006  rpaulo sync with head
 1.23.4.2  10-Dec-2006  yamt sync with head.
 1.23.4.1  22-Oct-2006  yamt sync with head
 1.23.2.1  18-Nov-2006  ad Sync with head.
 1.25.8.1  03-Sep-2007  wrstuden Sync w/ NetBSD-4-RC_1
 1.25.4.2  24-Mar-2007  yamt sync with head.
 1.25.4.1  12-Mar-2007  rmind Sync with HEAD.
 1.25.2.1  30-Jul-2007  liamjfoy Pull up following revision(s) (requested by mjf in ticket #799):
sys/dev/ic/pcdisplay_subr.c: revision 1.33
sys/dev/wscons/wsdisplay_vcons.c: revision 1.12
sys/dev/wscons/wsdisplay_vcons.c: revision 1.13
sys/dev/ic/vga_raster.c: revision 1.29
sys/dev/pci/chipsfb.c: revision 1.10
sys/dev/ic/vga.c: revision 1.95
sys/dev/rasops/rasops.c: revision 1.56
sys/dev/isa/ega.c: revision 1.23
Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.
Set the 'ri' pointer before use.
 1.26.6.1  18-Mar-2007  reinoud First attempt to bring branch in sync with HEAD
 1.26.4.1  11-Jul-2007  mjf Sync with head.
 1.26.2.4  23-Oct-2007  ad Sync with head.
 1.26.2.3  20-Aug-2007  ad Sync with HEAD.
 1.26.2.2  01-Jul-2007  ad Adapt to callout API change.
 1.26.2.1  10-Apr-2007  ad Sync with head.
 1.28.2.1  15-Aug-2007  skrll Sync with HEAD.
 1.29.12.2  28-Jul-2007  mjf Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.
 1.29.12.1  28-Jul-2007  mjf file vga_raster.c was added on branch matt-mips64 on 2007-07-28 20:28:58 +0000
 1.29.10.1  25-Oct-2007  bouyer Sync with HEAD.
 1.29.6.1  06-Nov-2007  matt sync with HEAD
 1.29.4.1  26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.30.24.1  18-Jun-2008  simonb Sync with head.
 1.30.22.1  23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.30.20.2  11-Aug-2010  yamt sync with head.
 1.30.20.1  04-May-2009  yamt sync with head.
 1.30.18.1  17-Jun-2008  yamt sync with head.
 1.30.16.2  17-Jan-2009  mjf Sync with HEAD.
 1.30.16.1  29-Jun-2008  mjf Sync with HEAD.
 1.31.2.1  13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.33.16.1  30-May-2010  rmind sync with head
 1.33.14.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.34.12.1  18-Feb-2012  mrg merge to -current.
 1.34.8.3  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.34.8.2  23-Jan-2013  yamt sync with head
 1.34.8.1  17-Apr-2012  yamt sync with head
 1.35.6.4  03-Dec-2017  jdolecek update from HEAD
 1.35.6.3  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.35.6.2  23-Jun-2013  tls resync from head
 1.35.6.1  25-Feb-2013  tls resync with head
 1.37.8.1  10-Aug-2014  tls Rebase.
 1.37.4.1  18-May-2014  rmind sync with head
 1.41.2.1  14-Jan-2015  martin Pull up following revision(s) (requested by chs in ticket #418):
sys/dev/ic/vga.c: revision 1.113
sys/dev/ic/vga.c: revision 1.114
sys/dev/ic/vga_raster.c: revision 1.42
sys/dev/ic/vga_raster.c: revision 1.43
sys/dev/ic/vgavar.h: revision 1.31
sys/dev/ic/vgavar.h: revision 1.33
I've been unable to find any code that actually uses the mapping and we may
want to read the ROM from drm2.
If no users show up within a week or so I'll delete it.
remove BIOS-mapping code that was #if-0'd in the previous commit.
 1.42.2.1  06-Apr-2015  skrll Sync with HEAD
 1.44.18.2  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.44.18.1  08-Apr-2020  martin Merge changes from current as of 20200406
 1.47.2.1  25-Apr-2020  bouyer Sync with bouyer-xenpvh-base2 (HEAD)
 1.48.4.2  24-Apr-2021  thorpej Make sure to explcitly specify the "wsemuldisplaydev" interface attribute
when attaching the wscons display instance, because these devices can
also attach children using the "drm" interface attribute.
 1.48.4.1  21-Mar-2021  thorpej Give config_found() the same variadic arguments treatment as
config_search(). This commit only adds the CFARG_EOL sentinel
to the existing config_found() calls. Conversion of config_found_sm_loc()
and config_found_ia() call sites will be in subsequent commits.
 1.49.8.1  04-Aug-2021  thorpej Adapt to CFARGS().

RSS XML Feed