[coreboot] Patch set updated for coreboot: 42d25f8 libpayload: add controller type in usbdev_hc

Anton Kochkov (anton.kochkov@gmail.com) gerrit at coreboot.org
Fri Jun 29 22:58:20 CEST 2012


Anton Kochkov (anton.kochkov at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/1145

-gerrit

commit 42d25f8403209c331b288ea3df2bce5826ccf0fc
Author: Anton Kochkov <anton.kochkov at gmail.com>
Date:   Thu Jun 28 08:30:15 2012 +0400

    libpayload: add controller type in usbdev_hc
    
    Add controller type (UHCI, OHCI, EHCI or XHCI)
    into usbdev_hc (hci_t) struct, so now we know
    which type selected controller have. It needed
    to access controller specific data, if access
    usb tree outside of libpayload (e.g. in payload
    intself)
    
    Change-Id: I7df947bbb56a50d0d792ccd4d3a6b021ee95e2ea
    Signed-off-by: Anton Kochkov <anton.kochkov at gmail.com>
---
 payloads/libpayload/drivers/usb/ehci.c |    2 ++
 payloads/libpayload/drivers/usb/ohci.c |    2 ++
 payloads/libpayload/drivers/usb/uhci.c |    2 ++
 payloads/libpayload/drivers/usb/xhci.c |    2 ++
 payloads/libpayload/include/usb/usb.h  |    3 +++
 5 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/payloads/libpayload/drivers/usb/ehci.c b/payloads/libpayload/drivers/usb/ehci.c
index 8d84f8d..4d0a209 100644
--- a/payloads/libpayload/drivers/usb/ehci.c
+++ b/payloads/libpayload/drivers/usb/ehci.c
@@ -635,6 +635,8 @@ ehci_init (pcidev_t addr)
 	pci_command = (pci_command | PCI_COMMAND_MEMORY) & ~PCI_COMMAND_IO ;
 	pci_write_config32(addr, PCI_COMMAND, pci_command);
 
+	controller->type = EHCI;
+
 	controller->start = ehci_start;
 	controller->stop = ehci_stop;
 	controller->reset = ehci_reset;
diff --git a/payloads/libpayload/drivers/usb/ohci.c b/payloads/libpayload/drivers/usb/ohci.c
index 8a01cf2..f522d8d 100644
--- a/payloads/libpayload/drivers/usb/ohci.c
+++ b/payloads/libpayload/drivers/usb/ohci.c
@@ -95,6 +95,8 @@ ohci_init (pcidev_t addr)
 	if(!controller->instance)
 		fatal("Not enough memory creating USB controller instance.\n");
 
+	controller->type = OHCI;
+
 	controller->start = ohci_start;
 	controller->stop = ohci_stop;
 	controller->reset = ohci_reset;
diff --git a/payloads/libpayload/drivers/usb/uhci.c b/payloads/libpayload/drivers/usb/uhci.c
index 78f7aba..84b461a 100644
--- a/payloads/libpayload/drivers/usb/uhci.c
+++ b/payloads/libpayload/drivers/usb/uhci.c
@@ -147,6 +147,8 @@ uhci_init (pcidev_t addr)
 	if(!controller->instance)
 		fatal("Not enough memory creating USB controller instance.\n");
 
+	controller->type = UHCI;
+
 	controller->start = uhci_start;
 	controller->stop = uhci_stop;
 	controller->reset = uhci_reset;
diff --git a/payloads/libpayload/drivers/usb/xhci.c b/payloads/libpayload/drivers/usb/xhci.c
index a25cf40..828e0ea 100644
--- a/payloads/libpayload/drivers/usb/xhci.c
+++ b/payloads/libpayload/drivers/usb/xhci.c
@@ -63,6 +63,8 @@ xhci_init (pcidev_t addr)
 	if(!controller->instance)
 		fatal("Not enough memory creating USB controller instance.\n");
 
+	controller->type = XHCI;
+
 	controller->start = xhci_start;
 	controller->stop = xhci_stop;
 	controller->reset = xhci_reset;
diff --git a/payloads/libpayload/include/usb/usb.h b/payloads/libpayload/include/usb/usb.h
index ecfee54..27af9bc 100644
--- a/payloads/libpayload/include/usb/usb.h
+++ b/payloads/libpayload/include/usb/usb.h
@@ -111,10 +111,13 @@ struct usbdev {
 	void (*poll) (usbdev_t *dev);
 };
 
+typedef enum { OHCI = 0, UHCI = 1, EHCI = 2, XHCI = 3} hc_type;
+
 struct usbdev_hc {
 	struct usbdev_hc *next;
 	pcidev_t bus_address;
 	u32 reg_base;
+	hc_type type;
 	usbdev_t *devices[128];	// dev 0 is root hub, 127 is last addressable
 	void (*start) (hci_t *controller);
 	void (*stop) (hci_t *controller);




More information about the coreboot mailing list