Home | History | Annotate | Download | only in wsfb
History log of /src/sys/dev/wsfb/genfb.c
RevisionDateAuthorComments
 1.92  29-Apr-2025  tsutsui Fix indent.
 1.91  20-Jan-2024  jmcneill wsfb: add support for optional "devcmap" property

A hardware driver can supply a pointer to a 16x 32-bit array to override
the default rasops device colour map in the "devcmap" property.
 1.90  01-Aug-2022  riastradh branches: 1.90.4;
genfb: Handle uninitialized softc in genfb_enable/disable_polling.

This can happen due to janky MD kludgerosity like x86
x86_genfb_ddb_trap_callback, which should really be cleaned up, but
at least this might help with the recursive traps we've been seeing
in syzbot.
 1.89  17-Jul-2022  riastradh genfb(4): Make internal parts of struct genfb_softc private.

This way the ABI has no ifdefs, so it has a chance to be usable in
modules. This also makes genfb much easier to maintain without
worrying about ABI breakage.
 1.88  17-Jul-2022  riastradh genfb(4): KASSERT(a && b) -> KASSERT(a); KASSERT(b)

Better diagnostics. No other functional change.
 1.87  09-Jul-2022  rin Fix GENFB_GLYPHCACHE with shadow fb.
 1.86  28-Mar-2022  mlelstv Add helper to detach genfb console.
 1.85  24-Dec-2021  jmcneill wsfb: Prefer wide fonts when EDID data is available.

To give us a better chance of picking a readable font, prefer fonts that
will render at least 3mm wide instead of picking the font that will be
closest to that size.
 1.84  30-Aug-2021  jmcneill Add 10-bit pixel format support.
 1.83  07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.82  24-Apr-2021  thorpej branches: 1.82.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.81  27-Jan-2021  macallan branches: 1.81.2;
add optional glyph cache for genfb
enable with options GENFB_GLYPHCACHE=n
with n being the desired size of the cache in MB. Should be enough to cache
at least 900 glyphs in whatever video mode used in order to be effective
in 32bit per pixel that's about 1MB
 1.80  26-Jan-2021  macallan remove outdated comment
 1.79  17-Jan-2021  jmcneill Prefer printing the framebuffer's PA instead of VA. It's much more useful..
 1.78  19-Oct-2020  rin branches: 1.78.2;
Add "is_swapped" property which indicates 32-bpp framebuffer is
byte-swapped.
 1.77  18-Oct-2020  rin Revert rev 1.75; do not set WSFB_VRAM_IS_RAM flag bit. It indicates
memory type obtained by mmap. I just misunderstood its intention.

Thanks to jmcneill for pointing it out!
 1.76  18-Oct-2020  rin Remove stray TABs. No binary changes.
 1.75  18-Oct-2020  rin For WSDISPLAYIO_GET_FBINFO ioctl, set WSFB_VRAM_IS_RAM to fbi_flags
when shadow FB is used.
 1.74  11-Jun-2020  thorpej Update for proplib(3) API changes.
 1.73  30-May-2020  jdolecek reduce stack usage in genfb_calc_hsize()
 1.72  13-Apr-2020  msaitoh Get genfb's address offset correctly when the vaule >= 4G. OK's by jmcneill.

Tested on Intel BXNUC10I3FNK (Comet Lake U).
 1.71  23-Feb-2020  martin branches: 1.71.4;
Do not replay the msgbuf if we are booting silent or quiet.
 1.70  09-Aug-2019  rin branches: 1.70.2;
Fix bug introduced in rev. 1.69:
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/wsfb/genfb.c#rev1.69

is_bgr should be initialized to false. Otherwise, color becomes strange
for depths 24 and 32 unless backend explicitly set "is_bgr" property.
 1.69  07-Aug-2019  rin We support anti-aliasing for depth 2.
Use switch appropriately.
 1.68  02-Aug-2019  rin Notify size of shadow framebuffer if enabled.
 1.67  29-Jul-2019  rin branches: 1.67.2;
Enable anti-aliasing for depth 24.
Style.
 1.66  28-Jul-2019  rin sys/dev/rasops routines support anti-aliasing for depths 15 and 16.
 1.65  31-May-2019  jmcneill If an EDID is available, attempt to use the screen size to influence font
selection by passing a "wantcols" value to rasops_init that is satisfied
by a font that is at least 3mm wide.
 1.64  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.63  06-Mar-2018  mlelstv branches: 1.63.2;
Fix cmap bounds checking.
 1.62  21-Jan-2018  christos branches: 1.62.2;
CID-1427771: Remove incorrect pre-condition (index cannot be 256!)
 1.61  01-Jun-2017  chs branches: 1.61.2;
remove checks for failure after memory allocation calls that cannot fail:

kmem_alloc() with KM_SLEEP
kmem_zalloc() with KM_SLEEP
percpu_alloc()
pserialize_create()
psref_class_create()

all of these paths include an assertion that the allocation has not failed,
so callers should not assert that again.
 1.60  19-May-2017  macallan enable font loading and screen resizing
 1.59  25-Feb-2017  nonaka genfb(4): Enabling/Disabling shadowfb can be controlled via prop.
 1.58  01-Jun-2015  nat branches: 1.58.2; 1.58.4;
Fix splashscreen on resolutions where text is centered.

This commit was approved by macallan@
 1.57  20-Mar-2015  jmcneill support 24bpp framebuffers
 1.56  10-Sep-2014  macallan branches: 1.56.2;
handle WSDISPLAYIO_GET_EDID and WSDISPLAYIO_GET_FBINFO only if the bus
frontend doesn't ( as in, returns EPASSTHROUGH or doesn't register a
handler )
Now flags passed from things like bcm2835_genfb.c are actually seen by
xf86-video-wsfb again and automatically disabling shadowfb works again,
which results in a major speedup on this kind of hardware.
 1.55  24-Jul-2014  riastradh branches: 1.55.2;
Add enable/disable polling hooks to genfb_ops.
 1.54  22-Jul-2014  riastradh Do not printf(foobar()). Bad bad bad bad bad!
 1.53  18-Mar-2014  riastradh branches: 1.53.2;
Merge riastradh-drm2 to HEAD.
 1.52  22-Jan-2014  skrll Provide a wsdisplay_accessops.pollc

This makes sure that the screen gets painted properly during early boot
input (e.g. boot -a) on the Raspberry PI.
 1.51  09-Oct-2013  macallan support WSDISPLAYIO_GET_FBINFO
 1.50  10-Jan-2013  jmcneill branches: 1.50.2; 1.50.8;
for WSDISPLAYIO_SMODE, if the bus ioctl handler returns EPASSTHROUGH, dont treat it as an error
 1.49  09-Jan-2013  jmcneill aprint_verbose -> aprint_debug
 1.48  12-Apr-2012  macallan branches: 1.48.2;
in 32 bit colour assume RGB ordering, allow override using a device property
 1.47  07-Feb-2012  phx branches: 1.47.2;
On 8-bit screens only enable font anti-aliasing when the cmap_callback
property is defined. It is needed for a suitable R3G3B2 color map.
Ok by releng@
 1.46  11-Jan-2012  macallan use rasops_init(0, 0)
 1.45  04-Jan-2012  macallan support anti-aliased fonts in 8 bit, generate an appropriate colour map
 1.44  28-Dec-2011  macallan if the cursor row passed in a device property doesn't fit on the screen just
ignore it and clear the screen
 1.43  22-Dec-2011  macallan support anti-aliased fonts in 32bit colour
 1.42  13-Jul-2011  macallan branches: 1.42.2; 1.42.6;
use callbacks that match the ioctl() interface to control backlight
 1.41  02-Jun-2011  macallan some steps to make multiple instances work:
- don't bail if we're not the console. If we get the right paramters there is no
reason not to work
- move wsdisplay_accessops into the softc
- call wsdisplay_cnattach only if we're the console
 1.40  08-Mar-2011  macallan branches: 1.40.2;
fix build for LP32
thanks to uebayasi@
 1.39  08-Mar-2011  macallan look for a 'virtual_address' property and use it as fb address
 1.38  22-Feb-2011  jmcneill genfb_enable/disable_polling only matters if genfb is the console screen,
so make it a noop if it's not
 1.37  18-Feb-2011  jmcneill call vcons_hard_switch to switch to the console screen when entering polling
mode, makes ddb-from-X work with genfb on x86
 1.36  12-Feb-2011  phx Fixed NULL-pointer dereferencing when a mode-callback is not defined.
 1.35  09-Feb-2011  jmcneill add vcons_{enable,disable}_polling and genfb_{enable,disable}_polling
functions, to switch between intr and polling modes when VCONS_DRAW_INTR
is defined
 1.34  08-Feb-2011  jmcneill add a 'setmode' callback to genfb and use it to setup write-combining
MTRRs on x86 whenever switching to WSDISPLAYIO_MODE_EMUL
 1.33  06-Feb-2011  jmcneill - add support for using compressed images as splash images
- retire SPLASHSCREEN_PROGRESS and SPLASHSCREEN_IMAGE options
 1.32  07-Oct-2010  macallan branches: 1.32.2; 1.32.4;
finish device_t-ification
 1.31  06-Oct-2010  macallan add support for backlight control via machine dependent callbacks
 1.30  31-Aug-2010  macallan make use of a shadow framebuffer optional, use VCONS_DONT_READ by default
 1.29  22-Feb-2010  ahoka branches: 1.29.2;
Restore splashscreen support with genfb.
genfb patch from Pierre Pronchery, other small changes to make it
compile by me.

Closes PR kern/42605.

XXX doesnt work in 8bit, probably a cmap issue
 1.28  24-Aug-2009  jmcneill branches: 1.28.2;
Expose genfb_restore_palette and allow MD code to specify PMF callbacks.
 1.27  20-Aug-2009  macallan call vcons_replay_msgbuf()
 1.26  21-Feb-2009  christos s/long/intptr_t/
 1.25  20-Feb-2009  dogcow sparc complains "cast to pointer from integer of different size"; cast the
int to (void *)(long).
 1.24  20-Feb-2009  jmcneill If the bus glue provides an ioctl handler, don't return before we have a
chance to perform generic handling in the WSDISPLAYIO_SMODE case.

ok macallan
 1.23  17-Feb-2009  jmcneill Use kmem_alloc instead of malloc for shadowfb
 1.22  17-Feb-2009  jmcneill Print the physical address if available instead of a virtual address.
 1.21  17-Feb-2009  jmcneill Add clear-screen and cursor-row properties to allow genfb to persist
screen state from the MD console driver.
 1.20  16-Feb-2009  jmcneill Provide callbacks so MD code can explicitly prevent genfb from matching;
works around vga/genfb deathmatches.
 1.19  15-Feb-2009  jmcneill Introduce genfb_ops genfb_borrow callback to allow the bus frontend to
lend mappings to drm.
 1.18  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.17  29-Apr-2008  martin branches: 1.17.8; 1.17.14;
Convert to new 2 clause license
 1.16  05-Apr-2008  cegger branches: 1.16.2; 1.16.4;
use aprint_*_dev and device_xname
 1.15  09-Mar-2008  phx missing newline in message
 1.14  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.13  17-Dec-2007  macallan branches: 1.13.2; 1.13.6;
deal with a bug in the Sun Raptor's firmware which reports
linebytes == width even in 32bit colour
 1.12  19-Nov-2007  macallan branches: 1.12.2; 1.12.6;
