All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH linux-firmware 0/4] Complete source for GPL'd firmware
@ 2011-12-17  4:28 Ben Hutchings
  2011-12-17  4:29 ` [PATCH linux-firmware 1/4] dsp56k: Add makefile for building from source Ben Hutchings
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Ben Hutchings @ 2011-12-17  4:28 UTC (permalink / raw)
  To: linux-kernel; +Cc: David Woodhouse

[-- Attachment #1: Type: text/plain, Size: 1161 bytes --]

Some of the source code for firmware licenced under the GPL is not
included in the linux-firmware repository or has incomplete or
inaccurate build instructions.  This series adds the missing pieces.
With the appropriate tools installed, these makefiles produce identical
binaries to those already in the repository.

Ben.

Ben Hutchings (4):
  dsp56k: Add makefile for building from source
  dvb-ttpci: Add source code and makefile
  keyspan_pda: Fix parse error with as31 version 2.3.1
  keyspan_pda: Add makefile for building from source

 WHENCE                     |   10 +++-
 av7110/Boot.S              |  109 ++++++++++++++++++++++++++++++++++++++++++++
 av7110/Makefile            |   11 ++++
 dsp56k/Makefile            |    6 ++
 dsp56k/concat-bootstrap.pl |   33 +++++++++++++
 keyspan_pda/Makefile       |   12 +++++
 keyspan_pda/keyspan_pda.S  |    7 ++-
 7 files changed, 185 insertions(+), 3 deletions(-)
 create mode 100644 av7110/Boot.S
 create mode 100644 av7110/Makefile
 create mode 100644 dsp56k/Makefile
 create mode 100644 dsp56k/concat-bootstrap.pl
 create mode 100644 keyspan_pda/Makefile

-- 
1.7.7.3



[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 828 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH linux-firmware 1/4] dsp56k: Add makefile for building from source
  2011-12-17  4:28 [PATCH linux-firmware 0/4] Complete source for GPL'd firmware Ben Hutchings
@ 2011-12-17  4:29 ` Ben Hutchings
  2011-12-17  4:30 ` [PATCH linux-firmware 2/4] dvb-ttpci: Add source code and makefile Ben Hutchings
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Ben Hutchings @ 2011-12-17  4:29 UTC (permalink / raw)
  To: linux-kernel; +Cc: David Woodhouse

[-- Attachment #1: Type: text/plain, Size: 2596 bytes --]

Some small amount of postprocessing is required after assembling
bootstrap.asm with a56.  Add a script and makefile for this.

Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
 WHENCE                     |    4 +++-
 dsp56k/Makefile            |    6 ++++++
 dsp56k/concat-bootstrap.pl |   33 +++++++++++++++++++++++++++++++++
 3 files changed, 42 insertions(+), 1 deletions(-)
 create mode 100644 dsp56k/Makefile
 create mode 100644 dsp56k/concat-bootstrap.pl

diff --git a/WHENCE b/WHENCE
index bf216fe..7553628 100644
--- a/WHENCE
+++ b/WHENCE
@@ -372,10 +372,12 @@ Driver: dsp56k - Atari DSP56k support
 
 File: dsp56k/bootstrap.bin
 Source: dsp56k/bootstrap.asm
+Source: dsp56k/Makefile
+Source: dsp56k/concat-bootstrap.pl
 
 Licence: GPLv2 or later
 
-DSP56001 assembler, possibly buildable with a56 from 
+DSP56001 assembler, buildable with a56 from
 http://www.zdomain.com/a56.html
 
 --------------------------------------------------------------------------
diff --git a/dsp56k/Makefile b/dsp56k/Makefile
new file mode 100644
index 0000000..c758a28
--- /dev/null
+++ b/dsp56k/Makefile
@@ -0,0 +1,6 @@
+bootstrap.bin: bootstrap.asm concat-bootstrap.pl
+	a56 bootstrap.asm >/dev/null
+	perl concat-bootstrap.pl <a56.out >bootstrap.bin
+
+clean:
+	rm -f a56.out bootstrap.bin
diff --git a/dsp56k/concat-bootstrap.pl b/dsp56k/concat-bootstrap.pl
new file mode 100644
index 0000000..b6d9003
--- /dev/null
+++ b/dsp56k/concat-bootstrap.pl
@@ -0,0 +1,33 @@
+# Postprocessor for dsp56k bootstrap code.
+#
+# Copyright Ben Hutchings 2011.
+#
+# 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.
+
+use strict;
+use warnings;
+
+my @memory;
+my %symbol;
+
+# Reconstruct memory image and symbol table
+while (<>) {
+    if (/^P ([0-9A-F]{4}) ([0-9A-F]{6})\n/) {
+	$memory[hex($1)] = hex($2);
+    } elsif (/^I ([0-9A-F]{6}) (\w+)\n/) {
+	$symbol{$2} = hex($1);
+    } else {
+	print STDERR "W: did not recognise line $.\n";
+    }
+}
+
+# Concatenate first and second stage.  Second stage is assembled
+# between 'upload' and 'upload_end', but initially loaded at
+# 'real' (end of the first stage).
+for (0 .. ($symbol{real} - 1), $symbol{upload} .. ($symbol{upload_end} - 1)) {
+    my $word = $memory[$_] || 0;
+    print pack('CCC', $word / 65536, ($word / 256) % 256, $word % 256);
+}
-- 
1.7.7.3




[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 828 bytes --]

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH linux-firmware 2/4] dvb-ttpci: Add source code and makefile
  2011-12-17  4:28 [PATCH linux-firmware 0/4] Complete source for GPL'd firmware Ben Hutchings
  2011-12-17  4:29 ` [PATCH linux-firmware 1/4] dsp56k: Add makefile for building from source Ben Hutchings
