usbdscr_config.c
上传用户:dahaojd
上传日期:2008-01-29
资源大小:14357k
文件大小:5k
- /*
- * Copyright 2003 by Texas Instruments Incorporated.
- * All rights reserved. Property of Texas Instruments Incorporated.
- * Restricted rights to use, duplicate or disclose this code are
- * granted through contract.
- *
- */
- /* "@(#) DDK 1.11.00.00 11-04-03 (ddk-b13)" */
- /*
- * ======== usbdscr_config.c ========
- * This file defines example USB configuration descriptors used
- * by test applications requiring an USB IN and USB OUT BULK
- * transfer type endpoints.
- */
-
- #include <std.h>
- #include <csl.h>
- #include <csl_usb.h>
- #include <c5509_usb.h> /* iom usb driver interface */
- #define MAXPKTLEN 64 /* max USB transfer length in bytes */
- extern C5509_USB_DeviceConfig myDeviceConfig; /* device configuration */
- /*
- * USB endpoint descriptors
- * The following are endpoint descriptors for USB interface 0 alternate set 0.
- */
- static C5509_USB_EndptDesc endPtDesc[] =
- {
- /*
- * bulk endpoint descriptor - endpt2 OUT
- */
- {
- 0x0000,
- (C5509_USB_DESCRIPTOR_ENDPT<<8) | 7, /* bLength, bDescriptorType */
- 0x0202, /* bEndpointAddress = 2 OUT, bmAttributes = bulk */
- MAXPKTLEN, /* wMaxPacketSize = 64 bytes */
- 0x00, /* bInterval */
- },
- /*
- * bulk endpoint descriptor - endpt2 IN
- */
- {
- 0x0000,
- (C5509_USB_DESCRIPTOR_ENDPT<<8) | 7, /* bLength, bDescriptorType */
- 0x0282, /* bEndpointAddress = 2 IN , bmAttributes */
- MAXPKTLEN, /* wMaxPacketSize */
- 0x00 /* bInterval */
- }
- };
- /*
- * Determine number of IOM channels needed for this configuration.
- */
- #define NUMCHANS (sizeof(endPtDesc) / sizeof(C5509_USB_EndptDesc))
- /*
- * USB endpoint link list used to describe the configuration to the PC Host.
- */
- static USB_DataStruct endptDescLink[NUMCHANS] = {
- {
- 7, (Uint16 *)&endPtDesc[0], &endptDescLink[1]
- },
- {
- 7, (Uint16 *)&endPtDesc[1], NULL
- }
- };
- /*
- * IOM channel object array.
- */
- static C5509_USB_ChanObj chans[NUMCHANS];
- /*
- * USB driver endpoint configuration array.
- * Used to initialize the mini-driver and underlying USB CSL.
- * Note: Endpoint number, transfer size and type need to match the
- * above endpoint descriptors.
- */
- static C5509_USB_EpConfig endptsConfig[NUMCHANS] = {
- /*
- * EP #2 OUT, BULK transfer type, max transfer size, OR'd event mask=EOT
- */
- {
- &chans[0], USB_OUT_EP2, USB_BULK, MAXPKTLEN, USB_EVENT_EOT
- },
- /*
- * EP #2 IN, BULK transfer type, max transfer size, OR'd event mask=EOT
- */
- {
- &chans[1], USB_IN_EP2, USB_BULK, MAXPKTLEN, USB_EVENT_EOT
- }
- };
- /*
- * Configuration descriptor. Used by host to determine the configuration.
- */
- static Uint16 configurationDescriptor[] = {
- 0x0000, /* field for xfer_byte_cnt - used by the data */
- /* transfer API, not an integral part of descriptor */
- (C5509_USB_DESCRIPTOR_CONFIG<<8) | 9, /* bLength, bDescriptorType */
- (18 + (NUMCHANS * 7)), /* wTotalLength = 9 + 9 + 7 * NUMCHANS */
- 0x0101, /* bNumInterfaces = 1, bConfigurationValue = 1 */
- 0xC003, /* iConfiguration, bmAttributes = bus/self pwr, no rwu */
- 0 /* bMaxPower = none */
- };
- /*
- * Interface Descriptor
- */
- static Uint16 usbIfc0Alt0Descriptor[] = { /* interface 0 alt_set = 0 */
- 0x0000, /* field for xfer_byte_cnt - used by the data */
- /* transfer API, not an integral part of descriptor */
- (C5509_USB_DESCRIPTOR_INTRFC << 8) | 9, /* bLength, bDescriptorType */
- 0x0000, /* bInterfaceNumber, bAlternateSetting */
- (0x00 << 8) | NUMCHANS, /* bNumEndpoints , bInterfaceClass */
- 0x0000, /* bInterfaceSubClass, bInterfaceProtocol */
- 0x04 /* iInterface = index in string descriptor */
- };
- /*
- * Ifc 0, Alt 0 endpoint link list
- */
- static USB_DataStruct usbIfc0Alt0DescLink[] = { /* Interface Descriptor */
- 9,
- (Uint16 *)&usbIfc0Alt0Descriptor[0],
- &endptDescLink[0]
- };
- /*
- * USB configuration and interface(s) link list.
- */
- static USB_DataStruct configDescLink[] = {
- 9,
- (Uint16 *)&configurationDescriptor[0],
- &usbIfc0Alt0DescLink[0]
- };
- /*
- * USB interface config used by iom driver's devParams.
- */
- C5509_USB_IfcConfig myIfcConfig = {
- NUMCHANS, /* total number of configured endpoints */
- &configDescLink[0], /* USB config and interface descriptor list */
- &endptsConfig[0] /* endpoint configuration array */
- };