diff options
-rw-r--r-- | src/mainboard/hp/pavilion_m6_1035dx/Makefile.inc | 1 | ||||
-rw-r--r-- | src/mainboard/hp/pavilion_m6_1035dx/ec.c | 28 | ||||
-rw-r--r-- | src/mainboard/hp/pavilion_m6_1035dx/ec.h | 11 | ||||
-rw-r--r-- | src/mainboard/hp/pavilion_m6_1035dx/mainboard.c | 4 |
4 files changed, 44 insertions, 0 deletions
diff --git a/src/mainboard/hp/pavilion_m6_1035dx/Makefile.inc b/src/mainboard/hp/pavilion_m6_1035dx/Makefile.inc index 3103f70d11..07ea765df4 100644 --- a/src/mainboard/hp/pavilion_m6_1035dx/Makefile.inc +++ b/src/mainboard/hp/pavilion_m6_1035dx/Makefile.inc @@ -26,3 +26,4 @@ ramstage-y += buildOpts.c ramstage-y += agesawrapper.c ramstage-y += BiosCallOuts.c ramstage-y += PlatformGnbPcie.c +ramstage-y += ec.c diff --git a/src/mainboard/hp/pavilion_m6_1035dx/ec.c b/src/mainboard/hp/pavilion_m6_1035dx/ec.c new file mode 100644 index 0000000000..d61a2e5301 --- /dev/null +++ b/src/mainboard/hp/pavilion_m6_1035dx/ec.c @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2014 Alexandru Gagniuc <mr.nuke.me@gmail.com> + * Subject to the GNU GPL v2, or (at your option) any later version. + */ + +#include "ec.h" +#include <ec/compal/ene932/ec.h> + +/* The keyboard matrix tells the EC how the keyboard is wired internally */ +static void set_keyboard_matrix_us(void) +{ + ec_kbc_write_cmd(0x59); + ec_kbc_write_ib(0xE5); +} + +/* Tell EC to operate in ACPI mode, thus generating SCIs on events, not SMIs */ +static void enter_acpi_mode(void) +{ + ec_kbc_write_cmd(0x59); + ec_kbc_write_ib(0xE8); +} + +void pavilion_m6_1035dx_ec_init(void) +{ + set_keyboard_matrix_us(); + /* This could also be done in an SMI, should we decide to use SMM */ + enter_acpi_mode(); +} diff --git a/src/mainboard/hp/pavilion_m6_1035dx/ec.h b/src/mainboard/hp/pavilion_m6_1035dx/ec.h new file mode 100644 index 0000000000..0c00d7aae0 --- /dev/null +++ b/src/mainboard/hp/pavilion_m6_1035dx/ec.h @@ -0,0 +1,11 @@ +/* + * Copyright (C) 2014 Alexandru Gagniuc <mr.nuke.me@gmail.com> + * Subject to the GNU GPL v2, or (at your option) any later version. + */ + +#ifndef _MAINBOARD_HP_PAVILION_M6_1035DX_EC_H +#define _MAINBOARD_HP_PAVILION_M6_1035DX_EC_H + +void pavilion_m6_1035dx_ec_init(void); + +#endif /* _MAINBOARD_HP_PAVILION_M6_1035DX_EC_H */ diff --git a/src/mainboard/hp/pavilion_m6_1035dx/mainboard.c b/src/mainboard/hp/pavilion_m6_1035dx/mainboard.c index 5ac478f968..2e2b72bf03 100644 --- a/src/mainboard/hp/pavilion_m6_1035dx/mainboard.c +++ b/src/mainboard/hp/pavilion_m6_1035dx/mainboard.c @@ -19,6 +19,7 @@ #include "agesawrapper.h" #include "BiosCallOuts.h" +#include "ec.h" #include <arch/acpi.h> #include <arch/io.h> @@ -35,6 +36,9 @@ static void mainboard_enable(device_t dev) { printk(BIOS_INFO, "Mainboard " CONFIG_MAINBOARD_PART_NUMBER " Enable.\n"); + + pavilion_m6_1035dx_ec_init(); + /* * The mainboard is the first place that we get control in ramstage. Check * for S3 resume and call the approriate AGESA/CIMx resume functions. |