[coreboot] [commit] r5616 - in trunk/payloads/libpayload: drivers/usb include/usb

repository service svn at coreboot.org
Mon Jun 7 15:58:18 CEST 2010


Author: oxygene
Date: Mon Jun  7 15:58:17 2010
New Revision: 5616
URL: https://tracker.coreboot.org/trac/coreboot/changeset/5616

Log:
Avoid using the name "pid_t", which is used on unixoid systems.
Move controller specific data structures into private headers,
to avoid conflicts between controller drivers.
Factor out the USB PID ids, which are only exposed on UHCI. It's
of not much use on the other controllers.

Signed-off-by: Patrick Georgi <patrick.georgi at coresystems.de>
Acked-by: Stefan Reinauer <stepan at coresystems.de>

Added:
   trunk/payloads/libpayload/drivers/usb/uhci_private.h
      - copied, changed from r5615, trunk/payloads/libpayload/drivers/usb/uhci.h
Modified:
   trunk/payloads/libpayload/drivers/usb/uhci.c
   trunk/payloads/libpayload/drivers/usb/uhci.h
   trunk/payloads/libpayload/drivers/usb/uhci_rh.c
   trunk/payloads/libpayload/include/usb/usb.h

Modified: trunk/payloads/libpayload/drivers/usb/uhci.c
==============================================================================
--- trunk/payloads/libpayload/drivers/usb/uhci.c	Mon Jun  7 10:29:36 2010	(r5615)
+++ trunk/payloads/libpayload/drivers/usb/uhci.c	Mon Jun  7 15:58:17 2010	(r5616)
@@ -29,16 +29,17 @@
 
 //#define USB_DEBUG
 
+#include <arch/virtual.h>
 #include <usb/usb.h>
 #include "uhci.h"
-#include <arch/virtual.h>
+#include "uhci_private.h"
 
 static void uhci_start (hci_t *controller);
 static void uhci_stop (hci_t *controller);
 static void uhci_reset (hci_t *controller);
 static void uhci_shutdown (hci_t *controller);
 static int uhci_bulk (endpoint_t *ep, int size, u8 *data, int finalize);
