summaryrefslogtreecommitdiff
path: root/src/mainboard/asus/k8v-x/mainboard.c
diff options
context:
space:
mode:
authorFlorian Zumbiehl <florz@florz.de>2011-11-01 20:19:41 +0100
committerRudolf Marek <r.marek@assembler.cz>2011-12-03 13:13:36 +0100
commit6cdf5a9e2e545e18f8878698ec9cae61b6ad964b (patch)
tree8be4941749a4a40dc5005ddf6016f40564e2b79a /src/mainboard/asus/k8v-x/mainboard.c
parentf22a6d0c5edac4456eae50f398b5c6ffe6b9e8fe (diff)
adding support for the Asus K8V-X
This pulls it all together and adds the real board-specific code. Confirmed to be working: - IDE - SATA - floppy - USB1.1 - USB2.0 - PS/2 keyboard - PS/2 mouse - serial - parport - sound - ethernet - PCI slots - AGP - powernow - fan speed monitoring - flashrom write Change-Id: Ifb97714c2f009d688be0ca3c38ddc01599ffd799 Signed-off-by: Florian Zumbiehl <florz@florz.de> Reviewed-on: http://review.coreboot.org/390 Reviewed-by: Rudolf Marek <r.marek@assembler.cz> Tested-by: build bot (Jenkins)
Diffstat (limited to 'src/mainboard/asus/k8v-x/mainboard.c')
-rw-r--r--src/mainboard/asus/k8v-x/mainboard.c38
1 files changed, 37 insertions, 1 deletions
diff --git a/src/mainboard/asus/k8v-x/mainboard.c b/src/mainboard/asus/k8v-x/mainboard.c
index b70f396987..3e294b8916 100644
--- a/src/mainboard/asus/k8v-x/mainboard.c
+++ b/src/mainboard/asus/k8v-x/mainboard.c
@@ -2,6 +2,7 @@
* This file is part of the coreboot project.
*
* Copyright (C) 2007 Rudolf Marek <r.marek@assembler.cz>
+ * Copyright (C) 2010 Tobias Diedrich <ranma+coreboot@tdiedrich.de>
*
* 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
@@ -21,8 +22,43 @@
#include <device/device.h>
#include <device/pci.h>
#include <device/pci_ids.h>
+#include <arch/io.h>
+#include "southbridge/via/vt8237r/vt8237r.h"
#include "chip.h"
+u32 vt8237_ide_80pin_detect(struct device *dev)
+{
+ device_t lpc_dev;
+ u16 acpi_io_base;
+ u32 gpio_in;
+ u32 res;
+
+ lpc_dev = dev_find_device(PCI_VENDOR_ID_VIA,
+ PCI_DEVICE_ID_VIA_VT8237R_LPC, 0);
+ if (!lpc_dev)
+ return 0;
+
+ acpi_io_base = pci_read_config16(lpc_dev, 0x88) & ~1;
+ if (!acpi_io_base)
+ return 0;
+
+ /* select function GPIO29 for pin AB9 */
+ pci_write_config8(lpc_dev, 0xe5, pci_read_config8(lpc_dev, 0xe5) | 0x08);
+
+ gpio_in = inl(acpi_io_base + 0x48);
+ /* bit 29 for primary port, clear if unconnected or 80-pin cable */
+ res = gpio_in & (1<<29) ? 0 : VT8237R_IDE0_80PIN_CABLE;
+ /* bit 8 for secondary port, clear if unconnected or 80-pin cable */
+ res |= gpio_in & (1<<8) ? 0 : VT8237R_IDE1_80PIN_CABLE;
+
+ printk(BIOS_INFO, "Cable on %s PATA port: %d pin\n", "primary",
+ res & VT8237R_IDE0_80PIN_CABLE ? 80 : 40);
+ printk(BIOS_INFO, "Cable on %s PATA port: %d pin\n", "secondary",
+ res & VT8237R_IDE1_80PIN_CABLE ? 80 : 40);
+
+ return res;
+}
+
struct chip_operations mainboard_ops = {
- CHIP_NAME("ASUS A8V-E SE Mainboard")
+ CHIP_NAME("ASUS K8V-X Mainboard")
};