tinyusb  0.4
Click here to lend your support to tinyusb donation and make a donation at pledgie.com
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
memreg.c
1 /*****************************************************************************
2  *
3  * Copyright(C) 2011, Embedded Artists AB
4  * All rights reserved.
5  *
6  ******************************************************************************
7  * Software that is described herein is for illustrative purposes only
8  * which provides customers with programming information regarding the
9  * products. This software is supplied "AS IS" without any warranties.
10  * Embedded Artists AB assumes no responsibility or liability for the
11  * use of the software, conveys no license or title under any patent,
12  * copyright, or mask work right to the product. Embedded Artists AB
13  * reserves the right to make changes in the software without
14  * notification. Embedded Artists AB also make no representation or
15  * warranty that such application will be suitable for the specified
16  * use without further testing or modification.
17  *****************************************************************************/
18 
19 
20 
21 /******************************************************************************
22  * Includes
23  *****************************************************************************/
24 #include "../../board.h"
25 
26 #if BOARD == BOARD_EA4357
27 
28 #include "lpc43xx.h"
29 #include "lpc_types.h"
30 #include "lpc43xx_scu.h"
31 #include "memreg.h"
32 
33 
34 /******************************************************************************
35  * Defines and typedefs
36  *****************************************************************************/
37 
38 
39 /******************************************************************************
40  * External global variables
41  *****************************************************************************/
42 
43 /******************************************************************************
44  * Local variables
45  *****************************************************************************/
46 
47 static void pinConfig(void)
48 {
49  /* Set up EMC pin */
50  scu_pinmux( 2 , 9 , MD_PLN_FAST , 3 );//A0
51  scu_pinmux( 2 , 10 , MD_PLN_FAST , 3 );//A1
52  scu_pinmux( 2 , 11 , MD_PLN_FAST , 3 );//A2
53  scu_pinmux( 2 , 12 , MD_PLN_FAST , 3 );//A3
54  scu_pinmux( 2 , 13 , MD_PLN_FAST , 3 );//A4
55  scu_pinmux( 1 , 0 , MD_PLN_FAST , 2 );//A5
56  scu_pinmux( 1 , 1 , MD_PLN_FAST , 2 );//A6
57  scu_pinmux( 1 , 2 , MD_PLN_FAST , 2 );//A7
58  scu_pinmux( 2 , 8 , MD_PLN_FAST , 3 );//A8
59  scu_pinmux( 2 , 7 , MD_PLN_FAST , 3 );//A9
60  scu_pinmux( 2 , 6 , MD_PLN_FAST , 2 );//A10
61  scu_pinmux( 2 , 2 , MD_PLN_FAST , 2 );//A11
62  scu_pinmux( 2 , 1 , MD_PLN_FAST , 2 );//A12
63  scu_pinmux( 2 , 0 , MD_PLN_FAST , 2 );//A13
64  scu_pinmux( 6 , 8 , MD_PLN_FAST , 1 );//A14
65  scu_pinmux( 6 , 7 , MD_PLN_FAST , 1 );//A15
66  scu_pinmux( 13 , 16 , MD_PLN_FAST , 2 );//A16
67  scu_pinmux( 13 , 15 , MD_PLN_FAST , 2 );//A17
68  scu_pinmux( 14 , 0 , MD_PLN_FAST , 3 );//A18
69  scu_pinmux( 14 , 1 , MD_PLN_FAST , 3 );//A19
70  scu_pinmux( 14 , 2 , MD_PLN_FAST , 3 );//A20
71  scu_pinmux( 14 , 3 , MD_PLN_FAST , 3 );//A21
72  scu_pinmux( 14 , 4 , MD_PLN_FAST , 3 );//A22
73  scu_pinmux( 10 , 4 , MD_PLN_FAST , 3 );//A23
74 
75  scu_pinmux( 1 , 7 , MD_PLN_FAST , 3 );//D0
76  scu_pinmux( 1 , 8 , MD_PLN_FAST , 3 );//D1
77  scu_pinmux( 1 , 9 , MD_PLN_FAST , 3 );//D2
78  scu_pinmux( 1 , 10 , MD_PLN_FAST , 3 );//D3
79  scu_pinmux( 1 , 11 , MD_PLN_FAST , 3 );//D4
80  scu_pinmux( 1 , 12 , MD_PLN_FAST , 3 );//D5
81  scu_pinmux( 1 , 13 , MD_PLN_FAST , 3 );//D6
82  scu_pinmux( 1 , 14 , MD_PLN_FAST , 3 );//D7
83  scu_pinmux( 5 , 4 , MD_PLN_FAST , 2 );//D8
84  scu_pinmux( 5 , 5 , MD_PLN_FAST , 2 );//D9
85  scu_pinmux( 5 , 6 , MD_PLN_FAST , 2 );//D10
86  scu_pinmux( 5 , 7 , MD_PLN_FAST , 2 );//D11
87  scu_pinmux( 5 , 0 , MD_PLN_FAST , 2 );//D12
88  scu_pinmux( 5 , 1 , MD_PLN_FAST , 2 );//D13
89  scu_pinmux( 5 , 2 , MD_PLN_FAST , 2 );//D14
90  scu_pinmux( 5 , 3 , MD_PLN_FAST , 2 );//D15
91  scu_pinmux( 13 , 2 , MD_PLN_FAST , 2 );//D16
92  scu_pinmux( 13 , 3 , MD_PLN_FAST , 2 );//D17
93  scu_pinmux( 13 , 4 , MD_PLN_FAST , 2 );//D18
94  scu_pinmux( 13 , 5 , MD_PLN_FAST , 2 );//D19
95  scu_pinmux( 13 , 6 , MD_PLN_FAST , 2 );//D20
96  scu_pinmux( 13 , 7 , MD_PLN_FAST , 2 );//D21
97  scu_pinmux( 13 , 8 , MD_PLN_FAST , 2 );//D22
98  scu_pinmux( 13 , 9 , MD_PLN_FAST , 2 );//D23
99  scu_pinmux( 14 , 5 , MD_PLN_FAST , 3 );//D24
100  scu_pinmux( 14 , 6 , MD_PLN_FAST , 3 );//D25
101  scu_pinmux( 14 , 7 , MD_PLN_FAST , 3 );//D26
102  scu_pinmux( 14 , 8 , MD_PLN_FAST , 3 );//D27
103  scu_pinmux( 14 , 9 , MD_PLN_FAST , 3 );//D28
104  scu_pinmux( 14 , 10 , MD_PLN_FAST , 3 );//D29
105  scu_pinmux( 14 , 11 , MD_PLN_FAST , 3 );//D30
106  scu_pinmux( 14 , 12 , MD_PLN_FAST , 3 );//D31
107 
108  scu_pinmux( 1 , 3 , MD_PLN_FAST , 3 );//OE
109  scu_pinmux( 1 , 6 , MD_PLN_FAST , 3 );//WE
110 
111  scu_pinmux( 1 , 4 , MD_PLN_FAST , 3 );//BLS0
112  scu_pinmux( 6 , 6 , MD_PLN_FAST , 1 );//BLS1
113  scu_pinmux( 13 , 13 , MD_PLN_FAST , 2 );//BLS2
114  scu_pinmux( 13 , 10 , MD_PLN_FAST , 2 );//BLS3
115 
116  scu_pinmux( 1 , 5 , MD_PLN_FAST , 3 );//CS0
117  scu_pinmux( 6 , 3 , MD_PLN_FAST , 3 );//CS1
118  scu_pinmux( 13 , 12 , MD_PLN_FAST , 2 );//CS2
119  scu_pinmux( 13 , 11 , MD_PLN_FAST , 2 );//CS3
120 
121  scu_pinmux( 6 , 4 , MD_PLN_FAST , 3 );//CAS
122  scu_pinmux( 6 , 5 , MD_PLN_FAST , 3 );//RAS
123 
124  scu_pinmux( 6 , 9 , MD_PLN_FAST , 3 );//DYCS0
125  scu_pinmux( 6 , 1 , MD_PLN_FAST , 1 );//DYCS1
126  scu_pinmux( 13 , 14 , MD_PLN_FAST , 2 );//DYCS2
127  scu_pinmux( 15 , 14 , MD_PLN_FAST , 3 );//DYCS3
128 
129  scu_pinmux( 6 , 11 , MD_PLN_FAST , 3 );//CKEOUT0
130  scu_pinmux( 6 , 2 , MD_PLN_FAST , 1 );//CKEOUT1
131  scu_pinmux( 13 , 1 , MD_PLN_FAST , 2 );//CKEOUT2
132  scu_pinmux( 14 , 15 , MD_PLN_FAST , 3 );//CKEOUT3
133 
134  scu_pinmux( 6 , 12 , MD_PLN_FAST , 3 );//DQMOUT0
135  scu_pinmux( 6 , 10 , MD_PLN_FAST , 3 );//DQMOUT1
136  scu_pinmux( 13 , 0 , MD_PLN_FAST , 2 );//DQMOUT2
137  scu_pinmux( 14 , 13 , MD_PLN_FAST , 3 );//DQMOUT3
138 }
139 
140 
141 
142 /******************************************************************************
143  * Local Functions
144  *****************************************************************************/
145 
146 
147 
148 /******************************************************************************
149  * Public Functions
150  *****************************************************************************/
151 
152 
153 
154 /******************************************************************************
155  *
156  * Description:
157  * Initialize the NOR Flash
158  *
159  *****************************************************************************/
160 uint32_t memreg_init (void)
161 {
162  LPC_EMC->CONTROL = 0x00000001;
163  LPC_EMC->CONFIG = 0x00000000;
164 
165  pinConfig();
166 
167  // Setup for 16-bit access
168  LPC_EMC->STATICCONFIG2 = 0x00000001;
169 
170  return FALSE;
171 }
172 
173 #endif
174