-static int uhci_control (usbdev_t *dev, pid_t dir, int drlen, void *devreq,
+static int uhci_control (usbdev_t *dev, direction_t dir, int drlen, void *devreq,
 			 int dalen, u8 *data);
 static void* uhci_create_intr_queue (endpoint_t *ep, int reqsize, int reqcount, int reqtiming);
 static void uhci_destroy_intr_queue (endpoint_t *ep, void *queue);
@@ -66,13 +67,13 @@
 	char td_value[3];
 	char *td_type;
 	switch (td->pid) {
-		case SETUP:
+		case UHCI_SETUP:
 			td_type="SETUP";
 			break;
-		case IN:
+		case UHCI_IN:
 			td_type="IN";
 			break;
-		case OUT:
+		case UHCI_OUT:
 			td_type="OUT";
 			break;
 		default:
@@ -296,7 +297,7 @@
 }
 
 static int
-uhci_control (usbdev_t *dev, pid_t dir, int drlen, void *devreq, int dalen,
+uhci_control (usbdev_t *dev, direction_t dir, int drlen, void *devreq, int dalen,
 	      unsigned char *data)
 {
 	int endp = 0;		/* this is control: always 0 */
@@ -316,7 +317,7 @@
 	tds[count].depth_first = 1;
 	tds[count].terminate = 1;
 
-	tds[0].pid = SETUP;
+	tds[0].pid = UHCI_SETUP;
 	tds[0].dev_addr = dev->address;
 	tds[0].endp = endp;
 	tds[0].maxlen = maxlen (drlen);
@@ -328,7 +329,11 @@
 
 	int toggle = 1;
 	for (i = 1; i < count; i++) {
-		tds[i].pid = dir;
+		switch (dir) {
+			case SETUP: tds[i].pid = UHCI_SETUP; break;
+			case IN:    tds[i].pid = UHCI_IN;    break;
+			case OUT:   tds[i].pid = UHCI_OUT;   break;
+		}
 		tds[i].dev_addr = dev->address;
 		tds[i].endp = endp;
 		tds[i].maxlen = maxlen (min (mlen, dalen));
@@ -342,7 +347,7 @@
 		data += mlen;
 	}
 
-	tds[count].pid = (dir == OUT) ? IN : OUT;
+	tds[count].pid = (dir == OUT) ? UHCI_IN : UHCI_OUT;
 	tds[count].dev_addr = dev->address;
 	tds[count].endp = endp;
 	tds[count].maxlen = maxlen (0);

Modified: trunk/payloads/libpayload/drivers/usb/uhci.h
==============================================================================
--- trunk/payloads/libpayload/drivers/usb/uhci.h	Mon Jun  7 10:29:36 2010	(r5615)
+++ trunk/payloads/libpayload/drivers/usb/uhci.h	Mon Jun  7 15:58:17 2010	(r5616)
@@ -33,90 +33,6 @@
 #include <pci.h>
 #include <usb/usb.h>
 
-typedef union {
-	struct {
-		unsigned long terminate:1;
-		unsigned long queue_head:1;
-		unsigned long:2;
-		unsigned long ptr_part:28;
-	};
-	u32 ptr;
-} __attribute__ ((packed)) flistp_t;
-
-typedef struct {
-	union {
-		struct {
-			unsigned long terminate:1;
-			unsigned long queue_head:1;
-			unsigned long depth_first:1;
-			unsigned long:29;
-		} __attribute__ ((packed));
-		u32 ptr;
-	} __attribute__ ((packed));
-
-	volatile unsigned long actlen:11;
-	volatile unsigned long:5;
-	union {
-		struct {
-			unsigned long:1;	// bit 0
-			unsigned long status_bitstuff_err:1;
-			unsigned long status_crc_err:1;
-			unsigned long status_nakrcvd:1;
-			unsigned long status_babble:1;
-			unsigned long status_databuf_err:1;
-			unsigned long status_stalled:1;
-			unsigned long status_active:1;	// bit 7
-		} __attribute__ ((packed));
-		unsigned char status;
-	} __attribute__ ((packed));
-	volatile unsigned long ioc:1;	/* interrupt on complete */
-	volatile unsigned long isochronous:1;
-	volatile unsigned long lowspeed:1;
-	volatile unsigned long counter:2;
-	volatile unsigned long shortpck:1;
-	volatile unsigned long:2;
-
-	unsigned long pid:8;
-	unsigned long dev_addr:7;
-	unsigned long endp:4;
-	unsigned long data_toggle:1;
-	unsigned long:1;
-	unsigned long maxlen:11;
-
-	u32 bufptr;
-
-} __attribute__ ((packed))
-     td_t;
-
-     typedef struct {
-	     flistp_t headlinkptr;
-	     volatile flistp_t elementlinkptr;
-     } __attribute__ ((packed))
-     qh_t;
-
-     typedef enum { USBCMD = 0, USBSTS = 2, USBINTR = 4, FRNUM =
-		     6, FLBASEADD = 8, SOFMOD = 0xc, PORTSC1 = 0x10, PORTSC2 =
-		     0x12
-     } usbreg;
-
-     void uhci_reg_write32 (hci_t *ctrl, usbreg reg, u32 value);
-     u32 uhci_reg_read32 (hci_t *ctrl, usbreg reg);
-     void uhci_reg_write16 (hci_t *ctrl, usbreg reg, u16 value);
-     u16 uhci_reg_read16 (hci_t *ctrl, usbreg reg);
-     void uhci_reg_write8 (hci_t *ctrl, usbreg reg, u8 value);
-     u8 uhci_reg_read8 (hci_t *ctrl, usbreg reg);
-     void uhci_reg_mask32 (hci_t *ctrl, usbreg reg, u32 andmask, u32 ormask);
-     void uhci_reg_mask16 (hci_t *ctrl, usbreg reg, u16 andmask, u16 ormask);
-     void uhci_reg_mask8 (hci_t *ctrl, usbreg reg, u8 andmask, u8 ormask);
-
-     typedef struct uhci {
-	     flistp_t *framelistptr;
-	     qh_t *qh_prei, *qh_intr, *qh_data, *qh_last;
-	     usbdev_t *roothub;
-     } uhci_t;
-
-#define UHCI_INST(controller) ((uhci_t*)((controller)->instance))
-
      hci_t *uhci_init (pcidev_t addr);
 
      void uhci_rh_init (usbdev_t *dev);

Copied and modified: trunk/payloads/libpayload/drivers/usb/uhci_private.h (from r5615, trunk/payloads/libpayload/drivers/usb/uhci.h)
==============================================================================
--- trunk/payloads/libpayload/drivers/usb/uhci.h	Mon Jun  7 10:29:36 2010	(r5615, copy source)
+++ trunk/payloads/libpayload/drivers/usb/uhci_private.h	Mon Jun  7 15:58:17 2010	(r5616)
@@ -27,11 +27,10 @@
  * SUCH DAMAGE.
  */
 
-#ifndef __UHCI_H
-#define __UHCI_H
+#ifndef __UHCI_PRIVATE_H
+#define __UHCI_PRIVATE_H
 
-#include <pci.h>
-#include <usb/usb.h>
+typedef enum { UHCI_SETUP = 0x2d, UHCI_IN = 0x69, UHCI_OUT = 0xe1 } uhci_pid_t;
 
 typedef union {
 	struct {
@@ -117,8 +116,4 @@
 
 #define UHCI_INST(controller) ((uhci_t*)((controller)->instance))
 
-     hci_t *uhci_init (pcidev_t addr);
-
-     void uhci_rh_init (usbdev_t *dev);
-
 #endif

Modified: trunk/payloads/libpayload/drivers/usb/uhci_rh.c
==============================================================================
--- trunk/payloads/libpayload/drivers/usb/uhci_rh.c	Mon Jun  7 10:29:36 2010	(r5615)
+++ trunk/payloads/libpayload/drivers/usb/uhci_rh.c	Mon Jun  7 15:58:17 2010	(r5616)
@@ -31,6 +31,7 @@
 
 #include <libpayload.h>
 #include "uhci.h"
+#include "uhci_private.h"
 
 typedef struct {
 	int port[2];

Modified: trunk/payloads/libpayload/include/usb/usb.h
==============================================================================
--- trunk/payloads/libpayload/include/usb/usb.h	Mon Jun  7 10:29:36 2010	(r5615)
+++ trunk/payloads/libpayload/include/usb/usb.h	Mon Jun  7 15:58:17 2010	(r5616)
@@ -80,14 +80,14 @@
 struct usbdev;
 typedef struct usbdev usbdev_t;
 
-typedef enum { SETUP = 0x2d, IN = 0x69, OUT = 0xe1 } pid_t;
+typedef enum { SETUP, IN, OUT } direction_t;
 typedef enum { CONTROL = 0, ISOCHRONOUS = 1, BULK = 2, INTERRUPT = 3
 } endpoint_type;
 
 typedef struct {
 	usbdev_t *dev;
 	int endpoint;
-	pid_t direction;
+	direction_t direction;
 	int toggle;
 	int maxpacketsize;
 	endpoint_type type;
@@ -121,7 +121,7 @@
 	void (*reset) (hci_t *controller);
 	void (*shutdown) (hci_t *controller);
 	int (*bulk) (endpoint_t *ep, int size, u8 *data, int finalize);
-	int (*control) (usbdev_t *dev, pid_t pid, int dr_length,
+	int (*control) (usbdev_t *dev, direction_t pid, int dr_length,
 			void *devreq, int data_length, u8 *data);
 	void* (*create_intr_queue) (endpoint_t *ep, int reqsize, int reqcount, int reqtiming);
 	void (*destroy_intr_queue) (endpoint_t *ep, void *queue);




More information about the coreboot mailing list