xref: /freebsd/sys/dev/fb/vgareg.h (revision 95ee2897e98f5d444f26ed2334cc7c439f9c16c6)
1617b9080SKazutaka YOKOTA /*-
2*4d846d26SWarner Losh  * SPDX-License-Identifier: BSD-2-Clause
3718cf2ccSPedro F. Giffuni  *
4617b9080SKazutaka YOKOTA  * Copyright (c) 1999 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
5617b9080SKazutaka YOKOTA  * All rights reserved.
6617b9080SKazutaka YOKOTA  *
7617b9080SKazutaka YOKOTA  * Redistribution and use in source and binary forms, with or without
8617b9080SKazutaka YOKOTA  * modification, are permitted provided that the following conditions
9617b9080SKazutaka YOKOTA  * are met:
10617b9080SKazutaka YOKOTA  * 1. Redistributions of source code must retain the above copyright
11617b9080SKazutaka YOKOTA  *    notice, this list of conditions and the following disclaimer as
12617b9080SKazutaka YOKOTA  *    the first lines of this file unmodified.
13617b9080SKazutaka YOKOTA  * 2. Redistributions in binary form must reproduce the above copyright
14617b9080SKazutaka YOKOTA  *    notice, this list of conditions and the following disclaimer in the
15617b9080SKazutaka YOKOTA  *    documentation and/or other materials provided with the distribution.
16617b9080SKazutaka YOKOTA  *
17617b9080SKazutaka YOKOTA  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18617b9080SKazutaka YOKOTA  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19617b9080SKazutaka YOKOTA  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20617b9080SKazutaka YOKOTA  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21617b9080SKazutaka YOKOTA  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22617b9080SKazutaka YOKOTA  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23617b9080SKazutaka YOKOTA  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24617b9080SKazutaka YOKOTA  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25617b9080SKazutaka YOKOTA  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26617b9080SKazutaka YOKOTA  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27617b9080SKazutaka YOKOTA  */
28617b9080SKazutaka YOKOTA 
29617b9080SKazutaka YOKOTA #ifndef _DEV_FB_VGAREG_H_
30617b9080SKazutaka YOKOTA #define _DEV_FB_VGAREG_H_
31617b9080SKazutaka YOKOTA 
32617b9080SKazutaka YOKOTA /* physical addresses */
33617b9080SKazutaka YOKOTA #define MDA_BUF_BASE		0xb0000
34617b9080SKazutaka YOKOTA #define MDA_BUF_SIZE		0x08000
35617b9080SKazutaka YOKOTA #define MDA_BUF			BIOS_PADDRTOVADDR(MDA_BUF_BASE)
36617b9080SKazutaka YOKOTA #define CGA_BUF_BASE		0xb8000
37617b9080SKazutaka YOKOTA #define CGA_BUF_SIZE		0x08000
38617b9080SKazutaka YOKOTA #define CGA_BUF			BIOS_PADDRTOVADDR(CGA_BUF_BASE)
39617b9080SKazutaka YOKOTA #define EGA_BUF_BASE		0xa0000
40617b9080SKazutaka YOKOTA #define EGA_BUF_SIZE		0x20000
41617b9080SKazutaka YOKOTA #define EGA_BUF			BIOS_PADDRTOVADDR(EGA_BUF_BASE)
42617b9080SKazutaka YOKOTA #define GRAPHICS_BUF_BASE	0xa0000
43617b9080SKazutaka YOKOTA #define GRAPHICS_BUF_SIZE	0x10000
44617b9080SKazutaka YOKOTA #define GRAPHICS_BUF		BIOS_PADDRTOVADDR(GRAPHICS_BUF_BASE)
45617b9080SKazutaka YOKOTA #define FONT_BUF		BIOS_PADDRTOVADDR(GRAPHICS_BUF_BASE)
46617b9080SKazutaka YOKOTA #define VIDEO_BUF_BASE		0xa0000
47617b9080SKazutaka YOKOTA #define VIDEO_BUF_SIZE		0x20000
48617b9080SKazutaka YOKOTA 
49617b9080SKazutaka YOKOTA /* I/O port addresses */
50617b9080SKazutaka YOKOTA #define MONO_CRTC	(IO_MDA + 0x04)		/* crt controller base mono */
51617b9080SKazutaka YOKOTA #define COLOR_CRTC	(IO_CGA + 0x04)		/* crt controller base color */
52617b9080SKazutaka YOKOTA #define MISC		(IO_VGA + 0x02)		/* misc output register */
53617b9080SKazutaka YOKOTA #define ATC		(IO_VGA + 0x00)		/* attribute controller */
54617b9080SKazutaka YOKOTA #define TSIDX		(IO_VGA + 0x04)		/* timing sequencer idx */
55617b9080SKazutaka YOKOTA #define TSREG		(IO_VGA + 0x05)		/* timing sequencer data */
56617b9080SKazutaka YOKOTA #define PIXMASK		(IO_VGA + 0x06)		/* pixel write mask */
57617b9080SKazutaka YOKOTA #define PALRADR		(IO_VGA + 0x07)		/* palette read address */
58617b9080SKazutaka YOKOTA #define PALWADR		(IO_VGA + 0x08)		/* palette write address */
59617b9080SKazutaka YOKOTA #define PALDATA		(IO_VGA + 0x09)		/* palette data register */
60617b9080SKazutaka YOKOTA #define GDCIDX		(IO_VGA + 0x0E)		/* graph data controller idx */
61617b9080SKazutaka YOKOTA #define GDCREG		(IO_VGA + 0x0F)		/* graph data controller data */
62617b9080SKazutaka YOKOTA 
636e8394b8SKazutaka YOKOTA #define VGA_DRIVER_NAME		"vga"
646bfa9a2dSEd Schouten #define VGA_UNIT(dev)		dev2unit(dev)
656e8394b8SKazutaka YOKOTA #define VGA_MKMINOR(unit)	(unit)
666e8394b8SKazutaka YOKOTA 
67664a31e4SPeter Wemm #ifdef _KERNEL
686e8394b8SKazutaka YOKOTA 
696e8394b8SKazutaka YOKOTA struct video_adapter;
706e8394b8SKazutaka YOKOTA typedef struct vga_softc {
716e8394b8SKazutaka YOKOTA 	struct video_adapter	*adp;
72528433baSIan Dowse 	void			*state_buf;
737ac3e951SJung-uk Kim 	void			*pal_buf;
746e8394b8SKazutaka YOKOTA } vga_softc_t;
756e8394b8SKazutaka YOKOTA 
766e8394b8SKazutaka YOKOTA int		vga_probe_unit(int unit, struct video_adapter *adp, int flags);
776e8394b8SKazutaka YOKOTA int		vga_attach_unit(int unit, vga_softc_t *sc, int flags);
786e8394b8SKazutaka YOKOTA 
796e8394b8SKazutaka YOKOTA extern int	(*vga_sub_configure)(int flags);
806e8394b8SKazutaka YOKOTA 
81664a31e4SPeter Wemm #endif /* _KERNEL */
82617b9080SKazutaka YOKOTA 
83617b9080SKazutaka YOKOTA #endif /* _DEV_FB_VGAREG_H_ */
84