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
32//#define TRACE_PS2
33#ifdef TRACE_PS2
34#	define TRACE(x...) dprintf(x)
35#else
36#	define TRACE(x...)
37#endif
38
39
40// global variables
41extern isa_module_info *gIsa;
42
43extern device_hooks gKeyboardDeviceHooks;
44extern device_hooks gPointingDeviceHooks;
45
46extern bool gActiveMultiplexingEnabled;
47extern sem_id gControllerSem;
48
49
50#ifdef __cplusplus
51extern "C" {
52#endif
53
54// prototypes from common.c
55status_t		ps2_init(void);
56void			ps2_uninit(void);
57
58uint8			ps2_read_ctrl(void);
59uint8			ps2_read_data(void);
60void			ps2_write_ctrl(uint8 ctrl);
61void			ps2_write_data(uint8 data);
62status_t		ps2_wait_read(void);
63status_t		ps2_wait_write(void);
64
65void			ps2_flush(void);
66
67extern status_t ps2_command(uint8 cmd, const uint8 *out, int out_count,
68	uint8 *in, int in_count);
69
70// prototypes from keyboard.c & mouse.c
71extern status_t probe_keyboard(void);
72
73#ifdef __cplusplus
74}
75#endif
76
77
78#endif /* __PS2_COMMON_H */
79