]> sigrok.org Git - sigrok-firmware-fx2lafw.git/commitdiff
Add saleae-logic/ subdir/project.
authorUwe Hermann <redacted>
Wed, 22 Feb 2012 23:13:26 +0000 (00:13 +0100)
committerUwe Hermann <redacted>
Wed, 22 Feb 2012 23:13:26 +0000 (00:13 +0100)
Makefile
saleae-logic/Makefile [new file with mode: 0644]
saleae-logic/dscr.a51 [new file with mode: 0644]
saleae-logic/main.c [new file with mode: 0644]

index 0fa948f41d806411259a59c679e06e0b775883f3..662ee48d6229919fd655259538551e010a3e727a 100644 (file)
--- a/Makefile
+++ b/Makefile
 ## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 ##
 
-all: cwav-usbeeax
+all: saleae-logic cwav-usbeeax
+
+saleae-logic:
+       $(MAKE) -C saleae-logic
 
 cwav-usbeeax:
        $(MAKE) -C cwav-usbeeax
 
 clean:
+       rm -rf saleae-logic/build
        rm -rf cwav-usbeeax/build
 
-.PHONY: cwav-usbeeax
+.PHONY: saleae-logic cwav-usbeeax
 
diff --git a/saleae-logic/Makefile b/saleae-logic/Makefile
new file mode 100644 (file)
index 0000000..184c105
--- /dev/null
@@ -0,0 +1,25 @@
+##
+## This file is part of the fx2lafw project.
+##
+## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program 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 General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+##
+
+SOURCES = main.c ../fx2lafw.c ../debug.c
+A51_SOURCES = dscr.a51
+BASENAME = fx2lafw-saleae-logic
+
+include ../Makefile.include
diff --git a/saleae-logic/dscr.a51 b/saleae-logic/dscr.a51
new file mode 100644 (file)
index 0000000..e67617f
--- /dev/null
@@ -0,0 +1,228 @@
+;;
+;; This file is part of the fx2lafw project.
+;;
+;; Copyright (C) 2011-2012 Uwe Hermann <uwe@hermann-uwe.de>
+;;
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2 of the License, or
+;; (at your option) any later version.
+;;
+;; This program 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 General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program; if not, write to the Free Software
+;; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+;;
+
+.module DEV_DSCR
+
+; Descriptor types
+DSCR_DEVICE_TYPE       = 1
+DSCR_CONFIG_TYPE       = 2
+DSCR_STRING_TYPE       = 3
+DSCR_INTERFACE_TYPE    = 4
+DSCR_ENDPOINT_TYPE     = 5
+DSCR_DEVQUAL_TYPE      = 6
+
+; Descriptor lengths
+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
+.area DSCR_AREA (CODE)
+
+; -----------------------------------------------------------------------------
+; Device descriptor
+; -----------------------------------------------------------------------------
+_dev_dscr:
+       .db     dev_dscr_end - _dev_dscr
+       .db     DSCR_DEVICE_TYPE
+       .dw     0x0002                  ; USB 2.0
+       .db     0xff                    ; Class (vendor specific)
+       .db     0xff                    ; Subclass (vendor specific)
+       .db     0xff                    ; Protocol (vendor specific)
+       .db     64                      ; Max. EP0 packet size
+       .dw     0x2509                  ; Manufacturer ID (0x0925)
+       .dw     0x8138                  ; Product ID (0x3881)
+       .dw     0x0100                  ; Product version (0.01)
+       .db     1                       ; Manufacturer string index
+       .db     2                       ; Product string index
+       .db     0                       ; Serial number string index (none)
+       .db     1                       ; Number of configurations
+dev_dscr_end:
+
+; -----------------------------------------------------------------------------
+; Device qualifier (for "other device speed")
+; -----------------------------------------------------------------------------
+_dev_qual_dscr:
+       .db     dev_qualdscr_end - _dev_qual_dscr
+       .db     DSCR_DEVQUAL_TYPE
+       .dw     0x0002                  ; USB 2.0
+       .db     0xff                    ; Class (vendor specific)
+       .db     0xff                    ; Subclass (vendor specific)
+       .db     0xff                    ; Protocol (vendor specific)
+       .db     64                      ; Max. EP0 packet size
+       .db     1                       ; Number of configurations
+       .db     0                       ; Extra reserved byte
+dev_qualdscr_end:
+
+; -----------------------------------------------------------------------------
+; High-Speed configuration descriptor
+; -----------------------------------------------------------------------------
+_highspd_dscr:
+       .db     highspd_dscr_end - _highspd_dscr
+       .db     DSCR_CONFIG_TYPE
+       ; Total length of the configuration (1st line LSB, 2nd line MSB)
+       .db     (highspd_dscr_realend - _highspd_dscr) % 256
+       .db     (highspd_dscr_realend - _highspd_dscr) / 256
+       .db     1                       ; Number of interfaces
+       .db     1                       ; Configuration number
+       .db     0                       ; Configuration string (none)
+       .db     0x80                    ; Attributes (bus powered, no wakeup)
+       .db     0x32                    ; Max. power (100mA)
+highspd_dscr_end:
+
+       ; Interfaces (only one in our case)
+       .db     DSCR_INTERFACE_LEN
+       .db     DSCR_INTERFACE_TYPE
+       .db     0                       ; Interface index
+       .db     0                       ; Alternate setting index
+       .db     2                       ; Number of endpoints
+       .db     0xff                    ; Class (vendor specific)
+       .db     0xff                    ; Subclass (vendor specific)
+       .db     0xff                    ; Protocol (vendor specific)
+       .db     0                       ; String index (none)
+
+       ; Endpoint 2 (IN)
+       .db     DSCR_ENDPOINT_LEN
+       .db     DSCR_ENDPOINT_TYPE
+       .db     0x82                    ; EP number (2), direction (IN)
+       .db     ENDPOINT_TYPE_BULK      ; Endpoint type (bulk)
+       .db     0x00                    ; Max. packet size, LSB (512 bytes)
+       .db     0x02                    ; Max. packet size, MSB (512 bytes)
+       .db     0x00                    ; Polling interval
+
+       ; Endpoint 6 (IN)
+       .db     DSCR_ENDPOINT_LEN
+       .db     DSCR_ENDPOINT_TYPE
+       .db     0x86                    ; EP number (6), direction (IN)
+       .db     ENDPOINT_TYPE_BULK      ; Endpoint type (bulk)
+       .db     0x00                    ; Max. packet size, LSB (512 bytes)
+       .db     0x02                    ; Max. packet size, MSB (512 bytes)
+       .db     0x00                    ; Polling interval
+
+highspd_dscr_realend:
+
+       .even
+
+; -----------------------------------------------------------------------------
+; Full-Speed configuration descriptor
+; -----------------------------------------------------------------------------
+_fullspd_dscr:
+       .db     fullspd_dscr_end - _fullspd_dscr
+       .db     DSCR_CONFIG_TYPE
+       ; Total length of the configuration (1st line LSB, 2nd line MSB)
+       .db     (fullspd_dscr_realend - _fullspd_dscr) % 256
+       .db     (fullspd_dscr_realend - _fullspd_dscr) / 256
+       .db     1                       ; Number of interfaces
+       .db     1                       ; Configuration number
+       .db     0                       ; Configuration string (none)
+       .db     0x80                    ; Attributes (bus powered, no wakeup)
+       .db     0x32                    ; Max. power (100mA)
+fullspd_dscr_end:
+
+       ; Interfaces (only one in our case)
+       .db     DSCR_INTERFACE_LEN
+       .db     DSCR_INTERFACE_TYPE
+       .db     0                       ; Interface index
+       .db     0                       ; Alternate setting index
+       .db     2                       ; Number of endpoints
+       .db     0xff                    ; Class (vendor specific)
+       .db     0xff                    ; Subclass (vendor specific)
+       .db     0xff                    ; Protocol (vendor specific)
+       .db     0                       ; String index (none)
+
+       ; Endpoint 2 (IN)
+       .db     DSCR_ENDPOINT_LEN
+       .db     DSCR_ENDPOINT_TYPE
+       .db     0x82                    ; EP number (2), direction (IN)
+       .db     ENDPOINT_TYPE_BULK      ; Endpoint type (bulk)
+       .db     0x40                    ; Max. packet size, LSB (64 bytes)
+       .db     0x00                    ; Max. packet size, MSB (64 bytes)
+       .db     0x00                    ; Polling interval
+
+       ; Endpoint 6 (IN)
+       .db     DSCR_ENDPOINT_LEN
+       .db     DSCR_ENDPOINT_TYPE
+       .db     0x86                    ; EP number (6), direction (IN)
+       .db     ENDPOINT_TYPE_BULK      ; Endpoint type (bulk)
+       .db     0x40                    ; Max. packet size, LSB (64 bytes)
+       .db     0x00                    ; Max. packet size, MSB (64 bytes)
+       .db     0x00                    ; Polling interval
+
+fullspd_dscr_realend:
+
+       .even
+
+; -----------------------------------------------------------------------------
+; Strings
+; -----------------------------------------------------------------------------
+
+_dev_strings:
+
+; See http://www.usb.org/developers/docs/USB_LANGIDs.pdf for the full list.
+_string0:
+       .db     string0end - _string0
+       .db     DSCR_STRING_TYPE
+       .db     0x09, 0x04              ; Language code 0x0409 (English, US)
+string0end:
+
+_string1:
+       .db     string1end - _string1
+       .db     DSCR_STRING_TYPE
+       .ascii  's'
+       .db     0
+       .ascii  'i'
+       .db     0
+       .ascii  'g'
+       .db     0
+       .ascii  'r'
+       .db     0
+       .ascii  'o'
+       .db     0
+       .ascii  'k'
+       .db     0
+string1end:
+
+_string2:
+       .db     string2end - _string2
+       .db     DSCR_STRING_TYPE
+       .ascii  'f'
+       .db     0
+       .ascii  'x'
+       .db     0
+       .ascii  '2'
+       .db     0
+       .ascii  'l'
+       .db     0
+       .ascii  'a'
+       .db     0
+       .ascii  'f'
+       .db     0
+       .ascii  'w'
+       .db     0
+string2end:
+
+_dev_strings_end:
+       .dw 0x0000
+
diff --git a/saleae-logic/main.c b/saleae-logic/main.c
new file mode 100644 (file)
index 0000000..fecf950
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * This file is part of the fx2lafw project.
+ *
+ * Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+#include <fx2lafw.h>
+
+void main(void)
+{
+       fx2lafw_init();
+
+       while (1)
+               fx2lafw_run();
+}