SiS 5571, Daewoo Compaq, speed up AT / PS/2 KBC (does not appear to break anything from months of testing) and fix AT / PS/2 keyboard reset to fix the Samsung SPC7700LP-W soft reset.
This commit is contained in:
@@ -32,6 +32,8 @@
|
||||
|
||||
#define FIFO_SIZE 16
|
||||
|
||||
#define BAT_COUNT 1000
|
||||
|
||||
enum {
|
||||
KBD_84_KEY = 0,
|
||||
KBD_101_KEY,
|
||||
@@ -75,6 +77,8 @@ static atkbc_dev_t *SavedKbd = NULL;
|
||||
|
||||
static uint8_t inv_cmd_response = 0xfa;
|
||||
|
||||
static uint16_t bat_counter = 0;
|
||||
|
||||
static const scancode scancode_set1[512] = {
|
||||
// clang-format off
|
||||
{ { 0},{ 0} }, { { 0x01,0},{ 0x81,0} }, { { 0x02,0},{ 0x82,0} }, { { 0x03,0},{ 0x83,0} }, /*000*/
|
||||
@@ -704,11 +708,16 @@ keyboard_at_bat(void *priv)
|
||||
{
|
||||
atkbc_dev_t *dev = (atkbc_dev_t *) priv;
|
||||
|
||||
keyboard_at_set_defaults(dev);
|
||||
if (bat_counter == 0x0000) {
|
||||
keyboard_at_set_defaults(dev);
|
||||
|
||||
keyboard_scan = 1;
|
||||
keyboard_scan = 1;
|
||||
|
||||
kbc_at_dev_queue_add(dev, 0xaa, 0);
|
||||
kbc_at_dev_queue_add(dev, 0xaa, 0);
|
||||
} else {
|
||||
bat_counter--;
|
||||
dev->state = DEV_STATE_EXECUTE_BAT;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -926,6 +935,7 @@ keyboard_at_write(void *priv)
|
||||
|
||||
case 0xff: /* reset */
|
||||
kbc_at_dev_reset(dev, 1);
|
||||
bat_counter = 1000;
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -965,8 +975,10 @@ keyboard_at_init(const device_t *info)
|
||||
|
||||
dev->fifo_mask = FIFO_SIZE - 1;
|
||||
|
||||
if (dev->port != NULL)
|
||||
if (dev->port != NULL) {
|
||||
kbc_at_dev_reset(dev, 0);
|
||||
bat_counter = 0x0000;
|
||||
}
|
||||
|
||||
keyboard_send = add_data_kbd;
|
||||
SavedKbd = dev;
|
||||
|
||||
Reference in New Issue
Block a user