sprinkle \n
 1.11  05-Nov-2007  macallan branches: 1.11.2;
don't panic if we're not finding all the properties we need. Just complain
quietly and return.
 1.10  30-Aug-2007  jmmv branches: 1.10.2; 1.10.6;
Clear the screen during initialization so that the first messages are not
printed over "unknown garbage" (e.g. the Mac OS desktop). Agreed with
macallan@.
 1.9  30-Aug-2007  jmmv Print some details of the framebuffer configuration during attach.
OK'ed by macallan@.
 1.8  30-Aug-2007  jmmv Properly initialize the palette registers by calling the colormap callback
on all of them. A typo made it only initialize half of them. OK'ed by
macallan@.
 1.7  24-Aug-2007  macallan branches: 1.7.2;
use bool with prop_dictionary_get_bool()
 1.6  05-Aug-2007  macallan branches: 1.6.2;
fix typo - fbsize is /height/ * stride. Doh.
 1.5  04-Aug-2007  macallan add shadow fb support
now genfb is actually usable even on slow PCI framebuffers. Yay Jared :)
 1.4  14-Apr-2007  macallan branches: 1.4.2; 1.4.4; 1.4.8;
add a callback to change the colour map
so now X with wsfb on top of genfb should look right
 1.3  11-Apr-2007  macallan add WSDISPLAYIO_LINEBYTES support so we can run XFree86 with wsfb
 1.2  10-Apr-2007  macallan branches: 1.2.2;
- move all memory mapping into the bus frontend
- get rid of macppc-isms like *_mmap() returning physical addresses
 1.1  07-Apr-2007  macallan add genfb, a generic framebuffer console driver that's configured via
device properties - all it needs is width and height in pixels, stride in
bytes, depth in bits and the framebuffer address.
Features:
- unaccelerated fb console with colours and virtual consoles
- split into console handling and bus frontend
- so far there is only a PCI bus frontend which allows to mmap BARs belonging
to the graphics controller, others should be easy to add.

