xref: /freebsd/sys/dev/fb/vgareg.h (revision 6bfa9a2d66dd0e00182017d6741d44e54d0b2cca)
1617b9080SKazutaka YOKOTA /*-
2617b9080SKazutaka YOKOTA  * Copyright (c) 1999 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
3617b9080SKazutaka YOKOTA  * All rights reserved.
4617b9080SKazutaka YOKOTA  *
5617b9080SKazutaka YOKOTA  * Redistribution and use in source and binary forms, with or without
6617b9080SKazutaka YOKOTA  * modification, are permitted provided that the following conditions
7617b9080SKazutaka YOKOTA  * are met:
8617b9080SKazutaka YOKOTA  * 1. Redistributions of source code must retain the above copyright
9617b9080SKazutaka YOKOTA  *    notice, this list of conditions and the following disclaimer as
10617b9080SKazutaka YOKOTA  *    the first lines of this file unmodified.
11617b9080SKazutaka YOKOTA  * 2. Redistributions in binary form must reproduce the above copyright
12617b9080SKazutaka YOKOTA  *    notice, this list of conditions and the following disclaimer in the
13617b9080SKazutaka YOKOTA  *    documentation and/or other materials provided with the distribution.
14617b9080SKazutaka YOKOTA  *
15617b9080SKazutaka YOKOTA  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16617b9080SKazutaka YOKOTA  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17617b9080SKazutaka YOKOTA  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18617b9080SKazutaka YOKOTA  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19617b9080SKazutaka YOKOTA  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20617b9080SKazutaka YOKOTA  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21617b9080SKazutaka YOKOTA  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22617b9080SKazutaka YOKOTA  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23617b9080SKazutaka YOKOTA  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24617b9080SKazutaka YOKOTA  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25617b9080SKazutaka YOKOTA  *
26c3aac50fSPeter Wemm  * $FreeBSD$
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;
736e8394b8SKazutaka YOKOTA #ifdef FB_INSTALL_CDEV
746e8394b8SKazutaka YOKOTA 	genfb_softc_t		gensc;
75617b9080SKazutaka YOKOTA #endif
766e8394b8SKazutaka YOKOTA } vga_softc_t;
776e8394b8SKazutaka YOKOTA 
786e8394b8SKazutaka YOKOTA int		vga_probe_unit(int unit, struct video_adapter *adp, int flags);
796e8394b8SKazutaka YOKOTA int		vga_attach_unit(int unit, vga_softc_t *sc, int flags);
806e8394b8SKazutaka YOKOTA 
816e8394b8SKazutaka YOKOTA #ifdef FB_INSTALL_CDEV
8289c9c53dSPoul-Henning Kamp int		vga_open(struct cdev *dev, vga_softc_t *sc, int flag, int mode,
83b40ce416SJulian Elischer 			 struct thread *td);
8489c9c53dSPoul-Henning Kamp int		vga_close(struct cdev *dev, vga_softc_t *sc, int flag, int mode,
85b40ce416SJulian Elischer 			  struct thread *td);
8689c9c53dSPoul-Henning Kamp int		vga_read(struct cdev *dev, vga_softc_t *sc, struct uio *uio, int flag);
8789c9c53dSPoul-Henning Kamp int		vga_write(struct cdev *dev, vga_softc_t *sc, struct uio *uio, int flag);
8889c9c53dSPoul-Henning Kamp int		vga_ioctl(struct cdev *dev, vga_softc_t *sc, u_long cmd, caddr_t arg,
89b40ce416SJulian Elischer 			  int flag, struct thread *td);
9089c9c53dSPoul-Henning Kamp int		vga_mmap(struct cdev *dev, vga_softc_t *sc, vm_offset_t offset,
9107159f9cSMaxime Henrion 			 vm_offset_t *paddr, int prot);
926e8394b8SKazutaka YOKOTA #endif
936e8394b8SKazutaka YOKOTA 
946e8394b8SKazutaka YOKOTA extern int	(*vga_sub_configure)(int flags);
956e8394b8SKazutaka YOKOTA 
96664a31e4SPeter Wemm #endif /* _KERNEL */
97617b9080SKazutaka YOKOTA 
98617b9080SKazutaka YOKOTA #endif /* _DEV_FB_VGAREG_H_ */
99