Home | History | Annotate | Download | only in pci
History log of /src/sys/dev/pci/genfb_pci.c
RevisionDateAuthorComments
 1.45  02-Oct-2022  rin PR kern/57035

s/lower/higher/ in comment; for little endian, 2nd word is higher
both in numeric and address. It seems that I'm too absorbed into
big endian machines these days ;)

No binary changes.
 1.44  01-Oct-2022  rin Use appropriate macros. No binary changes for GCC/amd64.
 1.43  01-Oct-2022  rin Remove confusing braces. No binary changes.
 1.42  01-Oct-2022  rin trailing whitespace
 1.41  01-Oct-2022  rin PR kern/57035

genfb(4): Fix blank screen after switching to WSDISPLAYIO_MODE_EMUL for
some GPU models like Ice Lake integrated GPU:

- Restore lower words of 64-bit BARs correctly.
- Do not disable expansion ROM if exists.

Thanks ryoon@ for testing!
 1.40  07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.39  24-Apr-2021  thorpej branches: 1.39.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.38  07-Jul-2016  msaitoh branches: 1.38.34;
KNF. Remove extra spaces. No functional change.
 1.37  24-Jul-2014  riastradh branches: 1.37.4;
Add enable/disable polling hooks to genfb_ops.
 1.36  27-Jan-2014  macallan branches: 1.36.2;
back out 1.35 since it completely breaks the mechanism for wsdisplay drivers
to determine wether to become console or not.
See http://mail-index.netbsd.org/tech-kern/2014/01/15/msg016421.html
for fixing this properly.
 1.35  16-Jan-2014  jakllsch Fix PR kern/46376 with Nat Sloss's patch (with slight modification).
Serial console now works on x86 with genfb enabled.
 1.34  13-Mar-2012  elad branches: 1.34.2;
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.33  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.32  08-Mar-2011  macallan branches: 1.32.4; 1.32.8;
only try to map the framebuffer if we don't already have an address
With this radeondrm works with genfb and r6xx.
 1.31  13-Feb-2011  phx Determine BAR type with pci_mapreg_probe() instead of pci_mapreg_type(),
to skip unimplemented BARs.
Do not probe non-BAR registers (like subsystem id). This fixes potential
panics in pci_mem_find().
 1.30  10-Feb-2011  jmcneill add support for 64-bit BARs
 1.29  10-Feb-2011  jmcneill Use BUS_SPACE_MAP_PREFETCHABLE when mapping the framebuffer.
 1.28  09-Feb-2011  jmcneill switch genfb to polling mode at shutdown
 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  16-Dec-2010  cegger branches: 1.26.2; 1.26.4;
ioctl: KNF switch-case, remove useless brackets
 1.25  07-Oct-2010  macallan finish device_t-ification
 1.24  25-Feb-2010  macallan branches: 1.24.2;
add a comment on PCI_MAGIC_IO_RANGE
 1.23  24-Aug-2009  jmcneill branches: 1.23.2;
Move softc definition to genfb_pcivar.h
 1.22  24-Aug-2009  jmcneill Expose genfb_restore_palette and allow MD code to specify PMF callbacks.
 1.21  24-Aug-2009  jmcneill Register NULL pmf handlers, and note that firmware & MD code is responsible
for restoring the display device.
 1.20  12-May-2009  cegger use device_private().
"looks good" ad@
XXX for the device_t/softc split, please check the driver that no cases have been missed.
 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  06-May-2009  cegger struct device * -> device_t, no functional changes intended.
 1.17  06-May-2009  cegger struct cfdata * -> cfdata_t, no functional changes intended.
 1.16  23-Feb-2009  jmcneill Turn "bogus parameters" aprint_error into aprint_debug, and change the
message to say that the framebuffer was not configured by the firmware.
 1.15  17-Feb-2009  jmcneill Use aprint_*
 1.14  16-Feb-2009  jmcneill Provide callbacks so MD code can explicitly prevent genfb from matching;
works around vga/genfb deathmatches.
 1.13  15-Feb-2009  jmcneill Introduce genfb_ops genfb_borrow callback to allow the bus frontend to
lend mappings to drm.
 1.12  14-Feb-2009  jmcneill Provide a stub genfb_cnattach for md code to call to give a hint to the
bus driver's match function to return a higher confidence (so it can
beat out vga(4), for example). genfb needs-flag so md code can determine
if the genfb driver is present.
 1.11  05-May-2008  jmcneill branches: 1.11.8; 1.11.14;
Change autoconf message 'direct rendering on dev unsupported' to
the more accurate 'drm at dev not configured'.
 1.10  29-Apr-2008  martin Convert to new 2 clause license
 1.9  10-Apr-2008  cegger branches: 1.9.2; 1.9.4;
