;					Descriptors.asm
;
		VENDOR_ID						= 0x04b4 ; Cypress
		PRODUCT_ID						= 0xABED ; EZ-USB FX2
		PRODUCT_VERSION					= 0x0100 ; 1.0


		TYPE_DEVICE_DESCRIPTOR			= 1
		TYPE_CONFIGURATION_DESCRIPTOR	= 2
		TYPE_STRING_DESCRIPTOR			= 3
		TYPE_INTERFACE_DESCRIPTOR		= 4
		TYPE_ENDPOINT_DESCRIPTOR		= 5
		TYPE_HID_DESCRIPTOR				= 0x21

		USB_ENDPOINT_TYPE_CONTROL		= 0x00
		USB_ENDPOINT_TYPE_ISOCHRONOUS	= 0x01
		USB_ENDPOINT_TYPE_BULK			= 0x02
		USB_ENDPOINT_TYPE_INTERRUPT		= 0x03

.globl	_DeviceDescr, _DeviceQualifierDescr, _HighSpeedConfigDescr, _FullSpeedConfigDescr, _StringDscr0, _StringDscr1
.area	CSEG	(CODE)

_DeviceDescr::
	.db 18						; Descriptor length
	.db TYPE_DEVICE_DESCRIPTOR	; Decriptor type
	.dw 0002					; Specification Version (BCD)
	.db 00						; Device class
	.db 00						; Device sub-class
	.db 00						; Device sub-sub-class
	.db 64						; Maximum packet size
	.db VENDOR_ID & 0xFF
	.db (VENDOR_ID >> 8) & 0xFF
	.db PRODUCT_ID & 0xFF
	.db (PRODUCT_ID >> 8) & 0xFF
	.db 0, 0
	.db 1						; Manufacturer string index
	.db 2						; Product string index
	.db 0						; Serial number string index
	.db 1						; Number of configurations

_DeviceQualifierDescr::
	.db 10						; Descriptor length
	.db 0x06					; Decriptor type
	.dw 0002					; Specification Version (BCD)
	.db 00						; Device class
	.db 00						; Device sub-class
	.db 00						; Device sub-sub-class
	.db 64						; Maximum packet size (EP0?)
	.db 1						; Number of configurations
	.db 0


_HighSpeedConfigDescr::   
	.db 9									; Descriptor length
	.db TYPE_CONFIGURATION_DESCRIPTOR		; Descriptor type
	.db (HighSpeedConfigDescrEnd-_HighSpeedConfigDescr) & 0xFF			; Total Length (LSB)
	.db ((HighSpeedConfigDescrEnd-_HighSpeedConfigDescr) >> 8) & 0xFF	; Total Length (MSB)
	.db 1									; Number of interfaces
	.db 1									; Configuration number
	.db 0									; Configuration string
	.db 0xa0								; Attributes (b7 - buspwr, b6 - selfpwr, b5 - rwu)
	.db 250									; Power requirement (div 2 ma)

; Interface Descriptor
	.db 9							; Descriptor length
	.db TYPE_INTERFACE_DESCRIPTOR	; Descriptor type
	.db 0							; Zero-based index of this interface
	.db 0							; Alternate setting
	.db 1							; Number of end points
	.db 0xff						; Interface class
	.db 00							; Interface sub class
	.db 00							; Interface sub sub class
	.db 0							; Interface descriptor string index

; Endpoint Descriptor (EP2 IN)
	.db 7							; Descriptor length
	.db TYPE_ENDPOINT_DESCRIPTOR	; Descriptor type
	.db 0x82						; Endpoint number, and direction
	.db USB_ENDPOINT_TYPE_ISOCHRONOUS		; Endpoint type
	.db 00							; Max packet size (LSB)
	.db 0x00						; Max packect size (MSB)
	.db 01							; Polling interval
	
; Interface Descriptor
	.db 9							; Descriptor length
	.db TYPE_INTERFACE_DESCRIPTOR	; Descriptor type
	.db 0							; Zero-based index of this interface
	.db 1							; Alternate setting
	.db 1							; Number of end points
	.db 0xff						; Interface class
	.db 00							; Interface sub class
	.db 00							; Interface sub sub class
	.db 0							; Interface descriptor string index

; Endpoint Descriptor (EP2 IN)
	.db 7							; Descriptor length
	.db TYPE_ENDPOINT_DESCRIPTOR	; Descriptor type
	.db 0x82						; Endpoint number, and direction
	.db USB_ENDPOINT_TYPE_ISOCHRONOUS		; Endpoint type
	.db 0x00							; Max packet size (LSB)
	.db 0x04						; Max packect size (MSB)
	.db 01							; Polling interval


HighSpeedConfigDescrEnd:

_FullSpeedConfigDescr::   
	.db 9									; Descriptor length
	.db TYPE_CONFIGURATION_DESCRIPTOR		; Descriptor type
	.db (FullSpeedConfigDescrEnd-_FullSpeedConfigDescr) & 0xFF			; Total Length (LSB)
	.db ((FullSpeedConfigDescrEnd-_FullSpeedConfigDescr) >> 8) & 0xFF	; Total Length (MSB)
	.db 1									; Number of interfaces
	.db 1									; Configuration number
	.db 0									; Configuration string
	.db 0xa0								; Attributes (b7 - buspwr, b6 - selfpwr, b5 - rwu)
	.db 50									; Power requirement (div 2 ma)

; Interface Descriptor
	.db 9								; Descriptor length
	.db TYPE_INTERFACE_DESCRIPTOR		; Descriptor type
	.db 0								; Zero-based index of this interface
	.db 0								; Alternate setting
	.db 0								; Number of end points 
	.db 0xff							; Interface class
	.db 00								; Interface sub class
	.db 00								; Interface sub sub class
	.db 0								; Interface descriptor string index

FullSpeedConfigDescrEnd:


;	.db 00							; Stuffing for alignment


_StringDscr0::
	.db StringDscr0End-_StringDscr0		; Len
	.db TYPE_STRING_DESCRIPTOR
	.db 0x09,04
StringDscr0End:

_StringDscr1::   
	.db StringDscr1End-_StringDscr1		; Len
	.db TYPE_STRING_DESCRIPTOR
	.db 'A,00
	.db 'B,00
	.db 'C,00
	.db '_,00
	.db 'L,00
	.db 't,00
	.db 'd,00
	.db '.,00
StringDscr1End:

_StringDscr2::   
	.db StringDscr2End-_StringDscr2		; Len
	.db TYPE_STRING_DESCRIPTOR
	.db 'A,00
	.db 'B,00
	.db 'C,00
	.db '_,00
	.db 'I,00
	.db 's,00
	.db 'o,00
	.db 'c,00
	.db 'h,00
	.db 'r,00
	.db 'o,00
	.db 'n,00
StringDscr2End:
