1/*
2 * Copyright 2004-2010 Haiku, Inc.
3 * Distributed under the terms of the MIT License.
4 *
5 * PS/2 bus manager
6 *
7 * Authors (in chronological order):
8 *		Elad Lahav (elad@eldarshany.com)
9 *		Stefano Ceccherini (burton666@libero.it)
10 *		Axel D��rfler, axeld@pinc-software.de
11 *      Marcus Overhagen <marcus@overhagen.de>
12 */
13#ifndef __PS2_COMMON_H
14#define __PS2_COMMON_H
15
16
17#include <ISA.h>
18#include <Drivers.h>
19#include <KernelExport.h>
20#include <OS.h>
21
22#include "ps2_defs.h"
23#include "ps2_dev.h"
24
25
26#if 1
27#	define INFO(x...) dprintf(x)
28#else
29#	define INFO(x...)
30#endif
31#define ERROR(x...) dprintf(x)
32
33//#define TRACE_PS2
34#ifdef TRACE_PS2
35#define TRACE_PS2_ALPS
36#define TRACE_PS2_COMMON
37#define TRACE_PS2_DEV
38#define TRACE_PS2_ELANTECH
39#define TRACE_PS2_MOUSE
40#define TRACE_PS2_KEYBOARD
41#define TRACE_PS2_SERVICE
42#define TRACE_PS2_SYNAPTICS
43#define TRACE_PS2_TRACKPOINT
44#endif
45
46
47// global variables
48extern isa_module_info *gIsa;
49
50extern device_hooks gKeyboardDeviceHooks;
51extern device_hooks gPointingDeviceHooks;
52
53extern bool gActiveMultiplexingEnabled;
54extern bool gSetupComplete;
55extern sem_id gControllerSem;
56
57
58#ifdef __cplusplus
59extern "C" {
60#endif
61
62// prototypes from common.c
63status_t		ps2_init(void);
64void			ps2_uninit(void);
65
66uint8			ps2_read_ctrl(void);
67uint8			ps2_read_data(void);
68void			ps2_write_ctrl(uint8 ctrl);
69void			ps2_write_data(uint8 data);
70status_t		ps2_wait_read(void);
71status_t		ps2_wait_write(void);
72
73void			ps2_flush(void);
74
75extern status_t ps2_command(uint8 cmd, const uint8 *out, int out_count,
76	uint8 *in, int in_count);
77
78// prototypes from keyboard.c & mouse.c
79extern status_t probe_keyboard(void);
80
81#ifdef __cplusplus
82}
83#endif
84
85
86#endif /* __PS2_COMMON_H */
87