Home | History | Annotate | Download | only in obio
History log of /src/sys/arch/mac68k/obio/grf_obio.c
RevisionDateAuthorComments
 1.59  26-Jul-2019  rin Add genfb(4) driver for mac68k grfbus.
1, 2, 4, 8, 15, and 32 color-depths are supported.

ANSI colors on console are functional for depth >= 4.

Graphic applications based on wsfb API should work, provided
they can correctly handle fbi_fboffset and your color depth.

wsfb driver of Xorg 1.20 and mlterm-fb (framebuffer version of
x11/mlterm) work fine for depth == 1 || depth >= 8.

For depth == 8 (256 colors), graphic applications require
colormap callback, which is currently supported for some
internal graphic adapters, and only Civic (found on Quadra
AV series) was tested. Register definition and its usage are
taken from Linux. You can easily support other adapters if
Linux supports that.

Have fun, and any problem reports are welcomed!
 1.58  27-Oct-2012  chs branches: 1.58.38;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.57  17-Oct-2007  garbled branches: 1.57.54; 1.57.64;
Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
 1.56  29-Aug-2007  jmmv Pack all global video-related variables into a structure for clarity.

A comment said that they weren't in a struct for speed reasons but...
this should not affect performance because these variables are mostly
used to set other variables (hence they are read few times).
 1.55  29-Aug-2007  jmmv Move the definition of multiple video-related variables into a new
header file (machine/video.h) so that we can kill all the "manual"
externs spread around the code (which were inconsistent among them).
 1.54  29-Aug-2007  jmmv Split the global videosize variable into videowidth and videoheight:
makes the code clearer and avoids multiple parts of it having to know
how videosize was encoded.
 1.53  04-Mar-2007  christos branches: 1.53.2; 1.53.10; 1.53.14; 1.53.18; 1.53.20;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.52  11-Dec-2005  christos branches: 1.52.26;
merge ktrace-lwp.
 1.51  15-Jan-2005  chs branches: 1.51.10;
de-__P, remove register, ansify, b* -> mem*.
 1.50  15-Jul-2003  lukem __KERNEL_RCSID()
 1.49  02-Oct-2002  thorpej branches: 1.49.6;
Use CFATTACH_DECL().
 1.48  27-Sep-2002  thorpej Declare all cfattach structures const.
 1.47  04-Dec-2000  scottr branches: 1.47.4; 1.47.8;
Unmap the valkyrie register space when we're finished with it in
the match function. It's not like we can save that state for later,
and we don't use it anyway.
 1.46  04-Dec-2000  scottr Fix PR 11000: The esp driver needs two longwords in DAFB register space to
implement pseudo-DMA transfers with the SCSI controller. This caused our
match to fail when we couldn't map the entire DAFB register/control space
for our own use. Instead, we map only (about) what we will need in two
separate regions.

As a consequence we no longer do Turbo SCSI configuration here; indeed, it
may have caused us trouble later on if we actually changed the values
stored in those registers in the esp driver.
 1.45  30-Jul-2000  briggs Fixup for bogus assumptions about bus_space_handle_t.
 1.44  14-Feb-2000  scottr branches: 1.44.4;
Merge wscons work onto the main development branch.
 1.43  19-Jul-1999  scottr branches: 1.43.2;
The Quadra 605 and LC 47x apparently share the same logic board,
and hence need the same video hack. From Ken'ichi Ishizaka.
 1.42  28-Apr-1999  scottr From Ken'ichi Ishizaka: correct the calculation of the frame buffer
offset by masking off garbage bits in the DAFB v7. This has been
tested at all resolutions and common color depths on the LC47x.
 1.41  06-Jan-1999  scottr branches: 1.41.2; 1.41.4;
Add RBV monitor sense code (formerly commented out in rbv_vidstatus())
to the match function, and print out more detailed information when
attaching RBV video.
 1.40  21-Aug-1998  scottr Remove an extraneous printf when attaching a Valkyrie.
 1.39  20-Aug-1998  scottr Match grf_obio devices correctly for the 58x/63x.
 1.38  13-Aug-1998  scottr Add a comment regarding the broken behavior of the DAFB v7.
 1.37  12-Aug-1998  scottr The Performa/LC 58x have a Valkyrie, not the DAFB.
 1.36  12-Aug-1998  scottr New and improved console framebuffer initialization and autoconfig. This
resolves a great many issues, including Performa 58x interrupt handling
and offset displays on some models.

Programs that depend on the old (pre-NetBSD 1.1) grf interface may break.
That's actually a separate issue uncovered by this code, not caused by it.
 1.35  01-Jul-1998  scottr Add a GRF_COMPAT option so that old-style grf ioctl() code can be
removed from the kernel.
 1.34  02-Jun-1998  scottr Kill unused variable that resulted from the last change.
 1.33  02-Jun-1998  scottr Store the PA of the framebuffer in the softc. This eliminates the need
