All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 1/8] USB Consolidate descriptor definitions
@ 2009-09-04 20:12 Tom Rix
  2009-09-04 20:12 ` [U-Boot] [PATCH 2/8] USB add macros for debugging usb device setup Tom Rix
  0 siblings, 1 reply; 22+ messages in thread
From: Tom Rix @ 2009-09-04 20:12 UTC (permalink / raw)
  To: u-boot

The header files usb.h and usbdescriptors.h have the same or
similarly named structure definitions for

usb_device_descriptor
usb_string_descriptor
usb_endpoint_descriptor
usb_config_descriptor vs usb_configuration_descriptor
usb_interface_descriptor

There should only be one definition of these structures.
Some of these structures are element-wise duplicates,
one has unused elements that can be reduced to a duplicate,
and some of the the structures have additional elements.

These are the element-wise duplicates in usb.h

usb_device_descriptor
usb_string_descriptor

For these, the usb.h definition will be removed.

This definition in usb.h has extra unused elements

usb_endpoint_descriptor

	unsigned char	bRefresh
	unsigned char	bSynchAddress;

The definition of usb_endpoint_descriptor in usb.h will
be removed.

These definitions in usb.h have extra elements at the end of
the usb 2.0 specified descriptor:

usb_config_descriptor
usb_interface_descriptor

These structures will have their name shorted by removing the
'_descriptor' suffix.

So

usb_config_descriptor -> usb_config
usb_interface_descriptor -> usb_interface

The common descriptor elements are now defined by the macros

USB_CONFIG_DESCRIPTOR_DEFINITION
USB_INTERFACE_DESCRIPTOR_DEFINITION

This has been compile tested on MAKEALL arm, ppc and mips.

Signed-off-by: Tom Rix <Tom.Rix@windriver.com>
---
 common/cmd_usb.c            |   12 ++++----
 common/usb.c                |    8 ++--
 common/usb_kbd.c            |    4 +-
 common/usb_storage.c        |    2 +-
 cpu/ppc4xx/usbdev.c         |    4 +-
 drivers/usb/host/ehci-hcd.c |    2 +-
 drivers/usb/musb/musb_hcd.c |    2 +-
 include/usb.h               |   70 +++++-------------------------------------
 include/usbdescriptors.h    |   40 ++++++++++++++----------
 9 files changed, 49 insertions(+), 95 deletions(-)

diff --git a/common/cmd_usb.c b/common/cmd_usb.c
index 7b8ee6b..6f3b095 100644
--- a/common/cmd_usb.c
+++ b/common/cmd_usb.c
@@ -187,14 +187,14 @@ void usb_display_desc(struct usb_device *dev)
 
 }
 
-void usb_display_conf_desc(struct usb_config_descriptor *config,
+void usb_display_conf_desc(struct usb_config *config,
 			   struct usb_device *dev)
 {
 	printf("   Configuration: %d\n", config->bConfigurationValue);
 	printf("   - Interfaces: %d %s%s%dmA\n", config->bNumInterfaces,
 	       (config->bmAttributes & 0x40) ? "Self Powered " : "Bus Powered ",
 	       (config->bmAttributes & 0x20) ? "Remote Wakeup " : "",
-		config->MaxPower*2);
+		config->bMaxPower*2);
 	if (config->iConfiguration) {
 		printf("   - ");
 		usb_display_string(dev, config->iConfiguration);
@@ -202,7 +202,7 @@ void usb_display_conf_desc(struct usb_config_descriptor *config,
 	}
 }
 
-void usb_display_if_desc(struct usb_interface_descriptor *ifdesc,
+void usb_display_if_desc(struct usb_interface *ifdesc,
 			 struct usb_device *dev)
 {
 	printf("     Interface: %d\n", ifdesc->bInterfaceNumber);
@@ -246,8 +246,8 @@ void usb_display_ep_desc(struct usb_endpoint_descriptor *epdesc)
 /* main routine to diasplay the configs, interfaces and endpoints */
 void usb_display_config(struct usb_device *dev)
 {
-	struct usb_config_descriptor *config;
-	struct usb_interface_descriptor *ifdesc;
+	struct usb_config *config;
+	struct usb_interface *ifdesc;
 	struct usb_endpoint_descriptor *epdesc;
 	int i, ii;
 
@@ -321,7 +321,7 @@ void usb_show_tree_graph(struct usb_device *dev, char *pre)
 	printf(" %s (%s, %dmA)\n", usb_get_class_desc(
 					dev->config.if_desc[0].bInterfaceClass),
 					portspeed(dev->speed),
-					dev->config.MaxPower * 2);
+					dev->config.bMaxPower * 2);
 	if (strlen(dev->mf) || strlen(dev->prod) || strlen(dev->serial))
 		printf(" %s  %s %s %s\n", pre, dev->mf, dev->prod, dev->serial);
 	printf(" %s\n", pre);
diff --git a/common/usb.c b/common/usb.c
index 87fca70..6649f8c 100644
--- a/common/usb.c
+++ b/common/usb.c
@@ -440,10 +440,10 @@ int usb_get_configuration_no(struct usb_device *dev,
 {
 	int result;
 	unsigned int tmp;
-	struct usb_config_descriptor *config;
+	struct usb_config *config;
 
 
-	config = (struct usb_config_descriptor *)&buffer[0];
+	config = (struct usb_config *)&buffer[0];
 	result = usb_get_descriptor(dev, USB_DT_CONFIG, cfgno, buffer, 9);
 	if (result < 9) {
 		if (result < 0)
@@ -489,7 +489,7 @@ int usb_set_address(struct usb_device *dev)
  */
 int usb_set_interface(struct usb_device *dev, int interface, int alternate)
 {
-	struct usb_interface_descriptor *if_face = NULL;
+	struct usb_interface *if_face = NULL;
 	int ret, i;
 
 	for (i = 0; i < dev->config.bNumInterfaces; i++) {
@@ -1347,7 +1347,7 @@ int usb_hub_configure(struct usb_device *dev)
 
 int usb_hub_probe(struct usb_device *dev, int ifnum)
 {
-	struct usb_interface_descriptor *iface;
+	struct usb_interface *iface;
 	struct usb_endpoint_descriptor *ep;
 	int ret;
 
diff --git a/common/usb_kbd.c b/common/usb_kbd.c
index b458d77..4e584a2 100644
--- a/common/usb_kbd.c
+++ b/common/usb_kbd.c
@@ -229,7 +229,7 @@ int usb_kbd_deregister(void)
 
 static void usb_kbd_setled(struct usb_device *dev)
 {
-	struct usb_interface_descriptor *iface;
+	struct usb_interface *iface;
 	iface = &dev->config.if_desc[0];
 	leds=0;
 	if(scroll_lock!=0)
@@ -348,7 +348,7 @@ static int usb_kbd_irq(struct usb_device *dev)
 /* probes the USB device dev for keyboard type */
 static int usb_kbd_probe(struct usb_device *dev, unsigned int ifnum)
 {
-	struct usb_interface_descriptor *iface;
+	struct usb_interface *iface;
 	struct usb_endpoint_descriptor *ep;
 	int pipe,maxp;
 
diff --git a/common/usb_storage.c b/common/usb_storage.c
index 19613f2..4afc8ff 100644
--- a/common/usb_storage.c
+++ b/common/usb_storage.c
@@ -1070,7 +1070,7 @@ retry_it:
 int usb_storage_probe(struct usb_device *dev, unsigned int ifnum,
 		      struct us_data *ss)
 {
-	struct usb_interface_descriptor *iface;
+	struct usb_interface *iface;
 	int i;
 	unsigned int flags = 0;
 
diff --git a/cpu/ppc4xx/usbdev.c b/cpu/ppc4xx/usbdev.c
index faf7f08..1df2b8a 100644
--- a/cpu/ppc4xx/usbdev.c
+++ b/cpu/ppc4xx/usbdev.c
@@ -21,7 +21,7 @@ void process_endpoints(unsigned short usb2d0_intrin)
 {
 	/*will hold the packet received */
 	struct usb_device_descriptor usb_device_packet;
-	struct usb_config_descriptor usb_config_packet;
+	struct usb_configuration_descriptor usb_config_packet;
 	struct usb_string_descriptor usb_string_packet;
 	struct devrequest setup_packet;
 	unsigned int *setup_packet_pt;
@@ -99,7 +99,7 @@ void process_endpoints(unsigned short usb2d0_intrin)
 				usb_config_packet.bConfigurationValue = 1;
 				usb_config_packet.iConfiguration = 0;
 				usb_config_packet.bmAttributes = 0x40;
-				usb_config_packet.MaxPower = 0;
+				usb_config_packet.bMaxPower = 0;
 
 				/*put packet in fifo */
 				packet_pt = (unsigned char *)&usb_config_packet;
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
index 324c308..ba85991 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -96,7 +96,7 @@ static struct descriptor {
 				 * UE_DIR_IN | EHCI_INTR_ENDPT
 				 */
 		3,		/* bmAttributes: UE_INTERRUPT */
-		8, 0,		/* wMaxPacketSize */
+		8,		/* wMaxPacketSize */
 		255		/* bInterval */
 	},
 };
diff --git a/drivers/usb/musb/musb_hcd.c b/drivers/usb/musb/musb_hcd.c
index 4ca94cb..555d2dc 100644
--- a/drivers/usb/musb/musb_hcd.c
+++ b/drivers/usb/musb/musb_hcd.c
@@ -803,7 +803,7 @@ void usb_event_poll()
 {
 	struct stdio_dev *dev;
 	struct usb_device *usb_kbd_dev;
-	struct usb_interface_descriptor *iface;
+	struct usb_interface *iface;
 	struct usb_endpoint_descriptor *ep;
 	int pipe;
 	int maxp;
diff --git a/include/usb.h b/include/usb.h
index 7c47098..378a23b 100644
--- a/include/usb.h
+++ b/include/usb.h
@@ -27,6 +27,7 @@
 #define _USB_H_
 
 #include <usb_defs.h>
+#include <usbdescriptors.h>
 
 /* Everything is aribtrary */
 #define USB_ALTSETTINGALLOC		4
@@ -41,13 +42,6 @@
 
 #define USB_CNTL_TIMEOUT 100 /* 100ms timeout */
 
-/* String descriptor */
-struct usb_string_descriptor {
-	unsigned char	bLength;
-	unsigned char	bDescriptorType;
-	unsigned short	wData[1];
-} __attribute__ ((packed));
-
 /* device request (setup) */
 struct devrequest {
 	unsigned char	requesttype;
@@ -63,47 +57,9 @@ struct usb_descriptor_header {
 	unsigned char	bDescriptorType;
 } __attribute__ ((packed));
 
-/* Device descriptor */
-struct usb_device_descriptor {
-	unsigned char	bLength;
-	unsigned char	bDescriptorType;
-	unsigned short	bcdUSB;
-	unsigned char	bDeviceClass;
-	unsigned char	bDeviceSubClass;
-	unsigned char	bDeviceProtocol;
-	unsigned char	bMaxPacketSize0;
-	unsigned short	idVendor;
-	unsigned short	idProduct;
-	unsigned short	bcdDevice;
-	unsigned char	iManufacturer;
-	unsigned char	iProduct;
-	unsigned char	iSerialNumber;
-	unsigned char	bNumConfigurations;
-} __attribute__ ((packed));
-
-/* Endpoint descriptor */
-struct usb_endpoint_descriptor {
-	unsigned char	bLength;
-	unsigned char	bDescriptorType;
-	unsigned char	bEndpointAddress;
-	unsigned char	bmAttributes;
-	unsigned short	wMaxPacketSize;
-	unsigned char	bInterval;
-	unsigned char	bRefresh;
-	unsigned char	bSynchAddress;
-} __attribute__ ((packed)) __attribute__ ((aligned(2)));
-
-/* Interface descriptor */
-struct usb_interface_descriptor {
-	unsigned char	bLength;
-	unsigned char	bDescriptorType;
-	unsigned char	bInterfaceNumber;
-	unsigned char	bAlternateSetting;
-	unsigned char	bNumEndpoints;
-	unsigned char	bInterfaceClass;
-	unsigned char	bInterfaceSubClass;
-	unsigned char	bInterfaceProtocol;
-	unsigned char	iInterface;
+/* Interface */
+struct usb_interface {
+	USB_INTERFACE_DESCRIPTOR_DEFINITION;
 
 	unsigned char	no_of_ep;
 	unsigned char	num_altsetting;
@@ -112,20 +68,12 @@ struct usb_interface_descriptor {
 	struct usb_endpoint_descriptor ep_desc[USB_MAXENDPOINTS];
 } __attribute__ ((packed));
 
-
-/* Configuration descriptor information.. */
-struct usb_config_descriptor {
-	unsigned char	bLength;
-	unsigned char	bDescriptorType;
-	unsigned short	wTotalLength;
-	unsigned char	bNumInterfaces;
-	unsigned char	bConfigurationValue;
-	unsigned char	iConfiguration;
-	unsigned char	bmAttributes;
-	unsigned char	MaxPower;
+/* Configuration information.. */
+struct usb_config {
+	USB_CONFIG_DESCRIPTOR_DEFINITION;
 
 	unsigned char	no_of_if;	/* number of interfaces */
-	struct usb_interface_descriptor if_desc[USB_MAXINTERFACES];
+	struct usb_interface if_desc[USB_MAXINTERFACES];
 } __attribute__ ((packed));
 
 enum {
@@ -156,7 +104,7 @@ struct usb_device {
 
 	int configno;			/* selected config number */
 	struct usb_device_descriptor descriptor; /* Device Descriptor */
-	struct usb_config_descriptor config; /* config descriptor */
+	struct usb_config config; /* config descriptor */
 
 	int have_langid;		/* whether string_langid is valid yet */
 	int string_langid;		/* language ID for strings */
diff --git a/include/usbdescriptors.h b/include/usbdescriptors.h
index a752097..ea05672 100644
--- a/include/usbdescriptors.h
+++ b/include/usbdescriptors.h
@@ -201,27 +201,33 @@ struct usb_endpoint_descriptor {
 	u8 bInterval;
 } __attribute__ ((packed));
 
+#define USB_INTERFACE_DESCRIPTOR_DEFINITION	\
+	u8 bLength;				\
+	u8 bDescriptorType;	/* 0x04 */	\
+	u8 bInterfaceNumber;			\
+	u8 bAlternateSetting;			\
+	u8 bNumEndpoints;			\
+	u8 bInterfaceClass;			\
+	u8 bInterfaceSubClass;			\
+	u8 bInterfaceProtocol;			\
+	u8 iInterface
+
 struct usb_interface_descriptor {
-	u8 bLength;
-	u8 bDescriptorType;	/* 0x04 */
-	u8 bInterfaceNumber;
-	u8 bAlternateSetting;
-	u8 bNumEndpoints;
-	u8 bInterfaceClass;
-	u8 bInterfaceSubClass;
-	u8 bInterfaceProtocol;
-	u8 iInterface;
+	USB_INTERFACE_DESCRIPTOR_DEFINITION;
 } __attribute__ ((packed));
 
+#define USB_CONFIG_DESCRIPTOR_DEFINITION \
+	u8 bLength;				\
+	u8 bDescriptorType;	/* 0x2 */	\
+	u16 wTotalLength;			\
+	u8 bNumInterfaces;			\
+	u8 bConfigurationValue;			\
+	u8 iConfiguration;			\
+	u8 bmAttributes;			\
+	u8 bMaxPower
+
 struct usb_configuration_descriptor {
-	u8 bLength;
-	u8 bDescriptorType;	/* 0x2 */
-	u16 wTotalLength;
-	u8 bNumInterfaces;
-	u8 bConfigurationValue;
-	u8 iConfiguration;
-	u8 bmAttributes;
-	u8 bMaxPower;
+	USB_CONFIG_DESCRIPTOR_DEFINITION;
 } __attribute__ ((packed));
 
 struct usb_device_descriptor {
-- 
1.6.0.4

^ permalink raw reply related	[flat|nested] 22+ messages in thread
* [U-Boot] V2 of OMAP3 USB device Support
@ 2009-09-28 16:34 y at windriver.com
  2009-09-28 16:34 ` [U-Boot] [PATCH 1/8] USB Consolidate descriptor definitions y at windriver.com
  0 siblings, 1 reply; 22+ messages in thread
