Commit de39f8c1 authored by Michael Trimarchi's avatar Michael Trimarchi Committed by Remy Böhmer
Browse files

USB style patch, 80 chars strict



USB Code style patch
Signed-off-by: default avatarMichael Trimarchi <trimarchi@gandalf.sssup.it>
Signed-off-by: default avatarRemy Böhmer <linux@bohmer.net>
parent d10c5a87
This diff is collapsed.
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
#undef USB_DEBUG #undef USB_DEBUG
#ifdef USB_DEBUG #ifdef USB_DEBUG
#define USB_PRINTF(fmt, args...) printf (fmt , ##args) #define USB_PRINTF(fmt, args...) printf(fmt , ##args)
#else #else
#define USB_PRINTF(fmt, args...) #define USB_PRINTF(fmt, args...)
#endif #endif
...@@ -87,11 +87,12 @@ static int hub_port_reset(struct usb_device *dev, int port, ...@@ -87,11 +87,12 @@ static int hub_port_reset(struct usb_device *dev, int port,
* wait_ms * wait_ms
*/ */
void __inline__ wait_ms(unsigned long ms) inline void wait_ms(unsigned long ms)
{ {
while (ms-- > 0) while (ms-- > 0)
udelay(1000); udelay(1000);
} }
/*************************************************************************** /***************************************************************************
* Init USB Device * Init USB Device
*/ */
...@@ -245,9 +246,9 @@ int usb_maxpacket(struct usb_device *dev, unsigned long pipe) ...@@ -245,9 +246,9 @@ int usb_maxpacket(struct usb_device *dev, unsigned long pipe)
{ {
/* direction is out -> use emaxpacket out */ /* direction is out -> use emaxpacket out */
if ((pipe & USB_DIR_IN) == 0) if ((pipe & USB_DIR_IN) == 0)
return(dev->epmaxpacketout[((pipe>>15) & 0xf)]); return dev->epmaxpacketout[((pipe>>15) & 0xf)];
else else
return(dev->epmaxpacketin[((pipe>>15) & 0xf)]); return dev->epmaxpacketin[((pipe>>15) & 0xf)];
} }
/* The routine usb_set_maxpacket_ep() is extracted from the loop of routine /* The routine usb_set_maxpacket_ep() is extracted from the loop of routine
...@@ -269,7 +270,7 @@ usb_set_maxpacket_ep(struct usb_device *dev, struct usb_endpoint_descriptor *ep) ...@@ -269,7 +270,7 @@ usb_set_maxpacket_ep(struct usb_device *dev, struct usb_endpoint_descriptor *ep)
USB_ENDPOINT_XFER_CONTROL) { USB_ENDPOINT_XFER_CONTROL) {
/* Control => bidirectional */ /* Control => bidirectional */
dev->epmaxpacketout[b] = ep->wMaxPacketSize; dev->epmaxpacketout[b] = ep->wMaxPacketSize;
dev->epmaxpacketin [b] = ep->wMaxPacketSize; dev->epmaxpacketin[b] = ep->wMaxPacketSize;
USB_PRINTF("##Control EP epmaxpacketout/in[%d] = %d\n", USB_PRINTF("##Control EP epmaxpacketout/in[%d] = %d\n",
b, dev->epmaxpacketin[b]); b, dev->epmaxpacketin[b]);
} else { } else {
...@@ -779,13 +780,13 @@ int usb_new_device(struct usb_device *dev) ...@@ -779,13 +780,13 @@ int usb_new_device(struct usb_device *dev)
* invalid header while reading 8 bytes as device descriptor. */ * invalid header while reading 8 bytes as device descriptor. */
dev->descriptor.bMaxPacketSize0 = 8; /* Start off at 8 bytes */ dev->descriptor.bMaxPacketSize0 = 8; /* Start off at 8 bytes */
dev->maxpacketsize = PACKET_SIZE_8; dev->maxpacketsize = PACKET_SIZE_8;
dev->epmaxpacketin [0] = 8; dev->epmaxpacketin[0] = 8;
dev->epmaxpacketout[0] = 8; dev->epmaxpacketout[0] = 8;
err = usb_get_descriptor(dev, USB_DT_DEVICE, 0, &dev->descriptor, 8); err = usb_get_descriptor(dev, USB_DT_DEVICE, 0, &dev->descriptor, 8);
if (err < 8) { if (err < 8) {
printf("\n USB device not responding, " \ printf("\n USB device not responding, " \
"giving up (status=%lX)\n",dev->status); "giving up (status=%lX)\n", dev->status);
return 1; return 1;
} }
#else #else
...@@ -793,7 +794,8 @@ int usb_new_device(struct usb_device *dev) ...@@ -793,7 +794,8 @@ int usb_new_device(struct usb_device *dev)
* reset of the device (Linux uses the same sequence) * reset of the device (Linux uses the same sequence)
* Some equipment is said to work only with such init sequence; this * Some equipment is said to work only with such init sequence; this
* patch is based on the work by Alan Stern: * patch is based on the work by Alan Stern:
* http://sourceforge.net/mailarchive/forum.php?thread_id=5729457&forum_id=5398 * http://sourceforge.net/mailarchive/forum.php?
* thread_id=5729457&forum_id=5398
*/ */
struct usb_device_descriptor *desc; struct usb_device_descriptor *desc;
int port = -1; int port = -1;
...@@ -809,7 +811,7 @@ int usb_new_device(struct usb_device *dev) ...@@ -809,7 +811,7 @@ int usb_new_device(struct usb_device *dev)
dev->descriptor.bMaxPacketSize0 = 64; /* Start off at 64 bytes */ dev->descriptor.bMaxPacketSize0 = 64; /* Start off at 64 bytes */
/* Default to 64 byte max packet size */ /* Default to 64 byte max packet size */
dev->maxpacketsize = PACKET_SIZE_64; dev->maxpacketsize = PACKET_SIZE_64;
dev->epmaxpacketin [0] = 64; dev->epmaxpacketin[0] = 64;
dev->epmaxpacketout[0] = 64; dev->epmaxpacketout[0] = 64;
err = usb_get_descriptor(dev, USB_DT_DEVICE, 0, desc, 64); err = usb_get_descriptor(dev, USB_DT_DEVICE, 0, desc, 64);
...@@ -844,13 +846,21 @@ int usb_new_device(struct usb_device *dev) ...@@ -844,13 +846,21 @@ int usb_new_device(struct usb_device *dev)
} }
#endif #endif
dev->epmaxpacketin [0] = dev->descriptor.bMaxPacketSize0; dev->epmaxpacketin[0] = dev->descriptor.bMaxPacketSize0;
dev->epmaxpacketout[0] = dev->descriptor.bMaxPacketSize0; dev->epmaxpacketout[0] = dev->descriptor.bMaxPacketSize0;
switch (dev->descriptor.bMaxPacketSize0) { switch (dev->descriptor.bMaxPacketSize0) {
case 8: dev->maxpacketsize = PACKET_SIZE_8; break; case 8:
case 16: dev->maxpacketsize = PACKET_SIZE_16; break; dev->maxpacketsize = PACKET_SIZE_8;
case 32: dev->maxpacketsize = PACKET_SIZE_32; break; break;
case 64: dev->maxpacketsize = PACKET_SIZE_64; break; case 16:
dev->maxpacketsize = PACKET_SIZE_16;
break;
case 32:
dev->maxpacketsize = PACKET_SIZE_32;
break;
case 64:
dev->maxpacketsize = PACKET_SIZE_64;
break;
} }
dev->devnum = addr; dev->devnum = addr;
...@@ -947,7 +957,7 @@ void usb_scan_devices(void) ...@@ -947,7 +957,7 @@ void usb_scan_devices(void)
#undef USB_HUB_DEBUG #undef USB_HUB_DEBUG
#ifdef USB_HUB_DEBUG #ifdef USB_HUB_DEBUG
#define USB_HUB_PRINTF(fmt, args...) printf (fmt , ##args) #define USB_HUB_PRINTF(fmt, args...) printf(fmt , ##args)
#else #else
#define USB_HUB_PRINTF(fmt, args...) #define USB_HUB_PRINTF(fmt, args...)
#endif #endif
......
...@@ -43,89 +43,88 @@ ...@@ -43,89 +43,88 @@
/* String descriptor */ /* String descriptor */
struct usb_string_descriptor { struct usb_string_descriptor {
unsigned char bLength; unsigned char bLength;
unsigned char bDescriptorType; unsigned char bDescriptorType;
unsigned short wData[1]; unsigned short wData[1];
} __attribute__ ((packed)); } __attribute__ ((packed));
/* device request (setup) */ /* device request (setup) */
struct devrequest { struct devrequest {
unsigned char requesttype; unsigned char requesttype;
unsigned char request; unsigned char request;
unsigned short value; unsigned short value;
unsigned short index; unsigned short index;
unsigned short length; unsigned short length;
} __attribute__ ((packed)); } __attribute__ ((packed));
/* All standard descriptors have these 2 fields in common */ /* All standard descriptors have these 2 fields in common */
struct usb_descriptor_header { struct usb_descriptor_header {
unsigned char bLength; unsigned char bLength;
unsigned char bDescriptorType; unsigned char bDescriptorType;
} __attribute__ ((packed)); } __attribute__ ((packed));
/* Device descriptor */ /* Device descriptor */
struct usb_device_descriptor { struct usb_device_descriptor {
unsigned char bLength; unsigned char bLength;
unsigned char bDescriptorType; unsigned char bDescriptorType;
unsigned short bcdUSB; unsigned short bcdUSB;
unsigned char bDeviceClass; unsigned char bDeviceClass;
unsigned char bDeviceSubClass; unsigned char bDeviceSubClass;
unsigned char bDeviceProtocol; unsigned char bDeviceProtocol;
unsigned char bMaxPacketSize0; unsigned char bMaxPacketSize0;
unsigned short idVendor; unsigned short idVendor;
unsigned short idProduct; unsigned short idProduct;
unsigned short bcdDevice; unsigned short bcdDevice;
unsigned char iManufacturer; unsigned char iManufacturer;
unsigned char iProduct; unsigned char iProduct;
unsigned char iSerialNumber; unsigned char iSerialNumber;
unsigned char bNumConfigurations; unsigned char bNumConfigurations;
} __attribute__ ((packed)); } __attribute__ ((packed));
/* Endpoint descriptor */ /* Endpoint descriptor */
struct usb_endpoint_descriptor { struct usb_endpoint_descriptor {
unsigned char bLength; unsigned char bLength;
unsigned char bDescriptorType; unsigned char bDescriptorType;
unsigned char bEndpointAddress; unsigned char bEndpointAddress;
unsigned char bmAttributes; unsigned char bmAttributes;
unsigned short wMaxPacketSize; unsigned short wMaxPacketSize;
unsigned char bInterval; unsigned char bInterval;
unsigned char bRefresh; unsigned char bRefresh;
unsigned char bSynchAddress; unsigned char bSynchAddress;
} __attribute__ ((packed)); } __attribute__ ((packed));
/* Interface descriptor */ /* Interface descriptor */
struct usb_interface_descriptor { struct usb_interface_descriptor {
unsigned char bLength; unsigned char bLength;
unsigned char bDescriptorType; unsigned char bDescriptorType;
unsigned char bInterfaceNumber; unsigned char bInterfaceNumber;
unsigned char bAlternateSetting; unsigned char bAlternateSetting;
unsigned char bNumEndpoints; unsigned char bNumEndpoints;
unsigned char bInterfaceClass; unsigned char bInterfaceClass;
unsigned char bInterfaceSubClass; unsigned char bInterfaceSubClass;
unsigned char bInterfaceProtocol; unsigned char bInterfaceProtocol;
unsigned char iInterface; unsigned char iInterface;
unsigned char no_of_ep; unsigned char no_of_ep;
unsigned char num_altsetting; unsigned char num_altsetting;
unsigned char act_altsetting; unsigned char act_altsetting;
struct usb_endpoint_descriptor ep_desc[USB_MAXENDPOINTS]; struct usb_endpoint_descriptor ep_desc[USB_MAXENDPOINTS];
} __attribute__ ((packed)); } __attribute__ ((packed));
/* Configuration descriptor information.. */ /* Configuration descriptor information.. */
struct usb_config_descriptor { struct usb_config_descriptor {
unsigned char bLength; unsigned char bLength;
unsigned char bDescriptorType; unsigned char bDescriptorType;
unsigned short wTotalLength; unsigned short wTotalLength;
unsigned char bNumInterfaces; unsigned char bNumInterfaces;
unsigned char bConfigurationValue; unsigned char bConfigurationValue;
unsigned char iConfiguration; unsigned char iConfiguration;
unsigned char bmAttributes; unsigned char bmAttributes;
unsigned char MaxPower; unsigned char MaxPower;
unsigned char no_of_if; /* number of interfaces */ unsigned char no_of_if; /* number of interfaces */
struct usb_interface_descriptor if_desc[USB_MAXINTERFACES]; struct usb_interface_descriptor if_desc[USB_MAXINTERFACES];
} __attribute__ ((packed)); } __attribute__ ((packed));
...@@ -138,19 +137,20 @@ enum { ...@@ -138,19 +137,20 @@ enum {
}; };
struct usb_device { struct usb_device {
int devnum; /* Device number on USB bus */ int devnum; /* Device number on USB bus */
int slow; /* Slow device? */ int slow; /* Slow device? */
char mf[32]; /* manufacturer */ char mf[32]; /* manufacturer */
char prod[32]; /* product */ char prod[32]; /* product */
char serial[32]; /* serial number */ char serial[32]; /* serial number */
/* Maximum packet size; one of: PACKET_SIZE_* */ /* Maximum packet size; one of: PACKET_SIZE_* */
int maxpacketsize; int maxpacketsize;
/* one bit for each endpoint ([0] = IN, [1] = OUT) */ /* one bit for each endpoint ([0] = IN, [1] = OUT) */
unsigned int toggle[2]; unsigned int toggle[2];
/* endpoint halts; one bit per endpoint # & direction; */ /* endpoint halts; one bit per endpoint # & direction;
* [0] = IN, [1] = OUT
*/
unsigned int halted[2]; unsigned int halted[2];
/* [0] = IN, [1] = OUT */
int epmaxpacketin[16]; /* INput endpoint specific maximums */ int epmaxpacketin[16]; /* INput endpoint specific maximums */
int epmaxpacketout[16]; /* OUTput endpoint specific maximums */ int epmaxpacketout[16]; /* OUTput endpoint specific maximums */
...@@ -180,21 +180,22 @@ struct usb_device { ...@@ -180,21 +180,22 @@ struct usb_device {
*/ */
#if defined(CONFIG_USB_UHCI) || defined(CONFIG_USB_OHCI) || \ #if defined(CONFIG_USB_UHCI) || defined(CONFIG_USB_OHCI) || \
defined(CONFIG_USB_OHCI_NEW) || defined (CONFIG_USB_SL811HS) || \ defined(CONFIG_USB_OHCI_NEW) || defined(CONFIG_USB_SL811HS) || \
defined(CONFIG_USB_ISP116X_HCD) || defined(CONFIG_USB_R8A66597_HCD) defined(CONFIG_USB_ISP116X_HCD) || defined(CONFIG_USB_R8A66597_HCD)
int usb_lowlevel_init(void); int usb_lowlevel_init(void);
int usb_lowlevel_stop(void); int usb_lowlevel_stop(void);
int submit_bulk_msg(struct usb_device *dev, unsigned long pipe, void *buffer,int transfer_len); int submit_bulk_msg(struct usb_device *dev, unsigned long pipe,
void *buffer, int transfer_len);
int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer, int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
int transfer_len,struct devrequest *setup); int transfer_len, struct devrequest *setup);
int submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer, int submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
int transfer_len, int interval); int transfer_len, int interval);
void usb_event_poll(void); void usb_event_poll(void);
/* Defines */ /* Defines */
#define USB_UHCI_VEND_ID 0x8086 #define USB_UHCI_VEND_ID 0x8086
#define USB_UHCI_DEV_ID 0x7112 #define USB_UHCI_DEV_ID 0x7112
#else #else
#error USB Lowlevel not defined #error USB Lowlevel not defined
...@@ -221,8 +222,9 @@ int usb_stop(void); /* stop the USB Controller */ ...@@ -221,8 +222,9 @@ int usb_stop(void); /* stop the USB Controller */
int usb_set_protocol(struct usb_device *dev, int ifnum, int protocol); int usb_set_protocol(struct usb_device *dev, int ifnum, int protocol);
int usb_set_idle(struct usb_device *dev, int ifnum, int duration, int report_id); int usb_set_idle(struct usb_device *dev, int ifnum, int duration,
struct usb_device * usb_get_dev_index(int index); int report_id);
struct usb_device *usb_get_dev_index(int index);
int usb_control_msg(struct usb_device *dev, unsigned int pipe, int usb_control_msg(struct usb_device *dev, unsigned int pipe,
unsigned char request, unsigned char requesttype, unsigned char request, unsigned char requesttype,
unsigned short value, unsigned short index, unsigned short value, unsigned short index,
...@@ -230,14 +232,17 @@ int usb_control_msg(struct usb_device *dev, unsigned int pipe, ...@@ -230,14 +232,17 @@ int usb_control_msg(struct usb_device *dev, unsigned int pipe,
int usb_bulk_msg(struct usb_device *dev, unsigned int pipe, int usb_bulk_msg(struct usb_device *dev, unsigned int pipe,
void *data, int len, int *actual_length, int timeout); void *data, int len, int *actual_length, int timeout);
int usb_submit_int_msg(struct usb_device *dev, unsigned long pipe, int usb_submit_int_msg(struct usb_device *dev, unsigned long pipe,
void *buffer,int transfer_len, int interval); void *buffer, int transfer_len, int interval);
void usb_disable_asynch(int disable); void usb_disable_asynch(int disable);
int usb_maxpacket(struct usb_device *dev,unsigned long pipe); int usb_maxpacket(struct usb_device *dev, unsigned long pipe);
void __inline__ wait_ms(unsigned long ms); inline void wait_ms(unsigned long ms);
int usb_get_configuration_no(struct usb_device *dev,unsigned char *buffer,int cfgno); int usb_get_configuration_no(struct usb_device *dev, unsigned char *buffer,
int usb_get_report(struct usb_device *dev, int ifnum, unsigned char type, unsigned char id, void *buf, int size); int cfgno);
int usb_get_report(struct usb_device *dev, int ifnum, unsigned char type,
unsigned char id, void *buf, int size);
int usb_get_class_descriptor(struct usb_device *dev, int ifnum, int usb_get_class_descriptor(struct usb_device *dev, int ifnum,
unsigned char type, unsigned char id, void *buf, int size); unsigned char type, unsigned char id, void *buf,
int size);
int usb_clear_halt(struct usb_device *dev, int pipe); int usb_clear_halt(struct usb_device *dev, int pipe);
int usb_string(struct usb_device *dev, int index, char *buf, size_t size); int usb_string(struct usb_device *dev, int index, char *buf, size_t size);
int usb_set_interface(struct usb_device *dev, int interface, int alternate); int usb_set_interface(struct usb_device *dev, int interface, int alternate);
...@@ -247,7 +252,7 @@ int usb_set_interface(struct usb_device *dev, int interface, int alternate); ...@@ -247,7 +252,7 @@ int usb_set_interface(struct usb_device *dev, int interface, int alternate);
#define __swap_16(x) \ #define __swap_16(x) \
({ unsigned short x_ = (unsigned short)x; \ ({ unsigned short x_ = (unsigned short)x; \
(unsigned short)( \ (unsigned short)( \
((x_ & 0x00FFU) << 8) | ((x_ & 0xFF00U) >> 8) ); \ ((x_ & 0x00FFU) << 8) | ((x_ & 0xFF00U) >> 8)); \
}) })
#define __swap_32(x) \ #define __swap_32(x) \
({ unsigned long x_ = (unsigned long)x; \ ({ unsigned long x_ = (unsigned long)x; \
...@@ -255,7 +260,7 @@ int usb_set_interface(struct usb_device *dev, int interface, int alternate); ...@@ -255,7 +260,7 @@ int usb_set_interface(struct usb_device *dev, int interface, int alternate);
((x_ & 0x000000FFUL) << 24) | \ ((x_ & 0x000000FFUL) << 24) | \
((x_ & 0x0000FF00UL) << 8) | \ ((x_ & 0x0000FF00UL) << 8) | \
((x_ & 0x00FF0000UL) >> 8) | \ ((x_ & 0x00FF0000UL) >> 8) | \
((x_ & 0xFF000000UL) >> 24) ); \ ((x_ & 0xFF000000UL) >> 24)); \
}) })
#ifdef LITTLEENDIAN #ifdef LITTLEENDIAN
...@@ -286,12 +291,14 @@ int usb_set_interface(struct usb_device *dev, int interface, int alternate); ...@@ -286,12 +291,14 @@ int usb_set_interface(struct usb_device *dev, int interface, int alternate);
* unsigned int. The encoding is: * unsigned int. The encoding is:
* *
* - max size: bits 0-1 (00 = 8, 01 = 16, 10 = 32, 11 = 64) * - max size: bits 0-1 (00 = 8, 01 = 16, 10 = 32, 11 = 64)
* - direction: bit 7 (0 = Host-to-Device [Out], 1 = Device-to-Host [In]) * - direction: bit 7 (0 = Host-to-Device [Out],
* (1 = Device-to-Host [In])
* - device: bits 8-14 * - device: bits 8-14
* - endpoint: bits 15-18 * - endpoint: bits 15-18
* - Data0/1: bit 19 * - Data0/1: bit 19
* - speed: bit 26 (0 = Full, 1 = Low Speed) * - speed: bit 26 (0 = Full, 1 = Low Speed)
* - pipe type: bits 30-31 (00 = isochronous, 01 = interrupt, 10 = control, 11 = bulk) * - pipe type: bits 30-31 (00 = isochronous, 01 = interrupt,
* 10 = control, 11 = bulk)
* *
* Why? Because it's arbitrary, and whatever encoding we select is really * Why? Because it's arbitrary, and whatever encoding we select is really
* up to us. This one happens to share a lot of bit positions with the UHCI * up to us. This one happens to share a lot of bit positions with the UHCI
...@@ -300,24 +307,42 @@ int usb_set_interface(struct usb_device *dev, int interface, int alternate); ...@@ -300,24 +307,42 @@ int usb_set_interface(struct usb_device *dev, int interface, int alternate);
*/ */
/* Create various pipes... */ /* Create various pipes... */
#define create_pipe(dev,endpoint) \ #define create_pipe(dev,endpoint) \
(((dev)->devnum << 8) | (endpoint << 15) | ((dev)->slow << 26) | (dev)->maxpacketsize) (((dev)->devnum << 8) | (endpoint << 15) | \
#define default_pipe(dev) ((dev)->slow <<26) ((dev)->slow << 26) | (dev)->maxpacketsize)
#define default_pipe(dev) ((dev)->slow << 26)
#define usb_sndctrlpipe(dev,endpoint) ((PIPE_CONTROL << 30) | create_pipe(dev,endpoint))
#define usb_rcvctrlpipe(dev,endpoint) ((PIPE_CONTROL << 30) | create_pipe(dev,endpoint) | USB_DIR_IN) #define usb_sndctrlpipe(dev, endpoint) ((PIPE_CONTROL << 30) | \
#define usb_sndisocpipe(dev,endpoint) ((PIPE_ISOCHRONOUS << 30) | create_pipe(dev,endpoint)) create_pipe(dev, endpoint))
#define usb_rcvisocpipe(dev,endpoint) ((PIPE_ISOCHRONOUS << 30) | create_pipe(dev,endpoint) | USB_DIR_IN) #define usb_rcvctrlpipe(dev, endpoint) ((PIPE_CONTROL << 30) | \
#define usb_sndbulkpipe(dev,endpoint) ((PIPE_BULK << 30) | create_pipe(dev,endpoint)) create_pipe(dev, endpoint) | \
#define usb_rcvbulkpipe(dev,endpoint) ((PIPE_BULK << 30) | create_pipe(dev,endpoint) | USB_DIR_IN) USB_DIR_IN)
#define usb_sndintpipe(dev,endpoint) ((PIPE_INTERRUPT << 30) | create_pipe(dev,endpoint)) #define usb_sndisocpipe(dev, endpoint) ((PIPE_ISOCHRONOUS << 30) | \
#define usb_rcvintpipe(dev,endpoint) ((PIPE_INTERRUPT << 30) | create_pipe(dev,endpoint) | USB_DIR_IN) create_pipe(dev, endpoint))
#define usb_snddefctrl(dev) ((PIPE_CONTROL << 30) | default_pipe(dev)) #define usb_rcvisocpipe(dev, endpoint) ((PIPE_ISOCHRONOUS << 30) | \
#define usb_rcvdefctrl(dev) ((PIPE_CONTROL << 30) | default_pipe(dev) | USB_DIR_IN) create_pipe(dev, endpoint) | \
USB_DIR_IN)
#define usb_sndbulkpipe(dev, endpoint) ((PIPE_BULK << 30) | \
create_pipe(dev, endpoint))
#define usb_rcvbulkpipe(dev, endpoint) ((PIPE_BULK << 30) | \
create_pipe(dev, endpoint) | \
USB_DIR_IN)
#define usb_sndintpipe(dev, endpoint) ((PIPE_INTERRUPT << 30) | \
create_pipe(dev, endpoint))
#define usb_rcvintpipe(dev, endpoint) ((PIPE_INTERRUPT << 30) | \
create_pipe(dev, endpoint) | \
USB_DIR_IN)
#define usb_snddefctrl(dev) ((PIPE_CONTROL << 30) | \
default_pipe(dev))
#define usb_rcvdefctrl(dev) ((PIPE_CONTROL << 30) | \
default_pipe(dev) | \
USB_DIR_IN)
/* The D0/D1 toggle bits */ /* The D0/D1 toggle bits */
#define usb_gettoggle(dev, ep, out) (((dev)->toggle[out] >> ep) & 1) #define usb_gettoggle(dev, ep, out) (((dev)->toggle[out] >> ep) & 1)
#define usb_dotoggle(dev, ep, out) ((dev)->toggle[out] ^= (1 << ep)) #define usb_dotoggle(dev, ep, out) ((dev)->toggle[out] ^= (1 << ep))
#define usb_settoggle(dev, ep, out, bit) ((dev)->toggle[out] = ((dev)->toggle[out] & ~(1 << ep)) | ((bit) << ep)) #define usb_settoggle(dev, ep, out, bit) ((dev)->toggle[out] = \
((dev)->toggle[out] & \
~(1 << ep)) | ((bit) << ep))
/* Endpoint halt control/status */ /* Endpoint halt control/status */
#define usb_endpoint_out(ep_dir) (((ep_dir >> 7) & 1) ^ 1) #define usb_endpoint_out(ep_dir) (((ep_dir >> 7) & 1) ^ 1)
...@@ -325,7 +350,8 @@ int usb_set_interface(struct usb_device *dev, int interface, int alternate); ...@@ -325,7 +350,8 @@ int usb_set_interface(struct usb_device *dev, int interface, int alternate);
#define usb_endpoint_running(dev, ep, out) ((dev)->halted[out] &= ~(1 << (ep))) #define usb_endpoint_running(dev, ep, out) ((dev)->halted[out] &= ~(1 << (ep)))
#define usb_endpoint_halted(dev, ep, out) ((dev)->halted[out] & (1 << (ep))) #define usb_endpoint_halted(dev, ep, out) ((dev)->halted[out] & (1 << (ep)))
#define usb_packetid(pipe) (((pipe) & USB_DIR_IN) ? USB_PID_IN : USB_PID_OUT) #define usb_packetid(pipe) (((pipe) & USB_DIR_IN) ? USB_PID_IN : \
USB_PID_OUT)
#define usb_pipeout(pipe) ((((pipe) >> 7) & 1) ^ 1) #define usb_pipeout(pipe) ((((pipe) >> 7) & 1) ^ 1)
#define usb_pipein(pipe) (((pipe) >> 7) & 1) #define usb_pipein(pipe) (((pipe) >> 7) & 1)
...@@ -365,7 +391,7 @@ struct usb_hub_descriptor { ...@@ -365,7 +391,7 @@ struct usb_hub_descriptor {
unsigned char bHubContrCurrent; unsigned char bHubContrCurrent;
unsigned char DeviceRemovable[(USB_MAXCHILDREN+1+7)/8]; unsigned char DeviceRemovable[(USB_MAXCHILDREN+1+7)/8];
unsigned char PortPowerCtrlMask[(USB_MAXCHILDREN+1+7)/8]; unsigned char PortPowerCtrlMask[(USB_MAXCHILDREN+1+7)/8];
/* DeviceRemovable and PortPwrCtrlMask want to be variable-length /* DeviceRemovable and PortPwrCtrlMask want to be variable-length
bitmaps that hold max 255 entries. (bit0 is ignored) */ bitmaps that hold max 255 entries. (bit0 is ignored) */
} __attribute__ ((packed)); } __attribute__ ((packed));
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment