Good evening, freedom fighters,

I am preparing some patches to Linux.
This patch-set intends to add build rules for the keyspan_pda and
xircom_pgs free firmwares.

I'd like to get it reviewed by you guys before I send it to the
linux-usb mailing list. I need some advice on the third patch since it
is currently incomplete. I have added a build_firmware target to the
Makefile in the firmware/ directory. This target will be responsible
for invoking the Makefiles of the subdirectories where there is code
of free firmware that needs to be built into HEX files. Currently just
these two firmwares are going to be compiled by this target, but in
the future I hope to see *all* firmware in Linux being built by this
target :-D

The issue is that I dont know exactly how to add this target as a
dependency of the rule that converts HEX into .fw (binary ihex format
used by the kernel). Can you help me fix that?

Happy Hacking,
Felipe Sanches

PS:
I will travel tomorrow in the morning and I'll be back to the internet
on Monday (january 10th).
From a2f41d8a7e3307ba328ee434799e7414c5174d34 Mon Sep 17 00:00:00 2001
From: Felipe Correa da Silva Sanches <[email protected]>
Date: Tue, 4 Jan 2011 19:59:40 -0200
Subject: [PATCH 1/3] add a header with general #defines for EzUSB firmware development

There are several devices that use a Cypress EzUSB microcontroller. Most of these devices are digital tv receivers.
This header file contains #defines with register addresses based on info from the EzUSB datasheet.

Free firmware for ezusb devices can use this header to avoid duplication of code.
---
 firmware/include/ezusb.h |   46 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 46 insertions(+), 0 deletions(-)
 create mode 100644 firmware/include/ezusb.h

diff --git a/firmware/include/ezusb.h b/firmware/include/ezusb.h
new file mode 100644
index 0000000..984ffa8
--- /dev/null
+++ b/firmware/include/ezusb.h
@@ -0,0 +1,46 @@
+#define dpl1 0x84
+#define dph1 0x85
+#define dps 0x86
+
+;;// usb interrupt : enable is EIE.0 (0xe8), flag is EXIF.4 (0x91)
+#define EXIF 0x91
+#define EIE 0xe8
+#define EUSB (EIE+0)
+#define IE 0xa8
+#define ES0 (IE+4)
+
+#define EP0CS #0x7fb4
+#define EP0STALLbit #0x01
+#define IN0BUF #0x7f00
+#define IN0BC #0x7fb5
+#define OUT0BUF #0x7ec0
+#define OUT0BC #0x7fc5		
+#define IN2BUF #0x7e00
+#define IN2BC #0x7fb9
+#define IN2CS #0x7fb8
+#define OUT2BC #0x7fc9
+#define OUT2CS #0x7fc8
+#define OUT2BUF #0x7dc0
+#define IN4BUF #0x7d00
+#define IN4BC #0x7fbd
+#define IN4CS #0x7fbc
+#define OEB #0x7f9d
+#define OUTB #0x7f97
+#define OEC #0x7f9e
+#define OUTC #0x7f98
+#define PINSC #0x7f9b
+#define PORTBCFG #0x7f94
+#define PORTCCFG #0x7f95
+#define OEA	#0x7f9c
+#define IN07IRQ #0x7fa9
+#define OUT07IRQ #0x7faa
+#define IN07IEN #0x7fac
+#define OUT07IEN #0x7fad
+#define USBIRQ #0x7fab
+#define USBIEN #0x7fae
+#define USBBAV #0x7faf
+#define USBCS #0x7fd6
+#define SUDPTRH #0x7fd4
+#define SUDPTRL #0x7fd5
+#define SETUPDAT #0x7fe8
+
-- 
1.7.0.4

From 6afa0dcd1251a6fe1826e23e1acc44b7d34a4b6f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Felipe=20Corr=C3=AAa=20da=20Silva=20Sanches?= <[email protected]>
Date: Tue, 4 Jan 2011 20:50:56 -0200
Subject: [PATCH 2/3] update keyspan_pda firmware source code so that it can be built with asx8051

This firmware originally had instructions on how to build it with as31 (8051 assembler).
As we have several devices based on the 8051, it is good that we have a single prefered
8051 assembler. I have chosen asx8051 since it is the assembler used by sdcc (Small
Devices C Compiler) and we already have some firmware code that uses that.

This patch adjusts the syntax of the keyspan_pda and xircom_pgs firmware code so that it
can be built with asx8051.
---
 firmware/keyspan_pda/keyspan_pda.S |  107 +++++++++---------------------------
 firmware/keyspan_pda/xircom_pgs.S  |  102 ++++++++--------------------------
 2 files changed, 51 insertions(+), 158 deletions(-)

