From d9628ece50bdbee32b2db9f63bc8cbba10e5ff1a Mon Sep 17 00:00:00 2001 From: "Jonathan A. Kollasch" Date: Sun, 14 Jun 2015 13:13:52 -0500 Subject: [PATCH] winent/mb6047: initialize hardware monitor CPUTIN configuration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ic36727104e5c2f620f9b2b7b340de8548b467397 Signed-off-by: Jonathan A. Kollasch Reviewed-on: http://review.coreboot.org/10547 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel Reviewed-by: Kyösti Mälkki --- src/mainboard/winent/mb6047/mainboard.c | 47 +++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/src/mainboard/winent/mb6047/mainboard.c b/src/mainboard/winent/mb6047/mainboard.c index 6ebe04c869..d5ec572429 100644 --- a/src/mainboard/winent/mb6047/mainboard.c +++ b/src/mainboard/winent/mb6047/mainboard.c @@ -1,7 +1,54 @@ +#include +#include #include +#include +#include +#include + +static void hwm_write(u16 base, u8 bank, u8 reg, u8 value) +{ + outb(0x4e, base + 0x05); + outb(bank, base + 0x06); + outb(reg, base + 0x05); + outb(value, base + 0x06); +} + +static void mb6047_hwm_init(void) +{ + device_t dev; + struct resource *res; + size_t i; + + static const struct { u8 bnk; u8 idx; u8 dat; } hwmtab[] = { + { 0x00, 0x5d, 0x05 }, /* CPUTIN diode */ + { 0x04, 0x55, 0x32 }, /* CPUTIN offset */ + { 0x00, 0x4e, 0x00 }, /* reset bank */ + }; + + dev = dev_find_slot_pnp(0x2e, W83627THG_HWM); + if (dev == NULL) + return; + + res = find_resource(dev, PNP_IDX_IO0); + if (res == NULL) + return; + + printk(BIOS_INFO, "setting up hardware monitor at 0x%04x\n", (unsigned int)res->base); + + /* Init hardware monitor. */ + for (i = 0; i < ARRAY_SIZE(hwmtab); i++) { + hwm_write(res->base, hwmtab[i].bnk, hwmtab[i].idx, hwmtab[i].dat); + } +} + +static void mb6047_mainboard_init(device_t dev) +{ + mb6047_hwm_init(); +} static void mainboard_enable(device_t dev) { + dev->ops->init = mb6047_mainboard_init; } struct chip_operations mainboard_ops = {