uboot/board/renesas/MigoR/lowlevel_init.S
<<
>>
Prefs
   1/*
   2 * Copyright (C) 2007-2008
   3 * Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
   4 *
   5 * Copyright (C) 2007
   6 * Kenati Technologies, Inc.
   7 *
   8 * board/MigoR/lowlevel_init.S
   9 *
  10 * SPDX-License-Identifier:     GPL-2.0+
  11 */
  12
  13#include <config.h>
  14
  15#include <asm/processor.h>
  16#include <asm/macro.h>
  17
  18/*
  19 * Board specific low level init code, called _very_ early in the
  20 * startup sequence. Relocation to SDRAM has not happened yet, no
  21 * stack is available, bss section has not been initialised, etc.
  22 *
  23 * (Note: As no stack is available, no subroutines can be called...).
  24 */
  25
  26        .global lowlevel_init
  27
  28        .text
  29        .align  2
  30
  31lowlevel_init:
  32        write32 CCR_A, CCR_D            ! Address of Cache Control Register
  33                                        ! Instruction Cache Invalidate
  34
  35        write32 MMUCR_A, MMUCR_D        ! Address of MMU Control Register
  36                                        ! TI == TLB Invalidate bit
  37
  38        write32 MSTPCR0_A, MSTPCR0_D    ! Address of Power Control Register 0
  39
  40        write32 MSTPCR2_A, MSTPCR2_D    ! Address of Power Control Register 2
  41
  42        write16 PFC_PULCR_A, PFC_PULCR_D
  43
  44        write16 PFC_DRVCR_A, PFC_DRVCR_D
  45
  46        write16 SBSCR_A, SBSCR_D
  47
  48        write16 PSCR_A, PSCR_D
  49
  50        write16 RWTCSR_A, RWTCSR_D_1    ! 0xA4520004 (Watchdog Control / Status Register)
  51                                        ! 0xA507 -> timer_STOP / WDT_CLK = max
  52
  53        write16 RWTCNT_A, RWTCNT_D      ! 0xA4520000 (Watchdog Count Register)
  54                                        ! 0x5A00 -> Clear
  55
  56        write16 RWTCSR_A, RWTCSR_D_2    ! 0xA4520004 (Watchdog Control / Status Register)
  57                                        ! 0xA504 -> timer_STOP / CLK = 500ms
  58
  59        write32 DLLFRQ_A, DLLFRQ_D      ! 20080115
  60                                        ! 20080115
  61
  62        write32 FRQCR_A, FRQCR_D        ! 0xA4150000 Frequency control register
  63                                        ! 20080115
  64
  65        write32 CCR_A, CCR_D_2          ! Address of Cache Control Register
  66                                        ! ??
  67
  68bsc_init:
  69        write32 CMNCR_A, CMNCR_D
  70
  71        write32 CS0BCR_A, CS0BCR_D
  72
  73        write32 CS4BCR_A, CS4BCR_D
  74
  75        write32 CS5ABCR_A, CS5ABCR_D
  76
  77        write32 CS5BBCR_A, CS5BBCR_D
  78
  79        write32 CS6ABCR_A, CS6ABCR_D
  80
  81        write32 CS0WCR_A, CS0WCR_D
  82
  83        write32 CS4WCR_A, CS4WCR_D
  84
  85        write32 CS5AWCR_A, CS5AWCR_D
  86
  87        write32 CS5BWCR_A, CS5BWCR_D
  88
  89        write32 CS6AWCR_A, CS6AWCR_D
  90
  91        ! SDRAM initialization
  92        write32 SDCR_A, SDCR_D
  93
  94        write32 SDWCR_A, SDWCR_D
  95
  96        write32 SDPCR_A, SDPCR_D
  97
  98        write32 RTCOR_A, RTCOR_D
  99
 100        write32 RTCNT_A, RTCNT_D
 101
 102        write32 RTCSR_A, RTCSR_D
 103
 104        write32 RFCR_A, RFCR_D
 105
 106        write8  SDMR3_A, SDMR3_D
 107
 108        ! BL bit off (init = ON) (?!?)
 109
 110        stc     sr, r0                          ! BL bit off(init=ON)
 111        mov.l   SR_MASK_D, r1
 112        and     r1, r0
 113        ldc     r0, sr
 114
 115        rts
 116        mov     #0, r0
 117
 118        .align  4
 119
 120CCR_A:          .long   CCR
 121MMUCR_A:        .long   MMUCR
 122MSTPCR0_A:      .long   MSTPCR0
 123MSTPCR2_A:      .long   MSTPCR2
 124PFC_PULCR_A:    .long   PULCR
 125PFC_DRVCR_A:    .long   DRVCR
 126SBSCR_A:        .long   SBSCR
 127PSCR_A:         .long   PSCR
 128RWTCSR_A:       .long   RWTCSR
 129RWTCNT_A:       .long   RWTCNT
 130FRQCR_A:        .long   FRQCR
 131PLLCR_A:        .long   PLLCR
 132DLLFRQ_A:       .long   DLLFRQ
 133
 134CCR_D:          .long   0x00000800
 135CCR_D_2:        .long   0x00000103
 136MMUCR_D:        .long   0x00000004
 137MSTPCR0_D:      .long   0x00001001
 138MSTPCR2_D:      .long   0xffffffff
 139PFC_PULCR_D:    .long   0x6000
 140PFC_DRVCR_D:    .long   0x0464
 141FRQCR_D:        .long   0x07033639
 142PLLCR_D:        .long   0x00005000
 143DLLFRQ_D:       .long   0x000004F6
 144
 145CMNCR_A:        .long   CMNCR
 146CMNCR_D:        .long   0x0000001B
 147CS0BCR_A:       .long   CS0BCR
 148CS0BCR_D:       .long   0x24920400
 149CS4BCR_A:       .long   CS4BCR
 150CS4BCR_D:       .long   0x00003400
 151CS5ABCR_A:      .long   CS5ABCR
 152CS5ABCR_D:      .long   0x24920400
 153CS5BBCR_A:      .long   CS5BBCR
 154CS5BBCR_D:      .long   0x24920400
 155CS6ABCR_A:      .long   CS6ABCR
 156CS6ABCR_D:      .long   0x24920400
 157
 158CS0WCR_A:       .long   CS0WCR
 159CS0WCR_D:       .long   0x00000380
 160CS4WCR_A:       .long   CS4WCR
 161CS4WCR_D:       .long   0x00110080
 162CS5AWCR_A:      .long   CS5AWCR
 163CS5AWCR_D:      .long   0x00000300
 164CS5BWCR_A:      .long   CS5BWCR
 165CS5BWCR_D:      .long   0x00000300
 166CS6AWCR_A:      .long   CS6AWCR
 167CS6AWCR_D:      .long   0x00000300
 168
 169SDCR_A:         .long   SBSC_SDCR
 170SDCR_D:         .long   0x80160809
 171SDWCR_A:        .long   SBSC_SDWCR
 172SDWCR_D:        .long   0x0014450C
 173SDPCR_A:        .long   SBSC_SDPCR
 174SDPCR_D:        .long   0x00000087
 175RTCOR_A:        .long   SBSC_RTCOR
 176RTCNT_A:        .long   SBSC_RTCNT
 177RTCNT_D:        .long   0xA55A0012
 178RTCOR_D:        .long   0xA55A001C
 179RTCSR_A:        .long   SBSC_RTCSR
 180RFCR_A:         .long   SBSC_RFCR
 181RFCR_D:         .long   0xA55A0221
 182RTCSR_D:        .long   0xA55A009a
 183SDMR3_A:        .long   0xFE581180
 184SDMR3_D:        .long   0x0
 185
 186SR_MASK_D:      .long   0xEFFFFF0F
 187
 188        .align  2
 189
 190SBSCR_D:        .word   0x0044
 191PSCR_D:         .word   0x0000
 192RWTCSR_D_1:     .word   0xA507
 193RWTCSR_D_2:     .word   0xA504
 194RWTCNT_D:       .word   0x5A00
 195