ps2: fix real hw

This commit is contained in:
Matheus
2024-07-11 00:05:42 -03:00
parent bb1fe2b4dc
commit 4cd2a7b41c
2 changed files with 15 additions and 6 deletions
+13 -5
View File
@@ -18,13 +18,19 @@ static void mouse_setrate(int port, uint8_t rate) {
}
static uint8_t identify(int port) {
__assert(device_write_response(port, DEVICE_CMD_IDENTIFY) == ACK);
bool timeout;
uint8_t b = read_data_timeout(5, &timeout);
__assert(!timeout);
return b;
device_command(port, DEVICE_CMD_IDENTIFY);
uint8_t b = read_data_timeout(5, &timeout);
if (b != ACK) {
printf("ps2mouse: identify failed: %x\n", b);
return RESEND;
}
b = read_data_timeout(5, &timeout);
return timeout ? RESEND : b;
}
static int datac;
@@ -77,6 +83,8 @@ static void mouseisr() {
void ps2mouse_init() {
inb(PS2_PORT_DATA);
if (identify(2) != MOUSE) {
printf("Not a mouse!\n");
return;
+2 -1
View File
@@ -89,9 +89,10 @@ static inline uint8_t device_write_response(int port, uint8_t command) {
uint8_t r = RESEND;
int tries = 0;
while (r == RESEND && tries-- < 5) {
while (r == RESEND && tries < 5) {
device_command(port, command);
r = read_data();
++tries;
}
return r;