summaryrefslogtreecommitdiffstats
path: root/sys/pc98/cbus/gdc.c
diff options
context:
space:
mode:
authornyan <nyan@FreeBSD.org>2000-08-08 09:17:15 +0000
committernyan <nyan@FreeBSD.org>2000-08-08 09:17:15 +0000
commit6732d791f86db4d92eaaacdc0451927db66661dd (patch)
treefc12da8dbc370e302abf4980344cfe74359d698b /sys/pc98/cbus/gdc.c
parent4f56ce6517cce3364ad67b3a23b7b8184ad79217 (diff)
downloadFreeBSD-src-6732d791f86db4d92eaaacdc0451927db66661dd.zip
FreeBSD-src-6732d791f86db4d92eaaacdc0451927db66661dd.tar.gz
Fixed PC-9821 NOTE supports with LINE30 mode.
Submitted by: Tomokazu HARADA <tkhara@osk4.3web.ne.jp>
Diffstat (limited to 'sys/pc98/cbus/gdc.c')
-rw-r--r--sys/pc98/cbus/gdc.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/sys/pc98/cbus/gdc.c b/sys/pc98/cbus/gdc.c
index c87274b..df3a3e7 100644
--- a/sys/pc98/cbus/gdc.c
+++ b/sys/pc98/cbus/gdc.c
@@ -456,6 +456,13 @@ probe_adapters(void)
biosadapter[0].va_mode =
biosadapter[0].va_initial_mode = biosadapter[0].va_initial_bios_mode;
+ if ((PC98_SYSTEM_PARAMETER(0x597) & 0x80) ||
+ (PC98_SYSTEM_PARAMETER(0x458) & 0x80)) {
+ gdc_FH = (inb(0x9a8) & 1) ? _31KHZ : _24KHZ;
+ } else {
+ gdc_FH = _24KHZ;
+ }
+
gdc_get_info(&biosadapter[0], biosadapter[0].va_initial_mode, &info);
initialize_gdc(T25_G400, info.vi_flags & V_INFO_GRAPHICS);
@@ -568,15 +575,20 @@ static void initialize_gdc(unsigned int mode, int isGraph)
s_mode = 2*mode+gdc_clock;
gdc_INFO = m_mode;
+ master_gdc_wait_vsync();
+
if ((PC98_SYSTEM_PARAMETER(0x597) & 0x80) ||
(PC98_SYSTEM_PARAMETER(0x458) & 0x80)) {
- hsync_clock = (inb(0x9a8) & 1) ? _31KHZ : _24KHZ;
+ if (PC98_SYSTEM_PARAMETER(0x481) & 0x08) {
+ hsync_clock = (m_mode == _25L) ? _24KHZ : _31KHZ;
+ outb(0x9a8, (hsync_clock == _31KHZ) ? 1 : 0);
+ } else {
+ hsync_clock = gdc_FH;
+ }
} else {
hsync_clock = _24KHZ;
}
- master_gdc_wait_vsync();
-
if ((gdc_clock == _2_5MHZ) &&
(slave_param[hsync_clock][s_mode][GDC_LF] > 400)) {
outb(0x6a, 0x83);
OpenPOWER on IntegriCloud