ps2hid: Fixup initialization sequence; unbreaks scrollwheel in vbox
This commit is contained in:
parent
70e6bb79f3
commit
a2d63a6125
@ -122,16 +122,28 @@ static void ps2_command_arg(uint8_t cmdbyte, uint8_t arg) {
|
|||||||
/**
|
/**
|
||||||
* @brief Write to the aux port.
|
* @brief Write to the aux port.
|
||||||
*/
|
*/
|
||||||
static void mouse_write(uint8_t write) {
|
static uint8_t mouse_write(uint8_t write) {
|
||||||
ps2_command_arg(MOUSE_WRITE, write);
|
ps2_command_arg(MOUSE_WRITE, write);
|
||||||
|
ps2_wait_output();
|
||||||
|
return inportb(PS2_DATA);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Read generic response byte
|
||||||
|
*/
|
||||||
|
static uint8_t ps2_read_byte(void) {
|
||||||
|
ps2_wait_output();
|
||||||
|
return inportb(PS2_DATA);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Write to the primary port.
|
* @brief Write to the primary port.
|
||||||
*/
|
*/
|
||||||
static void kbd_write(uint8_t write) {
|
static uint8_t kbd_write(uint8_t write) {
|
||||||
ps2_wait_input();
|
ps2_wait_input();
|
||||||
outportb(PS2_DATA, write);
|
outportb(PS2_DATA, write);
|
||||||
|
ps2_wait_output();
|
||||||
|
return inportb(PS2_DATA);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -351,6 +363,7 @@ void ps2hid_install(void) {
|
|||||||
/* Try to enable scroll wheel (but not buttons) */
|
/* Try to enable scroll wheel (but not buttons) */
|
||||||
if (!args_present("nomousescroll")) {
|
if (!args_present("nomousescroll")) {
|
||||||
mouse_write(MOUSE_DEVICE_ID);
|
mouse_write(MOUSE_DEVICE_ID);
|
||||||
|
ps2_read_byte(); /* Ignore response */
|
||||||
mouse_write(MOUSE_SAMPLE_RATE);
|
mouse_write(MOUSE_SAMPLE_RATE);
|
||||||
mouse_write(200);
|
mouse_write(200);
|
||||||
mouse_write(MOUSE_SAMPLE_RATE);
|
mouse_write(MOUSE_SAMPLE_RATE);
|
||||||
@ -358,7 +371,7 @@ void ps2hid_install(void) {
|
|||||||
mouse_write(MOUSE_SAMPLE_RATE);
|
mouse_write(MOUSE_SAMPLE_RATE);
|
||||||
mouse_write(80);
|
mouse_write(80);
|
||||||
mouse_write(MOUSE_DEVICE_ID);
|
mouse_write(MOUSE_DEVICE_ID);
|
||||||
result = inportb(PS2_STATUS);
|
result = ps2_read_byte();
|
||||||
if (result == 3) {
|
if (result == 3) {
|
||||||
mouse_mode = MOUSE_SCROLLWHEEL;
|
mouse_mode = MOUSE_SCROLLWHEEL;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user