From 98659f44ab363685e83bd00f9983cfde8203a0c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 18 Oct 2007 17:24:07 +0000 Subject: [PATCH] Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22616 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/bus_managers/ps2/ps2_common.c | 56 ++++++++++--------- .../kernel/bus_managers/ps2/ps2_common.h | 3 +- 2 files changed, 32 insertions(+), 27 deletions(-) diff --git a/src/add-ons/kernel/bus_managers/ps2/ps2_common.c b/src/add-ons/kernel/bus_managers/ps2/ps2_common.c index 737c3d75aa..6c80aa4d19 100644 --- a/src/add-ons/kernel/bus_managers/ps2/ps2_common.c +++ b/src/add-ons/kernel/bus_managers/ps2/ps2_common.c @@ -1,6 +1,6 @@ /* * Copyright 2004-2007 Haiku, Inc. - * Distributed under the terms of the Haiku License. + * Distributed under the terms of the MIT License. * * Authors (in chronological order): * Stefano Ceccherini (burton666@libero.it) @@ -16,13 +16,13 @@ #include "ps2_service.h" #include "ps2_dev.h" + isa_module_info *gIsa = NULL; +bool gActiveMultiplexingEnabled = false; +sem_id gControllerSem; static int32 sIgnoreInterrupts = 0; -bool gActiveMultiplexingEnabled = false; -sem_id gControllerSem; - uint8 ps2_read_ctrl(void) @@ -84,6 +84,7 @@ ps2_wait_write(void) // #pragma mark - + void ps2_flush(void) { @@ -133,7 +134,8 @@ ps2_setup_command_byte() if (res != B_OK) cmdbyte = 0x47; - cmdbyte |= PS2_BITS_TRANSLATE_SCANCODES | PS2_BITS_KEYBOARD_INTERRUPT | PS2_BITS_AUX_INTERRUPT; + cmdbyte |= PS2_BITS_TRANSLATE_SCANCODES | PS2_BITS_KEYBOARD_INTERRUPT + | PS2_BITS_AUX_INTERRUPT; cmdbyte &= ~(PS2_BITS_KEYBOARD_DISABLED | PS2_BITS_MOUSE_DISABLED); res = ps2_command(PS2_CTRL_WRITE_CMD, &cmdbyte, 1, NULL, 0); @@ -192,8 +194,9 @@ no_support: *enabled = false; done: - // Some controllers get upset by the d3 command and will continue data loopback, - // thus we need to send a harmless command (enable keyboard interface) next + // Some controllers get upset by the d3 command and will continue data + // loopback, thus we need to send a harmless command (enable keyboard + // interface) next. // This fixes bug report #1175 res = ps2_command(0xae, NULL, 0, NULL, 0); if (res != B_OK) { @@ -206,17 +209,12 @@ fail: *enabled = false; // this should revert the controller into legacy mode, // just in case it has switched to multiplexed mode - res = ps2_command(PS2_CTRL_SELF_TEST, NULL, 0, &in, 1); - if (res != B_OK || in != 0x55) { - INFO("ps2: controller self test failed, status 0x%08lx, data 0x%02x\n", res, in); - return B_ERROR; - } - return B_OK; + return ps2_selftest(); } status_t -ps2_command(uint8 cmd, const uint8 *out, int out_count, uint8 *in, int in_count) +ps2_command(uint8 cmd, const uint8 *out, int outCount, uint8 *in, int inCount) { status_t res; int i; @@ -224,15 +222,17 @@ ps2_command(uint8 cmd, const uint8 *out, int out_count, uint8 *in, int in_count) acquire_sem(gControllerSem); atomic_add(&sIgnoreInterrupts, 1); - TRACE("ps2: ps2_command cmd 0x%02x, out %d, in %d\n", cmd, out_count, in_count); - for (i = 0; i < out_count; i++) +#ifdef TRACE_PS2 + TRACE("ps2: ps2_command cmd 0x%02x, out %d, in %d\n", cmd, outCount, inCount); + for (i = 0; i < outCount; i++) TRACE("ps2: ps2_command out 0x%02x\n", out[i]); +#endif res = ps2_wait_write(); if (res == B_OK) ps2_write_ctrl(cmd); - for (i = 0; res == B_OK && i < out_count; i++) { + for (i = 0; res == B_OK && i < outCount; i++) { res = ps2_wait_write(); if (res == B_OK) ps2_write_data(out[i]); @@ -240,7 +240,7 @@ ps2_command(uint8 cmd, const uint8 *out, int out_count, uint8 *in, int in_count) TRACE("ps2: ps2_command out byte %d failed\n", i); } - for (i = 0; res == B_OK && i < in_count; i++) { + for (i = 0; res == B_OK && i < inCount; i++) { res = ps2_wait_read(); if (res == B_OK) in[i] = ps2_read_data(); @@ -248,9 +248,11 @@ ps2_command(uint8 cmd, const uint8 *out, int out_count, uint8 *in, int in_count) TRACE("ps2: ps2_command in byte %d failed\n", i); } - for (i = 0; i < in_count; i++) +#ifdef TRACE_PS2 + for (i = 0; i < inCount; i++) TRACE("ps2: ps2_command in 0x%02x\n", in[i]); TRACE("ps2: ps2_command result 0x%08lx\n", res); +#endif atomic_add(&sIgnoreInterrupts, -1); release_sem(gControllerSem); @@ -338,16 +340,18 @@ ps2_init(void) if (status < B_OK) goto err2; - status = install_io_interrupt_handler(INT_PS2_KEYBOARD, &ps2_interrupt, NULL, 0); + status = install_io_interrupt_handler(INT_PS2_KEYBOARD, &ps2_interrupt, + NULL, 0); if (status) goto err3; - status = install_io_interrupt_handler(INT_PS2_MOUSE, &ps2_interrupt, NULL, 0); + status = install_io_interrupt_handler(INT_PS2_MOUSE, &ps2_interrupt, NULL, + 0); if (status) goto err4; ps2_selftest(); - + status = ps2_setup_command_byte(); if (status) { INFO("ps2: setting up command byte failed\n"); @@ -361,7 +365,8 @@ ps2_init(void) } if (gActiveMultiplexingEnabled) { - if (B_TIMED_OUT == ps2_dev_command_timeout(&ps2_device[PS2_DEVICE_MOUSE], 0xe6, NULL, 0, NULL, 0, 100000)) { + if (ps2_dev_command_timeout(&ps2_device[PS2_DEVICE_MOUSE], 0xe6, + NULL, 0, NULL, 0, 100000) == B_TIMED_OUT) { INFO("ps2: accessing multiplexed mouse port 0 timed out, ignoring it!\n"); } else { ps2_service_notify_device_added(&ps2_device[PS2_DEVICE_MOUSE]); @@ -374,13 +379,12 @@ ps2_init(void) ps2_service_notify_device_added(&ps2_device[PS2_DEVICE_MOUSE]); ps2_service_notify_device_added(&ps2_device[PS2_DEVICE_KEYB]); } - + TRACE("ps2: init done!\n"); - return B_OK; err5: - remove_io_interrupt_handler(INT_PS2_MOUSE, &ps2_interrupt, NULL); + remove_io_interrupt_handler(INT_PS2_MOUSE, &ps2_interrupt, NULL); err4: remove_io_interrupt_handler(INT_PS2_KEYBOARD, &ps2_interrupt, NULL); err3: diff --git a/src/add-ons/kernel/bus_managers/ps2/ps2_common.h b/src/add-ons/kernel/bus_managers/ps2/ps2_common.h index 1de23499bb..39eaa5a6b0 100644 --- a/src/add-ons/kernel/bus_managers/ps2/ps2_common.h +++ b/src/add-ons/kernel/bus_managers/ps2/ps2_common.h @@ -29,7 +29,8 @@ # define INFO(x...) #endif -#if 0 +//#define TRACE_PS2 +#ifdef TRACE_PS2 # define TRACE(x...) dprintf(x) #else # define TRACE(x...)