TODO:
- find an opaque way to change the palette ( probably pass a function
pointer as property ) since this would need to call some firmware interface
which is pretty much always MD
- find a clean way to mmap the framebuffer, just returning the physical
address works on macppc but not on other architectures. Problem is, that
we cannot rely on the address being a bus address - on macppc it is,
but for instance on sparc64 it's not.
 1.2.2.5  09-Oct-2007  ad Sync with head.
 1.2.2.4  20-Aug-2007  ad Sync with HEAD.
 1.2.2.3  27-May-2007  ad Sync with head.
 1.2.2.2  10-Apr-2007  ad Sync with head.
 1.2.2.1  10-Apr-2007  ad file genfb.c was added on branch vmlocking on 2007-04-10 13:24:53 +0000
 1.4.8.4  21-Nov-2007  joerg Sync with HEAD.
 1.4.8.3  06-Nov-2007  joerg Sync with HEAD.
 1.4.8.2  03-Sep-2007  jmcneill Sync with HEAD.
 1.4.8.1  09-Aug-2007  jmcneill Sync with HEAD.
 1.4.4.2  03-Sep-2007  skrll Sync with HEAD.
 1.4.4.1  15-Aug-2007  skrll Sync with HEAD.
 1.4.2.2  15-Apr-2007  yamt sync with head.
 1.4.2.1  14-Apr-2007  yamt file genfb.c was added on branch yamt-idlelwp on 2007-04-15 16:03:33 +0000
 1.6.2.2  05-Aug-2007  macallan fix typo - fbsize is /height/ * stride. Doh.
 1.6.2.1  05-Aug-2007  macallan file genfb.c was added on branch matt-mips64 on 2007-08-05 03:23:03 +0000
 1.7.2.3  23-Mar-2008  matt sync with HEAD
 1.7.2.2  09-Jan-2008  matt sync with HEAD
 1.7.2.1  06-Nov-2007  matt sync with HEAD
 1.10.6.2  21-Nov-2007  bouyer Sync with HEAD
 1.10.6.1  13-Nov-2007  bouyer Sync with HEAD
 1.10.2.6  17-Mar-2008  yamt sync with head.
 1.10.2.5  21-Jan-2008  yamt sync with head
 1.10.2.4  07-Dec-2007  yamt sync with head
 1.10.2.3  15-Nov-2007  yamt sync with head.
 1.10.2.2  03-Sep-2007  yamt sync with head.
 1.10.2.1  30-Aug-2007  yamt file genfb.c was added on branch yamt-lazymbuf on 2007-09-03 14:39:44 +0000
 1.11.2.2  27-Dec-2007  mjf Sync with HEAD.
 1.11.2.1  08-Dec-2007  mjf Sync with HEAD.
 1.12.6.1  02-Jan-2008  bouyer Sync with HEAD
 1.12.2.1  26-Dec-2007  ad Sync with head.
 1.13.6.2  02-Jun-2008  mjf Sync with HEAD.
 1.13.6.1  03-Apr-2008  mjf Sync with HEAD.
 1.13.2.1  24-Mar-2008  keiichi sync with head.
 1.16.4.5  09-Oct-2010  yamt sync with head
 1.16.4.4  11-Mar-2010  yamt sync with head
 1.16.4.3  16-Sep-2009  yamt sync with head
 1.16.4.2  04-May-2009  yamt sync with head.
 1.16.4.1  16-May-2008  yamt sync with head.
 1.16.2.1  18-May-2008  yamt sync with head.
 1.17.14.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.17.8.1  03-Mar-2009  skrll Sync with HEAD.
 1.28.2.2  22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.28.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.29.2.3  12-Jun-2011  rmind sync with head
 1.29.2.2  21-Apr-2011  rmind sync with head
 1.29.2.1  05-Mar-2011  rmind sync with head
 1.32.4.3  05-Mar-2011  bouyer Sync with HEAD
 1.32.4.2  17-Feb-2011  bouyer Sync with HEAD
 1.32.4.1  08-Feb-2011  bouyer Sync with HEAD
 1.32.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.40.2.1  23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.42.6.2  29-Apr-2012  mrg sync to latest -current.
 1.42.6.1  18-Feb-2012  mrg merge to -current.
 1.42.2.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.42.2.2  23-Jan-2013  yamt sync with head
 1.42.2.1  17-Apr-2012  yamt sync with head
 1.47.2.2  29-Sep-2014  msaitoh Pull up following revision(s) (requested by riastradh in ticket #1120):
sys/dev/pci/radeonfb.c: revision 1.84
sys/dev/wsfb/genfb.c: revision 1.54
Do not printf(foobar()). Bad bad bad bad bad!
 1.47.2.1  13-Feb-2013  riz Pull up following revision(s) (requested by skrll in ticket #818):
xsrc/external/mit/xf86-video-wsfb/dist/src/wsfb_driver.c: revision 1.14
xsrc/external/mit/xf86-video-wsfb/dist/src/wsfb_driver.c: revision 1.15
external/mit/xorg/server/xorg-server/hw/xfree86/xorgos/Makefile: revision 1.32
external/mit/xorg/server/drivers/xf86-input-keyboard/Makefile: revision 1.15
sys/dev/wsfb/genfb.c: revision 1.49
distrib/sets/lists/xserver/md.evbarm: revision 1.1
sys/dev/wscons/wsdisplay_vconsvar.h: revision 1.22
external/mit/xorg/server/xorg-server/Makefile.common: revision 1.24
xsrc/external/mit/xf86-video-wsfb/dist/src/wsfb.h: revision 1.4
external/mit/xorg/server/drivers/Makefile: revision 1.61
sys/dev/wsfb/genfb.c: revision 1.50
enable X11 build for evbarm.
aprint_verbose -> aprint_debug
WSDISPLAY_TYPE_VC4 framebuffer is BGR
for WSDISPLAYIO_SMODE, if the bus ioctl handler returns EPASSTHROUGH, dont treat it as an error
default to swkbd mode on evbarm as well, now X without config should work
properly on BeagleBoard, RPi and the like
fix a typo in a comment
use WSDISPLAYIO_GET_FBINFO if available
 1.48.2.3  03-Dec-2017  jdolecek update from HEAD
 1.48.2.2  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.48.2.1  25-Feb-2013  tls resync with head
 1.50.8.3  29-Jan-2014  riastradh Make genfb a little friendlier to modules.

This is not enough to make it actually work as a module itself, but
it's enough to make the i915drm module use genfb.
 1.50.8.2  29-Jan-2014  riastradh Make genfb replay the msgbuf only if it's becoming the console.
 1.50.8.1  29-Jan-2014  riastradh Make genfb_attach configure the wsemuldisplaydev attribute.
 1.50.2.1  18-May-2014  rmind sync with head
 1.53.2.1  10-Aug-2014  tls Rebase.
 1.55.2.2  21-Mar-2015  snj Pull up following revision(s) (requested by jmcneill in ticket #631):
sys/dev/wscons/wsconsio.h: revision 1.112 via patch
sys/dev/wsfb/genfb.c: revision 1.57
add WSDISPLAY_TYPE_MESON
--
support 24bpp framebuffers
 1.55.2.1  03-Oct-2014  martin Pull up following revision(s) (requested by skrll in ticket #125):
sys/dev/wsfb/genfb.c: revision 1.56
handle WSDISPLAYIO_GET_EDID and WSDISPLAYIO_GET_FBINFO only if the bus
frontend doesn't ( as in, returns EPASSTHROUGH or doesn't register a
handler )
Now flags passed from things like bcm2835_genfb.c are actually seen by
xf86-video-wsfb again and automatically disabling shadowfb works again,
which results in a major speedup on this kind of hardware.
 1.56.2.3  28-Aug-2017  skrll Sync with HEAD
 1.56.2.2  06-Jun-2015  skrll Sync with HEAD
 1.56.2.1  06-Apr-2015  skrll Sync with HEAD
 1.58.4.1  21-Apr-2017  bouyer Sync with HEAD
 1.58.2.1  20-Mar-2017  pgoyette Sync with HEAD
 1.61.2.1  15-Apr-2020  martin Pull up following revision(s) (requested by msaitoh in ticket #1532):

sys/dev/wsfb/genfb.c: revision 1.72

Get genfb's address offset correctly when the value >= 4G. OK's by jmcneill.

Tested on Intel BXNUC10I3FNK (Comet Lake U).
 1.62.2.2  06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.62.2.1  15-Mar-2018  pgoyette Synch with HEAD
 1.63.2.4  21-Apr-2020  martin Sync with HEAD
 1.63.2.3  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.63.2.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.63.2.1  10-Jun-2019  christos Sync with HEAD
 1.67.2.3  26-Jul-2020  martin Pull up following revision(s) (requested by jdolecek in ticket #1025):

sys/dev/wsfb/genfb.c: revision 1.73

reduce stack usage in genfb_calc_hsize()
 1.67.2.2  15-Apr-2020  martin Pull up following revision(s) (requested by msaitoh in ticket #835):

sys/dev/wsfb/genfb.c: revision 1.72

Get genfb's address offset correctly when the value >= 4G. OK's by jmcneill.

Tested on Intel BXNUC10I3FNK (Comet Lake U).
 1.67.2.1  15-Aug-2019  martin Pull up following revision(s) (requested by rin in ticket #56):

sys/dev/rasops/rasops.c: revision 1.120
sys/dev/rasops/rasops.h: revision 1.40
sys/dev/rasops/rasops.c: revision 1.121
sys/dev/rasops/rasops.h: revision 1.41
sys/dev/rasops/rasops.c: revision 1.122
sys/dev/rasops/rasops.h: revision 1.42
sys/dev/rasops/rasops.h: revision 1.43
sys/dev/rasops/rasops.h: revision 1.44
sys/dev/rasops/rasops.h: revision 1.45
sys/dev/rasops/rasops.h: revision 1.46
sys/dev/rasops/rasops.h: revision 1.47
sys/dev/rasops/rasops.h: revision 1.48
sys/dev/rasops/rasops32.c: revision 1.40
sys/dev/rasops/rasops32.c: revision 1.41
sys/dev/rasops/rasops32.c: revision 1.42
sys/dev/rasops/rasops32.c: revision 1.43
sys/dev/rasops/rasops32.c: revision 1.44
sys/dev/rasops/rasops32.c: revision 1.45
sys/dev/rasops/rasops32.c: revision 1.46
sys/dev/rasops/rasops1-4_putchar.h: revision 1.1
sys/dev/rasops/rasops1-4_putchar.h: revision 1.2
sys/dev/rasops/rasops1-4_putchar.h: revision 1.3
sys/dev/rasops/rasops1_putchar_width.h: revision 1.3
sys/dev/rasops/rasops1_putchar_width.h: revision 1.4
sys/dev/rasops/rasops1_putchar_width.h: revision 1.5
sys/dev/rasops/rasops1_putchar_width.h: revision 1.6
sys/dev/rasops/README: revision 1.7
sys/dev/rasops/rasops_putchar_aa.h: revision 1.5
sys/dev/rasops/rasops_putchar_aa.h: revision 1.6
sys/dev/rasops/rasops8.c: revision 1.45
sys/dev/rasops/rasops8.c: revision 1.46
sys/dev/rasops/rasops8.c: revision 1.47
sys/dev/rasops/rasops24.c: revision 1.40
sys/dev/rasops/rasops8.c: revision 1.48
sys/dev/rasops/rasops24.c: revision 1.41
sys/dev/rasops/rasops8.c: revision 1.49
sys/dev/rasops/rasops24.c: revision 1.42
sys/dev/rasops/rasops24.c: revision 1.43
sys/dev/rasops/rasops24.c: revision 1.44
sys/dev/rasops/rasops_masks.c: revision 1.10
doc/CHANGES: revision 1.2566
sys/dev/rasops/rasops24.c: revision 1.45
doc/CHANGES: revision 1.2567
sys/dev/rasops/rasops24.c: revision 1.46
sys/dev/rasops/rasops24.c: revision 1.47
sys/dev/rasops/rasops24.c: revision 1.48
sys/dev/rasops/rasops24.c: revision 1.49
sys/dev/rasops/rasops_bitops.h: revision 1.19
sys/dev/rasops/rasops_putchar_aa.h: file removal
sys/dev/wscons/wsdisplay_vcons.c: revision 1.40
sys/dev/rasops/rasops8.c: revision 1.50
sys/dev/rasops/rasops8.c: revision 1.51
sys/dev/rasops/rasops24.c: revision 1.50
sys/arch/luna68k/dev/omrasops.c: revision 1.21
sys/dev/rasops/rasops_bitops.h: revision 1.20
sys/dev/wsfb/genfb.c: revision 1.68
sys/dev/rasops/rasops_bitops.h: revision 1.21
sys/dev/wsfb/genfb.c: revision 1.69
sys/dev/rasops/rasops_putchar_width.h: revision 1.10
sys/dev/rasops/rasops_bitops.h: revision 1.22
sys/dev/rasops/rasops_putchar_width.h: revision 1.11
sys/dev/rasops/rasops_bitops.h: revision 1.23
sys/dev/rasops/rasops_putchar_width.h: revision 1.12
sys/dev/rasops/rasops_bitops.h: revision 1.24
sys/dev/rasops/rasops_putchar_width.h: revision 1.13
sys/dev/rasops/rasops_bitops.h: revision 1.25
sys/dev/rasops/rasops_putchar_width.h: revision 1.14
sys/dev/rasops/rasops_putchar_width.h: revision 1.15
sys/dev/rasops/rasops1.c: revision 1.32
sys/dev/rasops/rasops1.c: revision 1.33
sys/dev/rasops/rasops1.c: revision 1.34
sys/dev/rasops/rasops1.c: revision 1.35
sys/dev/rasops/rasops1.c: revision 1.36
sys/dev/rasops/rasops1.c: revision 1.37
sys/dev/rasops/rasops4.c: revision 1.21
sys/dev/rasops/rasops4.c: revision 1.22
sys/dev/rasops/rasops4.c: revision 1.23
sys/dev/rasops/rasops4.c: revision 1.24
sys/dev/rasops/rasops4.c: revision 1.25
sys/dev/rasops/rasops4.c: revision 1.26
sys/dev/rasops/rasops4.c: revision 1.27
sys/dev/rasops/rasops4.c: revision 1.28
sys/dev/wsfb/genfb.c: revision 1.70
sys/dev/rasops/rasops2.c: revision 1.27
sys/dev/rasops/rasops2.c: revision 1.28
share/man/man9/rasops.9: revision 1.18
sys/dev/rasops/rasops.c: revision 1.102
sys/dev/rasops/rasops2.c: revision 1.29
share/man/man9/rasops.9: revision 1.19
sys/dev/rasops/rasops.c: revision 1.103
sys/dev/rasops/rasops.c: revision 1.104
sys/dev/rasops/rasops.c: revision 1.105
sys/dev/rasops/rasops.c: revision 1.106
sys/dev/rasops/rasops.c: revision 1.107
sys/dev/rasops/rasops_putchar.h: revision 1.6
sys/dev/rasops/rasops.c: revision 1.108
sys/dev/rasops/rasops_putchar.h: revision 1.7
sys/dev/rasops/rasops.c: revision 1.109
sys/dev/rasops/rasops_putchar.h: revision 1.8
sys/dev/rasops/rasops2.c: revision 1.30
sys/dev/rasops/rasops2.c: revision 1.31
sys/dev/rasops/rasops15.c: revision 1.32
sys/dev/rasops/rasops2.c: revision 1.32
sys/dev/rasops/rasops15.c: revision 1.33
sys/dev/rasops/rasops2.c: revision 1.33
sys/dev/rasops/rasops15.c: revision 1.34
sys/dev/rasops/rasops15.c: revision 1.35
sys/dev/rasops/rasops15.c: revision 1.36
sys/dev/rasops/rasops.c: revision 1.110
sys/dev/rasops/rasops15.c: revision 1.37
sys/dev/rasops/rasops.c: revision 1.111
sys/dev/rasops/rasops15.c: revision 1.38
sys/dev/rasops/rasops.c: revision 1.112
sys/dev/rasops/rasops15.c: revision 1.39
sys/dev/rasops/rasops.c: revision 1.113
sys/dev/rasops/rasops.c: revision 1.114
sys/dev/rasops/rasops.c: revision 1.115
sys/dev/rasops/rasops_masks.h: revision 1.9
sys/dev/rasops/rasops.c: revision 1.116
sys/dev/rasops/rasops.c: revision 1.117
sys/dev/rasops/rasops.c: revision 1.118
sys/dev/rasops/rasops.c: revision 1.119
sys/dev/rasops/rasops.h: revision 1.39

Misc clean-up's:
- protect private stuff in rasops.h by _RASOPS_PRIVATE
- staticify rasops_copycols() and rasops_isgray[]
- G/C unused extern int cold
Switch to per-device stamp, and retire stamp_mutex.

Provide buffer capable of single-row pixels in order to make things simpler.

Factor out copy-paste. No functional changes.
When font is switched, not only putchar, but also other ri_ops can be
changed by backend driver, e.g., see rasops1.c:
https://nxr.netbsd.org/xref/src/sys/dev/rasops/rasops1.c#58
4 is 1 << 2, not 1 << 3...

Fix erasecols and do_cursor for font width >= 32 bits.
Also, some cosmetic clean-up's.

Oops, for rasops_copycols(), we cannot use memmove even if src == dst.
On the other hand, memmove is safe for rasops_copyrows().
Fix unaligned writes to buffer, that are introduced in 1.105:
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/rasops/rasops.c#rev1.105

Support font width 32 on monochrome screen.

Remove duplicate substitution. Style. No functional changes.

Correct copy count. This affects ``left-to-right'' copy for region
including word boundary.

Fix a bug in shadow fb support for copycols on 1, 2, and 4bpp screen,
which was introduced in 1.18:
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/rasops/rasops_bitops.h#rev1.18

Add general putchar functions for 2 and 4bpp.
Note that 1bpp continues to use its local version in rasops1.c,
which is much faster and simpler.

Cosmetic changes. No functional changes.

Reflect reality.

Notify size of shadow framebuffer if enabled.

Fix unaligned word write's to buffer, introduced in rev 1.42:
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/rasops/rasops24.c#rev1.42

Real fix for 24-bpp color:
- When centering screen, locate effective base address of framebuffer to
both word and 24-bit color boundary.
- Consistently convert ri_devcmap to ``big endian'' if not RI_BSWAP.

Also, fix possible bug for 15/16-bpp with RI_BSWAP (not tested).

Protect rasops_copy{rows,cols}() by _RASOPS_PRIVATE.

Use _KERNEL_OPT.

Simplify calculation for 12-byte alignment.
No functional changes.

Fix black color-attribution for depths 2 and 4.

Depth 2 is monochrome.
IMO, it is impossible to support ANSI colors on 2-bpp display; fore-
and background can be same value even if they are different colors
logically.

Fix a critical bug for rasops_copyrows() introduced in rev. 1.90:
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/rasops/rasops.c#rev1.90
When src < dst, we have to copy backward.

Simplify rasops_do_cursor():
- Use static masks similar to that used in rasops_bitops.h,
rather than generating them on the fly.
- Use pointer for proper type to avoid unnecessary casts.

Use "hp" instead of "hrp" consistently with other files.
No functional changes.

Stop allocating ri_buf and ri_stamp dynamically. As commented in
rasops.h, it is not safe to use kmem_alloc(9) in rasops_init();
rasops routines can be used for early putchar, which means that
UVM is not fully initialized.

Should fix a problem reported by macallan:
http://mail-index.netbsd.org/tech-kern/2019/08/02/msg025327.html

Instead of using ri_buf, inline function rasops_memcpy32() is
introduced to fill 32bit data efficiently.

Instead of using ri_stamp (per device stamp), stamp_ri is
introduced to distinguish for which device stamp is calculated.

Oops, revert an unintentional change for now.

If RI_CLEAR is set, do not forget to clear real framebuffer.

Modify struct rasops_info again (ride 9.99.4 bump).
- remove ri_buf and friends.
- remove ri_stamp and frieds.
- introduce ri_ul, which will be used for scaling underline with font.

Also add hack for ri_ul; adjust its size to obsoleted member, ri_delta,
which was only used rasops routines internally. Now, size and offsets of
all members of struct rasops_info become same with netbsd-9, -8, and -7,
again. So we can safelly pull up fixes to any release branches!

Scaling dimensions of underline by font height.

Currently,
- offset of underline is fixed to 1-row from bottom of characters, and
- height of underline is fixed to 1.
Both are good for standard 8x16 fonts. However, it is too thin for
larger fonts, especially when used on display of high resolution.
Also, 1-row offset of underline is ugly for small fonts, e.g.,
spleen5x8.
Therefore, adjust offset and height as,
- no changes for standard 16-height fonts.
- scaling by font height for larger fonts.
- set offset to zero for fonts of height smaller than 16.

Merge rasops_putchar_aa.h into rasops_putchar.h.

Support scaling underline dimensions by font height.

Separate general putchar for 1-4bpp from rasops_bitops:
- Support anti-aliasing for 2bpp, which works perfectly!
- Support scaling underline dimensions with font height.

We support anti-aliasing for depth 2.
Use switch appropriately.
- Stop showing struct rasops_info; readers can read the header itself.
- Correct description for optimized font widths.
- Remove strange blank line.

Try to improve formatting and naration.

Make rasops_erase{rows,cols}() public again; hp300/diofb uses them.
Pointed out by martin.

When legacy Apple 4-bpp color palette is used, make green dark so that
kernel messages are printed nicely on white background.

Fix color range overflow; we cannot make bright colors more brighter.

Correctly check whether character is in font in rasops_mapchar().
Also, make sure that in putchar functions for completeness.

Fix bug introduced in rev. 1.69:
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/wsfb/genfb.c#rev1.69
is_bgr should be initialized to false. Otherwise, color becomes strange
for depths 24 and 32 unless backend explicitly set "is_bgr" property.

Set 4-bpp devcmap in a similar manner to non-RGB case of 8-bpp.
No functional changes since this is not in use (4-bpp is monochrome).

Misc style clean up's.
- Introduce and use proper macros.
- Use not ambiguous variable names.
- Unify similar functions as possible as I can.
- G/C unused headers.
- Use #include <dev/rasops/foo.h> instead of "foo.h"

No particular functional changes intended.

My work for rasops(9) was finished (hopefully).

I will send pull-up request for netbsd-9, if there are no new failures
reported within few days.

Fix format in order not to confuse changes2html script.
Minor improvements of wording for my entry.

When using stamp, drop attributions other than back and foreground
colors so that stamp is not updated unnecessarily.
 1.70.2.1  29-Feb-2020  ad Sync with head.
 1.71.4.1  20-Apr-2020  bouyer Sync with HEAD
 1.78.2.1  03-Apr-2021  thorpej Sync with HEAD.
 1.81.2.1  02-Apr-2021  thorpej config_found_ia() -> config_found() w/ CFARG_IATTR.
 1.82.8.1  04-Aug-2021  thorpej Adapt to CFARGS().
 1.90.4.1  03-Feb-2024  martin Pull up following revision(s) (requested by jmcneill in ticket #561):

etc/etc.evbppc/Makefile.inc: revision 1.15
sys/arch/evbppc/wii/dev/wiifb.c: revision 1.1
sys/arch/evbppc/wii/dev/wiifb.c: revision 1.2
sys/arch/evbppc/wii/dev/bwdsp.c: revision 1.1
sys/arch/evbppc/wii/dev/wiifb.c: revision 1.3
sys/arch/evbppc/wii/dev/bwdsp.c: revision 1.2
distrib/utils/embedded/files/evbppc_wii_icon.png: revision 1.1
usr.sbin/sysinst/arch/evbppc/md.h: revision 1.4
sys/arch/evbppc/wii/dev/wiifb.c: revision 1.4
sys/arch/evbppc/wii/dev/viio.h: revision 1.1
sys/arch/evbppc/wii/dev/wiifb.c: revision 1.5
sys/arch/evbppc/wii/dev/mainbus.h: revision 1.1
distrib/utils/embedded/conf/wii.conf: revision 1.1
distrib/utils/embedded/conf/wii.conf: revision 1.2
distrib/utils/embedded/conf/wii.conf: revision 1.3
sys/dev/sdmmc/sdhcvar.h: revision 1.34
sys/dev/sdmmc/sdhc.c: revision 1.118
sys/arch/evbppc/wii/dev/resetbtn.c: revision 1.1
distrib/utils/embedded/conf/evbppc.conf: revision 1.1
sys/dev/wsfb/genfb.c: revision 1.91
sys/arch/evbppc/wii/dev/resetbtn.c: revision 1.2
sys/dev/wscons/wsconsio.h: revision 1.127
sys/arch/powerpc/oea/oea_machdep.c: revision 1.85
sys/arch/evbppc/wii/dev/hollywood.h: revision 1.1
sys/arch/evbppc/conf/std.wii: revision 1.1
sys/arch/evbppc/wii/dev/hollywood.h: revision 1.2
sys/arch/evbppc/wii/dev/hollywood.c: revision 1.1
sys/arch/evbppc/conf/std.wii: revision 1.2
sys/arch/evbppc/wii/dev/hollywood.c: revision 1.2
sys/arch/evbppc/conf/std.wii: revision 1.3
sys/arch/powerpc/oea/cpu_subr.c: revision 1.109
sys/arch/evbppc/wii/wii_mmuinit.S: revision 1.1
sys/dev/usb/usb.h: revision 1.124
sys/arch/evbppc/wii/machdep.c: revision 1.1
sys/arch/evbppc/wii/dev/rtcsram.c: revision 1.1
sys/arch/powerpc/include/oea/hid.h: revision 1.14
sys/arch/evbppc/wii/mainbus.c: revision 1.1
sys/arch/evbppc/wii/machdep.c: revision 1.2
sys/arch/evbppc/wii/dev/ehci_hollywood.c: revision 1.1
sys/arch/evbppc/wii/mainbus.c: revision 1.2
sys/arch/evbppc/wii/machdep.c: revision 1.3
sys/arch/evbppc/wii/dev/ehci_hollywood.c: revision 1.2
sys/arch/evbppc/wii/mainbus.c: revision 1.3
sys/arch/evbppc/wii/machdep.c: revision 1.4
sys/arch/evbppc/wii/dev/hwgpio.c: revision 1.1
sys/arch/evbppc/wii/dev/sdhc_hollywood.c: revision 1.1
sys/arch/evbppc/wii/dev/sdhc_hollywood.c: revision 1.2
sys/arch/evbppc/wii/wii_locore.S: revision 1.1
sys/arch/evbppc/conf/files.wii: revision 1.1
sys/arch/evbppc/wii/wii_locore.S: revision 1.2
sys/arch/evbppc/include/wii.h: revision 1.1
sys/arch/evbppc/conf/files.wii: revision 1.2
sys/arch/evbppc/wii/dev/exi.c: revision 1.1
sys/arch/evbppc/include/wii.h: revision 1.2
sys/arch/evbppc/conf/files.wii: revision 1.3
sys/arch/powerpc/powerpc/clock.c: revision 1.18
sys/arch/evbppc/include/wii.h: revision 1.3
sys/arch/evbppc/conf/files.wii: revision 1.4
sys/arch/evbppc/include/wii.h: revision 1.4
sys/arch/evbppc/wii/dev/exi.h: revision 1.1
sys/arch/evbppc/wii/dev/avenc.c: revision 1.1
sys/arch/evbppc/include/wii.h: revision 1.5
sys/arch/evbppc/include/wii.h: revision 1.6
sys/arch/evbppc/include/wii.h: revision 1.7
sys/arch/evbppc/wii/dev/avenc.h: revision 1.1
distrib/utils/embedded/mkimage: revision 1.79
sys/arch/evbppc/conf/WII: revision 1.1
sys/arch/evbppc/conf/INSTALL_WII: revision 1.1
distrib/utils/embedded/files/evbppc_wii_meta.xml: revision 1.1
sys/arch/evbppc/wii/dev/vireg.h: revision 1.1
sys/arch/evbppc/conf/WII: revision 1.2
distrib/utils/embedded/files/evbppc_wii_meta.xml: revision 1.2
sys/arch/evbppc/wii/dev/vireg.h: revision 1.2
sys/arch/evbppc/conf/WII: revision 1.3
sys/arch/evbppc/conf/WII: revision 1.4
usr.sbin/sysinst/arch/evbppc/md.c: revision 1.11
sys/arch/evbppc/wii/dev/ohci_hollywood.c: revision 1.1
sys/dev/usb/ehcivar.h: revision 1.52
sys/arch/evbppc/wii/pic_pi.c: revision 1.1
sys/arch/evbppc/wii/dev/ohci_hollywood.c: revision 1.2
etc/etc.evbppc/ttys: revision 1.8
sys/arch/evbppc/wii/dev/bwai.c: revision 1.1
sys/arch/evbppc/wii/dev/bwai.c: revision 1.2
sys/arch/evbppc/wii/dev/bwai.c: revision 1.3
sys/arch/evbppc/wii/autoconf.c: revision 1.1
sys/arch/evbppc/conf/Makefile.wii.inc: revision 1.1
sys/arch/evbppc/wii/dev/bwai.h: revision 1.1
sys/arch/evbppc/wii/autoconf.c: revision 1.2
sys/arch/evbppc/conf/Makefile.wii.inc: revision 1.2

powerpc: oea: Fix prefetchable mappings
Prefetchable mappings need PMAP_NOCACHE to get write-combine semantics.
powerpc: oea: Decode IBM750CL L2 cache information.
sdmmc: add support for optional delay after register write
wscons: Add HOLLYWOOD display and YUY2 pixel format types
wsfb: add support for optional "devcmap" property
A hardware driver can supply a pointer to a 16x 32-bit array to override
the default rasops device colour map in the "devcmap" property.
ehci: add EHCIF_32BIT_ACCESS flag to force 32-bit MMIO
fix comments: HID0 ICFI/DCFI are "flash invalidate", not "flush invalidate"
powerpc: fix delay for large (> ~5sec) values
When calculating the target timebase, promote '1000' on the RHS to ULL
to force 64-bit calculation, otherwise 'n * 1000' will overflow.
usb: increase USB_PORT_RESET_RECOVERY from 10ms to 20ms
I changed this from 250ms to 10ms back in 2021 based on a similar FreeBSD
change, but it seems to be a bit too aggressive for some platforms.
evbppc: Add initial support for the Nintendo Wii
wii: support RB_POWERDOWN
build fix: use dd with count=1 for compat with NetBSD dd(1)
wii: Add NTSC 480p support.
In addition to this, add VIIO_{GET,SET}REGS ioctl support to allow for
poking at video interface registers from userland. This is helpful for
debugging display issues.
wii: Add 128x48 icon to SD card image
wii: Fix a comment
wii: Add drivers for Broadway DSP and Audio interface.
0: [*] audio0 @ bwdsp0: Broadway DSP
playback: 16, 2ch, 48000Hz
record: unavailable
(P-) slinear_be 16/16, 2ch, { 48000 }
wii: Add screenblank support.
wii: Use screen dimming register for screen blanking.
wii: Add GPIO, I2C, and basic A/V encoder driver.
wii: Use A/V encoder volume controls instead of using a software filter.
wii: Simply DSP driver - no interrupt handler required.
wii: provide device names to intr_establish
wii$ intrctl list
interrupt id CPU0 device name(s)
pi irq 14 64769* hollywood0
hollywood irq 36 5872* ehci0
hollywood irq 39 58907* sdhc0
hollywood irq 40 4* sdhc1
hollywood irq 49 0* resetbtn0
pi irq 5 0* bwai0
wii: Add support for passing boot options to the kernel.
wii: Add External interface bus and RTC support
wii: Remove objcopy after kernel build.
HBC will do the right thing.
Add wsvt25 entries (off by default) for ttyE0-ttyE3.
Add support for "PAL" (576i) mode on Wii.

RSS XML Feed