Home | History | Annotate | Download | only in pci
History log of /src/sys/dev/pci/voodoofb.c
RevisionDateAuthorComments
 1.56  25-Sep-2022  thorpej Remove unnecessary include of <sys/malloc.h>.
 1.55  07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.54  24-Apr-2021  thorpej branches: 1.54.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.53  22-Dec-2019  thorpej branches: 1.53.10;
Cleanup i2c bus acquire / release, centralizing all of the logic into
iic_acquire_bus() / iic_release_bus(). "acquire" and "release" hooks
no longer need to be provided by back-end controller drivers (only if
they need special handling, e.g. powering on the i2c controller).
This results in the removal of a bunch of rendundant code from each
back-end controller driver.

Assert that we are not in hard interrupt context in iic_acquire_bus(),
iic_exec(), and iic_release_bus().
 1.52  09-Dec-2018  jdolecek use pci_intr_establish_xname() everywhere
 1.51  11-Jul-2016  msaitoh branches: 1.51.16; 1.51.18;
KNF. No functional change.
 1.50  16-Sep-2015  macallan prop_dictionary_get_bool() doesn't return FALSE if the property doesn't
exist, so initialize things first.
No more console stealing on sparc64.
 1.49  24-Jul-2014  macallan branches: 1.49.4;
fix a bunch of bugs & tpyos:
- keep track of registers being mapped or not to avoid double (un)mapping when
switching between WSDISPLAYIO_MODE_DUMBFB and _MAPPED
- distinguish between _DUMBFB and _MAPPED
- actually map the framebuffer at offset 0 in _DUMBFB
- set BUS_SPACE_MAP_PREFETCHABLE when mmap()ing video memory
now Xorg + xf86-video-wsfb work on top of voodoofb
 1.48  29-Mar-2014  christos branches: 1.48.2;
make pci_intr_string and eisa_intr_string take a buffer and a length
instead of relying in local static storage.
 1.47  19-Nov-2013  macallan (hopefully) shut up warnings about set-but-unused variables.
 1.46  09-Oct-2013  macallan support WSDISPLAYIO_GET_FBINFO
 1.45  30-Jul-2013  macallan avoid uninitialized use of defattr
 1.44  02-Jul-2013  joerg Fix memset arguments.
 1.43  09-Nov-2012  rkujawa branches: 1.43.2;
Differentiate between Voodoo 3 and Voodoo Banshee (MAX_CLOCK).
Ok'd by macallan@.
 1.42  09-Nov-2012  rkujawa The voodoofb driver also works with Voodoo Banshee. Tested using card from
martin@. Should be modified to take different MAX_CLOCK value into account.
 1.41  23-Apr-2012  macallan branches: 1.41.2;
initialize a variable before using it
found by uebayasi@
now why did gcc warn him on x86 but not me on macppc?
 1.40  15-Mar-2012  macallan we need to zap the glyph cache when re-initializing after X
 1.39  13-Mar-2012  elad Replace the remaining KAUTH_GENERIC_ISSUSER authorization calls with
something meaningful. All relevant documentation has been updated or
written.

Most of these changes were brought up in the following messages:

http://mail-index.netbsd.org/tech-kern/2012/01/18/msg012490.html
http://mail-index.netbsd.org/tech-kern/2012/01/19/msg012502.html
http://mail-index.netbsd.org/tech-kern/2012/02/17/msg012728.html

Thanks to christos, manu, njoly, and jmmv for input.

Huge thanks to pgoyette for spinning these changes through some build
cycles and ATF.
 1.38  30-Jan-2012  drochner Use pci_aprint_devinfo(9) instead of pci_devinfo+aprint_{normal,naive}
where it looks straightforward, and pci_aprint_devinfo_fancy in a few
others where drivers want to supply their own device names instead
of the pcidevs generated one. More complicated cases, where names
are composed at runtime, are left alone for now. It certainly makes
sense to simplify the drivers here rather than inventing a catch-all API.
This should serve as as example for new drivers, and also ensure
consistent output in the AB_QUIET ("boot -q") case. Also, it avoids
excessive stack usage where drivers attach child devices because the
buffer for the device name is not kept on the local stack anymore.
 1.37  25-Jan-2012  macallan add a simple glyph cacheing scheme
