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