From: Uwe Hermann Date: Thu, 4 Aug 2016 15:18:14 +0000 (+0200) Subject: Deduplicate hantek-6022be/sainsmart-dds120's dscr.inc. X-Git-Tag: sigrok-firmware-fx2lafw-0.1.4~22 X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=4349f28686db6fe1f0c8863246f653277afb8b01;p=sigrok-firmware-fx2lafw.git Deduplicate hantek-6022be/sainsmart-dds120's dscr.inc. --- diff --git a/hw/hantek-6022be/dscr.a51 b/hw/hantek-6022be/dscr.a51 deleted file mode 100644 index 8e464ee9..00000000 --- a/hw/hantek-6022be/dscr.a51 +++ /dev/null @@ -1,362 +0,0 @@ -;; -;; This file is part of the sigrok-firmware-fx2lafw project. -;; -;; Copyright (C) 2009 Ubixum, Inc. -;; -;; This library is free software; you can redistribute it and/or -;; modify it under the terms of the GNU Lesser General Public -;; License as published by the Free Software Foundation; either -;; version 2.1 of the License, or (at your option) any later version. -;; -;; This library is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;; Lesser General Public License for more details. -;; -;; You should have received a copy of the GNU Lesser General Public -;; License along with this library; if not, write to the Free Software -;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -;; - -; this is a the default -; full speed and high speed -; descriptors found in the TRM -; change however you want but leave -; the descriptor pointers so the setupdat.c file works right - - -.module DEV_DSCR - -; descriptor types -; same as setupdat.h -DSCR_DEVICE_TYPE=1 -DSCR_CONFIG_TYPE=2 -DSCR_STRING_TYPE=3 -DSCR_INTERFACE_TYPE=4 -DSCR_ENDPOINT_TYPE=5 -DSCR_DEVQUAL_TYPE=6 - -; for the repeating interfaces -DSCR_INTERFACE_LEN=9 -DSCR_ENDPOINT_LEN=7 - -; endpoint types -ENDPOINT_TYPE_CONTROL=0 -ENDPOINT_TYPE_ISO=1 -ENDPOINT_TYPE_BULK=2 -ENDPOINT_TYPE_INT=3 - - .globl _dev_dscr, _dev_qual_dscr, _highspd_dscr, _fullspd_dscr, _dev_strings, _dev_strings_end -; These need to be in code memory. If -; they aren't you'll have to manully copy them somewhere -; in code memory otherwise SUDPTRH:L don't work right - .area DSCR_AREA (CODE) - -_dev_dscr: - .db dev_dscr_end-_dev_dscr ; len - .db DSCR_DEVICE_TYPE ; type - .dw 0x0002 ; usb 2.0 - .db 0xff ; class (vendor specific) - .db 0xff ; subclass (vendor specific) - .db 0xff ; protocol (vendor specific) - .db 64 ; packet size (ep0) - .dw 0xB504 ; vendor id - .dw 0x2260 ; product id - .dw 0x0000 ; version id - .db 1 ; manufacturure str idx - .db 2 ; product str idx - .db 0 ; serial str idx - .db 1 ; n configurations -dev_dscr_end: - -_dev_qual_dscr: - .db dev_qualdscr_end-_dev_qual_dscr - .db DSCR_DEVQUAL_TYPE - .dw 0x0002 ; usb 2.0 - .db 0 - .db 0 - .db 0 - .db 64 ; max packet - .db 1 ; n configs - .db 0 ; extra reserved byte -dev_qualdscr_end: - -_highspd_dscr: - .db highspd_dscr_end-_highspd_dscr ; dscr len ;; Descriptor length - .db DSCR_CONFIG_TYPE - ; can't use .dw because byte order is different - .db (highspd_dscr_realend-_highspd_dscr) % 256 ; total length of config lsb - .db (highspd_dscr_realend-_highspd_dscr) / 256 ; total length of config msb - .db 1 ; n interfaces - .db 1 ; config number - .db 0 ; config string - .db 0x80 ; attrs = bus powered, no wakeup - .db 55 ; max power = 110mA -highspd_dscr_end: - -; all the interfaces next -; BULK interface - .db DSCR_INTERFACE_LEN - .db DSCR_INTERFACE_TYPE - .db 0 ; index - .db 0 ; alt setting idx - .db 1 ; n endpoints - .db 0xff ; class - .db 0 - .db 0 - .db 0 ; string index - -; endpoint 6 in - .db DSCR_ENDPOINT_LEN - .db DSCR_ENDPOINT_TYPE - .db 0x86 ; ep1 dir=in and address - .db ENDPOINT_TYPE_BULK ; type - .db 0x00 ; max packet LSB - .db 0x02 ; max packet size=512 bytes - .db 0x00 ; polling interval - -; ISOCHRONOUS interface - .db DSCR_INTERFACE_LEN - .db DSCR_INTERFACE_TYPE - .db 0 ; index - .db 1 ; alt setting idx - .db 1 ; n endpoints - .db 0xff ; class - .db 0 - .db 1 - .db 0 ; string index - -; endpoint 2 in - .db DSCR_ENDPOINT_LEN - .db DSCR_ENDPOINT_TYPE - .db 0x82 ; ep1 dir=in and address - .db ENDPOINT_TYPE_ISO ; type - .db 0x00 ; max packet LSB - .db 0x14 ; max packet size=3*1024 bytes - .db 0x01 ; polling interval - -; ISOCHRONOUS interface 16MB/s - .db DSCR_INTERFACE_LEN - .db DSCR_INTERFACE_TYPE - .db 0 ; index - .db 2 ; alt setting idx - .db 1 ; n endpoints - .db 0xff ; class - .db 0 - .db 1 - .db 0 ; string index - -; endpoint 2 in - .db DSCR_ENDPOINT_LEN - .db DSCR_ENDPOINT_TYPE - .db 0x82 ; ep1 dir=in and address - .db ENDPOINT_TYPE_ISO ; type - .db 0x00 ; max packet LSB - .db 0x0c ; max packet size=2*1024 bytes - .db 0x01 ; polling interval - -; ISOCHRONOUS interface 8MB/s - .db DSCR_INTERFACE_LEN - .db DSCR_INTERFACE_TYPE - .db 0 ; index - .db 3 ; alt setting idx - .db 1 ; n endpoints - .db 0xff ; class - .db 0 - .db 1 - .db 0 ; string index - -; endpoint 2 in - .db DSCR_ENDPOINT_LEN - .db DSCR_ENDPOINT_TYPE - .db 0x82 ; ep1 dir=in and address - .db ENDPOINT_TYPE_ISO ; type - .db 0x00 ; max packet LSB - .db 0x04 ; max packet size=1024 bytes - .db 0x01 ; polling interval - -; ISOCHRONOUS interface 4MB/s - .db DSCR_INTERFACE_LEN - .db DSCR_INTERFACE_TYPE - .db 0 ; index - .db 4 ; alt setting idx - .db 1 ; n endpoints - .db 0xff ; class - .db 0 - .db 1 - .db 0 ; string index - -; endpoint 2 in - .db DSCR_ENDPOINT_LEN - .db DSCR_ENDPOINT_TYPE - .db 0x82 ; ep1 dir=in and address - .db ENDPOINT_TYPE_ISO ; type - .db 0x00 ; max packet LSB - .db 0x04 ; max packet size=1024 bytes - .db 0x02 ; polling interval - - -; ISOCHRONOUS interface 2MB/s - .db DSCR_INTERFACE_LEN - .db DSCR_INTERFACE_TYPE - .db 0 ; index - .db 5 ; alt setting idx - .db 1 ; n endpoints - .db 0xff ; class - .db 0 - .db 1 - .db 0 ; string index - -; endpoint 2 in - .db DSCR_ENDPOINT_LEN - .db DSCR_ENDPOINT_TYPE - .db 0x82 ; ep1 dir=in and address - .db ENDPOINT_TYPE_ISO ; type - .db 0x00 ; max packet LSB - .db 0x04 ; max packet size=1024 bytes - .db 0x03 ; polling interval - -; ISOCHRONOUS interface 1MB/s - .db DSCR_INTERFACE_LEN - .db DSCR_INTERFACE_TYPE - .db 0 ; index - .db 6 ; alt setting idx - .db 1 ; n endpoints - .db 0xff ; class - .db 0 - .db 1 - .db 0 ; string index - -; endpoint 2 in - .db DSCR_ENDPOINT_LEN - .db DSCR_ENDPOINT_TYPE - .db 0x82 ; ep1 dir=in and address - .db ENDPOINT_TYPE_ISO ; type - .db 0x00 ; max packet LSB - .db 0x04 ; max packet size=1024 bytes - .db 0x04 ; polling interval - -; ISOCHRONOUS interface 500 kB/s - .db DSCR_INTERFACE_LEN - .db DSCR_INTERFACE_TYPE - .db 0 ; index - .db 7 ; alt setting idx - .db 1 ; n endpoints - .db 0xff ; class - .db 0 - .db 1 - .db 0 ; string index - -; endpoint 2 in - .db DSCR_ENDPOINT_LEN - .db DSCR_ENDPOINT_TYPE - .db 0x82 ; ep1 dir=in and address - .db ENDPOINT_TYPE_ISO ; type - .db 0x00 ; max packet LSB - .db 0x02 ; max packet size=512 bytes - .db 0x04 ; polling interval - - -highspd_dscr_realend: - -.even -_fullspd_dscr: - .db fullspd_dscr_end-_fullspd_dscr ; dscr len - .db DSCR_CONFIG_TYPE - ; can't use .dw because byte order is different - .db (fullspd_dscr_realend-_fullspd_dscr) % 256 ; total length of config lsb - .db (fullspd_dscr_realend-_fullspd_dscr) / 256 ; total length of config msb - .db 2 ; n interfaces - .db 1 ; config number - .db 0 ; config string - .db 0x80 ; attrs = bus powered, no wakeup - .db 55 ; max power = 110mA -fullspd_dscr_end: - - -; all the interfaces next -; BULK interface - .db DSCR_INTERFACE_LEN - .db DSCR_INTERFACE_TYPE - .db 0 ; index - .db 0 ; alt setting idx - .db 1 ; n endpoints - .db 0xff ; class - .db 0 - .db 0 - .db 0 ; string index - -; endpoint 6 in - .db DSCR_ENDPOINT_LEN - .db DSCR_ENDPOINT_TYPE - .db 0x86 ; ep1 dir=in and address - .db ENDPOINT_TYPE_BULK ; type - .db 0x40 ; max packet LSB - .db 0x00 ; max packet size=512 bytes - .db 0x00 ; polling interval - -; ISOCHRONOUS interface 1 MB/s - .db DSCR_INTERFACE_LEN - .db DSCR_INTERFACE_TYPE - .db 0 ; index - .db 1 ; alt setting idx - .db 1 ; n endpoints - .db 0xff ; class - .db 0 - .db 1 - .db 0 ; string index - -; endpoint 2 in - .db DSCR_ENDPOINT_LEN - .db DSCR_ENDPOINT_TYPE - .db 0x82 ; ep1 dir=in and address - .db ENDPOINT_TYPE_ISO ; type - .db 0xff ; max packet LSB - .db 0x03 ; max packet size=1023 bytes - .db 0x01 ; polling interval - -; ISOCHRONOUS interface 500 kB/s - .db DSCR_INTERFACE_LEN - .db DSCR_INTERFACE_TYPE - .db 0 ; index - .db 2 ; alt setting idx - .db 1 ; n endpoints - .db 0xff ; class - .db 0 - .db 1 - .db 0 ; string index - -; endpoint 2 in - .db DSCR_ENDPOINT_LEN - .db DSCR_ENDPOINT_TYPE - .db 0x82 ; ep1 dir=in and address - .db ENDPOINT_TYPE_ISO ; type - .db 0x00 ; max packet LSB - .db 0x02 ; max packet size=512 bytes - .db 0x01 ; polling interval - -fullspd_dscr_realend: - -.even -_dev_strings: -; sample string -_string0: - .db string0end-_string0 ; len - .db DSCR_STRING_TYPE - .db 0x09, 0x04 ; 0x0409 is the language code for English. Possible to add more codes after this. -string0end: -; add more strings here -_string1: - .db string1end-_string1 ; len - .db DSCR_STRING_TYPE - .ascii 'O\0D\0M\0' -string1end: -_string2: - .db string2end-_string2 ; len - .db DSCR_STRING_TYPE - .ascii 'f\0x\0002\0l\0a\0f\0w\0' -string2end: - - -_dev_strings_end: - .dw 0x0000 ; in case you wanted to look at memory between _dev_strings and _dev_strings_end diff --git a/hw/sainsmart-dds120/dscr.a51 b/hw/sainsmart-dds120/dscr.a51 deleted file mode 100644 index 5a9917c4..00000000 --- a/hw/sainsmart-dds120/dscr.a51 +++ /dev/null @@ -1,362 +0,0 @@ -;; -;; This file is part of the sigrok-firmware-fx2lafw project. -;; -;; Copyright (C) 2009 Ubixum, Inc. -;; -;; This library is free software; you can redistribute it and/or -;; modify it under the terms of the GNU Lesser General Public -;; License as published by the Free Software Foundation; either -;; version 2.1 of the License, or (at your option) any later version. -;; -;; This library is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;; Lesser General Public License for more details. -;; -;; You should have received a copy of the GNU Lesser General Public -;; License along with this library; if not, write to the Free Software -;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -;; - -; this is a the default -; full speed and high speed -; descriptors found in the TRM -; change however you want but leave -; the descriptor pointers so the setupdat.c file works right - - -.module DEV_DSCR - -; descriptor types -; same as setupdat.h -DSCR_DEVICE_TYPE=1 -DSCR_CONFIG_TYPE=2 -DSCR_STRING_TYPE=3 -DSCR_INTERFACE_TYPE=4 -DSCR_ENDPOINT_TYPE=5 -DSCR_DEVQUAL_TYPE=6 - -; for the repeating interfaces -DSCR_INTERFACE_LEN=9 -DSCR_ENDPOINT_LEN=7 - -; endpoint types -ENDPOINT_TYPE_CONTROL=0 -ENDPOINT_TYPE_ISO=1 -ENDPOINT_TYPE_BULK=2 -ENDPOINT_TYPE_INT=3 - - .globl _dev_dscr, _dev_qual_dscr, _highspd_dscr, _fullspd_dscr, _dev_strings, _dev_strings_end -; These need to be in code memory. If -; they aren't you'll have to manully copy them somewhere -; in code memory otherwise SUDPTRH:L don't work right - .area DSCR_AREA (CODE) - -_dev_dscr: - .db dev_dscr_end-_dev_dscr ; len - .db DSCR_DEVICE_TYPE ; type - .dw 0x0002 ; usb 2.0 - .db 0xff ; class (vendor specific) - .db 0xff ; subclass (vendor specific) - .db 0xff ; protocol (vendor specific) - .db 64 ; packet size (ep0) - .dw 0x501D ; vendor id - .dw 0x8E60 ; product id - .dw 0x0000 ; version id - .db 1 ; manufacturure str idx - .db 2 ; product str idx - .db 0 ; serial str idx - .db 1 ; n configurations -dev_dscr_end: - -_dev_qual_dscr: - .db dev_qualdscr_end-_dev_qual_dscr - .db DSCR_DEVQUAL_TYPE - .dw 0x0002 ; usb 2.0 - .db 0 - .db 0 - .db 0 - .db 64 ; max packet - .db 1 ; n configs - .db 0 ; extra reserved byte -dev_qualdscr_end: - -_highspd_dscr: - .db highspd_dscr_end-_highspd_dscr ; dscr len ;; Descriptor length - .db DSCR_CONFIG_TYPE - ; can't use .dw because byte order is different - .db (highspd_dscr_realend-_highspd_dscr) % 256 ; total length of config lsb - .db (highspd_dscr_realend-_highspd_dscr) / 256 ; total length of config msb - .db 1 ; n interfaces - .db 1 ; config number - .db 0 ; config string - .db 0x80 ; attrs = bus powered, no wakeup - .db 55 ; max power = 110mA -highspd_dscr_end: - -; all the interfaces next -; BULK interface - .db DSCR_INTERFACE_LEN - .db DSCR_INTERFACE_TYPE - .db 0 ; index - .db 0 ; alt setting idx - .db 1 ; n endpoints - .db 0xff ; class - .db 0 - .db 0 - .db 0 ; string index - -; endpoint 6 in - .db DSCR_ENDPOINT_LEN - .db DSCR_ENDPOINT_TYPE - .db 0x86 ; ep1 dir=in and address - .db ENDPOINT_TYPE_BULK ; type - .db 0x00 ; max packet LSB - .db 0x02 ; max packet size=512 bytes - .db 0x00 ; polling interval - -; ISOCHRONOUS interface - .db DSCR_INTERFACE_LEN - .db DSCR_INTERFACE_TYPE - .db 0 ; index - .db 1 ; alt setting idx - .db 1 ; n endpoints - .db 0xff ; class - .db 0 - .db 1 - .db 0 ; string index - -; endpoint 2 in - .db DSCR_ENDPOINT_LEN - .db DSCR_ENDPOINT_TYPE - .db 0x82 ; ep1 dir=in and address - .db ENDPOINT_TYPE_ISO ; type - .db 0x00 ; max packet LSB - .db 0x14 ; max packet size=3*1024 bytes - .db 0x01 ; polling interval - -; ISOCHRONOUS interface 16MB/s - .db DSCR_INTERFACE_LEN - .db DSCR_INTERFACE_TYPE - .db 0 ; index - .db 2 ; alt setting idx - .db 1 ; n endpoints - .db 0xff ; class - .db 0 - .db 1 - .db 0 ; string index - -; endpoint 2 in - .db DSCR_ENDPOINT_LEN - .db DSCR_ENDPOINT_TYPE - .db 0x82 ; ep1 dir=in and address - .db ENDPOINT_TYPE_ISO ; type - .db 0x00 ; max packet LSB - .db 0x0c ; max packet size=2*1024 bytes - .db 0x01 ; polling interval - -; ISOCHRONOUS interface 8MB/s - .db DSCR_INTERFACE_LEN - .db DSCR_INTERFACE_TYPE - .db 0 ; index - .db 3 ; alt setting idx - .db 1 ; n endpoints - .db 0xff ; class - .db 0 - .db 1 - .db 0 ; string index - -; endpoint 2 in - .db DSCR_ENDPOINT_LEN - .db DSCR_ENDPOINT_TYPE - .db 0x82 ; ep1 dir=in and address - .db ENDPOINT_TYPE_ISO ; type - .db 0x00 ; max packet LSB - .db 0x04 ; max packet size=1024 bytes - .db 0x01 ; polling interval - -; ISOCHRONOUS interface 4MB/s - .db DSCR_INTERFACE_LEN - .db DSCR_INTERFACE_TYPE - .db 0 ; index - .db 4 ; alt setting idx - .db 1 ; n endpoints - .db 0xff ; class - .db 0 - .db 1 - .db 0 ; string index - -; endpoint 2 in - .db DSCR_ENDPOINT_LEN - .db DSCR_ENDPOINT_TYPE - .db 0x82 ; ep1 dir=in and address - .db ENDPOINT_TYPE_ISO ; type - .db 0x00 ; max packet LSB - .db 0x04 ; max packet size=1024 bytes - .db 0x02 ; polling interval - - -; ISOCHRONOUS interface 2MB/s - .db DSCR_INTERFACE_LEN - .db DSCR_INTERFACE_TYPE - .db 0 ; index - .db 5 ; alt setting idx - .db 1 ; n endpoints - .db 0xff ; class - .db 0 - .db 1 - .db 0 ; string index - -; endpoint 2 in - .db DSCR_ENDPOINT_LEN - .db DSCR_ENDPOINT_TYPE - .db 0x82 ; ep1 dir=in and address - .db ENDPOINT_TYPE_ISO ; type - .db 0x00 ; max packet LSB - .db 0x04 ; max packet size=1024 bytes - .db 0x03 ; polling interval - -; ISOCHRONOUS interface 1MB/s - .db DSCR_INTERFACE_LEN - .db DSCR_INTERFACE_TYPE - .db 0 ; index - .db 6 ; alt setting idx - .db 1 ; n endpoints - .db 0xff ; class - .db 0 - .db 1 - .db 0 ; string index - -; endpoint 2 in - .db DSCR_ENDPOINT_LEN - .db DSCR_ENDPOINT_TYPE - .db 0x82 ; ep1 dir=in and address - .db ENDPOINT_TYPE_ISO ; type - .db 0x00 ; max packet LSB - .db 0x04 ; max packet size=1024 bytes - .db 0x04 ; polling interval - -; ISOCHRONOUS interface 500 kB/s - .db DSCR_INTERFACE_LEN - .db DSCR_INTERFACE_TYPE - .db 0 ; index - .db 7 ; alt setting idx - .db 1 ; n endpoints - .db 0xff ; class - .db 0 - .db 1 - .db 0 ; string index - -; endpoint 2 in - .db DSCR_ENDPOINT_LEN - .db DSCR_ENDPOINT_TYPE - .db 0x82 ; ep1 dir=in and address - .db ENDPOINT_TYPE_ISO ; type - .db 0x00 ; max packet LSB - .db 0x02 ; max packet size=512 bytes - .db 0x04 ; polling interval - - -highspd_dscr_realend: - -.even -_fullspd_dscr: - .db fullspd_dscr_end-_fullspd_dscr ; dscr len - .db DSCR_CONFIG_TYPE - ; can't use .dw because byte order is different - .db (fullspd_dscr_realend-_fullspd_dscr) % 256 ; total length of config lsb - .db (fullspd_dscr_realend-_fullspd_dscr) / 256 ; total length of config msb - .db 2 ; n interfaces - .db 1 ; config number - .db 0 ; config string - .db 0x80 ; attrs = bus powered, no wakeup - .db 55 ; max power = 110mA -fullspd_dscr_end: - - -; all the interfaces next -; BULK interface - .db DSCR_INTERFACE_LEN - .db DSCR_INTERFACE_TYPE - .db 0 ; index - .db 0 ; alt setting idx - .db 1 ; n endpoints - .db 0xff ; class - .db 0 - .db 0 - .db 0 ; string index - -; endpoint 6 in - .db DSCR_ENDPOINT_LEN - .db DSCR_ENDPOINT_TYPE - .db 0x86 ; ep1 dir=in and address - .db ENDPOINT_TYPE_BULK ; type - .db 0x40 ; max packet LSB - .db 0x00 ; max packet size=512 bytes - .db 0x00 ; polling interval - -; ISOCHRONOUS interface 1 MB/s - .db DSCR_INTERFACE_LEN - .db DSCR_INTERFACE_TYPE - .db 0 ; index - .db 1 ; alt setting idx - .db 1 ; n endpoints - .db 0xff ; class - .db 0 - .db 1 - .db 0 ; string index - -; endpoint 2 in - .db DSCR_ENDPOINT_LEN - .db DSCR_ENDPOINT_TYPE - .db 0x82 ; ep1 dir=in and address - .db ENDPOINT_TYPE_ISO ; type - .db 0xff ; max packet LSB - .db 0x03 ; max packet size=1023 bytes - .db 0x01 ; polling interval - -; ISOCHRONOUS interface 500 kB/s - .db DSCR_INTERFACE_LEN - .db DSCR_INTERFACE_TYPE - .db 0 ; index - .db 2 ; alt setting idx - .db 1 ; n endpoints - .db 0xff ; class - .db 0 - .db 1 - .db 0 ; string index - -; endpoint 2 in - .db DSCR_ENDPOINT_LEN - .db DSCR_ENDPOINT_TYPE - .db 0x82 ; ep1 dir=in and address - .db ENDPOINT_TYPE_ISO ; type - .db 0x00 ; max packet LSB - .db 0x02 ; max packet size=512 bytes - .db 0x01 ; polling interval - -fullspd_dscr_realend: - -.even -_dev_strings: -; sample string -_string0: - .db string0end-_string0 ; len - .db DSCR_STRING_TYPE - .db 0x09, 0x04 ; 0x0409 is the language code for English. Possible to add more codes after this. -string0end: -; add more strings here -_string1: - .db string1end-_string1 ; len - .db DSCR_STRING_TYPE - .ascii 'O\0D\0M\0' -string1end: -_string2: - .db string2end-_string2 ; len - .db DSCR_STRING_TYPE - .ascii 'f\0x\0002\0l\0a\0f\0w\0' -string2end: - - -_dev_strings_end: - .dw 0x0000 ; in case you wanted to look at memory between _dev_strings and _dev_strings_end diff --git a/include/dscr_hantek_6022be.inc b/include/dscr_hantek_6022be.inc new file mode 100644 index 00000000..8e464ee9 --- /dev/null +++ b/include/dscr_hantek_6022be.inc @@ -0,0 +1,362 @@ +;; +;; This file is part of the sigrok-firmware-fx2lafw project. +;; +;; Copyright (C) 2009 Ubixum, Inc. +;; +;; This library is free software; you can redistribute it and/or +;; modify it under the terms of the GNU Lesser General Public +;; License as published by the Free Software Foundation; either +;; version 2.1 of the License, or (at your option) any later version. +;; +;; This library is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; Lesser General Public License for more details. +;; +;; You should have received a copy of the GNU Lesser General Public +;; License along with this library; if not, write to the Free Software +;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +;; + +; this is a the default +; full speed and high speed +; descriptors found in the TRM +; change however you want but leave +; the descriptor pointers so the setupdat.c file works right + + +.module DEV_DSCR + +; descriptor types +; same as setupdat.h +DSCR_DEVICE_TYPE=1 +DSCR_CONFIG_TYPE=2 +DSCR_STRING_TYPE=3 +DSCR_INTERFACE_TYPE=4 +DSCR_ENDPOINT_TYPE=5 +DSCR_DEVQUAL_TYPE=6 + +; for the repeating interfaces +DSCR_INTERFACE_LEN=9 +DSCR_ENDPOINT_LEN=7 + +; endpoint types +ENDPOINT_TYPE_CONTROL=0 +ENDPOINT_TYPE_ISO=1 +ENDPOINT_TYPE_BULK=2 +ENDPOINT_TYPE_INT=3 + + .globl _dev_dscr, _dev_qual_dscr, _highspd_dscr, _fullspd_dscr, _dev_strings, _dev_strings_end +; These need to be in code memory. If +; they aren't you'll have to manully copy them somewhere +; in code memory otherwise SUDPTRH:L don't work right + .area DSCR_AREA (CODE) + +_dev_dscr: + .db dev_dscr_end-_dev_dscr ; len + .db DSCR_DEVICE_TYPE ; type + .dw 0x0002 ; usb 2.0 + .db 0xff ; class (vendor specific) + .db 0xff ; subclass (vendor specific) + .db 0xff ; protocol (vendor specific) + .db 64 ; packet size (ep0) + .dw 0xB504 ; vendor id + .dw 0x2260 ; product id + .dw 0x0000 ; version id + .db 1 ; manufacturure str idx + .db 2 ; product str idx + .db 0 ; serial str idx + .db 1 ; n configurations +dev_dscr_end: + +_dev_qual_dscr: + .db dev_qualdscr_end-_dev_qual_dscr + .db DSCR_DEVQUAL_TYPE + .dw 0x0002 ; usb 2.0 + .db 0 + .db 0 + .db 0 + .db 64 ; max packet + .db 1 ; n configs + .db 0 ; extra reserved byte +dev_qualdscr_end: + +_highspd_dscr: + .db highspd_dscr_end-_highspd_dscr ; dscr len ;; Descriptor length + .db DSCR_CONFIG_TYPE + ; can't use .dw because byte order is different + .db (highspd_dscr_realend-_highspd_dscr) % 256 ; total length of config lsb + .db (highspd_dscr_realend-_highspd_dscr) / 256 ; total length of config msb + .db 1 ; n interfaces + .db 1 ; config number + .db 0 ; config string + .db 0x80 ; attrs = bus powered, no wakeup + .db 55 ; max power = 110mA +highspd_dscr_end: + +; all the interfaces next +; BULK interface + .db DSCR_INTERFACE_LEN + .db DSCR_INTERFACE_TYPE + .db 0 ; index + .db 0 ; alt setting idx + .db 1 ; n endpoints + .db 0xff ; class + .db 0 + .db 0 + .db 0 ; string index + +; endpoint 6 in + .db DSCR_ENDPOINT_LEN + .db DSCR_ENDPOINT_TYPE + .db 0x86 ; ep1 dir=in and address + .db ENDPOINT_TYPE_BULK ; type + .db 0x00 ; max packet LSB + .db 0x02 ; max packet size=512 bytes + .db 0x00 ; polling interval + +; ISOCHRONOUS interface + .db DSCR_INTERFACE_LEN + .db DSCR_INTERFACE_TYPE + .db 0 ; index + .db 1 ; alt setting idx + .db 1 ; n endpoints + .db 0xff ; class + .db 0 + .db 1 + .db 0 ; string index + +; endpoint 2 in + .db DSCR_ENDPOINT_LEN + .db DSCR_ENDPOINT_TYPE + .db 0x82 ; ep1 dir=in and address + .db ENDPOINT_TYPE_ISO ; type + .db 0x00 ; max packet LSB + .db 0x14 ; max packet size=3*1024 bytes + .db 0x01 ; polling interval + +; ISOCHRONOUS interface 16MB/s + .db DSCR_INTERFACE_LEN + .db DSCR_INTERFACE_TYPE + .db 0 ; index + .db 2 ; alt setting idx + .db 1 ; n endpoints + .db 0xff ; class + .db 0 + .db 1 + .db 0 ; string index + +; endpoint 2 in + .db DSCR_ENDPOINT_LEN + .db DSCR_ENDPOINT_TYPE + .db 0x82 ; ep1 dir=in and address + .db ENDPOINT_TYPE_ISO ; type + .db 0x00 ; max packet LSB + .db 0x0c ; max packet size=2*1024 bytes + .db 0x01 ; polling interval + +; ISOCHRONOUS interface 8MB/s + .db DSCR_INTERFACE_LEN + .db DSCR_INTERFACE_TYPE + .db 0 ; index + .db 3 ; alt setting idx + .db 1 ; n endpoints + .db 0xff ; class + .db 0 + .db 1 + .db 0 ; string index + +; endpoint 2 in + .db DSCR_ENDPOINT_LEN + .db DSCR_ENDPOINT_TYPE + .db 0x82 ; ep1 dir=in and address + .db ENDPOINT_TYPE_ISO ; type + .db 0x00 ; max packet LSB + .db 0x04 ; max packet size=1024 bytes + .db 0x01 ; polling interval + +; ISOCHRONOUS interface 4MB/s + .db DSCR_INTERFACE_LEN + .db DSCR_INTERFACE_TYPE + .db 0 ; index + .db 4 ; alt setting idx + .db 1 ; n endpoints + .db 0xff ; class + .db 0 + .db 1 + .db 0 ; string index + +; endpoint 2 in + .db DSCR_ENDPOINT_LEN + .db DSCR_ENDPOINT_TYPE + .db 0x82 ; ep1 dir=in and address + .db ENDPOINT_TYPE_ISO ; type + .db 0x00 ; max packet LSB + .db 0x04 ; max packet size=1024 bytes + .db 0x02 ; polling interval + + +; ISOCHRONOUS interface 2MB/s + .db DSCR_INTERFACE_LEN + .db DSCR_INTERFACE_TYPE + .db 0 ; index + .db 5 ; alt setting idx + .db 1 ; n endpoints + .db 0xff ; class + .db 0 + .db 1 + .db 0 ; string index + +; endpoint 2 in + .db DSCR_ENDPOINT_LEN + .db DSCR_ENDPOINT_TYPE + .db 0x82 ; ep1 dir=in and address + .db ENDPOINT_TYPE_ISO ; type + .db 0x00 ; max packet LSB + .db 0x04 ; max packet size=1024 bytes + .db 0x03 ; polling interval + +; ISOCHRONOUS interface 1MB/s + .db DSCR_INTERFACE_LEN + .db DSCR_INTERFACE_TYPE + .db 0 ; index + .db 6 ; alt setting idx + .db 1 ; n endpoints + .db 0xff ; class + .db 0 + .db 1 + .db 0 ; string index + +; endpoint 2 in + .db DSCR_ENDPOINT_LEN + .db DSCR_ENDPOINT_TYPE + .db 0x82 ; ep1 dir=in and address + .db ENDPOINT_TYPE_ISO ; type + .db 0x00 ; max packet LSB + .db 0x04 ; max packet size=1024 bytes + .db 0x04 ; polling interval + +; ISOCHRONOUS interface 500 kB/s + .db DSCR_INTERFACE_LEN + .db DSCR_INTERFACE_TYPE + .db 0 ; index + .db 7 ; alt setting idx + .db 1 ; n endpoints + .db 0xff ; class + .db 0 + .db 1 + .db 0 ; string index + +; endpoint 2 in + .db DSCR_ENDPOINT_LEN + .db DSCR_ENDPOINT_TYPE + .db 0x82 ; ep1 dir=in and address + .db ENDPOINT_TYPE_ISO ; type + .db 0x00 ; max packet LSB + .db 0x02 ; max packet size=512 bytes + .db 0x04 ; polling interval + + +highspd_dscr_realend: + +.even +_fullspd_dscr: + .db fullspd_dscr_end-_fullspd_dscr ; dscr len + .db DSCR_CONFIG_TYPE + ; can't use .dw because byte order is different + .db (fullspd_dscr_realend-_fullspd_dscr) % 256 ; total length of config lsb + .db (fullspd_dscr_realend-_fullspd_dscr) / 256 ; total length of config msb + .db 2 ; n interfaces + .db 1 ; config number + .db 0 ; config string + .db 0x80 ; attrs = bus powered, no wakeup + .db 55 ; max power = 110mA +fullspd_dscr_end: + + +; all the interfaces next +; BULK interface + .db DSCR_INTERFACE_LEN + .db DSCR_INTERFACE_TYPE + .db 0 ; index + .db 0 ; alt setting idx + .db 1 ; n endpoints + .db 0xff ; class + .db 0 + .db 0 + .db 0 ; string index + +; endpoint 6 in + .db DSCR_ENDPOINT_LEN + .db DSCR_ENDPOINT_TYPE + .db 0x86 ; ep1 dir=in and address + .db ENDPOINT_TYPE_BULK ; type + .db 0x40 ; max packet LSB + .db 0x00 ; max packet size=512 bytes + .db 0x00 ; polling interval + +; ISOCHRONOUS interface 1 MB/s + .db DSCR_INTERFACE_LEN + .db DSCR_INTERFACE_TYPE + .db 0 ; index + .db 1 ; alt setting idx + .db 1 ; n endpoints + .db 0xff ; class + .db 0 + .db 1 + .db 0 ; string index + +; endpoint 2 in + .db DSCR_ENDPOINT_LEN + .db DSCR_ENDPOINT_TYPE + .db 0x82 ; ep1 dir=in and address + .db ENDPOINT_TYPE_ISO ; type + .db 0xff ; max packet LSB + .db 0x03 ; max packet size=1023 bytes + .db 0x01 ; polling interval + +; ISOCHRONOUS interface 500 kB/s + .db DSCR_INTERFACE_LEN + .db DSCR_INTERFACE_TYPE + .db 0 ; index + .db 2 ; alt setting idx + .db 1 ; n endpoints + .db 0xff ; class + .db 0 + .db 1 + .db 0 ; string index + +; endpoint 2 in + .db DSCR_ENDPOINT_LEN + .db DSCR_ENDPOINT_TYPE + .db 0x82 ; ep1 dir=in and address + .db ENDPOINT_TYPE_ISO ; type + .db 0x00 ; max packet LSB + .db 0x02 ; max packet size=512 bytes + .db 0x01 ; polling interval + +fullspd_dscr_realend: + +.even +_dev_strings: +; sample string +_string0: + .db string0end-_string0 ; len + .db DSCR_STRING_TYPE + .db 0x09, 0x04 ; 0x0409 is the language code for English. Possible to add more codes after this. +string0end: +; add more strings here +_string1: + .db string1end-_string1 ; len + .db DSCR_STRING_TYPE + .ascii 'O\0D\0M\0' +string1end: +_string2: + .db string2end-_string2 ; len + .db DSCR_STRING_TYPE + .ascii 'f\0x\0002\0l\0a\0f\0w\0' +string2end: + + +_dev_strings_end: + .dw 0x0000 ; in case you wanted to look at memory between _dev_strings and _dev_strings_end