Glyphs which use the default attribute will be saved into offscreen video
memory the first time they're used and subsequent uses will just copy them
from there instead of rendering them every time.
This should give a nice speedup especially on slow CPUs.
 1.36  25-Jan-2012  macallan sprinkle sc_ to make it consistent
 1.35  22-Jan-2012  macallan clear the screen when returning from X
 1.34  19-Jan-2012  macallan support anti-aliased fonts in 8 bit using host blits
 1.33  18-Jan-2012  macallan do some mode validation - for now reject everything above 1680x1200 until
I find out why these don't work ( 1680x1200 works but not 1920x1080 ).
Also use sync polarity info from videomode instead of guessing.
Finally, if there is no useble preferred mode, be a little smarter trying
to find the next best mode.
 1.32  17-Jan-2012  macallan we don't access video memory directly, no need to map it
 1.31  17-Jan-2012  macallan support DDC2, pick an appropriate video mode if a data are found
 1.30  17-Jan-2012  macallan get rid of HAVE_OPENFIRMWARE
 1.29  11-Jan-2012  macallan use rasops_init(0, 0)
 1.28  08-Oct-2011  kiyohara branches: 1.28.2; 1.28.6;
Change get parameters(width,height...) from prop_dictionary, like genfb. tested on ofppc only.
 1.27  22-Jan-2011  cegger Implement new WSDISPLAYIO_GET_BUSID ioctl.
It returns the bus id and allows userland (like Xorg) to create mapping
of ttyE? and bus id. For now only PCI is implemented.

First discussed with macallan@ then public on tech-kern@ and tech-x11@
 1.26  25-Dec-2010  macallan branches: 1.26.2; 1.26.4;
remove some ancient, unused debug code
 1.25  16-Dec-2010  cegger ioctl: KNF switch-case, remove useless brackets
 1.24  13-Nov-2010  uebayasi Don't pull in the whole uvm(9) API to access only PAGE_SIZE and
some other constants. These are provided by sys/param.h now.
 1.23  12-Oct-2010  macallan make higher resolutions than 1024x768 work
 1.22  04-May-2010  macallan use alternate font if available ( for autogenerated box drawing characters )
 1.21  26-Nov-2009  njoly branches: 1.21.2; 1.21.4;
Cleanup interrupt establish error messages. Do not mix
aprint_error/aprint_normal/printf calls for a single line.
 1.20  20-Aug-2009  macallan use vcons_replay_msgbuf() when appropriate
 1.19  06-May-2009  elad Replace curlwp->l_cred with kauth_cred_get().

Mailing list reference:

http://mail-index.netbsd.org/tech-kern/2009/05/05/msg005038.html
 1.18  09-Jul-2008  joerg branches: 1.18.8;
- device/softc split
 1.17  08-May-2008  macallan branches: 1.17.2; 1.17.4;
nuke clause 3
 1.16  05-May-2008  jmcneill branches: 1.16.2;
Change autoconf message 'direct rendering on dev unsupported' to
the more accurate 'drm at dev not configured'.
 1.15  10-Apr-2008  cegger branches: 1.15.2; 1.15.4;
use aprint_*_dev and device_xname
 1.14  24-Mar-2008  elad Introduce two missing KAUTH_GENERIC_ISSUSER check in the voodoo and machfb
mmap() code.

This and similar requests will be replaced Soon, but these two in
particular should be pulled up to netbsd-4, and to allow doing that
smoothly, we're first introducing the "issuser" version.

Discussed with and okay macallan@.
 1.13  27-Feb-2008  macallan get rid of the last #ifdef macppc and use PCI_MAGIC_IO_RANGE to select
at which offset we mmap PCI IO space
 1.12  01-Dec-2007  ad branches: 1.12.10; 1.12.14;
Back out previous.
 1.11  01-Dec-2007  ad Noisy printfs.
 1.10  12-Jun-2007  xtraeme branches: 1.10.6; 1.10.8; 1.10.14;
