uboot/board/ms7722se/lowlevel_init.S
<<
>>
Prefs
   1/*
   2 * Copyright (C) 2007
   3 * Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
   4 *
   5 * Copyright (C) 2007
   6 * Kenati Technologies, Inc.
   7 *
   8 * board/ms7722se/lowlevel_init.S
   9 *
  10 * This program is free software; you can redistribute it and/or
  11 * modify it under the terms of the GNU General Public License as
  12 * published by the Free Software Foundation; either version 2 of
  13 * the License, or (at your option) any later version.
  14 *
  15 * This program is distributed in the hope that it will be useful,
  16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18 * GNU General Public License for more details.
  19 *
  20 * You should have received a copy of the GNU General Public License
  21 * along with this program; if not, write to the Free Software
  22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  23 * MA 02111-1307 USA
  24 */
  25
  26#include <config.h>
  27#include <version.h>
  28
  29#include <asm/processor.h>
  30#include <asm/macro.h>
  31
  32/*
  33 * Board specific low level init code, called _very_ early in the
  34 * startup sequence. Relocation to SDRAM has not happened yet, no
  35 * stack is available, bss section has not been initialised, etc.
  36 *
  37 * (Note: As no stack is available, no subroutines can be called...).
  38 */
  39
  40        .global lowlevel_init
  41
  42        .text
  43        .align  2
  44
  45lowlevel_init:
  46
  47        /*
  48         * Cache Control Register
  49         * Instruction Cache Invalidate
  50         */
  51        write32 CCR_A, CCR_D
  52
  53        /*
  54         * Address of MMU Control Register
  55         * TI == TLB Invalidate bit
  56         */
  57        write32 MMUCR_A, MMUCR_D
  58
  59        /* Address of Power Control Register 0 */
  60        write32 MSTPCR0_A, MSTPCR0_D
  61
  62        /* Address of Power Control Register 2 */
  63        write32 MSTPCR2_A, MSTPCR2_D
  64
  65        write16 SBSCR_A, SBSCR_D
  66
  67        write16 PSCR_A, PSCR_D
  68
  69        /* 0xA4520004 (Watchdog Control / Status Register) */
  70!       write16 RWTCSR_A, RWTCSR_D_1    /* 0xA507 -> timer_STOP/WDT_CLK=max */
  71
  72        /* 0xA4520000 (Watchdog Count Register) */
  73        write16 RWTCNT_A, RWTCNT_D      /*0x5A00 -> Clear */
  74
  75        /* 0xA4520004 (Watchdog Control / Status Register) */
  76        write16 RWTCSR_A, RWTCSR_D_2    /* 0xA504 -> timer_STOP/CLK=500ms */
  77
  78        /* 0xA4150000 Frequency control register */
  79        write32 FRQCR_A, FRQCR_D
  80
  81        write32 CCR_A, CCR_D_2
  82
  83bsc_init:
  84
  85        write16 PSELA_A, PSELA_D
  86
  87        write16 DRVCR_A, DRVCR_D
  88
  89        write16 PCCR_A, PCCR_D
  90
  91        write16 PECR_A, PECR_D
  92
  93        write16 PJCR_A, PJCR_D
  94
  95        write16 PXCR_A, PXCR_D
  96
  97        write32 CMNCR_A, CMNCR_D
  98
  99        write32 CS0BCR_A, CS0BCR_D
 100
 101        write32 CS2BCR_A, CS2BCR_D
 102
 103        write32 CS4BCR_A, CS4BCR_D
 104
 105        write32 CS5ABCR_A, CS5ABCR_D
 106
 107        write32 CS5BBCR_A, CS5BBCR_D
 108
 109        write32 CS6ABCR_A, CS6ABCR_D
 110
 111        write32 CS0WCR_A, CS0WCR_D
 112
 113        write32 CS2WCR_A, CS2WCR_D
 114
 115        write32 CS4WCR_A, CS4WCR_D
 116
 117        write32 CS5AWCR_A, CS5AWCR_D
 118
 119        write32 CS5BWCR_A, CS5BWCR_D
 120
 121        write32 CS6AWCR_A, CS6AWCR_D
 122
 123        ! SDRAM initialization
 124        write32 SDCR_A, SDCR_D
 125
 126        write32 SDWCR_A, SDWCR_D
 127
 128        write32 SDPCR_A, SDPCR_D
 129
 130        write32 RTCOR_A, RTCOR_D
 131
 132        write32 RTCSR_A, RTCSR_D
 133
 134        write8  SDMR3_A, SDMR3_D
 135
 136        ! BL bit off (init = ON) (?!?)
 137
 138        stc     sr, r0                          ! BL bit off(init=ON)
 139        mov.l   SR_MASK_D, r1
 140        and     r1, r0
 141        ldc     r0, sr
 142
 143        rts
 144        mov     #0, r0
 145
 146        .align  2
 147
 148CCR_A:          .long   CCR
 149MMUCR_A:        .long   MMUCR
 150MSTPCR0_A:      .long   MSTPCR0
 151MSTPCR2_A:      .long   MSTPCR2
 152SBSCR_A:        .long   SBSCR
 153PSCR_A:         .long   PSCR
 154RWTCSR_A:       .long   RWTCSR
 155RWTCNT_A:       .long   RWTCNT
 156FRQCR_A:        .long   FRQCR
 157
 158CCR_D:          .long   0x00000800
 159CCR_D_2:        .long   0x00000103
 160MMUCR_D:        .long   0x00000004
 161MSTPCR0_D:      .long   0x00001001
 162MSTPCR2_D:      .long   0xffffffff
 163FRQCR_D:        .long   0x07022538
 164
 165PSELA_A:        .long   0xa405014E
 166PSELA_D:        .word   0x0A10
 167        .align 2
 168
 169DRVCR_A:        .long   0xa405018A
 170DRVCR_D:        .word   0x0554
 171        .align 2
 172
 173PCCR_A:         .long   0xa4050104
 174PCCR_D:         .word   0x8800
 175        .align 2
 176
 177PECR_A:         .long   0xa4050108
 178PECR_D:         .word   0x0000
 179        .align 2
 180
 181PJCR_A:         .long   0xa4050110
 182PJCR_D:         .word   0x1000
 183        .align 2
 184
 185PXCR_A:         .long   0xa4050148
 186PXCR_D:         .word   0x0AAA
 187        .align 2
 188
 189CMNCR_A:        .long   CMNCR
 190CMNCR_D:        .long   0x00000013
 191CS0BCR_A:       .long   CS0BCR          ! Flash bank 1
 192CS0BCR_D:       .long   0x24920400
 193CS2BCR_A:       .long   CS2BCR          ! SRAM
 194CS2BCR_D:       .long   0x24920400
 195CS4BCR_A:       .long   CS4BCR          ! FPGA, PCMCIA, USB, ext slot
 196CS4BCR_D:       .long   0x24920400
 197CS5ABCR_A:      .long   CS5ABCR         ! Ext slot
 198CS5ABCR_D:      .long   0x24920400
 199CS5BBCR_A:      .long   CS5BBCR         ! USB controller
 200CS5BBCR_D:      .long   0x24920400
 201CS6ABCR_A:      .long   CS6ABCR         ! Ethernet
 202CS6ABCR_D:      .long   0x24920400
 203
 204CS0WCR_A:       .long   CS0WCR
 205CS0WCR_D:       .long   0x00000300
 206CS2WCR_A:       .long   CS2WCR
 207CS2WCR_D:       .long   0x00000300
 208CS4WCR_A:       .long   CS4WCR
 209CS4WCR_D:       .long   0x00000300
 210CS5AWCR_A:      .long   CS5AWCR
 211CS5AWCR_D:      .long   0x00000300
 212CS5BWCR_A:      .long   CS5BWCR
 213CS5BWCR_D:      .long   0x00000300
 214CS6AWCR_A:      .long   CS6AWCR
 215CS6AWCR_D:      .long   0x00000300
 216
 217SDCR_A:         .long   SBSC_SDCR
 218SDCR_D:         .long   0x00020809
 219SDWCR_A:        .long   SBSC_SDWCR
 220SDWCR_D:        .long   0x00164d0d
 221SDPCR_A:        .long   SBSC_SDPCR
 222SDPCR_D:        .long   0x00000087
 223RTCOR_A:        .long   SBSC_RTCOR
 224RTCOR_D:        .long   0xA55A0034
 225RTCSR_A:        .long   SBSC_RTCSR
 226RTCSR_D:        .long   0xA55A0010
 227SDMR3_A:        .long   0xFE500180
 228SDMR3_D:        .long   0x0
 229
 230        .align  1
 231
 232SBSCR_D:        .word   0x0040
 233PSCR_D:         .word   0x0000
 234RWTCSR_D_1:     .word   0xA507
 235RWTCSR_D_2:     .word   0xA507
 236RWTCNT_D:       .word   0x5A00
 237        .align  2
 238
 239SR_MASK_D:      .long   0xEFFFFF0F
 240