1139825Simp/*-
217350Sasami * Copyright (c) KATO Takenori, 1996.  All rights reserved.
317350Sasami *
417350Sasami * Redistribution and use in source and binary forms, with or without
517350Sasami * modification, are permitted provided that the following conditions
617350Sasami * are met:
717350Sasami * 1. Redistributions of source code must retain the above copyright
817350Sasami *    notice, this list of conditions and the following disclaimer as
917350Sasami *    the first lines of this file unmodified.
1017350Sasami * 2. Redistributions in binary form must reproduce the above copyright
1117350Sasami *    notice, this list of conditions and the following disclaimer in the
1217350Sasami *    documentation and/or other materials provided with the distribution.
1317350Sasami * 3. The name of the author may not be used to endorse or promote products
1417350Sasami *    derived from this software without specific prior written permission.
1517350Sasami *
1617350Sasami * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1717350Sasami * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
1817350Sasami * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
1917350Sasami * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
2017350Sasami * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
2117350Sasami * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2217350Sasami * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2317350Sasami * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2417350Sasami * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
2517350Sasami * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2655206Speter *
2755206Speter * $FreeBSD$
2817350Sasami */
2917350Sasami
3017350Sasami#ifndef __PC98_PC98_PC98_MACHDEP_H__
3117350Sasami#define __PC98_PC98_PC98_MACHDEP_H__
3217350Sasami
3392793Skatovoid	pc98_init_dmac(void);
3492793Skatounsigned int	pc98_getmemsize(unsigned *, unsigned *);
3517350Sasami
3622407Skato#define	PC98_VECTOR_SIZE			(0x400)
37158358Snyan#define	PC98_SYSTEM_PARAMETER_SIZE		(0x240)
38158358Snyan#define	PC98_SAVE_AREA				(0xa1000)
3922407Skato
4055206Speter#if defined(_KERNEL) && !defined(LOCORE)
4122407Skato/* BIOS parameter block */
4222407Skatoextern unsigned char	pc98_system_parameter[]; /* in locore.c */
43158358Snyan
44158358Snyan#define	OFS_pc98_machine_type		0x220
45158358Snyan#define	OFS_epson_machine_id		0x224
4622407Skato#define	OFS_epson_bios_id		0x225
47158358Snyan#define	OFS_epson_system_type		0x226
4822407Skato
4922407Skato#define	PC98_SYSTEM_PARAMETER(x) pc98_system_parameter[(x)-0x400]
5022407Skato#define	pc98_machine_type (*(unsigned long*)&pc98_system_parameter[OFS_pc98_machine_type])
5122407Skato#define	epson_machine_id	(pc98_system_parameter[OFS_epson_machine_id])
5222407Skato#define	epson_bios_id		(pc98_system_parameter[OFS_epson_bios_id])
5322407Skato#define	epson_system_type	(pc98_system_parameter[OFS_epson_system_type])
5422407Skato
5522407Skato# define PC98_TYPE_CHECK(x)	((pc98_machine_type & (x)) == (x))
5622407Skato
57150128Snyan/*
58158358Snyan * PC98 machine type
59158358Snyan */
60158358Snyan#define	M_NEC_PC98	0x0001
61158358Snyan#define	M_EPSON_PC98	0x0002
62158358Snyan#define	M_NOT_H98	0x0010
63158358Snyan#define	M_H98		0x0020
64158358Snyan#define	M_NOTE		0x0040
65158358Snyan#define	M_NORMAL	0x1000
66158358Snyan#define	M_8M		0x8000
67158358Snyan
68158358Snyan/*
69150128Snyan * EPSON machine list
70150128Snyan */
71150128Snyan#define EPSON_PC386_NOTE_A	0x20
72150128Snyan#define EPSON_PC386_NOTE_W	0x22
73150128Snyan#define EPSON_PC386_NOTE_AE	0x27
74150128Snyan#define EPSON_PC386_NOTE_WR	0x2a
75150128Snyan#define EPSON_PC486_GR		0x2b
76150128Snyan#define EPSON_PC486_P		0x30
77150128Snyan#define EPSON_PC486_GR_SUPER	0x31
78150128Snyan#define EPSON_PC486_GR_PLUS	0x32
79150128Snyan#define EPSON_PC486_HX		0x34
80150128Snyan#define EPSON_PC486_HG		0x35
81150128Snyan#define EPSON_PC486_SE		0x37
82150128Snyan#define EPSON_PC486_SR		0x38
83150128Snyan#define EPSON_PC486_HA		0x3b
84150128Snyan
85184327Skato/* IDE HDD geometry conversion. */
86184327Skato#define	AD_GEOM_ADJUST_NONE		0	/* Do nothing. */
87184327Skato#define	AD_GEOM_ADJUST_COMPATIDE	1	/* PC-98 IDE BIOS. */
88184327Skato#define	AD_GEOM_ADJUST_COMPATSCSI	2	/* PC-98 SCSI. */
89184327Skato#define	AD_GEOM_ADJUST_COMPATCYL16	100	/* Compat Rev. 1.28. */
90184327Skato
91184327Skato#define	MEDIASIZE_4_3G		(4351LL * 1024LL * 1024LL)      /* 4351M */
92184327Skato#define	MEDIASIZE_8G		(8192LL * 1024LL * 1024LL)      /* 8192M */
93184327Skato#define	MEDIASIZE_29_5G		(30239LL * 1024LL * 1024LL)	/* 30239M */
94184327Skato#define	MEDIASIZE_31_5G		(32255LL * 1024 * 1024)         /* 32255M */
95184327Skato#define	MEDIASIZE_32G		(32768LL * 1024LL * 1024LL)     /* 32768M */
96184327Skato#define	MEDIASIZE_60G		(61440LL * 1024LL * 1024LL)     /* 61440M */
97184327Skato#define	MEDIASIZE_120G		(122400LL * 1024LL * 1024LL)    /* 122400M */
98184327Skato#define	MEDIASIZE_127G		(130558LL * 1024LL * 1024LL)    /* 130558M */
99184327Skato
10055206Speter#endif /* _KERNEL */
10122407Skato
10217350Sasami#endif /* __PC98_PC98_PC98_MACHDEP_H__ */
103