142421Syokota/*-
242421Syokota * Copyright (c) 1999 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
342421Syokota * All rights reserved.
442421Syokota *
542421Syokota * Redistribution and use in source and binary forms, with or without
642421Syokota * modification, are permitted provided that the following conditions
742421Syokota * are met:
842421Syokota * 1. Redistributions of source code must retain the above copyright
942421Syokota *    notice, this list of conditions and the following disclaimer as
1042421Syokota *    the first lines of this file unmodified.
1142421Syokota * 2. Redistributions in binary form must reproduce the above copyright
1242421Syokota *    notice, this list of conditions and the following disclaimer in the
1342421Syokota *    documentation and/or other materials provided with the distribution.
1442421Syokota *
1542421Syokota * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1642421Syokota * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
1742421Syokota * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
1842421Syokota * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
1942421Syokota * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
2042421Syokota * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2142421Syokota * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2242421Syokota * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2342421Syokota * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
2442421Syokota * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2542421Syokota *
2650477Speter * $FreeBSD: releng/10.3/sys/dev/fb/vgareg.h 201223 2009-12-29 21:51:28Z rnoland $
2742421Syokota */
2842421Syokota
2942421Syokota#ifndef _DEV_FB_VGAREG_H_
3042421Syokota#define _DEV_FB_VGAREG_H_
3142421Syokota
3242421Syokota/* physical addresses */
3342421Syokota#define MDA_BUF_BASE		0xb0000
3442421Syokota#define MDA_BUF_SIZE		0x08000
3542421Syokota#define MDA_BUF			BIOS_PADDRTOVADDR(MDA_BUF_BASE)
3642421Syokota#define CGA_BUF_BASE		0xb8000
3742421Syokota#define CGA_BUF_SIZE		0x08000
3842421Syokota#define CGA_BUF			BIOS_PADDRTOVADDR(CGA_BUF_BASE)
3942421Syokota#define EGA_BUF_BASE		0xa0000
4042421Syokota#define EGA_BUF_SIZE		0x20000
4142421Syokota#define EGA_BUF			BIOS_PADDRTOVADDR(EGA_BUF_BASE)
4242421Syokota#define GRAPHICS_BUF_BASE	0xa0000
4342421Syokota#define GRAPHICS_BUF_SIZE	0x10000
4442421Syokota#define GRAPHICS_BUF		BIOS_PADDRTOVADDR(GRAPHICS_BUF_BASE)
4542421Syokota#define FONT_BUF		BIOS_PADDRTOVADDR(GRAPHICS_BUF_BASE)
4642421Syokota#define VIDEO_BUF_BASE		0xa0000
4742421Syokota#define VIDEO_BUF_SIZE		0x20000
4842421Syokota
4942421Syokota/* I/O port addresses */
5042421Syokota#define MONO_CRTC	(IO_MDA + 0x04)		/* crt controller base mono */
5142421Syokota#define COLOR_CRTC	(IO_CGA + 0x04)		/* crt controller base color */
5242421Syokota#define MISC		(IO_VGA + 0x02)		/* misc output register */
5342421Syokota#define ATC		(IO_VGA + 0x00)		/* attribute controller */
5442421Syokota#define TSIDX		(IO_VGA + 0x04)		/* timing sequencer idx */
5542421Syokota#define TSREG		(IO_VGA + 0x05)		/* timing sequencer data */
5642421Syokota#define PIXMASK		(IO_VGA + 0x06)		/* pixel write mask */
5742421Syokota#define PALRADR		(IO_VGA + 0x07)		/* palette read address */
5842421Syokota#define PALWADR		(IO_VGA + 0x08)		/* palette write address */
5942421Syokota#define PALDATA		(IO_VGA + 0x09)		/* palette data register */
6042421Syokota#define GDCIDX		(IO_VGA + 0x0E)		/* graph data controller idx */
6142421Syokota#define GDCREG		(IO_VGA + 0x0F)		/* graph data controller data */
6242421Syokota
6348104Syokota#define VGA_DRIVER_NAME		"vga"
64183397Sed#define VGA_UNIT(dev)		dev2unit(dev)
6548104Syokota#define VGA_MKMINOR(unit)	(unit)
6648104Syokota
6755205Speter#ifdef _KERNEL
6848104Syokota
6948104Syokotastruct video_adapter;
7048104Syokotatypedef struct vga_softc {
7148104Syokota	struct video_adapter	*adp;
72142833Siedowse	void			*state_buf;
73198866Sjkim	void			*pal_buf;
7448104Syokota#ifdef FB_INSTALL_CDEV
7548104Syokota	genfb_softc_t		gensc;
7642421Syokota#endif
7748104Syokota} vga_softc_t;
7842421Syokota
7948104Syokotaint		vga_probe_unit(int unit, struct video_adapter *adp, int flags);
8048104Syokotaint		vga_attach_unit(int unit, vga_softc_t *sc, int flags);
8148104Syokota
8248104Syokota#ifdef FB_INSTALL_CDEV
83130585Sphkint		vga_open(struct cdev *dev, vga_softc_t *sc, int flag, int mode,
8483366Sjulian			 struct thread *td);
85130585Sphkint		vga_close(struct cdev *dev, vga_softc_t *sc, int flag, int mode,
8683366Sjulian			  struct thread *td);
87130585Sphkint		vga_read(struct cdev *dev, vga_softc_t *sc, struct uio *uio, int flag);
88130585Sphkint		vga_write(struct cdev *dev, vga_softc_t *sc, struct uio *uio, int flag);
89130585Sphkint		vga_ioctl(struct cdev *dev, vga_softc_t *sc, u_long cmd, caddr_t arg,
9083366Sjulian			  int flag, struct thread *td);
91201223Srnolandint		vga_mmap(struct cdev *dev, vga_softc_t *sc, vm_ooffset_t offset,
92201223Srnoland			 vm_offset_t *paddr, int prot, vm_memattr_t *memattr);
9348104Syokota#endif
9448104Syokota
9548104Syokotaextern int	(*vga_sub_configure)(int flags);
9648104Syokota
9755205Speter#endif /* _KERNEL */
9848104Syokota
9942421Syokota#endif /* _DEV_FB_VGAREG_H_ */
100