use aprint_*_dev and device_xname
 1.8  01-Apr-2008  mrg if genfb_pci can't map regs, don't panic() just return.
 1.7  09-Mar-2008  phx Do not attach genfb when the frame buffer is not flagged as being console
(e.g. when a serial console is used).
Approved by macallan.
 1.6  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.5  21-Dec-2007  macallan branches: 1.5.2; 1.5.6;
only enable the fb mapping at offset 0 after attempting to mmap page 0
This way we avoid a conflict with PCI resources on some Sun graphics cards
which have firmware that likes to put memory resources at low addresses.
For instance, if we have 1MB framebuffer and registers at 0x30000 we'll
get the registers when mmap()ing 0x30000 until someone tries to mmap(0),
then we'll get framebuffer memory for the entire 1st MB.
This needs an ioctl() to switch between fb-at-0 and PCI ranges.
 1.4  01-Dec-2007  ad branches: 1.4.2; 1.4.6;
Back out previous.
 1.3  01-Dec-2007  ad Noisy printfs.
 1.2  19-Nov-2007  macallan various fixes and additions:
- deal with bogus parameters - just return instead of panic()ing
- try to attach a drm
- save and restore BARs in case X messes them up
 1.1  10-Apr-2007  macallan branches: 1.1.2; 1.1.6; 1.1.8; 1.1.14; 1.1.16; 1.1.18; 1.1.22; 1.1.24;
move genfb's PCI frontend to dev/pci
 1.1.24.2  27-Dec-2007  mjf Sync with HEAD.
 1.1.24.1  08-Dec-2007  mjf Sync with HEAD.
 1.1.22.1  21-Nov-2007  bouyer Sync with HEAD
 1.1.18.5  17-Mar-2008  yamt sync with head.
 1.1.18.4  21-Jan-2008  yamt sync with head
 1.1.18.3  07-Dec-2007  yamt sync with head
 1.1.18.2  03-Sep-2007  yamt sync with head.
 1.1.18.1  10-Apr-2007  yamt file genfb_pci.c was added on branch yamt-lazymbuf on 2007-09-03 14:36:50 +0000
 1.1.16.2  23-Mar-2008  matt sync with HEAD
 1.1.16.1  09-Jan-2008  matt sync with HEAD
 1.1.14.1  21-Nov-2007  joerg Sync with HEAD.
 1.1.8.2  11-Jul-2007  mjf Sync with head.
 1.1.8.1  10-Apr-2007  mjf file genfb_pci.c was added on branch mjf-ufs-trans on 2007-07-11 20:07:29 +0000
 1.1.6.2  15-Apr-2007  yamt sync with head.
 1.1.6.1  10-Apr-2007  yamt file genfb_pci.c was added on branch yamt-idlelwp on 2007-04-15 16:03:24 +0000
 1.1.2.2  10-Apr-2007  ad Sync with head.
 1.1.2.1  10-Apr-2007  ad file genfb_pci.c was added on branch vmlocking on 2007-04-10 13:24:23 +0000
 1.4.6.1  02-Jan-2008  bouyer Sync with HEAD
 1.4.2.1  26-Dec-2007  ad Sync with head.
 1.5.6.2  02-Jun-2008  mjf Sync with HEAD.
 1.5.6.1  03-Apr-2008  mjf Sync with HEAD.
 1.5.2.1  24-Mar-2008  keiichi sync with head.
 1.9.4.6  09-Oct-2010  yamt sync with head
 1.9.4.5  11-Mar-2010  yamt sync with head
 1.9.4.4  16-Sep-2009  yamt sync with head
 1.9.4.3  16-May-2009  yamt sync with head
 1.9.4.2  04-May-2009  yamt sync with head.
 1.9.4.1  16-May-2008  yamt sync with head.
 1.9.2.1  18-May-2008  yamt sync with head.
 1.11.14.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.11.8.1  03-Mar-2009  skrll Sync with HEAD.
 1.23.2.2  22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.23.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.24.2.2  21-Apr-2011  rmind sync with head
 1.24.2.1  05-Mar-2011  rmind sync with head
 1.26.4.2  17-Feb-2011  bouyer 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.32.8.2  05-Apr-2012  mrg sync to latest -current.
 1.32.8.1  18-Feb-2012  mrg merge to -current.
 1.32.4.1  17-Apr-2012  yamt sync with head
 1.34.2.2  03-Dec-2017  jdolecek update from HEAD
 1.34.2.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.36.2.1  10-Aug-2014  tls Rebase.
 1.37.4.1  09-Jul-2016  skrll Sync with HEAD
 1.38.34.1  02-Apr-2021  thorpej config_found_ia() -> config_found() w/ CFARG_IATTR.
 1.39.8.1  04-Aug-2021  thorpej Adapt to CFARGS().

RSS XML Feed