From: y at windriver.com @ 2009-09-28 16:34 UTC (permalink / raw)
  To: u-boot


The technical change is better handling of address setting on the
usb handshaking setup phase. 

Other changes from Jean's comments

2/8 USB add macros for debugging usb device setup.

static inline function replacing debug macros

3/8 TWL4030 Add usb PHY support

add empty lines between variables and statements
other empty lines added for readablity

4/8 OMAP3 Add usb device support

80+ char lines reduced
Used MUSB_FLAGS_PRINT macro suggestion
lowercased function names
multi-lined ep0_state_enum
Used suggestion on udelay to 1000 * 1000 
add empty lines between variables and statements
inverted check of ep0_urb->device_request.wLength
other empty lines added for readablity

5/8 OMAP3 zoom1 Add usbtty configuration

This was ack-ed by Jean

6/8 OMAP3 beagle Add usbtty configuration

This was ack-ed by Jean

8/8 OMAP3 zoom2 Use usbtty if the debug board

cleanup using usbtty_* functions or their stubs without #define's

^ permalink raw reply	[flat|nested] 22+ messages in thread
* [U-Boot] V2 of OMAP3 USB device Support
@ 2009-09-28 16:37 Tom Rix
  2009-09-28 16:37 ` [U-Boot] [PATCH 1/8] USB Consolidate descriptor definitions Tom Rix
  0 siblings, 1 reply; 22+ messages in thread
From: Tom Rix @ 2009-09-28 16:37 UTC (permalink / raw)
  To: u-boot


The technical change is better handling of address setting on the
usb handshaking setup phase. 

Other changes from Jean's comments

2/8 USB add macros for debugging usb device setup.

static inline function replacing debug macros

3/8 TWL4030 Add usb PHY support

add empty lines between variables and statements
other empty lines added for readablity

4/8 OMAP3 Add usb device support

80+ char lines reduced
Used MUSB_FLAGS_PRINT macro suggestion
lowercased function names
multi-lined ep0_state_enum
Used suggestion on udelay to 1000 * 1000 
add empty lines between variables and statements
inverted check of ep0_urb->device_request.wLength
other empty lines added for readablity

5/8 OMAP3 zoom1 Add usbtty configuration

This was ack-ed by Jean

6/8 OMAP3 beagle Add usbtty configuration

This was ack-ed by Jean

8/8 OMAP3 zoom2 Use usbtty if the debug board

cleanup using usbtty_* functions or their stubs without #define's

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2009-09-28 16:37 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-04 20:12 [U-Boot] [PATCH 1/8] USB Consolidate descriptor definitions Tom Rix
2009-09-04 20:12 ` [U-Boot] [PATCH 2/8] USB add macros for debugging usb device setup Tom Rix
2009-09-04 20:12   ` [U-Boot] [PATCH 3/8] TWL4030 Add usb PHY support Tom Rix
2009-09-04 20:12     ` [U-Boot] [PATCH 4/8] OMAP3 Add usb device support Tom Rix
2009-09-04 20:12       ` [U-Boot] [PATCH 5/8] OMAP3 zoom1 Add usbtty configuration Tom Rix
2009-09-04 20:12         ` [U-Boot] [PATCH 6/8] OMAP3 beagle " Tom Rix
2009-09-04 20:12           ` [U-Boot] [PATCH 7/8] USBTTY make some function declarations easier to use Tom Rix
2009-09-04 20:12             ` [U-Boot] [PATCH 8/8] OMAP3 zoom2 Use usbtty if the debug board is not connected Tom Rix
2009-09-05  0:30               ` Jean-Christophe PLAGNIOL-VILLARD
2009-09-06 13:21                 ` Tom
2009-09-05  0:26           ` [U-Boot] [PATCH 6/8] OMAP3 beagle Add usbtty configuration Jean-Christophe PLAGNIOL-VILLARD
2009-09-05  0:26         ` [U-Boot] [PATCH 5/8] OMAP3 zoom1 " Jean-Christophe PLAGNIOL-VILLARD
2009-09-05  0:25       ` [U-Boot] [PATCH 4/8] OMAP3 Add usb device support Jean-Christophe PLAGNIOL-VILLARD
2009-09-06 13:35         ` Tom
2009-09-06 13:48           ` Jean-Christophe PLAGNIOL-VILLARD
2009-09-05  0:02     ` [U-Boot] [PATCH 3/8] TWL4030 Add usb PHY support Jean-Christophe PLAGNIOL-VILLARD
2009-09-06 13:46       ` Tom
2009-09-06 14:58         ` Jean-Christophe PLAGNIOL-VILLARD
2009-09-05  0:31   ` [U-Boot] [PATCH 2/8] USB add macros for debugging usb device setup Jean-Christophe PLAGNIOL-VILLARD
2009-09-06 13:19     ` Tom
  -- strict thread matches above, loose matches on Subject: below --
2009-09-28 16:34 [U-Boot] V2 of OMAP3 USB device Support y at windriver.com
2009-09-28 16:34 ` [U-Boot] [PATCH 1/8] USB Consolidate descriptor definitions y at windriver.com
2009-09-28 16:34   ` [U-Boot] [PATCH 2/8] USB add macros for debugging usb device setup y at windriver.com
2009-09-28 16:34     ` [U-Boot] [PATCH 3/8] TWL4030 Add usb PHY support y at windriver.com
2009-09-28 16:37 [U-Boot] V2 of OMAP3 USB device Support Tom Rix
2009-09-28 16:37 ` [U-Boot] [PATCH 1/8] USB Consolidate descriptor definitions Tom Rix
2009-09-28 16:37   ` [U-Boot] [PATCH 2/8] USB add macros for debugging usb device setup Tom Rix
2009-09-28 16:37     ` [U-Boot] [PATCH 3/8] TWL4030 Add usb PHY support Tom Rix

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.