annotate packages/hal/arm/at91/current/include/hal_platform_setup.h @ 175:e7780801e1a7

Merge from eCos master repository on 2001-07-31-19:15:01-BST
author jlarmour
date Tue, 31 Jul 2001 21:15:36 +0000
parents
children e0c0827131d1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
175
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
1 #ifndef CYGONCE_HAL_PLATFORM_SETUP_H
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
2 #define CYGONCE_HAL_PLATFORM_SETUP_H
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
3
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
4 /*=============================================================================
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
5 //
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
6 // hal_platform_setup.h
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
7 //
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
8 // Platform specific support for HAL (assembly code)
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
9 //
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
10 //=============================================================================
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
11 //####COPYRIGHTBEGIN####
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
12 //
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
13 // -------------------------------------------
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
14 // The contents of this file are subject to the Red Hat eCos Public License
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
15 // Version 1.1 (the "License"); you may not use this file except in
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
16 // compliance with the License. You may obtain a copy of the License at
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
17 // http://www.redhat.com/
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
18 //
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
19 // Software distributed under the License is distributed on an "AS IS"
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
20 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
21 // License for the specific language governing rights and limitations under
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
22 // the License.
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
23 //
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
24 // The Original Code is eCos - Embedded Configurable Operating System,
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
25 // released September 30, 1998.
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
26 //
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
27 // The Initial Developer of the Original Code is Red Hat.
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
28 // Portions created by Red Hat are
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
29 // Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc.
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
30 // All Rights Reserved.
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
31 // -------------------------------------------
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
32 //
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
33 //####COPYRIGHTEND####
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
34 //=============================================================================
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
35 //#####DESCRIPTIONBEGIN####
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
36 //
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
37 // Author(s): gthomas
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
38 // Contributors:gthomas
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
39 // Date: 2001-07-12
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
40 // Purpose: AT91/EB40 platform specific support routines
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
41 // Description:
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
42 // Usage: #include <cyg/hal/hal_platform_setup.h>
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
43 //
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
44 //####DESCRIPTIONEND####
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
45 //
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
46 //===========================================================================*/
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
47
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
48 #include <cyg/hal/plf_io.h>
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
49
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
50 #if defined(CYG_HAL_STARTUP_ROM) || defined(CYG_HAL_STARTUP_ROMRAM)
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
51
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
52 .macro _setup
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
53 ldr r10,=_InitMemory // Initialize memory controller
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
54 movs r0,pc,lsr #20 // If ROM startup, PC < 0x100000
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
55 moveq r10,r10,lsl #12 // mask address to low 20 bits
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
56 moveq r10,r10,lsr #12
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
57 ldmia r10!,{r0-r9,r11-r12} // Table of initialization constants
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
58 #if defined(CYG_HAL_STARTUP_ROMRAM)
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
59 ldr r10,=0x0000FFFF
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
60 and r12,r12,r10
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
61 ldr r10,=0x01010000
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
62 orr r12,r12,r10
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
63 #endif
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
64 stmia r11!,{r0-r9} // Write to controller
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
65 mov pc,r12 // Change address space, break pipeline
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
66 _InitMemory:
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
67 .long 0x01002535 // 0x01000000, 16MB, 2 cycles added after transfer, 16-bit, 6 wait states
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
68 .long 0x02002121 // 0x02000000, 16MB, 0 cycles added after transfer, 16-bit, 1 wait state
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
69 .long 0x20000000 // unused
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
70 .long 0x30000000 // unused
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
71 .long 0x40000000 // unused
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
72 .long 0x50000000 // unused
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
73 .long 0x60000000 // unused
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
74 .long 0x70000000 // unused
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
75 .long 0x00000001 // REMAP commande
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
76 .long 0x00000006 // 7 memory regions, standard read
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
77 .long AT91_EBI // External Bus Interface address
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
78 .long 10f // address where to jump
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
79 10:
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
80
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
81 #if defined(CYG_HAL_STARTUP_ROMRAM)
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
82 ldr r0,=0x01010000 // Relocate FLASH/ROM to on-chip RAM
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
83 ldr r1,=0x02000000 // RAM base & length
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
84 ldr r2,=0x02010000
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
85 20: ldr r3,[r0],#4
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
86 str r3,[r1],#4
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
87 cmp r1,r2
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
88 bne 20b
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
89 ldr r0,=30f
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
90 mov pc,r0
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
91 30:
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
92 #endif
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
93
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
94 ldr r0,=AT91_PS // Power saving interface
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
95 ldr r1,=0xFFFFFFFF // Enable all peripheral [clocks]
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
96 str r1,[r0,#AT91_PS_PCER]
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
97 ldr r0,=AT91_PIO // Disable PIO (so peripherals can use bits)
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
98 ldr r1,=0x0070FE49 // UART, FIQ, EINT, Timer clocks
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
99 str r1,[r0,#AT91_PIO_PDR]
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
100 ldr r1,=0x000001B6 // LEDs
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
101 str r1,[r0,#AT91_PIO_OER]
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
102 str r1,[r0,#AT91_PIO_SODR]
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
103 .endm
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
104
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
105 #define CYGSEM_HAL_ROM_RESET_USES_JUMP
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
106 #define PLATFORM_SETUP1 _setup
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
107 #else
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
108 #define PLATFORM_SETUP1
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
109 #endif
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
110
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
111 //-----------------------------------------------------------------------------
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
112 // end of hal_platform_setup.h
e7780801e1a7 Merge from eCos master repository on 2001-07-31-19:15:01-BST
jlarmour
parents:
diff changeset
113 #endif // CYGONCE_HAL_PLATFORM_SETUP_H