* Copyright (c) 1988 University of Utah.
* Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved.
* This code is derived from software contributed to Berkeley by
* the Systems Programming Group of the University of Utah Computer
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* from: Utah $Hdr: grf_dv.c 1.11 92/01/21$
* @(#)grf_dv.c 8.1 (Berkeley) 6/10/93
* Graphics routines for the DaVinci, HP98730/98731 Graphics system.
#include <hp/dev/grfioctl.h>
#include <hp/dev/grfvar.h>
#include <hp300/dev/grf_dvreg.h>
* Must point g_display at a grfinfo structure describing the hardware.
* Returns 0 if hardware not present, non-zero ow.
register struct dvboxfb
*dbp
;
struct grfinfo
*gi
= &gp
->g_display
;
extern caddr_t
sctopa(), iomap();
dbp
= (struct dvboxfb
*) addr
;
gi
->gd_regaddr
= (caddr_t
) IIOP(addr
);
gi
->gd_regaddr
= sctopa(vatosc(addr
));
gi
->gd_regsize
= 0x20000;
gi
->gd_fbwidth
= (dbp
->fbwmsb
<< 8) | dbp
->fbwlsb
;
gi
->gd_fbheight
= (dbp
->fbhmsb
<< 8) | dbp
->fbhlsb
;
gi
->gd_fbsize
= gi
->gd_fbwidth
* gi
->gd_fbheight
;
fboff
= (dbp
->fbomsb
<< 8) | dbp
->fbolsb
;
gi
->gd_fbaddr
= (caddr_t
) (*((u_char
*)addr
+ fboff
) << 16);
if (gi
->gd_regaddr
>= (caddr_t
)DIOIIBASE
) {
* For DIO II space the fbaddr just computed is the offset
* from the select code base (regaddr) of the framebuffer.
* Hence it is also implicitly the size of the register set.
gi
->gd_regsize
= (int) gi
->gd_fbaddr
;
gi
->gd_fbaddr
+= (int) gi
->gd_regaddr
;
gp
->g_fbkva
= addr
+ gi
->gd_regsize
;
* For DIO space we need to map the seperate framebuffer.
gp
->g_fbkva
= iomap(gi
->gd_fbaddr
, gi
->gd_fbsize
);
gi
->gd_dwidth
= (dbp
->dwmsb
<< 8) | dbp
->dwlsb
;
gi
->gd_dheight
= (dbp
->dwmsb
<< 8) | dbp
->dwlsb
;
gi
->gd_planes
= 0; /* ?? */
register struct dvboxfb
*dbp
;
while (dbp
->wbusy
& 0x01)
* Change the mode of the display.
* Right now all we can do is grfon/grfoff.
* Return a UNIX error number or 0 for success.
register struct grf_softc
*gp
;
register struct dvboxfb
*dbp
;
dbp
= (struct dvboxfb
*) gp
->g_regkva
;