source: mainline/uspace/drv/char/xtkbd/main.c@ fd9f4ffe

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since fd9f4ffe was c072a29, checked in by Martin Decky <martin@…>, 11 years ago

use the PAUSE / BREAK key to activate the kernel console in compositor (F15 on some strange keyboards)
this avoids issues with stuck modifier keys and other surprises
it is also unlikely that any client applications would like to use these keys

  • Property mode set to 100644
File size: 3.0 KB
Line 
1/*
2 * Copyright (c) 2011 Jan Vesely
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29/** @addtogroup drvkbd
30 * @{
31 */
32/** @file
33 * @brief XT keyboard driver
34 */
35
36#include <libarch/inttypes.h>
37#include <ddf/driver.h>
38#include <device/hw_res_parsed.h>
39#include <errno.h>
40#include <str_error.h>
41#include <ddf/log.h>
42#include <stdio.h>
43
44#include "xtkbd.h"
45
46#define NAME "xtkbd"
47
48static int xt_kbd_add(ddf_dev_t *device);
49
50/** DDF driver ops. */
51static driver_ops_t kbd_driver_ops = {
52 .dev_add = xt_kbd_add,
53};
54
55/** DDF driver structure. */
56static driver_t kbd_driver = {
57 .name = NAME,
58 .driver_ops = &kbd_driver_ops
59};
60
61/** Initialize global driver structures (NONE).
62 *
63 * Driver debug level is set here.
64 *
65 * @param[in] argc Nmber of arguments in argv vector (ignored).
66 * @param[in] argv Cmdline argument vector (ignored).
67 *
68 * @return Error code.
69 *
70 */
71int main(int argc, char *argv[])
72{
73 printf(NAME ": HelenOS XT keyboard driver.\n");
74 ddf_log_init(NAME);
75 return ddf_driver_main(&kbd_driver);
76}
77
78/** Initialize a new ddf driver instance of the driver
79 *
80 * @param[in] device DDF instance of the device to initialize.
81 *
82 * @return Error code.
83 *
84 */
85static int xt_kbd_add(ddf_dev_t *device)
86{
87 int rc;
88
89 if (!device)
90 return EINVAL;
91
92 xt_kbd_t *kbd = ddf_dev_data_alloc(device, sizeof(xt_kbd_t));
93 if (kbd == NULL) {
94 ddf_msg(LVL_ERROR, "Failed to allocate XT/KBD driver instance.");
95 return ENOMEM;
96 }
97
98 rc = xt_kbd_init(kbd, device);
99 if (rc != EOK) {
100 ddf_msg(LVL_ERROR, "Failed to initialize XT_KBD driver: %s.",
101 str_error(rc));
102 return rc;
103 }
104
105 ddf_msg(LVL_NOTE, "Controlling '%s' (%" PRIun ").",
106 ddf_dev_get_name(device), ddf_dev_get_handle(device));
107 return EOK;
108}
109
110/**
111 * @}
112 */
Note: See TracBrowser for help on using the repository browser.