Date: Tue, 10 Aug 1999 01:02:23 +0900 From: MIHIRA Sanpei Yoshiro <sanpei@sanpei.org> To: mobile@freebsd.org, iwasaki@jp.FreeBSD.org Subject: Re: [APM] kernel panic with apm command(Sotec WinBookPro). Message-ID: <199908091602.BAA01757@lavender.yy.cs.keio.ac.jp> In-Reply-To: Your message of "Mon, 09 Aug 1999 01:46:12 %2B0900" References: <199908081642.BAA01817@tasogare.imasy.or.jp>
next in thread | previous in thread | raw e-mail | index | archive | help
I applied Iwasaki-san's patch to my sys/i386/apm/apm.c. And I execute apm, kernel does not panic. But I think /usr/sbin/apm needs some additional code(?). % apm APM version: 1.0 APM Managment: Enabled AC Line status: on-line Battery status: charging Remaining battery life: unknown Remaining battery time: unknown Number of batteries: unknown apm: Get resume timer: Invalid argument <------------ % ---------- >> [probed message] >> apm0: <APM BIOS> on motherboard >> apm: APM BIOS version 0101 >> apm: Code16 0xc00f0000, Data 0xc00f0000 >> apm: Code entry 0x0000b321, Idling CPU disabled, Management disabled >> apm: CS_limit=0xffff, DS_limit=0xffff >> apm: found APM BIOS v1.1, connected at v1.0 > >Odd. Why it connected at v1.0??? I added some debug code. I think my NOTE-PC has buggy BIOS. If it call ``APM_DRVVERSION'', BIOS return 0x530e of APM driver version, not 0x010x(1.0?). 0x530e is eax value for APM_DRVVERSION...... BIOS of MY NOTE-PC does not recognize DRVVERSION CALL......... [probed message] apm0: <APM BIOS> on motherboard drv_version: 101 <-- debug message DRIVER VERSION 1: 530e <-- debug message drv_version: 100 <-- debug message apm: found APM BIOS v1.1, connected at v1.0 debug code --- apm.c.org Tue Aug 10 00:37:57 1999 +++ apm.c Tue Aug 10 00:49:39 1999 @@ -212,8 +212,11 @@ sc->bios.r.ecx = version; sc->bios.r.edx = 0; - if (apm_bioscall() == 0 && sc->bios.r.eax == version) + if (apm_bioscall() == 0 && sc->bios.r.eax == version) { + printf("DRIVER VERSION 0: %x\n", sc->bios.r.eax); return (0); + } + printf("DRIVER VERSION 1: %x\n", sc->bios.r.eax); return (1); } @@ -976,9 +979,12 @@ * 1.02 driver resulted in a 1.02 connection. */ drv_version = apm_version > 0x102 ? 0x102 : apm_version; - for (; drv_version > 0x100; drv_version--) + for (; drv_version > 0x100; drv_version--) { + printf("drv_version: %4x\n", drv_version); if (apm_driver_version(drv_version) == 0) break; + } + printf("drv_version: %4x\n", drv_version); sc->minorversion = ((drv_version & 0x00f0) >> 4) * 10 + ((drv_version & 0x000f) >> 0); sc->majorversion = ((drv_version & 0xf000) >> 12) * 10 + @@ -1176,7 +1182,7 @@ sc->bios.r.edi = args->edi; if ((ret = apm_bioscall())) { if (ret == -1) { - error = ENOSYS; + error = EINVAL; } else { sc->bios.r.eax &= 0xff; } To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-mobile" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199908091602.BAA01757>