Misc fixes.
The pnp bios string can't be const and VAR16_32.
Show ps2 port status when discarding data.
diff --git a/src/pnpbios.c b/src/pnpbios.c
index 6daa025..4c512b6 100644
--- a/src/pnpbios.c
+++ b/src/pnpbios.c
@@ -25,7 +25,7 @@
} PACKED;
extern struct pnpheader PNPHEADER;
-extern const char pnp_string[];
+extern char pnp_string[];
#if CONFIG_PNPBIOS
struct pnpheader PNPHEADER __aligned(16) VAR16_32 = {
@@ -41,7 +41,7 @@
// We need a copy of this string in the 0xf000 segment, but we are not
// actually a PnP BIOS, so make sure it is *not* aligned, so OSes will
// not see it if they scan.
-const char pnp_string[] __aligned(2) VAR16_32 = " $PnP";
+char pnp_string[] __aligned(2) VAR16_32 = " $PnP";
#endif
#define FUNCTION_NOT_SUPPORTED 0x82
diff --git a/src/ps2port.c b/src/ps2port.c
index 3f2fee7..4cd8316 100644
--- a/src/ps2port.c
+++ b/src/ps2port.c
@@ -65,7 +65,7 @@
}
udelay(50);
u8 data = inb(PORT_PS2_DATA);
- dprintf(7, "i8042 flushed %x\n", data);
+ dprintf(7, "i8042 flushed %x (status=%x)\n", data, status);
}
irq_restore(flags);
@@ -166,7 +166,7 @@
if ((!!(status & I8042_STR_AUXDATA) != aux)
|| (needack && data != PS2_RET_ACK)) {
// This data not for us - XXX - just discard it for now.
- dprintf(1, "Discarding ps2 data %x\n", data);
+ dprintf(1, "Discarding ps2 data %x (status=%x)\n", data, status);
continue;
}
diff --git a/src/serial.c b/src/serial.c
index 6de6636..5eefaf3 100644
--- a/src/serial.c
+++ b/src/serial.c
@@ -243,6 +243,7 @@
outb(val8 | 0x01, addr+2); // send strobe
nop();
outb(val8 & ~0x01, addr+2);
+ // XXX - implement better timeout code.
while (((inb(addr+1) & 0x40) == 0x40) && (timeout))
timeout--;