diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/southbridge/via/common/early_smbus_delay.c | 26 | ||||
-rw-r--r-- | src/southbridge/via/common/early_smbus_is_busy.c | 31 | ||||
-rw-r--r-- | src/southbridge/via/common/early_smbus_print_error.c | 51 | ||||
-rw-r--r-- | src/southbridge/via/common/early_smbus_read_byte.c | 51 | ||||
-rw-r--r-- | src/southbridge/via/common/early_smbus_reset.c | 30 | ||||
-rw-r--r-- | src/southbridge/via/common/early_smbus_wait_until_ready.c | 42 | ||||
-rw-r--r-- | src/southbridge/via/common/via_early_smbus.h | 51 |
7 files changed, 0 insertions, 282 deletions
diff --git a/src/southbridge/via/common/early_smbus_delay.c b/src/southbridge/via/common/early_smbus_delay.c deleted file mode 100644 index c75152c3a7..0000000000 --- a/src/southbridge/via/common/early_smbus_delay.c +++ /dev/null @@ -1,26 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * Copyright (C) 2011-2013 Alexandru Gagniuc <mr.nuke.me@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#include <arch/io.h> -#include <device/early_smbus.h> - -/** - * \brief Brief delay for SMBus transactions - */ -void smbus_delay(void) -{ - inb(0x80); -} diff --git a/src/southbridge/via/common/early_smbus_is_busy.c b/src/southbridge/via/common/early_smbus_is_busy.c deleted file mode 100644 index 8321a55bd5..0000000000 --- a/src/southbridge/via/common/early_smbus_is_busy.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * Copyright (C) 2013 Alexandru Gagniuc <mr.nuke.me@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#include <arch/io.h> -#include <device/early_smbus.h> - -#include "via_early_smbus.h" - -/** - * \brief Checks if the SMBus is currently busy with a transaction - * - * @param smbus_dev The base SMBus IO port - */ -int smbus_is_busy(u32 smbus_dev) -{ - /* Check if bit 0 of the status register is 1 (busy) or 0 (ready) */ - return ((inb(SMBHSTSTAT(smbus_dev)) & (1 << 0)) == 1); -} diff --git a/src/southbridge/via/common/early_smbus_print_error.c b/src/southbridge/via/common/early_smbus_print_error.c deleted file mode 100644 index cf65b2ec59..0000000000 --- a/src/southbridge/via/common/early_smbus_print_error.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * Copyright (C) 2013 Alexandru Gagniuc <mr.nuke.me@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#include <device/early_smbus.h> - -#include "via_early_smbus.h" - -/** - * \brief Print an error, should it occur. If no error, just exit. - * - * @param smbus_dev The base SMBus IO port - * @param host_status The data returned on the host status register after - * a transaction is processed. - * @param loops The number of times a transaction was attempted. - * @return 0 if no error occurred - * 1 if an error was detected - */ -int smbus_print_error(u32 smbus_dev, u8 host_status, int loops) -{ - /* Check if there actually was an error. */ - if ((host_status == 0x00 || host_status == 0x40 || - host_status == 0x42) && (loops < SMBUS_TIMEOUT)) - return 0; - - if (loops >= SMBUS_TIMEOUT) - printsmbus("SMBus timeout\n"); - if (host_status & (1 << 4)) - printsmbus("Interrupt/SMI# was Failed Bus Transaction\n"); - if (host_status & (1 << 3)) - printsmbus("Bus error\n"); - if (host_status & (1 << 2)) - printsmbus("Device error\n"); - if (host_status & (1 << 1)) - printsmbus("Interrupt/SMI# completed successfully\n"); - if (host_status & (1 << 0)) - printsmbus("Host busy\n"); - return 1; -} diff --git a/src/southbridge/via/common/early_smbus_read_byte.c b/src/southbridge/via/common/early_smbus_read_byte.c deleted file mode 100644 index 4f6e29e71b..0000000000 --- a/src/southbridge/via/common/early_smbus_read_byte.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * Copyright (C) 2013 Alexandru Gagniuc <mr.nuke.me@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#include <arch/io.h> -#include <device/early_smbus.h> - -#include "via_early_smbus.h" - -/** - * \brief Read a byte from the SMBus. - * - * @param smbus_dev The base SMBus IO port - * @param addr The address location of the DIMM on the SMBus. - * @param offset The offset the data is located at. - */ -u8 smbus_read_byte(u32 smbus_dev, u8 addr, u8 offset) -{ - u8 val; - - /* Initialize SMBus sequence */ - smbus_reset(smbus_dev); - /* Clear host data port. */ - outb(0x00, SMBHSTDAT0(smbus_dev)); - - smbus_wait_until_ready(smbus_dev); - - /* Actual addr to reg format. */ - addr = (addr << 1); - addr |= 1; /* read command */ - outb(addr, SMBXMITADD(smbus_dev)); - outb(offset, SMBHSTCMD(smbus_dev)); - /* Start transaction, byte data read. */ - outb(0x48, SMBHSTCTL(smbus_dev)); - smbus_wait_until_ready(smbus_dev); - - val = inb(SMBHSTDAT0(smbus_dev)); - return val; -} diff --git a/src/southbridge/via/common/early_smbus_reset.c b/src/southbridge/via/common/early_smbus_reset.c deleted file mode 100644 index 44975408cb..0000000000 --- a/src/southbridge/via/common/early_smbus_reset.c +++ /dev/null @@ -1,30 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * Copyright (C) 2013 Alexandru Gagniuc <mr.nuke.me@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#include <arch/io.h> -#include <device/early_smbus.h> - -#include "via_early_smbus.h" - -/** - * \brief Clear the SMBus host status register - * - * @param smbus_dev The base SMBus IO port - */ -void smbus_reset(u32 smbus_dev) -{ - outb(0xdf, SMBHSTSTAT(smbus_dev)); -} diff --git a/src/southbridge/via/common/early_smbus_wait_until_ready.c b/src/southbridge/via/common/early_smbus_wait_until_ready.c deleted file mode 100644 index 6b189362ec..0000000000 --- a/src/southbridge/via/common/early_smbus_wait_until_ready.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * Copyright (C) 2013 Alexandru Gagniuc <mr.nuke.me@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#include <arch/io.h> -#include <device/early_smbus.h> - -#include "via_early_smbus.h" - -/** - * \brief Wait for the SMBus to become ready to process a new transaction. - * - * @param smbus_dev The base SMBus IO port - */ -int smbus_wait_until_ready(u32 smbus_dev) -{ - int loops; - - printsmbus("Waiting until SMBus ready\n"); - - /* Loop up to SMBUS_TIMEOUT times, waiting for bit 0 of the - * SMBus Host Status register to go to 0, indicating the operation - * was completed successfully. I don't remember why I did it this way, - * but I think it was because ROMCC was running low on registers */ - loops = 0; - while (smbus_is_busy(smbus_dev) && loops < SMBUS_TIMEOUT) - ++loops; - - return smbus_print_error(smbus_dev, inb(SMBHSTSTAT(smbus_dev)), loops); -} diff --git a/src/southbridge/via/common/via_early_smbus.h b/src/southbridge/via/common/via_early_smbus.h deleted file mode 100644 index 1dce9b6049..0000000000 --- a/src/southbridge/via/common/via_early_smbus.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * Copyright (C) 2013 Alexandru Gagniuc <mr.nuke.me@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -/** - * @file via_early_smbus.h - * - * This file contains generic definitions used in VIA SMBus controllers. - * - * Functions defined in device/early/smbus.h are each implemented in a separate - * early_smbus_[func_name].c file. This makes it possible to override any of - * these functions by not including them in your build, via Makefile.c. This is - * useful when there is a need to work around chipset bugs. - * - * These implementations work with most via chipsets. Any VIA port should try - * to use these. Makefile.inc needs to be adapted to link against the files - * providing SMBus functionality: - * @code - * romstage-y += ./../../../southbridge/via/common/early_smbus_func.c - * @endcode - */ - -/** - * \brief SMBus IO ports in relation to the base IO port - */ - -#define SMBHSTSTAT(base) ((u16)base + 0x0) -#define SMBSLVSTAT(base) ((u16)base + 0x1) -#define SMBHSTCTL(base) ((u16)base + 0x2) -#define SMBHSTCMD(base) ((u16)base + 0x3) -#define SMBXMITADD(base) ((u16)base + 0x4) -#define SMBHSTDAT0(base) ((u16)base + 0x5) -#define SMBHSTDAT1(base) ((u16)base + 0x6) -#define SMBBLKDAT(base) ((u16)base + 0x7) -#define SMBSLVCTL(base) ((u16)base + 0x8) -#define SMBTRNSADD(base) ((u16)base + 0x9) -#define SMBSLVDATA (base) ((u16)base + 0xa) - -#define SMBUS_TIMEOUT (100*1000*10) |