@ 2011-12-17  4:30 ` Ben Hutchings
  2011-12-17  4:30 ` [PATCH linux-firmware 3/4] keyspan_pda: Fix parse error with as31 version 2.3.1 Ben Hutchings
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Ben Hutchings @ 2011-12-17  4:30 UTC (permalink / raw)
  To: linux-kernel; +Cc: David Woodhouse

[-- Attachment #1: Type: text/plain, Size: 4636 bytes --]

Downstream commercial distributors need to distribute the source code
as well as the binary.

Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
 WHENCE          |    4 ++-
 av7110/Boot.S   |  109 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 av7110/Makefile |   11 ++++++
 3 files changed, 123 insertions(+), 1 deletions(-)
 create mode 100644 av7110/Boot.S
 create mode 100644 av7110/Makefile

diff --git a/WHENCE b/WHENCE
index 7553628..ef51ac1 100644
--- a/WHENCE
+++ b/WHENCE
@@ -1094,10 +1094,12 @@ Licence: Redistributable. See LICENCE.phanfw for details.
 Driver: dvb-ttpci -- AV7110 cards
 
 File: av7110/bootcode.bin
+Source: av7110/Boot.S
+Source: av7110/Makefile
 
 Licence: GPLv2 or later
 
-ARM assembly source code available at http://www.linuxtv.org/downloads/firmware/Boot.S
+ARM assembly source code from http://www.linuxtv.org/downloads/firmware/Boot.S
 
 --------------------------------------------------------------------------
 
diff --git a/av7110/Boot.S b/av7110/Boot.S
new file mode 100644
index 0000000..d562fdc
--- /dev/null
+++ b/av7110/Boot.S
@@ -0,0 +1,109 @@
+/*
+   Boot.S: boot loader for Siemens DVB-S card
+
+   Copyright (C) 2001 Convergence integrated media GmbH
+	              Written by Ralph Metzler
+		                 <rjkm@convergence.de>
+   Copyright (C) 2006 Matthieu CASTET <castet.mattheiu@free.fr>
+
+   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.
+
+*/
+
+/*
+	check AV711x_3_1.pdf for some hardware infos
+	build it with :
+	$ cc -mbig-endian -c Boot.S
+	$ ld -Ttext 0x2c000000 -EB -o Boot Boot.o
+	$ objcopy -Obinary Boot
+*/
+
+	.text
+	.align
+	.globl _start
+_start:
+	b reset			// reset vector
+	movs  pc, r14           // undefined
+	subs  pc, r14, #4       // SWI
+	subs  pc, r14, #4       // prefetch abort
+	subs  pc, r14, #8       // data abort
+	subs  pc, r14, #4       // reserved
+	subs  pc, r14, #4       // IRQ
+	subs  pc, r14, #4       // FIQ
+
+	.word tbl               // table needed by firmware ROM
+tbl:	.word (endtbl - tbl)
+	.word 0
+  	.word conf
+endtbl:	.word 0
+conf:	.word 0xa5a55a5a
+	.word 0x001f1555
+	.word 0x00000009
+
+reset:	ldr	r13, buffer
+	ldr	r4, flag
+	mov	r0, #0
+	str	r0, [r4]
+	str	r0, [r4, #4]
+
+	ldr		r1, wait_address
+	ldr		r2, flag_address
+	ldr		r3, sram
+
+copycode: // copy the code HW Sram
+	ldmia	r1!, {r5-r12}
+	stmia	r3!, {r5-r12}
+	cmp		r1, r2
+	ble 	copycode
+	ldr		pc, sram // jump to the copied code
+
+wait:	ldrh	r1, [r4]        // wait for flag!=0
+ 	cmp	r1, #0
+	beq	wait
+
+	mov	r1, r13         // buffer address
+ 	ldr	r3, [r4,#4]     // destaddr
+
+ 	ldrh	r2, [r4,#2]     // get segment length
+	add     r2, r2, #63     // round length to next 64 bytes
+	movs	r2, r2, lsr #6  // and divide by 64
+	moveq	r0, #2          // if 0, set flag to 2, else signal
+	strh	r0, [r4]        // that buffer is accepted by setting to 0
+        beq wait
+	
+copyloop:
+	ldmia	r1!, {r5-r12}
+	stmia	r3!, {r5-r12}
+	ldmia	r1!, {r5-r12}
+	stmia	r3!, {r5-r12}
+ 	subs	r2, r2, #1
+ 	bne	copyloop
+
+	eor     r13, r13, #0x1400    // switch to other buffer
+	b	wait
+
+// flag is stored at 0x2c0003f8, length at 0x2c0003fa,
+// destaddr at 0x2c0003fc
+
+flag:	.word	0x2c0003f8
+
+
+// buffer 1 is at 0x2c000400, buffer 2 at 0x2c001000
+
+buffer:	.word	0x2c000400
+
+sram: .word   0x9e000800
+wait_address: .word   wait
+flag_address: .word   flag
diff --git a/av7110/Makefile b/av7110/Makefile
new file mode 100644
index 0000000..a2776fe
--- /dev/null
+++ b/av7110/Makefile
@@ -0,0 +1,11 @@
+CC = arm-linux-gnueabi-gcc
+LD = arm-linux-gnueabi-ld
+OBJCOPY = arm-linux-gnueabi-objcopy
+
+bootcode.bin: Boot.S
+	$(CC) -mbig-endian -c Boot.S
+	$(LD) -Ttext 0x2c000000 -EB -o Boot Boot.o
+	$(OBJCOPY) -Obinary Boot bootcode.bin
+
+clean:
+	rm -f Boot.o Boot bootcode.bin
-- 
1.7.7.3




[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 828 bytes --]

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH linux-firmware 3/4] keyspan_pda: Fix parse error with as31 version 2.3.1
  2011-12-17  4:28 [PATCH linux-firmware 0/4] Complete source for GPL'd firmware Ben Hutchings
  2011-12-17  4:29 ` [PATCH linux-firmware 1/4] dsp56k: Add makefile for building from source Ben Hutchings
  2011-12-17  4:30 ` [PATCH linux-firmware 2/4] dvb-ttpci: Add source code and makefile Ben Hutchings
@ 2011-12-17  4:30 ` Ben Hutchings
  2011-12-17  4:31 ` [PATCH linux-firmware 4/4] keyspan_pda: Add makefile for building from source Ben Hutchings
  2011-12-17  4:33 ` [PATCH linux-firmware 0/4] Complete source for GPL'd firmware Ben Hutchings
  4 siblings, 0 replies; 6+ messages in thread
From: Ben Hutchings @ 2011-12-17  4:30 UTC (permalink / raw)
  To: linux-kernel; +Cc: David Woodhouse

[-- Attachment #1: Type: text/plain, Size: 1154 bytes --]

keyspan_pda.S has an out-of-range decimal constant that looks
like it was really meant to be a binary constant.  Comparing
with the binary, it appears that as31 used to treat this as 0,
so change the source to use 0 and add a comment on this.

Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
 keyspan_pda/keyspan_pda.S |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/keyspan_pda/keyspan_pda.S b/keyspan_pda/keyspan_pda.S
index 418fe69..602bcce 100644
--- a/keyspan_pda/keyspan_pda.S
+++ b/keyspan_pda/keyspan_pda.S
@@ -285,7 +285,12 @@ 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
+	;; Original source had:
+	;;mov a,#01010011		; mode 1, enable rx, clear int
+	;; This was presumably meant to be a binary constant, but it's
+	;; really decimal and out of 8-bit range.  as31 used to treat
+	;; it as 0 and that seems to have worked, so carry on with 0.
+	mov a,#0
 	mov SCON, a
 	;;  using timer2, in 16-bit baud-rate-generator mode
 	;;   (xtal 12MHz, internal fosc 24MHz)
-- 
1.7.7.3




[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 828 bytes --]

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH linux-firmware 4/4] keyspan_pda: Add makefile for building from source
  2011-12-17  4:28 [PATCH linux-firmware 0/4] Complete source for GPL'd firmware Ben Hutchings
                   ` (2 preceding siblings ...)
  2011-12-17  4:30 ` [PATCH linux-firmware 3/4] keyspan_pda: Fix parse error with as31 version 2.3.1 Ben Hutchings
@ 2011-12-17  4:31 ` Ben Hutchings
  2011-12-17  4:33 ` [PATCH linux-firmware 0/4] Complete source for GPL'd firmware Ben Hutchings
  4 siblings, 0 replies; 6+ messages in thread
From: Ben Hutchings @ 2011-12-17  4:31 UTC (permalink / raw)
  To: linux-kernel; +Cc: David Woodhouse

[-- Attachment #1: Type: text/plain, Size: 1082 bytes --]

The commands given in the source aren't quite right, and don't cover
use of ihex2fw.

Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
 WHENCE               |    2 ++
 keyspan_pda/Makefile |   12 ++++++++++++
 2 files changed, 14 insertions(+), 0 deletions(-)
 create mode 100644 keyspan_pda/Makefile

diff --git a/WHENCE b/WHENCE
index ef51ac1..3b9f5e2 100644
--- a/WHENCE
+++ b/WHENCE
@@ -173,6 +173,8 @@ Source: keyspan_pda/keyspan_pda.S
 File: keyspan_pda/xircom_pgs.fw
 Source: keyspan_pda/xircom_pgs.S
 
+Source: keyspan_pda/Makefile
+
 Licence: GPLv2+
 
 Compiled from original 8051 source into Intel HEX, used in our binary ihex form.
diff --git a/keyspan_pda/Makefile b/keyspan_pda/Makefile
new file mode 100644
index 0000000..fc37ea4
--- /dev/null
+++ b/keyspan_pda/Makefile
@@ -0,0 +1,12 @@
+CC = gcc
+IHEX2FW = ihex2fw
+
+all: keyspan_pda.fw xircom_pgs.fw
+
+%.fw: %.S
+	$(CC) -x assembler-with-cpp -P -E -o $*.asm $<
+	as31 -l $*.asm
+	$(IHEX2FW) $*.hex $@
+
+clean:
+	rm -f *.asm *.fw *.hex *.lst *.obj
-- 
1.7.7.3



[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 828 bytes --]

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH linux-firmware 0/4] Complete source for GPL'd firmware
  2011-12-17  4:28 [PATCH linux-firmware 0/4] Complete source for GPL'd firmware Ben Hutchings
                   ` (3 preceding siblings ...)
  2011-12-17  4:31 ` [PATCH linux-firmware 4/4] keyspan_pda: Add makefile for building from source Ben Hutchings
@ 2011-12-17  4:33 ` Ben Hutchings
  4 siblings, 0 replies; 6+ messages in thread
From: Ben Hutchings @ 2011-12-17  4:33 UTC (permalink / raw)
  To: linux-kernel; +Cc: David Woodhouse

[-- Attachment #1: Type: text/plain, Size: 1436 bytes --]

On Sat, 2011-12-17 at 04:28 +0000, Ben Hutchings wrote:
> Some of the source code for firmware licenced under the GPL is not
> included in the linux-firmware repository or has incomplete or
> inaccurate build instructions.  This series adds the missing pieces.
> With the appropriate tools installed, these makefiles produce identical
> binaries to those already in the repository.

For the avoidance of doubt, I'm about to push these changes to
linux-firmware.git myself.

Ben.

> Ben.
> 
> Ben Hutchings (4):
>   dsp56k: Add makefile for building from source
>   dvb-ttpci: Add source code and makefile
>   keyspan_pda: Fix parse error with as31 version 2.3.1
>   keyspan_pda: Add makefile for building from source
> 
>  WHENCE                     |   10 +++-
>  av7110/Boot.S              |  109 ++++++++++++++++++++++++++++++++++++++++++++
>  av7110/Makefile            |   11 ++++
>  dsp56k/Makefile            |    6 ++
>  dsp56k/concat-bootstrap.pl |   33 +++++++++++++
>  keyspan_pda/Makefile       |   12 +++++
>  keyspan_pda/keyspan_pda.S  |    7 ++-
>  7 files changed, 185 insertions(+), 3 deletions(-)
>  create mode 100644 av7110/Boot.S
>  create mode 100644 av7110/Makefile
>  create mode 100644 dsp56k/Makefile
>  create mode 100644 dsp56k/concat-bootstrap.pl
>  create mode 100644 keyspan_pda/Makefile
> 

-- 
Ben Hutchings
Computers are not intelligent.	They only think they are.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 828 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2011-12-17  4:33 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-12-17  4:28 [PATCH linux-firmware 0/4] Complete source for GPL'd firmware Ben Hutchings
2011-12-17  4:29 ` [PATCH linux-firmware 1/4] dsp56k: Add makefile for building from source Ben Hutchings
2011-12-17  4:30 ` [PATCH linux-firmware 2/4] dvb-ttpci: Add source code and makefile Ben Hutchings
2011-12-17  4:30 ` [PATCH linux-firmware 3/4] keyspan_pda: Fix parse error with as31 version 2.3.1 Ben Hutchings
2011-12-17  4:31 ` [PATCH linux-firmware 4/4] keyspan_pda: Add makefile for building from source Ben Hutchings
2011-12-17  4:33 ` [PATCH linux-firmware 0/4] Complete source for GPL'd firmware Ben Hutchings

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.