Subversion Repositories freemyipod

Rev

Rev 8 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 8 Rev 15
Line 19... Line 19...
19
@    along with emBIOS.  If not, see <http://www.gnu.org/licenses/>.
19
@    along with emBIOS.  If not, see <http://www.gnu.org/licenses/>.
20
@
20
@
21
@
21
@
22
 
22
 
23
 
23
 
-
 
24
.section .initcode.lcd_init, "ax", %progbits
-
 
25
.align 2
-
 
26
.global lcd_init
-
 
27
.type lcd_init, %function
-
 
28
lcd_init:
-
 
29
	mov	r1, #0x38000000
-
 
30
	orr	r1, r1, #0x400000
-
 
31
	mov	r0, #0x20000000
-
 
32
	orr	r0, r0, #0x190000
-
 
33
	str	r0, [r1,#0x104]
-
 
34
	mov	pc, lr
-
 
35
.size lcd_init, .-lcd_init
-
 
36
 
24
.section .icode.displaylcd, "ax", %progbits
37
.section .icode.displaylcd, "ax", %progbits
25
.align 2
38
.align 2
26
.global displaylcd
39
.global displaylcd
27
.type displaylcd, %function
40
.type displaylcd, %function
28
displaylcd:
41
displaylcd:
29
	stmfd	sp!, {r0,r1,r4,lr}
42
	stmfd	sp!, {r0-r4,lr}
30
	bl	displaylcd_sync
43
	bl	displaylcd_sync
31
	bl	displaylcd_detectlcd
44
	bl	displaylcd_detectlcd
32
	sub	r12, r12, #0x04900000
45
	sub	r12, r12, #0x04900000
33
	cmp	r0, #2
46
	cmp	r0, #2
34
	bne	displaylcd_othertypes
47
	bne	displaylcd_othertypes
Line 40... Line 53...
40
	bl	displaylcd_sendlcd2c
53
	bl	displaylcd_sendlcd2c
41
	ldr	r0, [sp,#0x04]
54
	ldr	r0, [sp,#0x04]
42
	bl	displaylcd_sendlcd2d
55
	bl	displaylcd_sendlcd2d
43
	mov	r0, #0x52
56
	mov	r0, #0x52
44
	bl	displaylcd_sendlcd2c
57
	bl	displaylcd_sendlcd2c
45
	mov	r0, r2
58
	ldr	r0, [sp,#0x08]
46
	bl	displaylcd_sendlcd2d
59
	bl	displaylcd_sendlcd2d
47
	mov	r0, #0x53
60
	mov	r0, #0x53
48
	bl	displaylcd_sendlcd2c
61
	bl	displaylcd_sendlcd2c
49
	mov	r0, r3
62
	ldr	r0, [sp,#0x0c]
50
	bl	displaylcd_sendlcd2d
63
	bl	displaylcd_sendlcd2d
51
	mov	r0, #0x20
64
	mov	r0, #0x20
52
	bl	displaylcd_sendlcd2c
65
	bl	displaylcd_sendlcd2c
53
	ldr	r0, [sp]
66
	ldr	r0, [sp]
54
	bl	displaylcd_sendlcd2d
67
	bl	displaylcd_sendlcd2d
55
	mov	r0, #0x21
68
	mov	r0, #0x21
56
	bl	displaylcd_sendlcd2c
69
	bl	displaylcd_sendlcd2c
57
	mov	r0, r2
70
	ldr	r0, [sp,#0x08]
58
	bl	displaylcd_sendlcd2d
71
	bl	displaylcd_sendlcd2d
59
	mov	r0, #0x22
72
	mov	r0, #0x22
60
	bl	displaylcd_sendlcd2c
73
	bl	displaylcd_sendlcd2c
61
	b	displaylcd_blit
74
	b	displaylcd_blit
62
displaylcd_othertypes:
75
displaylcd_othertypes:
Line 66... Line 79...
66
	bl	displaylcd_sendlcd2d
79
	bl	displaylcd_sendlcd2d
67
	ldr	r0, [sp,#0x04]
80
	ldr	r0, [sp,#0x04]
68
	bl	displaylcd_sendlcd2d
81
	bl	displaylcd_sendlcd2d
69
	mov	r0, #0x2b
82
	mov	r0, #0x2b
70
	bl	displaylcd_sendlcdc
83
	bl	displaylcd_sendlcdc
71
	mov	r0, r2
84
	ldr	r0, [sp,#0x08]
72
	bl	displaylcd_sendlcd2d
85
	bl	displaylcd_sendlcd2d
73
	mov	r0, r3
86
	ldr	r0, [sp,#0x0c]
74
	bl	displaylcd_sendlcd2d
87
	bl	displaylcd_sendlcd2d
75
	mov	r0, #0x2c
88
	mov	r0, #0x2c
76
	bl	displaylcd_sendlcdc
89
	bl	displaylcd_sendlcdc
77
displaylcd_blit:
90
displaylcd_blit:
78
	ldmia	sp, {r0,r1}
91
	ldmia	sp, {r0-r3}
79
	sub	r1, r0
92
	sub	r1, r0
80
	add	r1, r1, #1
93
	add	r1, r1, #1
81
	sub	r3, r2
94
	sub	r3, r2
82
	add	r3, r3, #1
95
	add	r3, r3, #1
83
	mul	r2, r1, r3
96
	mul	r2, r1, r3
84
	ldr	r1, [sp,#0x10]
97
	ldr	r1, [sp,#0x18]
85
	cmp	r1, #0x40000000
98
	cmp	r1, #0x40000000
86
	bne	displaylcd_dma
99
	bne	displaylcd_dma
87
displaylcd_pixel:
100
displaylcd_pixel:
88
	ldr	r0, [sp,#0x14]
101
	ldr	r0, [sp,#0x1c]
89
	bl	displaylcd_sendlcd2d
102
	bl	displaylcd_sendlcd2d
90
	subs	r2, r2, #1
103
	subs	r2, r2, #1
91
	bne	displaylcd_pixel
104
	bne	displaylcd_pixel
92
	ldmfd	sp!, {r0,r1,r4,pc}
105
	ldmfd	sp!, {r0-r4,pc}
93
displaylcd_dma:
106
displaylcd_dma:
94
	mov	r4, #0x38000000
107
	mov	r4, #0x38000000
95
	add	r4, r4, #0x400000
108
	orr	r4, r4, #0x400000
96
	mov	r0, #0x20000000
109
	mov	r0, #0x20000000
97
	orr	r0, r0, #0x180000
110
	orr	r0, r0, #0x190000
98
	str	r0, [r4,#0x104]
111
	str	r0, [r4,#0x104]
99
	str	r1, [r4,#0x100]
112
	str	r1, [r4,#0x100]
100
	mov	r0, r2,lsr#1
113
	mov	r0, r2,lsr#1
101
	sub	r0, r0, #1
114
	sub	r0, r0, #1
102
	str	r0, [r4,#0x108]
115
	str	r0, [r4,#0x108]
103
	bl	clean_dcache
116
	bl	clean_dcache
104
	mov	r0, #4
117
	mov	r0, #4
105
	str	r0, [r4,#0x114]
118
	str	r0, [r4,#0x114]
106
	ldmfd	sp!, {r0,r1,r4,pc}
119
	ldmfd	sp!, {r0-r4,pc}
107
 
120
 
108
displaylcd_sendlcd2c:
121
displaylcd_sendlcd2c:
109
	ldr	r4, [r12,#0x1c]
122
	ldr	r4, [r12,#0x1c]
110
	tst	r4, #0x10
123
	tst	r4, #0x10
111
	bne	displaylcd_sendlcd2c
124
	bne	displaylcd_sendlcd2c
Line 153... Line 166...
153
.section .icode.displaylcd_sync, "ax", %progbits
166
.section .icode.displaylcd_sync, "ax", %progbits
154
.align 2
167
.align 2
155
.global displaylcd_sync
168
.global displaylcd_sync
156
.type displaylcd_sync, %function
169
.type displaylcd_sync, %function
157
displaylcd_sync:
170
displaylcd_sync:
158
	mov	r1, #0x38000000
-
 
159
	add	r1, r1, #0x400000
171
	str	lr, [sp,#-4]!
160
displaylcd_sync_wait:
172
displaylcd_sync_wait:
-
 
173
	mov	r1, #0x38000000
-
 
174
	orr	r1, r1, #0x400000
161
	ldr	r0, [r1,#0x184]
175
	ldr	r0, [r1,#0x184]
162
	tst	r0, #0x40000
176
	tst	r0, #0x70000
-
 
177
	ldreq	pc, [sp], #4
163
	bne	displaylcd_sync_wait
178
	adr	lr, displaylcd_sync_wait
164
	mov	pc, lr
179
	b	context_switch
165
.size displaylcd_sync, .-displaylcd_sync
180
.size displaylcd_sync, .-displaylcd_sync
-
 
181
 
-
 
182
.section .icode.displaylcd_busy, "ax", %progbits
-
 
183
.align 2
-
 
184
.global displaylcd_busy
-
 
185
.type displaylcd_busy, %function
-
 
186
displaylcd_busy:
-
 
187
	mov	r1, #0x38000000
-
 
188
	orr	r1, r1, #0x400000
-
 
189
	ldr	r0, [r1,#0x184]
-
 
190
	and	r0, r0, #0x70000
-
 
191
	mov	pc, lr
-
 
192
.size displaylcd_busy, .-displaylcd_busy
-
 
193
 
-
 
194
.section .icode.displaylcd_safe, "ax", %progbits
-
 
195
.align 2
-
 
196
.global displaylcd_safe
-
 
197
.type displaylcd_safe, %function
-
 
198
displaylcd_safe:
-
 
199
	mov	r1, #0x38000000
-
 
200
	orr	r1, r1, #0x400000
-
 
201
	ldr	r0, [r1,#0x184]
-
 
202
	tst	r0, #0x70000
-
 
203
	moveq	r0, #1
-
 
204
	movne	r0, #0
-
 
205
	mov	pc, lr
-
 
206
.size displaylcd_safe, .-displaylcd_safe
-
 
207
 
-
 
208
.section .icode.INT_DMA8, "ax", %progbits
-
 
209
.align 2
-
 
210
.global INT_DMA8
-
 
211
.type INT_DMA8, %function
-
 
212
INT_DMA8:
-
 
213
	str	lr, [sp,#-4]!
-
 
214
	mov	r1, #0x38000000
-
 
215
	orr	r1, r1, #0x400000
-
 
216
	mov	r0, #7
-
 
217
	str	r0, [r1,#0x114]
-
 
218
	bl	lcdconsole_callback
-
 
219
	ldr	pc, [sp], #4
-
 
220
.size INT_DMA8, .-INT_DMA8