diff --git a/firmware/keyspan_pda/keyspan_pda.S b/firmware/keyspan_pda/keyspan_pda.S
index f3acc19..805237d 100644
--- a/firmware/keyspan_pda/keyspan_pda.S
+++ b/firmware/keyspan_pda/keyspan_pda.S
@@ -4,6 +4,7 @@
  *  the EzUSB microcontroller.
  * 
  *  (C) Copyright 2000 Brian Warner <[email protected]>
+ *  (C) Copyright 2011 Felipe Correa da Silva Sanches <[email protected]>
  * 
  * 	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
@@ -22,13 +23,6 @@
  *   PC2      -> rts pin 7               PC6 <- dcd pin 1
  *   PC3      <- cts pin 8               PC7 -> dtr pin 4
  *   PB1 -> line driver standby
- *
- *  The EzUSB register constants below come from their excellent documentation
- *  and sample code (which used to be available at www.anchorchips.com, but
- *  that has now been absorbed into Cypress' site and the CD-ROM contents
- *  don't appear to be available online anymore). If we get multiple
- *  EzUSB-based drivers into the kernel, it might be useful to pull them out
- *  into a separate .h file.
  * 
  * THEORY OF OPERATION:
  *
@@ -80,13 +74,6 @@
  *   use totally different registers!
  *  USB 1.1 spec: www.usb.org
  *
- * HOW TO BUILD:
- *  gcc -x assembler-with-cpp -P -E -o keyspan_pda.asm keyspan_pda.s
- *  as31 -l keyspan_pda.asm
- *  mv keyspan_pda.obj keyspan_pda.hex
- *  perl ezusb_convert.pl keyspan_pda < keyspan_pda.hex > keyspan_pda_fw.h
- * Get as31 from <http://www.pjrc.com/tech/8051/index.html>, and hack on it
- * a bit to make it build.
  *
  * THANKS:
  *  Greg Kroah-Hartman, for coordinating the whole usb-serial thing.
@@ -109,82 +96,45 @@
  *
  *  -Brian Warner <[email protected]>
  *
- */
-	
-#define HIGH(x) (((x) & 0xff00) / 256)
-#define LOW(x) ((x) & 0xff)
+ *  The EzUSB register constants in the ezusb.h file come from their excellent
+ *  documentation and sample code (which used to be available at
+ *  www.anchorchips.com, but that has now been absorbed into Cypress' site
+ *  and the CD-ROM contents don't appear to be available online anymore).
+*/
+#include <ezusb.h>
 
-#define dpl1 0x84
-#define dph1 0x85
-#define dps 0x86
+.area CODE (ABS)
+	
+#define HIGH(x) >x
+#define LOW(x) <x
 
 ;;; our bit assignments
 #define TX_RUNNING 0
 #define DO_TX_UNTHROTTLE 1
 	
-	;; stack from 0x60 to 0x7f: should really set SP to 0x60-1, not 0x60
+;; stack from 0x60 to 0x7f: should really set SP to 0x60-1, not 0x60
 #define STACK #0x60-1
 
-#define EXIF 0x91
-#define EIE 0xe8
-	.flag EUSB, EIE.0
-	.flag ES0, IE.4
-
-#define EP0CS #0x7fb4
-#define EP0STALLbit #0x01
-#define IN0BUF #0x7f00
-#define IN0BC #0x7fb5
-#define OUT0BUF #0x7ec0
-#define OUT0BC #0x7fc5		
-#define IN2BUF #0x7e00
-#define IN2BC #0x7fb9
-#define IN2CS #0x7fb8
-#define OUT2BC #0x7fc9
-#define OUT2CS #0x7fc8
-#define OUT2BUF #0x7dc0
-#define IN4BUF #0x7d00
-#define IN4BC #0x7fbd
-#define IN4CS #0x7fbc
-#define OEB #0x7f9d
-#define OUTB #0x7f97
-#define OEC #0x7f9e
-#define OUTC #0x7f98
-#define PINSC #0x7f9b
-#define PORTCCFG #0x7f95
-#define IN07IRQ #0x7fa9
-#define OUT07IRQ #0x7faa
-#define IN07IEN #0x7fac
-#define OUT07IEN #0x7fad
-#define USBIRQ #0x7fab
-#define USBIEN #0x7fae
-#define USBBAV #0x7faf
-#define USBCS #0x7fd6
-#define SUDPTRH #0x7fd4
-#define SUDPTRL #0x7fd5
-#define SETUPDAT #0x7fe8
-		
-	;; usb interrupt : enable is EIE.0 (0xe8), flag is EXIF.4 (0x91)
-
 	.org 0
 	ljmp start
 	;; interrupt vectors
-	.org 23H
+	.org 0x23
 	ljmp serial_int
 	.byte 0
 	
-	.org 43H
+	.org 0x43
 	ljmp USB_Jump_Table
 	.byte 0			; filled in by the USB core
 
 ;;; local variables. These are not initialized properly: do it by hand.
-	.org 30H
+	.org 0x30
 rx_ring_in:	.byte 0
 rx_ring_out:	.byte 0
 tx_ring_in:	.byte 0
 tx_ring_out:	.byte 0
 tx_unthrottle_threshold:	.byte 0
 		
-	.org 0x100H		; wants to be on a page boundary
+	.org 0x100		; wants to be on a page boundary
 USB_Jump_Table:
 	ljmp	ISR_Sudav	; Setup Data Available
 	.byte 0
@@ -243,11 +193,11 @@ clear_rx_ring_loop:
 
 ;;; turn on the RS-232 driver chip (bring the STANDBY pin low)
 	;; set OEB.1
-	mov a, #02H
+	mov a, #0x02
 	mov dptr,OEB
 	movx @dptr,a
 	;; clear PB1
-	mov a, #00H
+	mov a, #0x00
 	mov dptr,OUTB
 	movx @dptr,a
 	;; set OEC.[127]
@@ -285,7 +235,7 @@ clear_rx_ring_loop:
 	mov dptr,OUTC
 	movx @dptr, a
 	;; setup the serial port. 9600 8N1.
-	mov a,#01010011		; mode 1, enable rx, clear int
+	mov a,#0b01010011		; mode 1, enable rx, clear int
 	mov SCON, a
 	;;  using timer2, in 16-bit baud-rate-generator mode
 	;;   (xtal 12MHz, internal fosc 24MHz)
@@ -298,11 +248,11 @@ clear_rx_ring_loop:
 #define BAUD_HIGH(rate) HIGH(BAUD_TIMEOUT(rate))
 #define BAUD_LOW(rate) LOW(BAUD_TIMEOUT(rate))
 		
-	mov T2CON, #030h	; rclk=1,tclk=1,cp=0,tr2=0(enable later)
+	mov T2CON, #0x30	; rclk=1,tclk=1,cp=0,tr2=0(enable later)
 	mov r3, #5
 	acall set_baud
 	setb TR2
-	mov SCON, #050h
+	mov SCON, #0x50
 	
 #if 0
 	mov r1, #0x40
@@ -362,7 +312,7 @@ ISR_Sudav:
 	clr acc.4
 	mov EXIF,a		; clear INT2 first
 	mov dptr, USBIRQ	; clear USB int
-	mov a,#01h
+	mov a,#0x01
 	movx @dptr,a
 
 	;; get request type
@@ -712,7 +662,7 @@ ISR_Ep2in:
 	clr acc.4
 	mov EXIF,a		; clear INT2 first
 	mov dptr, IN07IRQ	; clear USB int
-	mov a,#04h
+	mov a,#0x04
 	movx @dptr,a
 
 	;; do stuff
@@ -737,7 +687,7 @@ ISR_Ep2out:
 	clr acc.4
 	mov EXIF,a		; clear INT2 first
 	mov dptr, OUT07IRQ	; clear USB int
-	mov a,#04h
+	mov a,#0x04
 	movx @dptr,a
 
 	;; do stuff
@@ -1115,10 +1065,7 @@ string_serial_end:
 	
 	.org 0x1000
 tx_ring:
-	.skip 0x100		; 256 bytes
+	.ds 0x100		; 256 bytes
 rx_ring:
-	.skip 0x100		; 256 bytes
-	
-	
-	.END
-	
+	.ds 0x100		; 256 bytes
+
diff --git a/firmware/keyspan_pda/xircom_pgs.S b/firmware/keyspan_pda/xircom_pgs.S
index 0b79bbf..bd6f0a2 100644
--- a/firmware/keyspan_pda/xircom_pgs.S
+++ b/firmware/keyspan_pda/xircom_pgs.S
@@ -4,6 +4,7 @@
  *  the EzUSB microcontroller.
  * 
  *  (C) Copyright 2000 Brian Warner <[email protected]>
+ *  (C) Copyright 2011 Felipe Correa da Silva Sanches <[email protected]>
  * 
  * 	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
@@ -23,12 +24,6 @@
  *   PC3      <- cts pin 8               PC7 -> dtr pin 4
  *   PB1 -> line driver standby
  *
- *  The EzUSB register constants below come from their excellent documentation
- *  and sample code (which used to be available at www.anchorchips.com, but
- *  that has now been absorbed into Cypress' site and the CD-ROM contents
- *  don't appear to be available online anymore). If we get multiple
- *  EzUSB-based drivers into the kernel, it might be useful to pull them out
- *  into a separate .h file.
  * 
  * THEORY OF OPERATION:
  *
@@ -80,13 +75,6 @@
  *   use totally different registers!
  *  USB 1.1 spec: www.usb.org
  *
- * HOW TO BUILD:
- *  gcc -x assembler-with-cpp -P -E -o keyspan_pda.asm keyspan_pda.s
- *  as31 -l keyspan_pda.asm
- *  mv keyspan_pda.obj keyspan_pda.hex
- *  perl ezusb_convert.pl keyspan_pda < keyspan_pda.hex > keyspan_pda_fw.h
- * Get as31 from <http://www.pjrc.com/tech/8051/index.html>, and hack on it
- * a bit to make it build.
  *
  * THANKS:
  *  Greg Kroah-Hartman, for coordinating the whole usb-serial thing.
@@ -109,84 +97,45 @@
  *
  *  -Brian Warner <[email protected]>
  *
- */
+ *  The EzUSB register constants in the ezusb.h file come from their excellent
+ *  documentation and sample code (which used to be available at
+ *  www.anchorchips.com, but that has now been absorbed into Cypress' site
+ *  and the CD-ROM contents don't appear to be available online anymore).
+*/
+#include <ezusb.h>
 	
-#define HIGH(x) (((x) & 0xff00) / 256)
-#define LOW(x) ((x) & 0xff)
-
-#define dpl1 0x84
-#define dph1 0x85
-#define dps 0x86
+#define HIGH(x) >x
+#define LOW(x) <x
 
 ;;; our bit assignments
 #define TX_RUNNING 0
 #define DO_TX_UNTHROTTLE 1
 	
-	;; stack from 0x60 to 0x7f: should really set SP to 0x60-1, not 0x60
+;; stack from 0x60 to 0x7f: should really set SP to 0x60-1, not 0x60
 #define STACK #0x60-1
 
-#define EXIF 0x91
-#define EIE 0xe8
-	.flag EUSB, EIE.0
-	.flag ES0, IE.4
-
-#define EP0CS #0x7fb4
-#define EP0STALLbit #0x01
-#define IN0BUF #0x7f00
-#define IN0BC #0x7fb5
-#define OUT0BUF #0x7ec0
-#define OUT0BC #0x7fc5		
-#define IN2BUF #0x7e00
-#define IN2BC #0x7fb9
-#define IN2CS #0x7fb8
-#define OUT2BC #0x7fc9
-#define OUT2CS #0x7fc8
-#define OUT2BUF #0x7dc0
-#define IN4BUF #0x7d00
-#define IN4BC #0x7fbd
-#define IN4CS #0x7fbc
-#define OEB #0x7f9d
-#define OUTB #0x7f97
-#define OEC #0x7f9e
-#define OUTC #0x7f98
-#define PINSC #0x7f9b
-#define PORTBCFG #0x7f94
-#define PORTCCFG #0x7f95
-#define OEA	#0x7f9c
-#define IN07IRQ #0x7fa9
-#define OUT07IRQ #0x7faa
-#define IN07IEN #0x7fac
-#define OUT07IEN #0x7fad
-#define USBIRQ #0x7fab
-#define USBIEN #0x7fae
-#define USBBAV #0x7faf
-#define USBCS #0x7fd6
-#define SUDPTRH #0x7fd4
-#define SUDPTRL #0x7fd5
-#define SETUPDAT #0x7fe8
-		
-	;; usb interrupt : enable is EIE.0 (0xe8), flag is EXIF.4 (0x91)
+.area CODE (ABS)
 
 	.org 0
 	ljmp start
 	;; interrupt vectors
-	.org 23H
+	.org 0x23
 	ljmp serial_int
 	.byte 0
 	
-	.org 43H
+	.org 0x43
 	ljmp USB_Jump_Table
 	.byte 0			; filled in by the USB core
 
 ;;; local variables. These are not initialized properly: do it by hand.
-	.org 30H
+	.org 0x30
 rx_ring_in:	.byte 0
 rx_ring_out:	.byte 0
 tx_ring_in:	.byte 0
 tx_ring_out:	.byte 0
 tx_unthrottle_threshold:	.byte 0
 		
-	.org 0x100H		; wants to be on a page boundary
+	.org 0x100		; wants to be on a page boundary
 USB_Jump_Table:
 	ljmp	ISR_Sudav	; Setup Data Available
 	.byte 0
@@ -336,11 +285,11 @@ clear_rx_ring_loop:
 #define BAUD_HIGH(rate) HIGH(BAUD_TIMEOUT(rate))
 #define BAUD_LOW(rate) LOW(BAUD_TIMEOUT(rate))
 		
-	mov T2CON, #030h	; rclk=1,tclk=1,cp=0,tr2=0(enable later)
+	mov T2CON, #0x30	; rclk=1,tclk=1,cp=0,tr2=0(enable later)
 	mov r3, #5
 	acall set_baud
 	setb TR2
-	mov SCON, #050h
+	mov SCON, #0x50
 	
 #if 0
 	mov r1, #0x40
@@ -400,7 +349,7 @@ ISR_Sudav:
 	clr acc.4
 	mov EXIF,a		; clear INT2 first
 	mov dptr, USBIRQ	; clear USB int
-	mov a,#01h
+	mov a,#0x01
 	movx @dptr,a
 
 	;; get request type
@@ -751,7 +700,7 @@ ISR_Ep2in:
 	clr acc.4
 	mov EXIF,a		; clear INT2 first
 	mov dptr, IN07IRQ	; clear USB int
-	mov a,#04h
+	mov a,#0x04
 	movx @dptr,a
 
 	mov a, #0x20             ; Turn off the green LED
@@ -794,7 +743,7 @@ ISR_Ep2out:
 	clr acc.4
 	mov EXIF,a		; clear INT2 first
 	mov dptr, OUT07IRQ	; clear USB int
-	mov a,#04h
+	mov a,#0x04
 	movx @dptr,a
 
 	;; do stuff
@@ -1051,8 +1000,8 @@ start_in__kick:
 	;; either we ran out of data, or we copied 64 bytes. r1 has byte count
 	;; kick off IN
 	mov a, #0x10             ; Turn the green LED
-        mov dptr,OEA
-        movx @dptr, a
+  mov dptr,OEA
+  movx @dptr, a
 	mov dptr, IN2BC
 	mov a, r1
 	jz start_in__done
@@ -1183,10 +1132,7 @@ string_serial_end:
 	
 	.org 0x1000
 tx_ring:
-	.skip 0x100		; 256 bytes
+	.ds 0x100		; 256 bytes
 rx_ring:
-	.skip 0x100		; 256 bytes
-	
-	
-	.END
+	.ds 0x100		; 256 bytes
 	
-- 
1.7.0.4

From b645aa24cec6e9ca96c5b340ad14b34960c28ccf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Felipe=20Corr=C3=AAa=20da=20Silva=20Sanches?= <[email protected]>
Date: Tue, 4 Jan 2011 22:02:57 -0200
Subject: [PATCH 3/3] add Makefile for building keyspan_pda firmware from source

This Makefile builds keyspan_pda.S and xircom_pgs.S resulting in
IHEX firmware files (keyspan_pda.HEX and xircom_pgs.HEX)

These files are not identical to the currently shipped ones, but
their IHEX content is an equivalent representation of the exact
 same addresses and memory content.

This difference is probably due to the use of different tools
(the firmware seem to have been originally built with as31 but
now we are using asx8051) to build these files, but it is not a
problem  since these IHEX files are completely equivalent data
encodings of the same 8051 object code. I have checked that.
xircom_pgs.HEX object code matches perfectly with the currently
shipped one while there is only a one-byte mismatch for keyspan_pda.HEX
object code which is discussed in the following paragraph.

There is only a single one-byte difference in the object code of
keyspan_pda.HEX in comparison to the originally shipped one:
the value of address 0x266 was 0x00 and in this newly-built
firmware image it is 0x53. The original developer was contacted
 and he acknowledges that this seems to be a bug, perhaps in the
 original tools used to build this firmware in march 2000.

This byte (along with the 0x74 that preceds it) means:
mov a, #0x53 (new build)
or
mov a, #0x00 (old build)

 In context, this is a relevant snipped of surrounding assembly code
from keyspan_pda.S:

	;; setup the serial port. 9600 8N1.
	mov a,#0b01010011   ; mode 1, enable rx, clear int
	mov SCON, a

 The original code did not have a 0b prefix which may have caused the
as31 assembler to consider that binary value to mean zero (a bug in
 the tool perhaps?!).

The intention of the developer is clearly of storing 0x53 in the 8051
SCON (Serial Port Control) register and indeed doing that seems to
be correct if you read the description of this register in the 8051
 datasheet.

So, this patch also solves that issue.

Now that we build the firmware from source code we do not need to ship
the prebuilt files anymore, so the HEX files are removed by this patch.
---
 firmware/Makefile                    |    8 +++
 firmware/keyspan_pda/Makefile        |   14 +++++
 firmware/keyspan_pda/keyspan_pda.HEX |   83 --------------------------------
 firmware/keyspan_pda/xircom_pgs.HEX  |   87 ----------------------------------
 4 files changed, 22 insertions(+), 170 deletions(-)
 create mode 100644 firmware/keyspan_pda/Makefile
 delete mode 100644 firmware/keyspan_pda/keyspan_pda.HEX
 delete mode 100644 firmware/keyspan_pda/xircom_pgs.HEX

diff --git a/firmware/Makefile b/firmware/Makefile
index 74d47cd..fea3e62 100644
--- a/firmware/Makefile
+++ b/firmware/Makefile
@@ -210,6 +210,14 @@ $(patsubst %,$(obj)/%.gen.S, $(fw-external-y)): %: $(wordsize_deps) \
 $(patsubst %,$(obj)/%.gen.o, $(fw-shipped-y)): %.gen.o: %
 $(patsubst %,$(obj)/%.gen.o, $(fw-external-y)): $(obj)/%.gen.o: $(fwdir)/%
 
+firmware_build:
+ifdef CONFIG_USB_SERIAL_KEYSPAN_PDA
+	$(MAKE) --directory=firmware/keyspan_pda/
+endif
+ifdef CONFIG_USB_SERIAL_XIRCOM
+	$(MAKE) --directory=firmware/keyspan_pda/
+endif
+
 # .ihex is used just as a simple way to hold binary files in a source tree
 # where binaries are frowned upon. They are directly converted with objcopy.
 $(obj)/%: $(obj)/%.ihex | $(objtree)/$(obj)/$$(dir %)
diff --git a/firmware/keyspan_pda/Makefile b/firmware/keyspan_pda/Makefile
new file mode 100644
index 0000000..f7f2eb3
--- /dev/null
+++ b/firmware/keyspan_pda/Makefile
@@ -0,0 +1,14 @@
+INCLUDE=../include/
+
+all: keyspan_pda.HEX xircom_pgs.HEX
+
+%.HEX: %.S
+	gcc -I $(INCLUDE) -x assembler-with-cpp -P -E -o $*.asm $*.S
+	asx8051 -lo $*.asm 2> $*.errors
+	echo "$*.rel\n-iY" | aslink -c
+	mv $*.ihx $*.HEX
+	rm -f $*.rel $*.lst $*.asm $*.errors
+
+clean:
+	rm -f *.HEX
+
diff --git a/firmware/keyspan_pda/keyspan_pda.HEX b/firmware/keyspan_pda/keyspan_pda.HEX
deleted file mode 100644
index 6fcf02b..0000000
--- a/firmware/keyspan_pda/keyspan_pda.HEX
+++ /dev/null
@@ -1,83 +0,0 @@
-:03000000020200F9
-:0400230002055F0073
-:0400430002010000B6
-:050030000000000000CB
-:10010000020296000200000002000000020000004F
-:1001100002000000020000000200000002000000D7
-:1001200002000000020000000204610002048900D5
-:1002000075815EE4F532F533F530F531F534C20031
-:10021000C201A90074FE901000F0A3D9FC74FD90F7
-:100220001100F0A3D9FC7402907F9DF07400907FC0
-:1002300097F07486907F9EF0907F957403F0907F86
-:10024000AFE0D2E0F07401907FABF0907FAEF09021
-:100250007FAC7404F0907FAD7404F0907FC9F074AB
-:1002600084907F98F07400F59875C8307B059120D4
-:10027000D2CA759850D2E8D2AFD2AC7400F586904D
-:100280007FD67402F0792E7A007B00DBFEDAFAD991
-:10029000F67406F080FEC086C082C083C084C0852C
-:1002A000C0E0E591C2E4F591907FAB7401F0907FDE
-:1002B000E8E0F9A3E0FAA3E0FBA3E0FCE95460B4B2
-:1002C0000003020339B4406EBA000B12042040034D
-:1002D00002040202040ABA010302040ABA02030277
-:1002E000040ABA0303020444BA041EBB000A907F46
-:1002F00095E04402F0020402907F98E054FDF090F3
-:100300007F95E054FDF0020402BA050302040ABA24
-:100310000619BB0008E533D395320203DEBB0108A2
-:10032000E532C395330203DE02040ABA07058B34B3
-:1003300002040202040A02040ABA0020B9801090E2
-:100340007F00E4F0A3F0907FB57402F0020402B9DC
-:10035000820280EBB9810280E602040ABA010FBB77
-:10036000000302040ABB010302040202040ABA03E6
-:100370000FBB000302040ABB010302040202040AC9
-:10038000BA0656BC010F907FD47406F0907FD574E6
-:1003900012F0020402BC0212BB006F907FD47406FC
-:1003A000F0907FD57424F0020402BC03297404C3C6
-:1003B0009B40576055EB2B9006442582F5827400D4
-:1003C0003583F583E0F9A3E0FA907FD4E9F0907FDC
-:1003D000D5EAF002040202040ABA080F7401907F01
-:1003E00000F07401907FB5F0020402BA0903020420
-:1003F00002BA0A0574000203DEBA0B030204020209
-:10040000040A907FB47402F08009907FB4E0440144
-:10041000F08000D0E0D085D084D083D082D08632E6
-:10042000EB20E71EC3940A5019EB2324FEF58274D7
-:10043000053400F583E0F5CBF5CDA3E0F5CAF5CCA6
-:10044000C322D322B94111EB64FF5484FB907F98FF
-:10045000E0547B4BF0020402907F9BE064FF0203B8
-:10046000DEC086C082C083C084C085C0E0E591C282
-:10047000E4F591907FA97404F01205A0D0E0D08536
-:10048000D084D083D082D08632C086C082C083C060
-:1004900084C085C0E0E591C2E4F591907FAA740420
-:1004A000F0907FC9E0F9E4F586907DC075851085F0
-:1004B0003284E005860584F0E584B53302800905C1
-:1004C000320586A3D9EC8000907FC9F0B131D0E02D
-:1004D000D085D084D083D082D08632E4F586907FD8
-:1004E000BCE020E14B907D00E532F0A3E533F0A3C2
-:1004F000E530F0A3E531F0A3E430000104F0A305FA
-:10050000869010007910E0A30586F0A30586D9F641
-:10051000058674FCF0A305869011007910E0A30510
-:1005200086F0A30586D9F6E4F586907FBD7426F0A3
-:1005300022200013E532B53301220533758310857F
-:100540003382E0F599D2007400B5340122E533D34B
-:100550009532C3953440F5753400D2010205A0C030
-:1005600086C082C083C084C085C0E0309907C2992C
-:10057000C20012053430980512058AC298D0E0D026
-:1005800085D084D083D082D0863275831185308225
-:100590000582E599F0E582B53101220530B1A0224E
-:1005A000907FB8E020E138200136E530B5310122F6
-:1005B000E4F5867583110586907E00F0A3058679A3
-:1005C00001E530B5310280100531853182E00586C4
-:1005D000F0A3058609B940E9907FB9E96001F022EE
-:1005E000C201E4F586907E007401F0A37402F090DD
-:1005F0007FB9F022C299F5993099FDC29922E55E42
-:10060000F63CFD8FFEC8FF64FFB2FFD9FFEDFFF39C
-:10061000FFFA12010001FFFFFF40CD06040189AB84
-:1006200001020301090220000101008032090400D7
-:100630000002FFFFFF0007058203400001070502DB
-:1006400002400000064C0650067206A0040300009B
-:100650002203410043004D00450020007500730057
-:100660006200200077006900640067006500740084
-:1006700073002E03410043004D004500200055004B
-:1006800053004200200073006500720069006100A1
-:100690006C0020007700690064006700650074004A
-:0606A000060334003700E0
-:00000001FF
diff --git a/firmware/keyspan_pda/xircom_pgs.HEX b/firmware/keyspan_pda/xircom_pgs.HEX
deleted file mode 100644
index e9b00d7..0000000
--- a/firmware/keyspan_pda/xircom_pgs.HEX
+++ /dev/null
@@ -1,87 +0,0 @@
-:03000000020200F9
-:0400230002059B0037
-:050030000000000000CB
-:0400430002010000B6
-:100100000202BA000200000002000000020000002B
-:1001100002000000020000000200000002000000D7
-:100120000200000002000000020485000204B90081
-:1002000075815EE4F532F533F530F531F534C20031
-:10021000C201A90074FE901000F0A3D9FC74FD90F7
-:100220001100F0A3D9FC907F9474BFF0907F957477
-:10023000EFF07410907F9EF07400907F98F07440FF
-:10024000907F9DF07400907F97F07482907F9EF075
-:10025000907F957403F0907FAFE0D2E0F07401904E
-:100260007FABF0907FAEF0907FAC7404F0907FADE8
-:100270007404F0907FC9F07407907FAFF074209001
-:100280007F9CF07480907F98F07453F59875C83017
-:100290007B059144D2CA759850D2E8D2AFD2AC74E3
-:1002A00000F586907FD67402F0792E7A007B00DB11
-:1002B000FEDAFAD9F67406F080FEC086C082C083EA
-:1002C000C084C085C0E0E591C2E4F591907FAB7435
-:1002D00001F0907FE8E0F9A3E0FAA3E0FBA3E0FCE3
-:1002E000E95460B4000302035DB4406EBA000B121F
-:1002F0000444400302042602042EBA010302042E21
-:10030000BA020302042EBA0303020468BA041EBB35
-:10031000000A907F95E04402F0020426907F98E066
-:1003200054FDF0907F95E054FDF0020426BA0503D9
-:1003300002042EBA0619BB0008E533D39532020435
-:1003400002BB0108E532C3953302040202042EBA4F
-:1003500007058B3402042602042E02042EBA002064
-:10036000B98010907F00E4F0A3F0907FB57402F0A4
-:10037000020426B9820280EBB9810280E602042ED3
-:10038000BA010FBB000302042EBB010302042602C4
-:10039000042EBA030FBB000302042EBB01030204A8
-:1003A0002602042EBA0656BC010F907FD47406F0C4
-:1003B000907FD5745AF0020426BC0212BB006F90E5
-:1003C0007FD47406F0907FD5746CF0020426BC03D1
-:1003D000297404C39B40576055EB2B90068C2582F3
-:1003E000F58274003583F583E0F9A3E0FA907FD4B9
-:1003F000E9F0907FD5EAF002042602042EBA080F35
-:100400007401907F00F07401907FB5F0020426BA69
-:100410000903020426BA0A057400020402BA0B0397
-:1004200002042602042E907FB47402F08009907FAB
-:10043000B4E04401F08000D0E0D085D084D083D0F7
-:1004400082D08632EB20E71EC3940A5019EB232496
-:1004500046F58274063400F583E0F5CBF5CDA3E0D4
-:10046000F5CAF5CCC322D322B94111EB64FF548005
-:10047000FB907F98E0547F4BF0020426907F9BE036
-:1004800064FF020402C086C082C083C084C085C0ED
-:10049000E0E591C2E4F591907FA97404F074209096
-:1004A0007F9CF01205DC7420907F9CF0D0E0D0851A
-:1004B000D084D083D082D08632C086C082C083C030
-:1004C00084C085C0E07410907F9CF0E591C2E4F593
-:1004D00091907FAA7404F0907FC9E0F9E4F58690CA
-:1004E0007DC0758510853284E005860584F0E5843D
-:1004F000B53302800905320586A3D9EC8000907FD0
-:10050000C9F0B16D7420907F9CF0D0E0D085D0848C
-:10051000D083D082D08632E4F586907FBCE020E1A3
-:100520004B907D00E532F0A3E533F0A3E530F0A376
-:10053000E531F0A3E430000104F0A305869010003B
-:100540007910E0A30586F0A30586D9F6058674FC2C
-:10055000F0A305869011007910E0A30586F0A305AD
-:1005600086D9F6E4F586907FBD7426F0222000132C
-:10057000E532B53301220533758310853382E0F50A
-:1005800099D2007400B5340122E533D39532C39576
-:100590003440F5753400D2010205DCC086C082C04B
-:1005A00083C084C085C0E0309907C299C20012059B
-:1005B000703098051205C6C298D0E0D085D084D09E
-:1005C00083D082D086327583118530820582E59989
-:1005D000F0E582B53101220530B1DC227410907F44
-:1005E0009CF0907FB8E020E13E20013CE530B53141
-:1005F0000122E4F5867583110586907E00F0A3053F
-:10060000867901E530B5310280100531853182E00F
-:100610000586F0A3058609B940E97410907F9CF027
-:10062000907FB9E96001F022C201E4F586907E0076
-:100630007401F0A37402F0907FB9F022C299F59989
-:100640003099FDC29922E55EF63CFD8FFEC8FF643D
-:10065000FFB2FFD9FFEDFFF3FFFA12010001FFFF28
-:10066000FF40CD06040189AB01020301090220000D
-:1006700001010080320904000002FFFFFF000705AE
-:10068000820340000107050202400000069406981C
-:1006900006BA06E8040300002203410043004D00AF
-:1006A000450020007500730062002000770069009B
-:1006B000640067006500740073002E03410043006E
-:1006C0004D004500200055005300420020007300FB
-:1006D00065007200690061006C002000770069000D
-:0E06E0006400670065007400060334003700F4
-:00000001FF
-- 
1.7.0.4

_______________________________________________
linux-libre mailing list
[email protected]
http://www.fsfla.org/cgi-bin/mailman/listinfo/linux-libre

Reply via email to