PS/2 bus manager: style fixes only

This commit is contained in:
John Scipione
2014-07-07 17:38:55 -04:00
parent 7a28891db4
commit 819b454750
4 changed files with 110 additions and 101 deletions
+30 -23
View File
@@ -1,15 +1,15 @@
/*
* Copyright 2005-2007 Haiku, Inc.
* Copyright 2005-2014 Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
* PS/2 bus manager
*
* Authors (in chronological order):
* Marcus Overhagen ([email protected])
* Clemens Zeidler ([email protected])
*/
/*! PS/2 bus manager */
#include "ps2_dev.h"
#include "ps2_service.h"
@@ -28,7 +28,7 @@ ps2_dev ps2_device[PS2_DEVICE_COUNT];
status_t
ps2_reset_mouse(ps2_dev *dev)
ps2_reset_mouse(ps2_dev* dev)
{
uint8 data[2];
status_t status;
@@ -40,8 +40,8 @@ ps2_reset_mouse(ps2_dev *dev)
if (status == B_OK && data[0] == 0xFE && data[1] == 0xAA) {
// workaround for HP/Compaq KBCs timeout condition. #2867 #3594 #4315
TRACE("ps2: KBC has timed out the mouse reset request. "
"Response was: 0x%02x 0x%02x. Requesting the answer data.\n",
data[0], data[1]);
"Response was: 0x%02x 0x%02x. Requesting the answer data.\n",
data[0], data[1]);
status = ps2_dev_command(dev, PS2_CMD_RESEND, NULL, 0, data, 2);
}
@@ -60,7 +60,7 @@ ps2_reset_mouse(ps2_dev *dev)
status_t
ps2_dev_detect_pointing(ps2_dev *dev, device_hooks **hooks)
ps2_dev_detect_pointing(ps2_dev* dev, device_hooks** hooks)
{
status_t status = ps2_reset_mouse(dev);
if (status != B_OK) {
@@ -161,14 +161,16 @@ ps2_dev_init(void)
int i;
for (i = 0; i < PS2_DEVICE_COUNT; i++) {
ps2_dev *dev = &ps2_device[i];
ps2_dev* dev = &ps2_device[i];
dev->result_sem = create_sem(0, "ps2 result");
if (dev->result_sem < 0)
goto err;
}
return B_OK;
err:
ps2_dev_exit();
return B_ERROR;
}
@@ -176,9 +178,8 @@ err:
void
ps2_dev_exit(void)
{
int i;
for (i = 0; i < PS2_DEVICE_COUNT; i++) {
ps2_dev *dev = &ps2_device[i];
for (int i = 0; i < PS2_DEVICE_COUNT; i++) {
ps2_dev* dev = &ps2_device[i];
if (dev->result_sem >= 0) {
delete_sem(dev->result_sem);
dev->result_sem = -1;
@@ -188,7 +189,7 @@ ps2_dev_exit(void)
void
ps2_dev_publish(ps2_dev *dev)
ps2_dev_publish(ps2_dev* dev)
{
status_t status = B_OK;
TRACE("ps2: ps2_dev_publish %s\n", dev->name);
@@ -218,7 +219,7 @@ ps2_dev_publish(ps2_dev *dev)
}
if (status == B_OK) {
device_hooks *hooks;
device_hooks* hooks;
status = ps2_dev_detect_pointing(dev, &hooks);
if (status == B_OK) {
status = devfs_publish_device(dev->name, hooks);
@@ -234,7 +235,7 @@ ps2_dev_publish(ps2_dev *dev)
void
ps2_dev_unpublish(ps2_dev *dev)
ps2_dev_unpublish(ps2_dev* dev)
{
status_t status;
TRACE("ps2: ps2_dev_unpublish %s\n", dev->name);
@@ -255,7 +256,7 @@ ps2_dev_unpublish(ps2_dev *dev)
int32
ps2_dev_handle_int(ps2_dev *dev)
ps2_dev_handle_int(ps2_dev* dev)
{
const uint8 data = dev->history[0].data;
uint32 flags;
@@ -365,8 +366,8 @@ pass_to_handler:
status_t
standard_command_timeout(ps2_dev *dev, uint8 cmd, const uint8 *out,
int out_count, uint8 *in, int in_count, bigtime_t timeout)
standard_command_timeout(ps2_dev* dev, uint8 cmd, const uint8* out,
int out_count, uint8* in, int in_count, bigtime_t timeout)
{
status_t res;
bigtime_t start;
@@ -484,8 +485,8 @@ standard_command_timeout(ps2_dev *dev, uint8 cmd, const uint8 *out,
status_t
ps2_dev_command(ps2_dev *dev, uint8 cmd, const uint8 *out, int out_count,
uint8 *in, int in_count)
ps2_dev_command(ps2_dev* dev, uint8 cmd, const uint8* out, int out_count,
uint8* in, int in_count)
{
return ps2_dev_command_timeout(dev, cmd, out, out_count, in, in_count,
4000000);
@@ -493,29 +494,35 @@ ps2_dev_command(ps2_dev *dev, uint8 cmd, const uint8 *out, int out_count,
status_t
ps2_dev_command_timeout(ps2_dev *dev, uint8 cmd, const uint8 *out,
int out_count, uint8 *in, int in_count, bigtime_t timeout)
ps2_dev_command_timeout(ps2_dev* dev, uint8 cmd, const uint8* out,
int out_count, uint8* in, int in_count, bigtime_t timeout)
{
return dev->command(dev, cmd, out, out_count, in, in_count, timeout);
}
status_t
ps2_dev_sliced_command(ps2_dev *dev, uint8 cmd)
ps2_dev_sliced_command(ps2_dev* dev, uint8 cmd)
{
uint8 val;
if (ps2_dev_command(dev, PS2_CMD_MOUSE_SET_SCALE11) != B_OK)
return B_ERROR;
uint8 val = (cmd >> 6) & 3;
val = (cmd >> 6) & 3;
if (ps2_dev_command(dev, PS2_CMD_MOUSE_SET_RES, &val, 1) != B_OK)
return B_ERROR;
val = (cmd >> 4) & 3;
if (ps2_dev_command(dev, PS2_CMD_MOUSE_SET_RES, &val, 1) != B_OK)
return B_ERROR;
val = (cmd >> 2) & 3;
if (ps2_dev_command(dev, PS2_CMD_MOUSE_SET_RES, &val, 1) != B_OK)
return B_ERROR;
val = cmd & 3;
if (ps2_dev_command(dev, PS2_CMD_MOUSE_SET_RES, &val, 1) != B_OK)
return B_ERROR;
return B_OK;
}
+10 -12
View File
@@ -1,11 +1,10 @@
/*
* Copyright 2005-2010 Haiku, Inc.
* Copyright 2005-2014 Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
* PS/2 bus manager
*
* Authors (in chronological order):
* Marcus Overhagen ([email protected])
* Clemens Zeidler ([email protected])
*/
#ifndef __PS2_DEV_H
#define __PS2_DEV_H
@@ -24,24 +23,24 @@ typedef struct {
} data_history;
struct ps2_dev {
const char * name;
const char* name;
bool active;
uint8 idx;
sem_id result_sem;
int32 flags;
uint8 * result_buf;
uint8* result_buf;
int result_buf_idx;
int result_buf_cnt;
void * cookie;
void* cookie;
data_history history[2];
ps2_dev * parent_dev;
ps2_dev* parent_dev;
size_t packet_size;
// functions
void (*disconnect)(ps2_dev *);
int32 (*handle_int)(ps2_dev *);
status_t (*command)(ps2_dev *dev, uint8 cmd, const uint8 *out,
int out_count, uint8 *in, int in_count, bigtime_t timeout);
void (*disconnect)(ps2_dev *);
int32 (*handle_int)(ps2_dev *);
status_t (*command)(ps2_dev *dev, uint8 cmd, const uint8 *out,
int out_count, uint8 *in, int in_count, bigtime_t timeout);
};
#define PS2_DEVICE_COUNT 6
@@ -82,7 +81,6 @@ status_t ps2_dev_command_timeout(ps2_dev *dev, uint8 cmd, const uint8 *out,
int out_count, uint8 *in, int in_count, bigtime_t timeout);
status_t ps2_dev_sliced_command(ps2_dev *dev, uint8 cmd);
status_t ps2_reset_mouse(ps2_dev *dev);
void ps2_dev_publish(ps2_dev *dev);
@@ -1,13 +1,14 @@
/*
* Copyright 2001-2010 Haiku, Inc.
* Copyright 2001-2014 Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
* Authors (in chronological order):
* Elad Lahav ([email protected])
* Stefano Ceccherini ([email protected])
* Elad Lahav, [email protected]
* Stefano Ceccherini, [email protected]
* Axel Dörfler, [email protected]
* Marcus Overhagen <[email protected]>
* Clemens Zeidler <[email protected]>
* Marcus Overhagen, [email protected]
* Clemens Zeidler, [email protected]
* John Scipione, [email protected]
*/
@@ -69,6 +70,7 @@ const char* kStandardMousePath[4] = {
"input/mouse/ps2/standard_2",
"input/mouse/ps2/standard_3"
};
const char* kIntelliMousePath[4] = {
"input/mouse/ps2/intelli_0",
"input/mouse/ps2/intelli_1",
@@ -77,20 +79,18 @@ const char* kIntelliMousePath[4] = {
};
/*! Set sampling rate of the ps2 port.
*/
//! Set sampling rate of the ps2 port.
static inline status_t
ps2_set_sample_rate(ps2_dev *dev, uint8 rate)
ps2_set_sample_rate(ps2_dev* dev, uint8 rate)
{
return ps2_dev_command(dev, PS2_CMD_SET_SAMPLE_RATE, &rate, 1, NULL, 0);
}
/*! Converts a packet received by the mouse to a "movement".
*/
//! Converts a packet received by the mouse to a "movement".
static void
ps2_packet_to_movement(standard_mouse_cookie *cookie, uint8 packet[],
mouse_movement *pos)
ps2_packet_to_movement(standard_mouse_cookie* cookie, uint8 packet[],
mouse_movement* pos)
{
int buttons = packet[0] & 7;
int xDelta = ((packet[0] & 0x10) ? ~0xff : 0) | packet[1];
@@ -115,7 +115,7 @@ ps2_packet_to_movement(standard_mouse_cookie *cookie, uint8 packet[],
if (packet[3] & 0x08)
yDeltaWheel |= ~0x07;
}
/*
#if 0
if (cookie->flags & F_MOUSE_TYPE_2WHEELS) {
switch (packet[3] & 0x0F) {
case 0x01: yDeltaWheel = +1; break; // wheel 1 down
@@ -124,14 +124,16 @@ ps2_packet_to_movement(standard_mouse_cookie *cookie, uint8 packet[],
case 0x0E: xDeltaWheel = -1; break; // wheel 2 up
}
}
*/
#endif
// TRACE("packet: %02x %02x %02x %02x: xd %d, yd %d, 0x%x (%d), w-xd %d, "
// "w-yd %d\n", packet[0], packet[1], packet[2], packet[3],
// xDelta, yDelta, buttons, cookie->click_count, xDeltaWheel,
// yDeltaWheel);
#if 0
TRACE("packet: %02x %02x %02x %02x: xd %d, yd %d, 0x%x (%d), w-xd %d, "
"w-yd %d\n", packet[0], packet[1], packet[2], packet[3],
xDelta, yDelta, buttons, cookie->click_count, xDeltaWheel,
yDeltaWheel);
#endif
if (pos) {
if (pos != NULL) {
pos->xdelta = xDelta;
pos->ydelta = yDelta;
pos->buttons = buttons;
@@ -148,11 +150,10 @@ ps2_packet_to_movement(standard_mouse_cookie *cookie, uint8 packet[],
}
/*! Read a mouse event from the mouse events chain buffer.
*/
//! Read a mouse event from the mouse events chain buffer.
static status_t
standard_mouse_read_event(standard_mouse_cookie *cookie,
mouse_movement *movement)
standard_mouse_read_event(standard_mouse_cookie* cookie,
mouse_movement* movement)
{
uint8 packet[PS2_MAX_PACKET_SIZE];
status_t status;
@@ -184,16 +185,16 @@ standard_mouse_read_event(standard_mouse_cookie *cookie,
}
// #pragma mark -
// #pragma mark - Interrupt handler functions
void
standard_mouse_disconnect(ps2_dev *dev)
standard_mouse_disconnect(ps2_dev* dev)
{
// the mouse device might not be opened at this point
INFO("ps2: ps2_standard_mouse_disconnect %s\n", dev->name);
if (dev->flags & PS2_FLAG_OPEN)
release_sem(((standard_mouse_cookie *)dev->cookie)->standard_mouse_sem);
release_sem(((standard_mouse_cookie*)dev->cookie)->standard_mouse_sem);
}
@@ -204,27 +205,28 @@ standard_mouse_disconnect(ps2_dev *dev)
calls to the handler, each holds a different byte on the data port.
*/
int32
standard_mouse_handle_int(ps2_dev *dev)
standard_mouse_handle_int(ps2_dev* dev)
{
standard_mouse_cookie *cookie = (standard_mouse_cookie*)dev->cookie;
standard_mouse_cookie* cookie = (standard_mouse_cookie*)dev->cookie;
const uint8 data = dev->history[0].data;
TRACE("ps2: standard mouse: %1x\t%1x\t%1x\t%1x\t%1x\t%1x\t%1x\t%1x\n",
data >> 7 & 1, data >> 6 & 1, data >> 5 & 1,
data >> 4 & 1, data >> 3 & 1, data >> 2 & 1,
data >> 1 & 1, data >> 0 & 1);
data >> 7 & 1, data >> 6 & 1, data >> 5 & 1,
data >> 4 & 1, data >> 3 & 1, data >> 2 & 1,
data >> 1 & 1, data >> 0 & 1);
if (cookie->packet_index == 0 && !(data & 8)) {
if (cookie->packet_index == 0 && (data & 8) == 0) {
INFO("ps2: bad mouse data, trying resync\n");
return B_HANDLED_INTERRUPT;
}
// Workarounds for active multiplexing keyboard controllers
// that lose data or send them to the wrong port.
if (cookie->packet_index == 0 && (data & 0xc0)) {
if (cookie->packet_index == 0 && (data & 0xc0) != 0) {
INFO("ps2: strange mouse data, x/y overflow, trying resync\n");
return B_HANDLED_INTERRUPT;
}
if (cookie->packet_index == 1) {
int xDelta
= ((cookie->buffer[0] & 0x10) ? 0xFFFFFF00 : 0) | data;
@@ -263,15 +265,16 @@ standard_mouse_handle_int(ps2_dev *dev)
}
release_sem_etc(cookie->standard_mouse_sem, 1, B_DO_NOT_RESCHEDULE);
return B_INVOKE_SCHEDULER;
}
// #pragma mark -
// #pragma mark - probe_standard_mouse()
status_t
probe_standard_mouse(ps2_dev * dev)
probe_standard_mouse(ps2_dev* dev)
{
status_t status;
uint8 deviceId = 0;
@@ -323,11 +326,11 @@ probe_standard_mouse(ps2_dev * dev)
status_t
standard_mouse_open(const char *name, uint32 flags, void **_cookie)
standard_mouse_open(const char* name, uint32 flags, void** _cookie)
{
standard_mouse_cookie *cookie;
standard_mouse_cookie* cookie;
status_t status;
ps2_dev *dev = NULL;
ps2_dev* dev = NULL;
int i;
TRACE("ps2: standard_mouse_open %s\n", name);
@@ -337,11 +340,13 @@ standard_mouse_open(const char *name, uint32 flags, void **_cookie)
dev = &ps2_device[i];
break;
}
/*if (0 == strcmp(g_passthrough_dev.name, name)) {
#if 0
if (0 == strcmp(g_passthrough_dev.name, name)) {
dev = &g_passthrough_dev;
isSynapticsPTDevice = true;
break;
}*/
}
#endif
}
if (dev == NULL) {
@@ -412,9 +417,9 @@ err1:
status_t
standard_mouse_close(void *_cookie)
standard_mouse_close(void* _cookie)
{
standard_mouse_cookie *cookie = (standard_mouse_cookie*)_cookie;
standard_mouse_cookie* cookie = (standard_mouse_cookie*)_cookie;
TRACE("ps2: standard_mouse_close %s enter\n", cookie->dev->name);
@@ -433,16 +438,16 @@ standard_mouse_close(void *_cookie)
status_t
standard_mouse_freecookie(void *_cookie)
standard_mouse_freecookie(void* _cookie)
{
standard_mouse_cookie *cookie = (standard_mouse_cookie*)_cookie;
standard_mouse_cookie* cookie = (standard_mouse_cookie*)_cookie;
free(cookie);
return B_OK;
}
static status_t
standard_mouse_read(void *cookie, off_t pos, void *buffer, size_t *_length)
standard_mouse_read(void* cookie, off_t pos, void* buffer, size_t* _length)
{
*_length = 0;
return B_NOT_ALLOWED;
@@ -450,8 +455,8 @@ standard_mouse_read(void *cookie, off_t pos, void *buffer, size_t *_length)
static status_t
standard_mouse_write(void *cookie, off_t pos, const void *buffer,
size_t *_length)
standard_mouse_write(void* cookie, off_t pos, const void* buffer,
size_t* _length)
{
*_length = 0;
return B_NOT_ALLOWED;
@@ -459,9 +464,9 @@ standard_mouse_write(void *cookie, off_t pos, const void *buffer,
status_t
standard_mouse_ioctl(void *_cookie, uint32 op, void *buffer, size_t length)
standard_mouse_ioctl(void* _cookie, uint32 op, void* buffer, size_t length)
{
standard_mouse_cookie *cookie = (standard_mouse_cookie*)_cookie;
standard_mouse_cookie* cookie = (standard_mouse_cookie*)_cookie;
switch (op) {
case MS_NUM_EVENTS:
@@ -1,15 +1,14 @@
/*
* Copyright 2001-2010 Haiku, Inc.
* Copyright 2001-2014 Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
* PS/2 mouse device driver
*
* Authors (in chronological order):
* Elad Lahav ([email protected])
* Stefano Ceccherini ([email protected])
* Elad Lahav, [email protected]
* Stefano Ceccherini, [email protected]
* Axel Dörfler, [email protected]
* Marcus Overhagen <[email protected]>
* Clemens Zeidler <[email protected]>
* Marcus Overhagen, [email protected]
* Clemens Zeidler, [email protected]
* John Scipione, [email protected]
*/
#ifndef __PS2_STANDARD_MOUSE_H
#define __PS2_STANDARD_MOUSE_H
@@ -27,17 +26,17 @@
#define F_MOUSE_TYPE_INTELLIMOUSE 0x2
typedef struct {
ps2_dev* dev;
ps2_dev* dev;
sem_id standard_mouse_sem;
struct packet_buffer* standard_mouse_buffer;
bigtime_t click_last_time;
bigtime_t click_speed;
int click_count;
int buttons_state;
int flags;
size_t packet_index;
uint8 buffer[PS2_MAX_PACKET_SIZE];
sem_id standard_mouse_sem;
struct packet_buffer* standard_mouse_buffer;
bigtime_t click_last_time;
bigtime_t click_speed;
int click_count;
int buttons_state;
int flags;
size_t packet_index;
uint8 buffer[PS2_MAX_PACKET_SIZE];
} standard_mouse_cookie;