diff --git a/kernel.c b/kernel.c index ab9219a..f0ddbe3 100644 --- a/kernel.c +++ b/kernel.c @@ -142,7 +142,7 @@ void write_8042(uint8_t data) { } bool translation_initially; -bool single_channel = false; +bool dual_channel; uint8_t read_config_8042(void) { command_8042(0x20); @@ -166,7 +166,7 @@ void init_8042(void) { // Read configuration uint8_t config = read_config_8042(); translation_initially = config & (1<<6); - single_channel = !(config & (1<<5)); + dual_channel = config & (1<<5); // Disable IRQ config &= ~(1<<0); @@ -187,16 +187,16 @@ void init_8042(void) { write_8042(config); // Determine number of channels - if (!single_channel) { - command_8042(0xae); - single_channel = read_config_8042() & (1<<5); - if (!single_channel) + if (dual_channel) { + command_8042(0xa8); + dual_channel = !(read_config_8042() & (1<<5)); + if (dual_channel) command_8042(0xa7); } - if (single_channel) - terminal_writestring("Single-channel ps/2 controller\n"); - else + if (dual_channel) terminal_writestring("Dual-channel ps/2 controller\n"); + else + terminal_writestring("Single-channel ps/2 controller\n"); // Test channels terminal_writestring("Testing channel 1... "); @@ -205,7 +205,7 @@ void init_8042(void) { terminal_writestring("failed\n"); else terminal_writestring("ok\n"); - if (!single_channel) { + if (dual_channel) { terminal_writestring("Testing channel 2... "); command_8042(0xa9); if (read_8042() != 0) @@ -216,7 +216,7 @@ void init_8042(void) { // Enable devices command_8042(0xae); - if (!single_channel) + if (dual_channel) command_8042(0xa8); }