]> git.ipfire.org Git - thirdparty/linux-firmware.git/commitdiff
dvb-ttpci: Add source code and makefile
authorBen Hutchings <ben@decadent.org.uk>
Wed, 24 Aug 2011 04:01:55 +0000 (05:01 +0100)
committerBen Hutchings <ben@decadent.org.uk>
Fri, 16 Dec 2011 05:42:10 +0000 (05:42 +0000)
Downstream commercial distributors need to distribute the source code
as well as the binary.

Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
WHENCE
av7110/Boot.S [new file with mode: 0644]
av7110/Makefile [new file with mode: 0644]

diff --git a/WHENCE b/WHENCE
index 75536288f4c6053c33107601a1b84f763d99b891..ef51ac1195ab9b19a29dd26db9fc9785a12c9f3e 100644 (file)
--- 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 (file)
index 0000000..d562fdc
--- /dev/null
@@ -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 (file)
index 0000000..a2776fe
--- /dev/null
@@ -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