Fix a typo in voodoofb_drm_unmap(), requested by garbled.
cvs: ----------------------------------------------------------------------
 1.9  27-Mar-2007  jmcneill Make this compatible with tdfxdrm.
 1.8  04-Mar-2007  christos branches: 1.8.2; 1.8.4; 1.8.6;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.7  20-Jan-2007  he branches: 1.7.2;
Unify the declaration of OF_interpret() between sparc{,64} and macppc
by adding the "nargs" argument to the macppc version, and fix the macppc
ports uses of OF_interpret() accordingly.

Also move the declaration of OF_interpt() from macppc's autoconf.h to
ofw/openfirm.h. This fixes the build of the macppc port.

Approved by macallan@.
 1.6  13-Jan-2007  cube Complete initializer, and make it compile on (lesser?) archs that don't
have OpenFirmware.
 1.5  04-May-2006  simonb branches: 1.5.4; 1.5.6; 1.5.10; 1.5.14; 1.5.16; 1.5.20;
Add missing "return 0;" from WSDISPLAYIO_SMODE case in voodoofb_ioctl().
 1.4  15-Apr-2006  jmmv branches: 1.4.2; 1.4.4;
Remove the getwschar and putwschar accessops from wsdisplay drivers as
requested by uwe@. These were wrong because they were receiving an
emulcookie yet they were accessops (thus having to receive an accesscookie).
Instead, just handle the WSDISPLAYIO_{GET,PUT}WSCHAR ioctls from the
driver's ioctl accessop.

As this reduces the amount of code needed to handle these operations to
two small functions in each driver, remove the WSDISPLAY_CHARFUNCS kernel
option.

Reviewed by, at least, uwe@ and macallan@. No objections in tech-kern@.
 1.3  12-Apr-2006  macallan whitespace nits
