From 1beabe10cded46a7b21b6ab163f95b1e19172492 Mon Sep 17 00:00:00 2001 From: Stefan Reinauer Date: Thu, 25 Mar 2010 18:52:24 +0000 Subject: make keyboard reset driver generic (not pc keyboard driver dependent) so it can be used by usb, too Signed-off-by: Stefan Reinauer Acked-by: Patrick Georgi git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5291 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- payloads/libpayload/drivers/Makefile.inc | 2 ++ payloads/libpayload/drivers/hid.c | 42 ++++++++++++++++++++++++++++++++ payloads/libpayload/drivers/keyboard.c | 13 ++-------- payloads/libpayload/include/libpayload.h | 4 ++- 4 files changed, 49 insertions(+), 12 deletions(-) create mode 100644 payloads/libpayload/drivers/hid.c diff --git a/payloads/libpayload/drivers/Makefile.inc b/payloads/libpayload/drivers/Makefile.inc index a9ece921ed..07f50299bd 100644 --- a/payloads/libpayload/drivers/Makefile.inc +++ b/payloads/libpayload/drivers/Makefile.inc @@ -58,3 +58,5 @@ TARGETS-$(CONFIG_USB_UHCI) += drivers/usb/uhci_rh.o 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 diff --git a/payloads/libpayload/drivers/hid.c b/payloads/libpayload/drivers/hid.c new file mode 100644 index 0000000000..60b4856fe9 --- /dev/null +++ b/payloads/libpayload/drivers/hid.c @@ -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; +} + + diff --git a/payloads/libpayload/drivers/keyboard.c b/payloads/libpayload/drivers/keyboard.c index ecec60c35f..7bdcb6013f 100644 --- a/payloads/libpayload/drivers/keyboard.c +++ b/payloads/libpayload/drivers/keyboard.c @@ -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 @@ int keyboard_set_layout(char *country) 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 diff --git a/payloads/libpayload/include/libpayload.h b/payloads/libpayload/include/libpayload.h index 6d48279628..4e96c6690a 100644 --- a/payloads/libpayload/include/libpayload.h +++ b/payloads/libpayload/include/libpayload.h @@ -125,6 +125,9 @@ int usbhid_getchar(void); * @{ @} */ +extern void (*reset_handler)(void); +int add_reset_handler(void (*new_handler)(void)); + /** * @defgroup keyboard Keyboard functions * @ingroup input @@ -135,7 +138,6 @@ int keyboard_havechar(void); 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)); /** @} */ /** -- cgit v1.2.3