Home | History | Annotate | Download | only in pci
History log of /src/sys/dev/pci/pm2fb.c
RevisionDateAuthorComments
 1.37  04-Jun-2025  macallan enable font loading
 1.36  04-Jun-2025  macallan make pipeline overrun protection in pm2fb_putchar_aa() actually work. Doh.
 1.35  25-Sep-2022  thorpej branches: 1.35.10;
Remove unnecessary include of <sys/malloc.h>.
 1.34  19-Dec-2021  andvar s/forground/foreground/ in comments.
 1.33  07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.32  24-Apr-2021  thorpej branches: 1.32.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.31  22-Dec-2019  thorpej branches: 1.31.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.30  03-Sep-2018  riastradh Rename min/max -> uimin/uimax for better honesty.

These functions are defined on unsigned int. The generic name
min/max should not silently truncate to 32 bits on 64-bit systems.
This is purely a name change -- no functional change intended.

HOWEVER! Some subsystems have

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))

even though our standard name for that is MIN/MAX. Although these
may invite multiple evaluation bugs, these do _not_ cause integer
truncation.

To avoid `fixing' these cases, I first changed the name in libkern,
and then compile-tested every file where min/max occurred in order to
confirm that it failed -- and thus confirm that nothing shadowed
min/max -- before changing it.

I have left a handful of bootloaders that are too annoying to
compile-test, and some dead code:

cobalt ews4800mips hp300 hppa ia64 luna68k vax
acorn32/if_ie.c (not included in any kernels)
macppc/if_gm.c (superseded by gem(4))

It should be easy to fix the fallout once identified -- this way of
doing things fails safe, and the goal here, after all, is to _avoid_
silent integer truncations, not introduce them.

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate. But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all. (Who knows, maybe in some cases integer
truncation is actually intended!)
 1.29  16-Dec-2016  macallan branches: 1.29.14; 1.29.16;
use hardware rendering for anti-aliased fonts
 1.28  16-Sep-2015  macallan branches: 1.28.2;
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.27  17-Dec-2014  macallan - add support for Permedia 2
- make this work on alpha
from Naruaki Etomi
 1.26  09-Dec-2014  macallan begin to address PR 49229:
- program aperture endianness to match host, now xf86-video-wsfb works as
expected
- properly restore the colour map when er-entering terminal emulation
 1.25  09-Oct-2013  macallan branches: 1.25.6;
support WSDISPLAYIO_GET_FBINFO
 1.24  15-Sep-2013  martin Remove/comment out unused variables, initialize a few others.
 1.23  30-Jul-2013  macallan avoid uninitialized use of defattr
 1.22  28-Jun-2013  christos branches: 1.22.2;
this could have never worked. Cleanup bogus code.
http://m00nbsd.net/ae123a9bae03f7dde5c6d654412daf5a.html
 1.21  06-Oct-2012  macallan don't crash when we're not the console
 1.20  04-Oct-2012  macallan support underlined characters
while there, make sure the glyph cache doesn't exceed 2048 lines since that's
the drawing engine's limit
 1.19  13-Sep-2012  macallan make video modes work that need a screen width which isn't directly supported
by the rendering engine - just use the next higher supported stride
 1.18  13-Sep-2012  macallan add mode setting support
While there, don't pretend to support the Permedia2 non-V - I don't have the
hardware and it has never been tested in the first place. The only hardware
this has been tested on is a TechSource Raptor GFX 8P / Sun PGX32 which
happens to be a Permedia2V with Sun firmware.
 1.17  12-Sep-2012  macallan support anti-aliased fonts in 8 bit
while there, fix pm2fb_bitblt() packed mode, for real this time
TODO:
- use packed mode when uploading glyphs
- let the hardware do the alpha blending if possible
- mode setting
 1.16  05-Sep-2012  macallan branches: 1.16.2;
fix horizontal scrolling in 8bit, while there use an R3G3B2 palette
 1.15  05-Sep-2012  macallan some preparations for mode setting support and such:
- DDC2 support, so far only used for WSDISPLAYIO_GET_EDID
- fix 8 bit support, use packed mode for some extra speed
- pm2 and pm2v have different DACs, deal with it where appropriate
 1.14  23-May-2012  macallan first step to fix PR 46461 - don't jump through a NULL pointer when we're
not the console but the firmware set up the graphics hardware anyway
 1.13  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.12  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.11  11-Jan-2012  macallan use rasops_init(0, 0)
 1.10  24-Nov-2011  macallan branches: 1.10.2;
fix debug build
 1.9  24-Nov-2011  macallan #include "opt_pm2fb.h"
 1.8  24-Nov-2011  macallan support DDC2, so far only for WSDISPLAYIO_GET_EDID
 1.7  22-Jan-2011  cegger branches: 1.7.4;
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.6  16-Dec-2010  cegger branches: 1.6.2; 1.6.4;
ioctl: KNF switch-case, remove useless brackets
 1.5  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.4  04-May-2010  macallan use alternate font if available ( for autogenerated box drawing characters )
 1.3  16-Mar-2010  macallan Implement character drawing by hardware so we don't need to map the framebuffer
anymore. Also do some cleanup, remove no longer relevant debugging code etc.
 1.2  28-Oct-2009  macallan branches: 1.2.2; 1.2.4; 1.2.6;
fix occasionally wrong colours in rectangle fills
 1.1  28-Oct-2009  macallan A driver for the Permedia 2 graphics processor, so far it's been tested only
on sparc64 with a Sun PGX32 / TechSource Raptor GFX 8P
So far it accelerates block copies, rectangle fills and the cursor, it
supports the usual wsdisplay / vcons stuff.
TODO:
- character drawing by hardware so we don't need to map the framebuffer
- DDC2 support
- mode setting
This driver still relies on the firmware to set up graphics modes etc. so it
won't work on x86 ( or non-OpenFirmware for that matter ) unless you use the
VESA BIOS to set up graphics and pass the right properties ( width, height
etc. ) to the driver. For the same reason it will work only if it's the
OpenFirmware console.
 1.2.6.2  05-Mar-2011  rmind sync with head
 1.2.6.1  30-May-2010  rmind sync with head
 1.2.4.3  11-Aug-2010  yamt sync with head.
 1.2.4.2  11-Mar-2010  yamt sync with head
 1.2.4.1  28-Oct-2009  yamt file pm2fb.c was added on branch yamt-nfs-mp on 2010-03-11 15:03:59 +0000
 1.2.2.2  17-Aug-2010  uebayasi Sync with HEAD.
 1.2.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.6.4.1  08-Feb-2011  bouyer Sync with HEAD
 1.6.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.7.4.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.7.4.2  30-Oct-2012  yamt sync with head
 1.7.4.1  17-Apr-2012  yamt sync with head
 1.10.2.3  02-Jun-2012  mrg sync to latest -current.
 1.10.2.2  05-Apr-2012  mrg sync to latest -current.
 1.10.2.1  18-Feb-2012  mrg merge to -current.
 1.16.2.3  03-Dec-2017  jdolecek update from HEAD
 1.16.2.2  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.16.2.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.22.2.2  18-May-2014  rmind sync with head
 1.22.2.1  28-Aug-2013  rmind sync with head
 1.25.6.3  05-Feb-2017  skrll Sync with HEAD
 1.25.6.2  22-Sep-2015  skrll Sync with HEAD
 1.25.6.1  06-Apr-2015  skrll Sync with HEAD
 1.28.2.1  07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.29.16.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.29.16.1  10-Jun-2019  christos Sync with HEAD
 1.29.14.1  06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.31.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.32.8.1  04-Aug-2021  thorpej Adapt to CFARGS().
 1.35.10.1  02-Aug-2025  perseant Sync with HEAD

RSS XML Feed