summaryrefslogtreecommitdiff
path: root/src/mainboard/kontron/986lcd-m/mainboard.c
diff options
context:
space:
mode:
authorArthur Heymans <arthur@aheymans.xyz>2018-12-16 01:04:24 +0100
committerPatrick Georgi <pgeorgi@google.com>2019-01-17 14:54:39 +0000
commitcf2783882f914c2a50d06a7a31130ecb0b160f05 (patch)
tree9a966d9efc9a347c376008e035a9884d7e21bca5 /src/mainboard/kontron/986lcd-m/mainboard.c
parente6e5ecb7e813fa151c558c739d5394dce0a2af8e (diff)
downloadcoreboot-cf2783882f914c2a50d06a7a31130ecb0b160f05.tar.xz
mb/kontron/986lcd-m: Implement disabling ethernet NIC in ramstage
With the i82801gx code automatically disabling devices ethernet NICs attached to the southbridge PCIe ports can now be disabled during the ramstage. Change-Id: If4163f8101d37cc09c0b51b1be20bf8388ed2b89 Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/30245 Reviewed-by: Patrick Georgi <pgeorgi@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/mainboard/kontron/986lcd-m/mainboard.c')
-rw-r--r--src/mainboard/kontron/986lcd-m/mainboard.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/mainboard/kontron/986lcd-m/mainboard.c b/src/mainboard/kontron/986lcd-m/mainboard.c
index cc32b998ec..d0d6c6bdbe 100644
--- a/src/mainboard/kontron/986lcd-m/mainboard.c
+++ b/src/mainboard/kontron/986lcd-m/mainboard.c
@@ -13,8 +13,10 @@
* GNU General Public License for more details.
*/
+#include <string.h>
#include <types.h>
#include <device/device.h>
+#include <device/pci_def.h>
#include <console/console.h>
#include <drivers/intel/gma/int15.h>
#include <pc80/mc146818rtc.h>
@@ -157,6 +159,32 @@ static void mainboard_enable(struct device *dev)
hwm_setup();
}
+static void mainboard_init(void *chip_info)
+{
+ int i;
+ struct device *dev;
+
+ for (i = 1; i <= 3; i++) {
+ int ethernet_disable = 0;
+ char cmos_option_name[] = "ethernetx";
+ snprintf(cmos_option_name, sizeof(cmos_option_name),
+ "ethernet%01d", i);
+ get_option(&ethernet_disable, cmos_option_name);
+ if (!ethernet_disable)
+ continue;
+ printk(BIOS_DEBUG, "Disabling Ethernet NIC #%d\n", i);
+ dev = dev_find_slot(0, PCI_DEVFN(28, i - 1));
+ if (dev == NULL) {
+ printk(BIOS_ERR,
+ "Disabling Ethernet NIC: Cannot find 00:1c.%d!\n",
+ i - 1);
+ continue;
+ }
+ dev->enabled = 0;
+ }
+}
+
struct chip_operations mainboard_ops = {
+ .init = mainboard_init,
.enable_dev = mainboard_enable,
};