#include "pic.h" // eoi_pic2
#include "bregs.h" // struct bregs
#include "ps2port.h" // ps2_mouse_command
+#include "usb-hid.h" // usb_mouse_command
void
mouse_setup(void)
static inline int
mouse_command(int command, u8 *param)
{
+ if (usb_mouse_active())
+ return usb_mouse_command(command, param);
return ps2_mouse_command(command, param);
}
#define RET_ENEEDRESEND 0x04
#define RET_ENOHANDLER 0x05
-static int
-disable_mouse(u16 ebda_seg)
-{
- u8 ps2ctr = GET_EBDA2(ebda_seg, ps2ctr);
- ps2ctr |= I8042_CTR_AUXDIS;
- ps2ctr &= ~I8042_CTR_AUXINT;
- SET_EBDA2(ebda_seg, ps2ctr, ps2ctr);
-
- return mouse_command(PSMOUSE_CMD_DISABLE, NULL);
-}
-
// Disable Mouse
static void
mouse_15c20000(struct bregs *regs)
{
- u16 ebda_seg = get_ebda_seg();
- int ret = disable_mouse(ebda_seg);
+ int ret = mouse_command(PSMOUSE_CMD_DISABLE, NULL);
if (ret)
set_code_invalid(regs, RET_ENEEDRESEND);
else
static void
mouse_15c20001(struct bregs *regs)
{
- u16 ebda_seg = get_ebda_seg();
- u8 mouse_flags_2 = GET_EBDA2(ebda_seg, mouse_flag2);
+ u8 mouse_flags_2 = GET_EBDA(mouse_flag2);
if ((mouse_flags_2 & 0x80) == 0) {
set_code_invalid(regs, RET_ENOHANDLER);
return;
}
- u8 ps2ctr = GET_EBDA2(ebda_seg, ps2ctr);
- ps2ctr &= ~I8042_CTR_AUXDIS;
- ps2ctr |= I8042_CTR_AUXINT;
- SET_EBDA2(ebda_seg, ps2ctr, ps2ctr);
-
int ret = mouse_command(PSMOUSE_CMD_ENABLE, NULL);
if (ret)
set_code_invalid(regs, RET_ENEEDRESEND);
/* remove handler */
if ((mouse_flags_2 & 0x80) != 0) {
mouse_flags_2 &= ~0x80;
- disable_mouse(ebda_seg);
+ mouse_command(PSMOUSE_CMD_DISABLE, NULL);
}
} else {
/* install handler */