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

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 19e00de4 was 5b0de4c, checked in by Jan Vesely <jano.vesely@…>, 14 years ago

xtkbd: Add XT keyboard stub driver.

  • Property mode set to 100644
File size: 3.1 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/** @addtogroup drvkbd
29 * @{
30 */
31/** @file
32 * @brief XT keyboard driver
33 */
34
35#include <libarch/inttypes.h>
36#include <ddf/driver.h>
37#include <devman.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
50static driver_ops_t kbd_driver_ops = {
51 .dev_add = xt_kbd_add,
52};
53
54static driver_t kbd_driver = {
55 .name = NAME,
56 .driver_ops = &kbd_driver_ops
57};
58
59/** Initialize global driver structures (NONE).
60 *
61 * @param[in] argc Nmber of arguments in argv vector (ignored).
62 * @param[in] argv Cmdline argument vector (ignored).
63 * @return Error code.
64 *
65 * Driver debug level is set here.
66 */
67int main(int argc, char *argv[])
68{
69 printf(NAME ": HelenOS XT keyboard driver.\n");
70 ddf_log_init(NAME, LVL_DEBUG2);
71 return ddf_driver_main(&kbd_driver);
72}
73
74/** Initialize a new ddf driver instance of the driver
75 *
76 * @param[in] device DDF instance of the device to initialize.
77 * @return Error code.
78 */
79static int xt_kbd_add(ddf_dev_t *device)
80{
81 if (!device)
82 return EINVAL;
83
84#define CHECK_RET_RETURN(ret, message...) \
85if (ret != EOK) { \
86 ddf_msg(LVL_ERROR, message); \
87 return ret; \
88} else (void)0
89
90 xt_kbd_t *kbd = ddf_dev_data_alloc(device, sizeof(xt_kbd_t));
91 int ret = (kbd == NULL) ? ENOMEM : EOK;
92 CHECK_RET_RETURN(ret, "Failed to allocate XT/KBD driver instance.\n");
93
94 ret = xt_kbd_init(kbd, device);
95 CHECK_RET_RETURN(ret,
96 "Failed to initialize XT_KBD driver: %s.\n", str_error(ret));
97
98 ddf_msg(LVL_NOTE, "Controlling '%s' (%" PRIun ").\n",
99 device->name, device->handle);
100 return EOK;
101}
102/**
103 * @}
104 */
Note: See TracBrowser for help on using the repository browser.