aboutsummaryrefslogtreecommitdiff
path: root/src/southbridge/via/common/via_early_smbus.h
diff options
context:
space:
mode:
authorAlexandru Gagniuc <mr.nuke.me@gmail.com>2013-05-21 12:35:08 -0500
committerRonald G. Minnich <rminnich@gmail.com>2013-06-10 19:07:26 +0200
commitee2bc27dc58611e83ec7670163fb8a69aa1adb03 (patch)
tree2e5550e11017706bcc609030b0336d2011f5192f /src/southbridge/via/common/via_early_smbus.h
parentddbfc645c2fb9c2aab55c9d5f7c55fa80fd8da64 (diff)
early_smbus: Add early SMBus implementation for VIA chipsets
Add a common implementation of SMBus functionality for early chipsets. Note however, that existing via chipsets are not ported to this code. Porting will require hardware testing to make sure everything is fine. This code is used in the VIA VX900 branch. Change-Id: If5ad8cd0942ac02d358a0139967e7d85d395660f Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com> Reviewed-on: http://review.coreboot.org/144 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
Diffstat (limited to 'src/southbridge/via/common/via_early_smbus.h')
-rw-r--r--src/southbridge/via/common/via_early_smbus.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/southbridge/via/common/via_early_smbus.h b/src/southbridge/via/common/via_early_smbus.h
new file mode 100644
index 0000000000..aca920b470
--- /dev/null
+++ b/src/southbridge/via/common/via_early_smbus.h
@@ -0,0 +1,56 @@
+/*
+ * 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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * @file via_early_sambus.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 yout 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)
+
+#include <device/early_smbus.h>
+#include <arch/io.h>