source: svn/newcon3bcm2_21bu/rockford/bsp/bcm97552/no-os/src/sde/uart.s

Last change on this file was 76, checked in by megakiss, 10 years ago

1W 대기전력을 만족시키기 위하여 POWEROFF시 튜너를 Standby 상태로 함

  • Property svn:executable set to *
File size: 11.6 KB
Line 
1/***************************************************************************
2 *     Copyright (c) 2012-2011, Broadcom Corporation
3 *     All Rights Reserved
4 *     Confidential Property of Broadcom Corporation
5 *
6 *  THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED SOFTWARE LICENSE
7 *  AGREEMENT  BETWEEN THE USER AND BROADCOM.  YOU HAVE NO RIGHT TO USE OR
8 *  EXPLOIT THIS MATERIAL EXCEPT SUBJECT TO THE TERMS OF SUCH AN AGREEMENT.
9 *
10 * $brcm_Workfile: uart.s $
11 * $brcm_Revision: Hydra_Software_Devel/3 $
12 * $brcm_Date: 10/7/11 10:52a $
13 *
14 * Module Description:
15 *
16 * Revision History:
17 *
18 * $brcm_Log: /rockford/bsp/bcm97358/no-os/src/sde/uart.s $
19 * 
20 * Hydra_Software_Devel/3   10/7/11 10:52a jkim
21 * SWCFE-609: Add AVS support. Removed unused code  since AVS support
22 * requires extra code size.
23 * 
24 * Hydra_Software_Devel/1   4/28/11 1:41p jkim
25 * SWCFE-507: Initial file
26 * 
27 * Hydra_Software_Devel/2   12/8/10 5:18p jkim
28 * SWCFE-399: add support for alt UART
29 * 
30 * Hydra_Software_Devel/1   11/9/10 4:57p jkim
31 * SWCFE-399: initial files
32 * 
33 *
34***************************************************************************/
35#ifndef __ASSEMBLER__
36#define __ASSEMBLER__
37#endif
38#include "bmips.h"
39#include "boardcfg.h"
40#include "bchp_sun_top_ctrl.h"
41#include "bchp_aon_pin_ctrl.h"
42
43.text
44LEAF(wait_for_uarta)
45
46
47        li              a0, PHYS_TO_K1(BCHP_PHYSICAL_OFFSET+BCHP_UARTA_LSR)
48        li              a1, BCHP_UARTA_LSR_DR_MASK
49
501:     
51        lw              v0, 0(a0)
52        and             v0, v0, a1
53        beqz    v0, 1b
54        nop
55       
56       
57        li              a0, PHYS_TO_K1(BCHP_PHYSICAL_OFFSET+BCHP_UARTA_RBR)
58        lw              a1, 0(a0)
59       
60
61        jr              ra
62        nop
63       
64END(wait_for_uarta)
65
66/******************************************************************************
67 * Function: init_serial
68 * Arguments:   None
69 * Returns:             
70 * Description:
71 * Trashes:             
72 *
73 *      pseudo code:
74 *     
75 ******************************************************************************/
76
77LEAF(init_serial)
78
79.set noreorder
80
81#if UART_ADDR_OFFSET==UARTA_ADDR_OFFSET
82        /* Set RXD0 & TXD0 */
83        li      t0, PHYS_TO_K1(BCHP_PHYSICAL_OFFSET+BCHP_SUN_TOP_CTRL_PIN_MUX_CTRL_11)
84        lw      t1, 0(t0)
85        li      v0, ~BCHP_SUN_TOP_CTRL_PIN_MUX_CTRL_11_gpio_87_MASK
86        and     t1, t1, v0
87        li      v0, ~BCHP_SUN_TOP_CTRL_PIN_MUX_CTRL_11_gpio_88_MASK
88        and     t1, t1, v0
89
90        li      v0, (0x00000002<<BCHP_SUN_TOP_CTRL_PIN_MUX_CTRL_11_gpio_87_SHIFT)
91        or      t1, t1, v0
92
93        li      v0, (0x00000002<<BCHP_SUN_TOP_CTRL_PIN_MUX_CTRL_11_gpio_88_SHIFT)
94        or      t1, t1, v0
95
96        sw      t1, 0(t0)
97#elif UART_ADDR_OFFSET==UARTB_ADDR_OFFSET
98        /* Set RXD1 & TXD1 */
99        li      t0, PHYS_TO_K1(BCHP_PHYSICAL_OFFSET+BCHP_SUN_TOP_CTRL_PIN_MUX_CTRL_11)
100        lw      t1, 0(t0)
101        li      v0, ~BCHP_SUN_TOP_CTRL_PIN_MUX_CTRL_11_gpio_89_MASK
102        and     t1, t1, v0
103        li      v0, ~BCHP_SUN_TOP_CTRL_PIN_MUX_CTRL_11_gpio_90_MASK
104        and     t1, t1, v0
105
106        li      v0, (0x00000001<<BCHP_SUN_TOP_CTRL_PIN_MUX_CTRL_11_gpio_89_SHIFT)
107        or      t1, t1, v0
108
109        li      v0, (0x00000001<<BCHP_SUN_TOP_CTRL_PIN_MUX_CTRL_11_gpio_90_SHIFT)
110        or      t1, t1, v0
111        sw      t1, 0(t0)
112#else
113#error "UART Unsupported"
114#endif
115               
116                /* set baud rate */
117                li              t0, PHYS_TO_K1(BCHP_PHYSICAL_OFFSET + UART_ADDR_OFFSET+BCHP_UARTA_LCR)
118                li              t3, BCHP_UARTA_LCR_DLAB_MASK
119                sw              t3, 0(t0)
120                li              t0, PHYS_TO_K1(BCHP_PHYSICAL_OFFSET + UART_ADDR_OFFSET+BCHP_UARTA_DLH)
121                sw              zero, 0(t0)
122                li              t0, PHYS_TO_K1(BCHP_PHYSICAL_OFFSET + UART_ADDR_OFFSET+BCHP_UARTA_DLL)
123                li              t3,     UART_BAUD_RATE_115200
124                sw              t3,     0(t0)
125
126                li              t0, PHYS_TO_K1(BCHP_PHYSICAL_OFFSET + UART_ADDR_OFFSET+BCHP_UARTA_FCR)
127                li              t3,     BCHP_UARTA_FCR_FIFOE_MASK
128                sw              t3,     0(t0)
129
130                li              t0, PHYS_TO_K1(BCHP_PHYSICAL_OFFSET + UART_ADDR_OFFSET+BCHP_UARTA_LCR)
131                /* 8 bits, 1 stop, no parity, enable tx/rx */
132                li              t1, UART_DLS_8BITS
133                sw              t1, 0(t0)
134
135                /* set baud rate */
136                li              t0, PHYS_TO_K1(BCHP_PHYSICAL_OFFSET + UARTB_ADDR_OFFSET+BCHP_UARTA_LCR)
137                li              t3, BCHP_UARTA_LCR_DLAB_MASK
138                sw              t3, 0(t0)
139                li              t0, PHYS_TO_K1(BCHP_PHYSICAL_OFFSET + UARTB_ADDR_OFFSET+BCHP_UARTA_DLH)
140                sw              zero, 0(t0)
141                li              t0, PHYS_TO_K1(BCHP_PHYSICAL_OFFSET + UARTB_ADDR_OFFSET+BCHP_UARTA_DLL)
142                li              t3,     UART_BAUD_RATE_115200
143                sw              t3,     0(t0)
144
145                li              t0, PHYS_TO_K1(BCHP_PHYSICAL_OFFSET + UARTB_ADDR_OFFSET+BCHP_UARTA_FCR)
146                li              t3,     BCHP_UARTA_FCR_FIFOE_MASK
147                sw              t3,     0(t0)
148
149                li              t0, PHYS_TO_K1(BCHP_PHYSICAL_OFFSET + UARTB_ADDR_OFFSET+BCHP_UARTA_LCR)
150                /* 8 bits, 1 stop, no parity, enable tx/rx */
151                li              t1, UART_DLS_8BITS
152                sw              t1, 0(t0)
153.set reorder
154
155                jr              ra
156                nop
157               
158END(init_serial)
159
160
161/******************************************************************************
162 * Function: _writeasm
163 * Arguments:   None
164 * Returns:             
165 * Description:
166 * Trashes:             
167 *
168 *      pseudo code:
169 *     
170 ******************************************************************************/
171
172LEAF(_writeasm)
173       
174                li              t0, PHYS_TO_K1(BCHP_PHYSICAL_OFFSET + UART_ADDR_OFFSET+BCHP_UARTA_LSR)
175.set noreorder
176
177        li      t2, BCHP_UARTA_LSR_THRE_MASK
1781:      lw      t1, 0(t0)
179        and     t1, t1, t2
180        bne     t1, t2, 1b
181        nop
182       
183        li              t0, PHYS_TO_K1(BCHP_PHYSICAL_OFFSET + UART_ADDR_OFFSET+BCHP_UARTA_THR)
184        sw      a0, 0(t0)
185       
186.set reorder
187
188        jr       ra
189        nop
190
191END(_writeasm)
192
193/******************************************************************************
194 * Function: uartout_hex32
195 * Arguments:   None
196 * Returns:             
197 * Description:
198 * Trashes:             
199 *
200 *      pseudo code:
201 *     
202 ******************************************************************************/
203
204LEAF(uartout_hex32)
205
206#ifndef FGDL_BUILD
207#if !defined BSL_BUILD || defined BSL_DEBUG
208       
209                li              t0, 32 
210                li              t3, PHYS_TO_K1(BCHP_PHYSICAL_OFFSET + UART_ADDR_OFFSET+BCHP_UARTA_LSR)
211                li              t5, PHYS_TO_K1(BCHP_PHYSICAL_OFFSET + UART_ADDR_OFFSET+BCHP_UARTA_THR)
212               
213.set noreorder
214   
215           li           t4, BCHP_UARTA_LSR_THRE_MASK
216           
217uart_out_hex32_1:
218
219           addiu        t0, t0, -4
220           srlv         t1, a0, t0   
221           andi         t1, t1, 0xf 
222           addi         t2, t1, -10
223           bgez         t2, uart_out_hex32_2
224           nop
225           addi         t2, t1, '0'
226           b            uart_out_hex32_3
227           nop
228           
229uart_out_hex32_2:
230
231           addi         t2, t2, 'A'
232       
233uart_out_hex32_3:
234
235           lw           t1, 0(t3)
236           and          t1, t1, t4
237           bne          t1, t4, uart_out_hex32_3
238           nop
239           
240           sw    t2, 0(t5)
241           
242           bne   t0, $0, uart_out_hex32_1
243           nop
244           
245           jr    ra
246           nop
247           
248.set reorder   
249
250#endif
251#endif
252
253        jr              ra
254        nop
255
256END(uartout_hex32)
257
258#if 0
259/******************************************************************************
260 * Function: Print Copy Code
261 * Arguments:   None
262 * Returns:             
263 * Description:
264 * Trashes:             
265 *
266 *      pseudo code:
267 *     
268 ******************************************************************************/
269LEAF(printcopycode)
270       
271.set noreorder
272                move            t7, ra
273
274                li              a0, '\r'
275                bal             _writeasm
276                nop
277               
278               
279                li              a0, '\n'
280                bal             _writeasm
281                nop
282
283                li              a0, 'C'
284                bal             _writeasm
285                nop
286               
287               
288                li              a0, 'O'
289                bal             _writeasm
290                nop
291               
292               
293                li              a0, 'P'
294                bal             _writeasm
295                nop
296               
297               
298                li              a0, 'Y'
299                bal             _writeasm
300                nop
301               
302               
303                li              a0, ' '
304                bal             _writeasm
305                nop
306               
307               
308                li              a0, 'C'
309                bal             _writeasm
310                nop             
311               
312                li              a0, 'O'
313                bal             _writeasm
314                nop
315               
316                li              a0, 'D'
317                bal             _writeasm
318                nop
319               
320                li              a0, 'E'
321                bal             _writeasm
322                nop
323               
324                li              a0, '\r'
325                bal             _writeasm
326                nop
327               
328                li              a0, '\n'
329                bal             _writeasm
330                nop
331       
332.set reorder
333       
334        jr       t7
335        nop
336
337END(printcopycode)
338
339
340/******************************************************************************
341 * Function: Print Compare code
342 * Arguments:   None
343 * Returns:             
344 * Description:
345 * Trashes:             
346 *
347 *      pseudo code:
348 *     
349 ******************************************************************************/
350LEAF(printcomparecode)
351       
352.set noreorder
353                move    t7, ra
354
355                li              a0, 'C'
356                bal             _writeasm
357                nop
358               
359               
360                li              a0, 'O'
361                bal             _writeasm
362                nop
363               
364               
365                li              a0, 'M'
366                bal             _writeasm
367                nop
368               
369               
370                li              a0, 'P'
371                bal             _writeasm
372                nop
373               
374                li              a0, 'A'
375                bal             _writeasm
376                nop
377               
378                li              a0, 'R'
379                bal             _writeasm
380                nop
381               
382                li              a0, 'E'
383                bal             _writeasm
384                nop
385               
386                li              a0, ' '
387                bal             _writeasm
388                nop
389               
390                li              a0, 'C'
391                bal             _writeasm
392                nop             
393               
394                li              a0, 'O'
395                bal             _writeasm
396                nop
397               
398                li              a0, 'D'
399                bal             _writeasm
400                nop
401               
402                li              a0, 'E'
403                bal             _writeasm
404                nop
405               
406                li              a0, '\r'
407                bal             _writeasm
408                nop
409               
410                li              a0, '\n'
411                bal             _writeasm
412                nop
413       
414.set reorder
415       
416        jr       t7
417        nop
418
419END(printcomparecode)
420
421/******************************************************************************
422 * Function: Print Compare failed
423 * Arguments:   None
424 * Returns:             
425 * Description:
426 * Trashes:             
427 *
428 *      pseudo code:
429 *     
430 ******************************************************************************/
431LEAF(printcomparefailed)
432       
433.set noreorder
434
435                move            t7, ra
436
437                li              a0, 'C'
438                bal             _writeasm
439                nop
440               
441               
442                li              a0, 'O'
443                bal             _writeasm
444                nop
445
446                li              a0, 'M'
447                bal             _writeasm
448                nop
449               
450               
451                li              a0, 'P'
452                bal             _writeasm
453                nop
454               
455               
456                li              a0, 'A'
457                bal             _writeasm
458                nop
459               
460               
461                li              a0, 'R'
462                bal             _writeasm
463                nop
464               
465               
466                li              a0, 'E'
467                bal             _writeasm
468                nop
469               
470                li              a0, ' '
471                bal             _writeasm
472                nop
473               
474               
475                li              a0, 'F'
476                bal             _writeasm
477                nop             
478               
479                li              a0, 'A'
480                bal             _writeasm
481                nop
482               
483                li              a0, 'I'
484                bal             _writeasm
485                nop
486               
487                li              a0, 'L'
488                bal             _writeasm
489                nop
490               
491                li              a0, 'E'
492                bal             _writeasm
493                nop
494               
495                li              a0, 'D'
496                bal             _writeasm
497                nop
498               
499                li              a0, '!'
500                bal             _writeasm
501                nop
502
503.set reorder
504       
505        jr       t7
506        nop
507
508END(printcomparefailed)
509
510/******************************************************************************
511 * Function: print_nand_id_missmatch
512 * Arguments:   None
513 * Returns:             
514 * Description:
515 * Trashes:             
516 *
517 *      pseudo code:
518 *     
519 ******************************************************************************/
520LEAF(print_nand_id_missmatch)
521       
522.set noreorder
523
524                move            t7, ra
525
526                li              a0, ' '
527                bal             _writeasm
528                nop
529
530                li              a0, ' '
531                bal             _writeasm
532                nop
533
534                li              a0, 'U'
535                bal             _writeasm
536                nop
537               
538               
539                li              a0, 'P'
540                bal             _writeasm
541                nop
542               
543               
544                li              a0, 'D'
545                bal             _writeasm
546                nop
547               
548               
549                li              a0, 'A'
550                bal             _writeasm
551                nop
552               
553               
554                li              a0, 'T'
555                bal             _writeasm
556                nop
557               
558               
559                li              a0, 'E'
560                bal             _writeasm
561                nop             
562
563                li              a0, ' '
564                bal             _writeasm
565                nop
566               
567                li              a0, 'N'
568                bal             _writeasm
569                nop
570               
571                li              a0, 'A'
572                bal             _writeasm
573                nop
574               
575                li              a0, 'N'
576                bal             _writeasm
577                nop
578
579                li              a0, 'D'
580                bal             _writeasm
581                nop
582
583                li              a0, ' '
584                bal             _writeasm
585                nop
586               
587                li              a0, 'I'
588                bal             _writeasm
589                nop
590               
591                li              a0, 'D'
592                bal             _writeasm
593                nop
594               
595                li              a0, '!'
596                bal             _writeasm
597                nop
598
599                li              a0, '!'
600                bal             _writeasm
601                nop
602
603
604.set reorder
605       
606        jr       t7
607        nop
608
609END(print_nand_id_missmatch)
610#endif
611/******************************************************************************
612 * Function: print_char
613 * Arguments:
614 * 
615 *      Description:
616 *     
617 ******************************************************************************/
618
619.text
620.global print_char
621.ent    print_char
622print_char:
623       
624#ifndef FGDL_BUILD
625#if !defined BSL_BUILD || defined BSL_DEBUG
626        addiu   sp, sp,-20
627        sw              ra, 0(sp)
628        sw              t0, 4(sp)
629        sw              t1, 8(sp)
630        sw              t2, 12(sp)
631        sw              t3, 16(sp)
632       
633        bal             _writeasm
634        nop
635       
636        lw              ra, 0(sp)
637        lw              t0, 4(sp)
638        lw              t1, 8(sp)
639        lw              t2, 12(sp)
640        lw              t3, 16(sp)
641
642        addiu   sp, sp, 20
643#endif
644#endif
645
646        jr      ra
647        nop
648       
649.end print_char
650
651/******************************************************************************
652 * Function: print_hex32
653 * Arguments:
654 * 
655 *      Description:
656 *
657 *      pseudo code:
658 *     
659 ******************************************************************************/
660 
661.text
662.global print_hex32
663.ent    print_hex32
664print_hex32:
665       
666#ifndef FGDL_BUILD
667#if !defined BSL_BUILD || defined BSL_DEBUG
668        addiu   sp, sp,-32
669        sw              ra, 0(sp)
670        sw              t0, 4(sp)
671        sw              t1, 8(sp)
672        sw              t2, 12(sp)
673        sw              t3, 16(sp)
674        sw              t4, 20(sp)
675        sw              t5, 24(sp)
676        sw              t6, 28(sp)
677               
678        bal             uartout_hex32
679        nop
680
681        lw              ra, 0(sp)
682        lw              t0, 4(sp)
683        lw              t1, 8(sp)
684        lw              t2, 12(sp)
685        lw              t3, 16(sp)
686        lw              t4, 20(sp)
687        lw              t5, 24(sp)
688        lw              t6, 28(sp)
689
690        addiu   sp, sp, 32
691#endif
692#endif
693
694        jr      ra
695        nop
696
697.end print_hex32
698
Note: See TracBrowser for help on using the repository browser.