make keyboard reset driver generic (not pc keyboard driver dependent) so it can be used by usb, too Signed-off-by: Stefan Reinauer --- include/libpayload.h (revision 5280) +++ include/libpayload.h (working copy) @@ -125,6 +128,9 @@ * @{ @} */ +extern void (*reset_handler)(void); +int add_reset_handler(void (*new_handler)(void)); + /** * @defgroup keyboard Keyboard functions * @ingroup input @@ -135,7 +141,6 @@ unsigned char keyboard_get_scancode(void); int keyboard_getchar(void); int keyboard_set_layout(char *country); -int keyboard_add_reset_handler(void (*new_handler)(void)); /** @} */ /** --- drivers/keyboard.c (revision 5280) +++ drivers/keyboard.c (working copy) @@ -36,16 +36,14 @@ #define I8042_MODE_XLATE 0x40 -static void (*reset_handler)(void) = NULL; - struct layout_maps { char *country; unsigned short map[4][0x57]; }; -struct layout_maps *map; +static struct layout_maps *map; -struct layout_maps keyboard_layouts[] = { +static struct layout_maps keyboard_layouts[] = { #ifdef CONFIG_PC_KEYBOARD_LAYOUT_US { .country = "us", .map = { { /* No modifier */ @@ -319,13 +317,6 @@ return -1; } -int keyboard_add_reset_handler(void (*new_handler)(void)) -{ - reset_handler = new_handler; - - return 0; -} - static struct console_input_driver cons = { .havekey = keyboard_havechar, .getchar = keyboard_getchar --- drivers/Makefile.inc (revision 5280) +++ drivers/Makefile.inc (working copy) @@ -55,3 +55,5 @@ TARGETS-$(CONFIG_USB_HID) += drivers/usb/usbhid.o TARGETS-$(CONFIG_USB_MSC) += drivers/usb/usbmsc.o +# used by both USB HID and keyboard +TARGETS-y += drivers/hid.o --- drivers/hid.c (revision 0) +++ drivers/hid.c (revision 0) @@ -0,0 +1,42 @@ +/* + * This file is part of the libpayload project. + * + * Copyright (C) 2008-2010 coresystems GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +#include + +void (*reset_handler)(void) = NULL; + +int add_reset_handler(void (*new_handler)(void)) +{ + reset_handler = new_handler; + + return 0; +} + +