[coreboot] r3672 - in trunk/payloads/libpayload: drivers include

svn at coreboot.org svn at coreboot.org
Mon Oct 20 18:51:20 CEST 2008


Author: jcrouse
Date: 2008-10-20 18:51:20 +0200 (Mon, 20 Oct 2008)
New Revision: 3672

Modified:
   trunk/payloads/libpayload/drivers/pci.c
   trunk/payloads/libpayload/include/pci.h
Log:
[PATCH] libpayload:  Add pci_set_bus_master() function

Allow the payload to enable a PCI device as a bus master.

Signed-off-by: Jordan Crouse <jordan.crouse at amd.com>
Acked-by: Patrick Georgi <patrick.georgi at coresystems.de>


Modified: trunk/payloads/libpayload/drivers/pci.c
===================================================================
--- trunk/payloads/libpayload/drivers/pci.c	2008-10-20 16:50:47 UTC (rev 3671)
+++ trunk/payloads/libpayload/drivers/pci.c	2008-10-20 16:51:20 UTC (rev 3672)
@@ -112,3 +112,11 @@
 {
 	return pci_read_config32(dev, 0x10 + (bar * 4));
 }
+
+void pci_set_bus_master(pcidev_t dev)
+{
+	u16 val = pci_read_config16(dev, REG_COMMAND);
+	val |= REG_COMMAND_BM;
+	pci_write_config16(dev, REG_COMMAND, val);
+}
+

Modified: trunk/payloads/libpayload/include/pci.h
===================================================================
--- trunk/payloads/libpayload/include/pci.h	2008-10-20 16:50:47 UTC (rev 3671)
+++ trunk/payloads/libpayload/include/pci.h	2008-10-20 16:51:20 UTC (rev 3672)
@@ -35,10 +35,12 @@
 typedef u32 pcidev_t;
 
 #define REG_VENDOR_ID   0x00
-#define REG_DEVICE_ID   0x04
+#define REG_COMMAND     0x04
 #define REG_HEADER_TYPE 0x0E
 #define REG_PRIMARY_BUS 0x18
 
+#define REG_COMMAND_BM  (1 << 2)
+
 #define HEADER_TYPE_NORMAL  0
 #define HEADER_TYPE_BRIDGE  1
 #define HEADER_TYPE_CARDBUS 2
@@ -64,4 +66,6 @@
 int pci_find_device(u16 vid, u16 did, pcidev_t *dev);
 u32 pci_read_resource(pcidev_t dev, int bar);
 
+void pci_set_bus_master(pcidev_t dev);
+
 #endif





More information about the coreboot mailing list