for the sc_phys callback; we can just store the PA in the grfbus attach
args, rather than a function pointer, which simplifies the code nicely.
 1.32  02-May-1998  scottr Move on-board I/O and NuBus drivers to their own directories
via repository copy, and make the necessary adjustments to reflect
the moved files.
 1.31  22-Mar-1998  scottr The monitor sense code we have is not reliable on DAFB-based machines with
certain 17" monitors. Change from Michael R. Zucca, PR 4988.

XXX - This can cause problems on system with the DAFB chip which currently
use only a NuBus-based video adapter. In particular, grf devices may not be
attached properly in this case. This unfortunate situation is less annoying
than not having a reasonable console, however. A reasonable, reliable
monitor sense algorithm for the DAFB would resolve the problem.
 1.30  22-Mar-1998  scottr Disable Valkyrie interrupts on the Quadra 630. Part of a change
from Michael R. Zucca, PR 4988.
 1.29  13-Jan-1998  scottr Update for bus.h changes.
 1.28  12-Jan-1998  thorpej Update for changes to config.
 1.27  08-Nov-1997  scottr KNF: Fix some whitespace inconsistencies.
 1.26  08-Nov-1997  briggs Force the probe to find the internal video for the 63x/575 models.
 1.25  08-Oct-1997  briggs branches: 1.25.2;
Disable video interrupts on the AV machines. Thanks to Michael R. Zucca
(mrz5149@cs.rit.edu) for the addresses and hints as to how the interrupts
might be disabled, and thanks to Henry Hotz (h.b.hotz@jpl.nasa.gov) for
testing on the 840AV.
Unmap the DAFB regs on the other Quadras after attachment. They're not
used.
 1.24  03-Aug-1997  scottr Fix grf{i,m}v_phys() prototypes.
 1.23  03-Aug-1997  scottr Overhaul grf drivers to correct recent problems with X and dt
(address error faults), as well as other reported problems:

- Simplify grfmv_phys() to work like grfiv_phys(), and eliminate the
second argument to both, as we don't use it anyway.
- Handle fbbase and fboff consistently throughout. Closes PR 3862.
- Eliminate grfaddr() by pulling it into grfmmap(), which is the
only place it was used, previously.
- grfmap() now gets the physical address of the framebuffer from
the appropriate driver, rather than try to compute it by itself.
Be careful with aligning the base to a page address and increase
the length of the mapped region appropriately. Closes PR 2867.
 1.22  26-Jul-1997  scottr branches: 1.22.2;
KNF
 1.21  10-Jun-1997  veego s/mac68k_trunc_page/m68k_trunc_page/
 1.20  21-Apr-1997  briggs Take care when accessing DAFB--some quadra-class machines use other video
controllers.
 1.19  01-Apr-1997  briggs Remove tag.
 1.18  01-Apr-1997  briggs - Support DAFB machines mo' better. Actually detect if a monitor is
present and initialize a few things. No color support, yet.
- Properly disable interrupts for DAFB.
- Rearrange for better nubus display card interrupt support. Only register
an interrupt if we know how to clear it.
- Complain if we don't know about a given display card and can not install
an interrupt handler.
- Change MYSTERY stuff to cb264--still need to get the DrSW so we can
actually call the routine to clear an interrupt from this card.
 1.17  20-Feb-1997  scottr We need bus.h now, due to recent nubus_attach_args change.
 1.16  16-Dec-1996  scottr branches: 1.16.6;
