]> git.proxmox.com Git - mirror_linux-firmware.git/blame - dsp56k/bootstrap.asm
brcm: provide new firmwares for BCM4366 chipset
[mirror_linux-firmware.git] / dsp56k / bootstrap.asm
CommitLineData
68c4f016
JS
1; Author: Frederik Noring <noring@nocrew.org>
2;
3; This file is subject to the terms and conditions of the GNU General Public
4; License. See the file COPYING in the main directory of this archive
5; for more details.
6
7; DSP56k loader
8
9; Host Interface
10M_BCR EQU $FFFE ; Port A Bus Control Register
11M_PBC EQU $FFE0 ; Port B Control Register
12M_PBDDR EQU $FFE2 ; Port B Data Direction Register
13M_PBD EQU $FFE4 ; Port B Data Register
14M_PCC EQU $FFE1 ; Port C Control Register
15M_PCDDR EQU $FFE3 ; Port C Data Direction Register
16M_PCD EQU $FFE5 ; Port C Data Register
17
18M_HCR EQU $FFE8 ; Host Control Register
19M_HSR EQU $FFE9 ; Host Status Register
20M_HRX EQU $FFEB ; Host Receive Data Register
21M_HTX EQU $FFEB ; Host Transmit Data Register
22
23; SSI, Synchronous Serial Interface
24M_RX EQU $FFEF ; Serial Receive Data Register
25M_TX EQU $FFEF ; Serial Transmit Data Register
26M_CRA EQU $FFEC ; SSI Control Register A
27M_CRB EQU $FFED ; SSI Control Register B
28M_SR EQU $FFEE ; SSI Status Register
29M_TSR EQU $FFEE ; SSI Time Slot Register
30
31; Exception Processing
32M_IPR EQU $FFFF ; Interrupt Priority Register
33
34 org P:$0
35start jmp <$40
36
37 org P:$40
38; ; Zero 16384 DSP X and Y words
39; clr A #0,r0
40; clr B #0,r4
41; do #64,<_block1
42; rep #256
43; move A,X:(r0)+ B,Y:(r4)+
44;_block1 ; Zero (32768-512) Program words
45; clr A #512,r0
46; do #126,<_block2
47; rep #256
48; move A,P:(r0)+
49;_block2
50
51 ; Copy DSP program control
52 move #real,r0
53 move #upload,r1
8d380848
RM
54 do #upload_end-upload,_copy
55 movem P:(r0)+,x0
56 movem x0,P:(r1)+
57_copy movep #4,X:<<M_HCR
58 movep #$c00,X:<<M_IPR
68c4f016
JS
59 and #<$fe,mr
60 jmp upload
61
62real
63 org P:$7ea9
64upload
8d380848
RM
65 movep #1,X:<<M_PBC
66 movep #0,X:<<M_BCR
68c4f016
JS
67
68next jclr #0,X:<<M_HSR,*
69 movep X:<<M_HRX,A
70 move #>3,x0
71 cmp x0,A #>1,x0
72 jeq <$0
73_get_address
74 jclr #0,X:<<M_HSR,_get_address
75 movep X:<<M_HRX,r0
76_get_length
77 jclr #0,X:<<M_HSR,_get_length
78 movep X:<<M_HRX,y0
79 cmp x0,A #>2,x0
80 jeq load_X
81 cmp x0,A
82 jeq load_Y
83
8d380848 84load_P do y0,_load_P
68c4f016
JS
85 jclr #0,X:<<M_HSR,*
86 movep X:<<M_HRX,P:(r0)+
8d380848
RM
87_load_P jmp next
88load_X do y0,_load_X
68c4f016
JS
89 jclr #0,X:<<M_HSR,*
90 movep X:<<M_HRX,X:(r0)+
8d380848
RM
91_load_X jmp next
92load_Y do y0,_load_Y
68c4f016
JS
93 jclr #0,X:<<M_HSR,*
94 movep X:<<M_HRX,Y:(r0)+
8d380848 95_load_Y jmp next
68c4f016
JS
96
97upload_end
98 end