( no, perry didn't steal my account )
 1.2  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.1  11-Apr-2006  macallan A driver for 3Dfx Voodoo3 graphics boards, may or may not work with Voodoo4,
Voodoo5 or Banshee boards.

So far it supports:
- full acceleration in 8bit graphics mode
- video mode switching
- virtual consoles via vcons

So far it hasn't been tested on anything else than macppc and even there it
needs a hack to overload ofb.

TODO:
- test on i386
- don't hardcode video mode
 1.4.4.3  01-Jun-2006  kardel Sync with head.
 1.4.4.2  22-Apr-2006  simonb Sync with head.
 1.4.4.1  15-Apr-2006  simonb file voodoofb.c was added on branch simonb-timecounters on 2006-04-22 11:39:16 +0000
 1.4.2.3  11-May-2006  elad sync with head
 1.4.2.2  19-Apr-2006  elad sync with head.
 1.4.2.1  15-Apr-2006  elad file voodoofb.c was added on branch elad-kernelauth on 2006-04-19 03:25:38 +0000
 1.5.20.2  24-Mar-2008  bouyer Pull up following revision(s) (requested by elad in ticket #1107):
sys/dev/pci/machfb.c: revision 1.51
sys/dev/pci/voodoofb.c: revision 1.14
Introduce two missing KAUTH_GENERIC_ISSUSER check in the voodoo and machfb
mmap() code.
Discussed with and okay macallan@.
 1.5.20.1  10-Mar-2007  bouyer branches: 1.5.20.1.2; 1.5.20.1.6;
Apply patch (requested by macallan in ticket #503):
sys/dev/pci/voodoofb.c patch
Add missing include; should fix macppc build.
 1.5.20.1.6.1  24-Mar-2008  bouyer Pull up following revision(s) (requested by elad in ticket #1107):
sys/dev/pci/machfb.c: revision 1.51
sys/dev/pci/voodoofb.c: revision 1.14
Introduce two missing KAUTH_GENERIC_ISSUSER check in the voodoo and machfb
mmap() code.
Discussed with and okay macallan@.
 1.5.20.1.2.1  03-Jun-2008  skrll Sync with netbsd-4.
 1.5.16.2  09-Sep-2006  rpaulo sync with head
 1.5.16.1  04-May-2006  rpaulo file voodoofb.c was added on branch rpaulo-netinet-merge-pcb on 2006-09-09 02:52:19 +0000
 1.5.14.1  01-Feb-2007  ad Sync with head.
 1.5.10.5  17-Mar-2008  yamt sync with head.
 1.5.10.4  03-Sep-2007  yamt sync with head.
 1.5.10.3  26-Feb-2007  yamt sync with head.
 1.5.10.2  21-Jun-2006  yamt sync with head.
 1.5.10.1  04-May-2006  yamt file voodoofb.c was added on branch yamt-lazymbuf on 2006-06-21 15:05:07 +0000
 1.5.6.2  24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.5.6.1  04-May-2006  tron file voodoofb.c was added on branch peter-altq on 2006-05-24 15:50:28 +0000
 1.5.4.2  24-May-2006  yamt sync with head.
 1.5.4.1  04-May-2006  yamt file voodoofb.c was added on branch yamt-pdpolicy on 2006-05-24 10:58:01 +0000
 1.7.2.2  15-Apr-2007  yamt sync with head.
 1.7.2.1  12-Mar-2007  rmind Sync with HEAD.
 1.8.6.1  29-Mar-2007  reinoud Pullup to -current
 1.8.4.1  11-Jul-2007  mjf Sync with head.
 1.8.2.2  15-Jul-2007  ad Sync with head.
 1.8.2.1  10-Apr-2007  ad Sync with head.
 1.10.14.1  08-Dec-2007  mjf Sync with HEAD.
 1.10.8.1  23-Mar-2008  matt sync with HEAD
 1.10.6.1  03-Dec-2007  joerg Sync with HEAD.
 1.12.14.3  28-Sep-2008  mjf Sync with HEAD.
 1.12.14.2  02-Jun-2008  mjf Sync with HEAD.
 1.12.14.1  03-Apr-2008  mjf Sync with HEAD.
 1.12.10.1  24-Mar-2008  keiichi sync with head.
 1.15.4.6  11-Aug-2010  yamt sync with head.
 1.15.4.5  11-Mar-2010  yamt sync with head
 1.15.4.4  16-Sep-2009  yamt sync with head
 1.15.4.3  16-May-2009  yamt sync with head
 1.15.4.2  04-May-2009  yamt sync with head.
 1.15.4.1  16-May-2008  yamt sync with head.
 1.15.2.1  18-May-2008  yamt sync with head.
 1.16.2.2  18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.16.2.1  23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.17.4.1  19-Oct-2008  haad Sync with HEAD.
 1.17.2.1  18-Jul-2008  simonb Sync with head.
 1.18.8.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.21.4.2  05-Mar-2011  rmind sync with head
 1.21.4.1  30-May-2010  rmind sync with head
 1.21.2.2  22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.21.2.1  17-Aug-2010  uebayasi Sync with HEAD.
 1.26.4.1  08-Feb-2011  bouyer Sync with HEAD
 1.26.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.28.6.3  29-Apr-2012  mrg sync to latest -current.
 1.28.6.2  05-Apr-2012  mrg sync to latest -current.
 1.28.6.1  18-Feb-2012  mrg merge to -current.
 1.28.2.4  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.28.2.3  16-Jan-2013  yamt sync with (a bit old) head
 1.28.2.2  23-May-2012  yamt sync with head.
 1.28.2.1  17-Apr-2012  yamt sync with head
 1.41.2.3  03-Dec-2017  jdolecek update from HEAD
 1.41.2.2  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.41.2.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.43.2.2  18-May-2014  rmind sync with head
 1.43.2.1  28-Aug-2013  rmind sync with head
 1.48.2.1  10-Aug-2014  tls Rebase.
 1.49.4.2  05-Oct-2016  skrll Sync with HEAD
 1.49.4.1  22-Sep-2015  skrll Sync with HEAD
 1.51.18.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.51.18.1  10-Jun-2019  christos Sync with HEAD
 1.51.16.1  26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.53.10.2  31-Mar-2021  thorpej There are two interface attriubtues on this device, so we need to be
explcit about it in BOTH config_found() calls.
 1.53.10.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.54.8.1  04-Aug-2021  thorpej Adapt to CFARGS().

RSS XML Feed