mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-12-02 21:32:58 +00:00
MFC: r282269, r282277
atkbd: remove usage of x86bios Remove leftover from r282269.
This commit is contained in:
parent
edc9f99bb6
commit
6989c166d6
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/stable/10/; revision=283219
@ -531,10 +531,10 @@ compat/ndis/winx64_wrap.S optional ndisapi pci
|
||||
libkern/memmove.c standard
|
||||
libkern/memset.c standard
|
||||
#
|
||||
# x86 real mode BIOS emulator, required by atkbdc/dpms/vesa
|
||||
# x86 real mode BIOS emulator, required by dpms/vesa
|
||||
#
|
||||
compat/x86bios/x86bios.c optional x86bios | atkbd | dpms | vesa
|
||||
contrib/x86emu/x86emu.c optional x86bios | atkbd | dpms | vesa
|
||||
compat/x86bios/x86bios.c optional x86bios | dpms | vesa
|
||||
contrib/x86emu/x86emu.c optional x86bios | dpms | vesa
|
||||
#
|
||||
# bvm console
|
||||
#
|
||||
|
@ -552,9 +552,9 @@ i386/xbox/xboxfb.c optional xboxfb
|
||||
dev/fb/boot_font.c optional xboxfb
|
||||
i386/xbox/pic16l.s optional xbox
|
||||
#
|
||||
# x86 real mode BIOS support, required by atkbdc/dpms/vesa
|
||||
# x86 real mode BIOS support, required by dpms/vesa
|
||||
#
|
||||
compat/x86bios/x86bios.c optional x86bios | atkbd | dpms | vesa
|
||||
compat/x86bios/x86bios.c optional x86bios | dpms | vesa
|
||||
#
|
||||
# x86 shared code between IA32, AMD64 and PC98 architectures
|
||||
#
|
||||
|
@ -44,19 +44,6 @@ __FBSDID("$FreeBSD$");
|
||||
#include <machine/bus.h>
|
||||
#include <machine/resource.h>
|
||||
|
||||
#if defined(__i386__) || defined(__amd64__)
|
||||
#include <machine/md_var.h>
|
||||
#include <machine/psl.h>
|
||||
#include <compat/x86bios/x86bios.h>
|
||||
#include <machine/pc/bios.h>
|
||||
|
||||
#include <vm/vm.h>
|
||||
#include <vm/pmap.h>
|
||||
#include <vm/vm_param.h>
|
||||
|
||||
#include <isa/isareg.h>
|
||||
#endif /* __i386__ || __amd64__ */
|
||||
|
||||
#include <sys/kbio.h>
|
||||
#include <dev/kbd/kbdreg.h>
|
||||
#include <dev/atkbdc/atkbdreg.h>
|
||||
@ -65,6 +52,9 @@ __FBSDID("$FreeBSD$");
|
||||
static timeout_t atkbd_timeout;
|
||||
static void atkbd_shutdown_final(void *v);
|
||||
|
||||
#define DEFAULT_DELAY 0x1 /* 500ms */
|
||||
#define DEFAULT_RATE 0x10 /* 14Hz */
|
||||
|
||||
int
|
||||
atkbd_probe_unit(device_t dev, int irq, int flags)
|
||||
{
|
||||
@ -239,7 +229,7 @@ static keyboard_switch_t atkbdsw = {
|
||||
KEYBOARD_DRIVER(atkbd, atkbdsw, atkbd_configure);
|
||||
|
||||
/* local functions */
|
||||
static int get_typematic(keyboard_t *kbd);
|
||||
static int set_typematic(keyboard_t *kbd);
|
||||
static int setup_kbd_port(KBDC kbdc, int port, int intr);
|
||||
static int get_kbd_echo(KBDC kbdc);
|
||||
static int probe_keyboard(KBDC kbdc, int flags);
|
||||
@ -433,7 +423,7 @@ atkbd_init(int unit, keyboard_t **kbdp, void *arg, int flags)
|
||||
goto bad;
|
||||
}
|
||||
atkbd_ioctl(kbd, KDSETLED, (caddr_t)&state->ks_state);
|
||||
get_typematic(kbd);
|
||||
set_typematic(kbd);
|
||||
delay[0] = kbd->kb_delay1;
|
||||
delay[1] = kbd->kb_delay2;
|
||||
atkbd_ioctl(kbd, KDSETREPEAT, (caddr_t)delay);
|
||||
@ -490,7 +480,7 @@ atkbd_intr(keyboard_t *kbd, void *arg)
|
||||
init_keyboard(state->kbdc, &kbd->kb_type, kbd->kb_config);
|
||||
KBD_FOUND_DEVICE(kbd);
|
||||
atkbd_ioctl(kbd, KDSETLED, (caddr_t)&state->ks_state);
|
||||
get_typematic(kbd);
|
||||
set_typematic(kbd);
|
||||
delay[0] = kbd->kb_delay1;
|
||||
delay[1] = kbd->kb_delay2;
|
||||
atkbd_ioctl(kbd, KDSETREPEAT, (caddr_t)delay);
|
||||
@ -1089,57 +1079,19 @@ atkbd_shutdown_final(void *v)
|
||||
/* local functions */
|
||||
|
||||
static int
|
||||
get_typematic(keyboard_t *kbd)
|
||||
set_typematic(keyboard_t *kbd)
|
||||
{
|
||||
#if defined(__i386__) || defined(__amd64__)
|
||||
/*
|
||||
* Only some systems allow us to retrieve the keyboard repeat
|
||||
* rate previously set via the BIOS...
|
||||
*/
|
||||
x86regs_t regs;
|
||||
uint8_t *p;
|
||||
int val, error;
|
||||
atkbd_state_t *state = kbd->kb_data;
|
||||
|
||||
/*
|
||||
* Traditional entry points of int 0x15 and 0x16 are fixed
|
||||
* and later BIOSes follow them. (U)EFI CSM specification
|
||||
* also mandates these fixed entry points.
|
||||
*
|
||||
* Validate the entry points here before we proceed further.
|
||||
* It's known that some recent laptops does not have the
|
||||
* same entry point and hang on boot if we call it.
|
||||
*/
|
||||
if (x86bios_get_intr(0x15) != 0xf000f859 ||
|
||||
x86bios_get_intr(0x16) != 0xf000e82e)
|
||||
return (ENODEV);
|
||||
val = typematic(DEFAULT_DELAY, DEFAULT_RATE);
|
||||
error = write_kbd(state->kbdc, KBDC_SET_TYPEMATIC, val);
|
||||
if (error == 0) {
|
||||
kbd->kb_delay1 = typematic_delay(val);
|
||||
kbd->kb_delay2 = typematic_rate(val);
|
||||
}
|
||||
|
||||
/* Is BIOS system configuration table supported? */
|
||||
x86bios_init_regs(®s);
|
||||
regs.R_AH = 0xc0;
|
||||
x86bios_intr(®s, 0x15);
|
||||
if ((regs.R_FLG & PSL_C) != 0 || regs.R_AH != 0)
|
||||
return (ENODEV);
|
||||
|
||||
/* Is int 0x16, function 0x09 supported? */
|
||||
p = x86bios_offset((regs.R_ES << 4) + regs.R_BX);
|
||||
if (readw(p) < 5 || (readb(p + 6) & 0x40) == 0)
|
||||
return (ENODEV);
|
||||
|
||||
/* Is int 0x16, function 0x0306 supported? */
|
||||
x86bios_init_regs(®s);
|
||||
regs.R_AH = 0x09;
|
||||
x86bios_intr(®s, 0x16);
|
||||
if ((regs.R_AL & 0x08) == 0)
|
||||
return (ENODEV);
|
||||
|
||||
x86bios_init_regs(®s);
|
||||
regs.R_AX = 0x0306;
|
||||
x86bios_intr(®s, 0x16);
|
||||
kbd->kb_delay1 = typematic_delay(regs.R_BH << 5);
|
||||
kbd->kb_delay2 = typematic_rate(regs.R_BL);
|
||||
return (0);
|
||||
#else
|
||||
return (ENODEV);
|
||||
#endif /* __i386__ || __amd64__ */
|
||||
return (error);
|
||||
}
|
||||
|
||||
static int
|
||||
|
Loading…
Reference in New Issue
Block a user