Convert all foo_match() functions to use a `struct cfdata *' for their
second argument. The NuBus autoconfig code had to be reorganized as a
result of this, and looks much more like a directly-attached bus now.
These changes eliminate __BROKEN_INDIRECT_CONFIG.
 1.15  13-Oct-1996  christos backout previous kprintf change
 1.14  11-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.13  04-Aug-1996  scottr Add a way to tell grf_establish() that internal video doesn't actually
occupy a slot. This is necessary so that GRFIOCMAP can find the correct
physical address of the framebuffer. Fixes P550, some LC models, and
perhaps the PB520.
 1.12  19-May-1996  scottr branches: 1.12.4;
New grf attachment code, mostly by Jason Thorpe with some cleanup by me.
This will allow dt and X to work with a generic kernel, rather than
compiling different kernels that attach grf0 to a NuBus adapter or
internal video.
 1.11  05-May-1996  briggs Prototype for -Wall -Wstrict-prototypes -Wmissing-prototypes -Wno-uninitialized
Also change the device probing scheme to use something a bit more rational.
A current side-effect is that nubus cards are double-mapped. I expect
to fix that shortly.
Also change splclock() to block everything but serial hardware interrupts.
 1.10  11-Aug-1995  briggs Don't fake these values.
 1.9  04-Aug-1995  briggs Nuke int_video_start in favor of consistent use of mac68k_vidlog.
Don't find the internal video more than once.
Probe for internal video before nubus instead of after.
 1.8  04-Aug-1995  briggs Be consistent and use mac68k_vidlog instead of int_video_start.
 1.7  30-Jul-1995  briggs Fix the internal video probe again.
 1.6  28-Jul-1995  briggs Don't show up in "slot" 0xe.\n
 1.5  06-Jul-1995  briggs Add another routine for the grf display-specific drivers to return a physical
address.
 1.4  04-Jul-1995  briggs First cut at a kludge for IIvx internal video.
 1.3  02-Jul-1995  briggs Set and use new fboff element from grfmode structure.
 1.2  21-Jun-1995  briggs Be a bit more careful on the probe... Make sure that the current slot's
addresses contain the int_video_start--or assume that internal video is
is "slot" 0xE.
 1.1  29-Apr-1995  briggs Add new nubus handling that's much more robust.
Update via, if_ae, and grf accordingly.
Revamp grf.
 1.12.4.1  05-Aug-1996  jtc Pulled up from rev 1.13 by request from Scott Reynolds
 1.16.6.1  12-Mar-1997  is Merge in changes from The Trunk, partially just reimplementing newarp.
 1.22.2.2  14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.22.2.1  23-Aug-1997  thorpej Update marc-pcmcia branch from trunk.
 1.25.2.1  09-Nov-1997  mellon Pull rev 1.26 up from trunk (briggs)
 1.41.4.2  02-Jul-2000  he Pull up revision 1.43 (requested by scottr):
Add support for Quadra 605 on-board video.
 1.41.4.1  28-Apr-1999  perry branches: 1.41.4.1.2;
pullup 1.41->1.42 (scottr)
 1.41.4.1.2.2  02-Aug-1999  thorpej Update from trunk.
 1.41.4.1.2.1  21-Jun-1999  thorpej Sync w/ -current.
 1.41.2.5  12-Dec-1999  scottr Replace references to PGOFSET with m68k_trunc_page() and m68k_page_offset(),
as appropriate.
 1.41.2.4  28-Nov-1999  scottr If we're not the console device, make sure the base PA is page-aligned
and adjust the offset if appropriate.
 1.41.2.3  01-Nov-1999  scottr Sync with main branch.
 1.41.2.2  16-May-1999  scottr Sync with main branch.
 1.41.2.1  11-Mar-1999  scottr First cut at grf emulation. Neither GRFIOCMAP nor mmap'ing a wsdisplay device
work, though several other grf ioctls are properly emulated.
 1.43.2.2  08-Dec-2000  bouyer Sync with HEAD.
 1.43.2.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.44.4.3  15-Dec-2000  he Pull up revision 1.47 (requested by scottr):
Be careful to unmap anything we map in the drivers' match function
in order to avoid potential future problems.
 1.44.4.2  15-Dec-2000  he Pull up revision 1.46 (requested by scottr):
Map only the register space of the DAFB required to set up the
video hardware. Fixes PR#11000.
 1.44.4.1  06-Aug-2000  briggs Pullups approved by thorpej --
Add byte-swap and stride options to bus_space. Allocate as normal, then
call mac68k_bus_space_handle_swapped() or mac68k_bus_space_handle_set_stride().
Stride is untested. Swapped code works for SMC ethernet.

Add bus_space_*_stream_N functions to bus_space.

Add a DIAGNOSTIC panic if (count-using) bus_space macros are called with
a count of zero. Some drivers do this accidentally and some bus_space
implementations will fail if count is passed as zero (they are set up in
a do-{}-while structure).

There were some bogus assumptions about bus_space_handle_t and some
function calls that didn't match prototypes--fix those here, too.
 1.47.8.1  18-Oct-2002  nathanw Catch up to -current.
 1.47.4.1  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.49.6.4  17-Jan-2005  skrll Sync with HEAD.
 1.49.6.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.49.6.2  18-Sep-2004  skrll Sync with HEAD.
 1.49.6.1  03-Aug-2004  skrll Sync with HEAD
 1.51.10.1  03-Sep-2007  yamt sync with head.
 1.52.26.1  12-Mar-2007  rmind Sync with HEAD.
 1.53.20.1  06-Nov-2007  matt sync with HEAD
 1.53.18.1  03-Sep-2007  jmcneill Sync with HEAD.
 1.53.14.1  03-Sep-2007  skrll Sync with HEAD.
 1.53.10.1  03-Oct-2007  garbled Sync with HEAD
 1.53.2.1  09-Oct-2007  ad Sync with head.
 1.57.64.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.57.54.1  30-Oct-2012  yamt sync with head
 1.58.38.1  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411

RSS XML Feed