source: EcnlProtoTool/trunk/asp3_dcre/mbed/targets/TARGET_RENESAS/TARGET_RZA1XX/TARGET_RZ_A1H/device/system_RZ_A1H.c@ 439

Last change on this file since 439 was 439, checked in by coas-nagasima, 4 years ago

mrubyを2.1.1に更新

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-csrc;charset=UTF-8
File size: 4.2 KB
Line 
1/******************************************************************************
2 * @file system_RZ_A1H_H.c
3 * @brief CMSIS Device System Source File for ARM Cortex-A9 Device Series
4 * @version V1.00
5 * @date 10 Mar 2017
6 *
7 * @note
8 *
9 ******************************************************************************/
10/*
11 * Copyright (c) 2013-2014 Renesas Electronics Corporation. All rights reserved.
12 * Copyright (c) 2009-2017 ARM Limited. All rights reserved.
13 *
14 * SPDX-License-Identifier: Apache-2.0
15 *
16 * Licensed under the Apache License, Version 2.0 (the License); you may
17 * not use this file except in compliance with the License.
18 * You may obtain a copy of the License at
19 *
20 * www.apache.org/licenses/LICENSE-2.0
21 *
22 * Unless required by applicable law or agreed to in writing, software
23 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
24 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
25 * See the License for the specific language governing permissions and
26 * limitations under the License.
27 */
28
29#include <RZ_A1H.h>
30#include "RZ_A1_Init.h"
31#include "irq_ctrl.h"
32
33#define CS2_SDRAM_MODE_16BIT_CAS2_BR_BW (*(volatile uint16_t*)0x3FFFD040)
34#define CS3_SDRAM_MODE_16BIT_CAS2_BR_BW (*(volatile uint16_t*)0x3FFFE040)
35#define GPIO_PORT0_BOOTMODE_BITMASK (0x000fu)
36
37/*
38 Port 0 (P0) MD pin assignment
39 P0_0: MD_BOOT0
40 P0_1: MD_BOOT1
41 P0_2: MD_CLK
42 P0_3: MD_CLKS
43 */
44
45/*----------------------------------------------------------------------------
46 System Core Clock Variable
47 *----------------------------------------------------------------------------*/
48uint32_t SystemCoreClock = CM0_RENESAS_RZ_A1_P0_CLK;
49
50/*----------------------------------------------------------------------------
51 System Core Clock update function
52 *----------------------------------------------------------------------------*/
53void SystemCoreClockUpdate (void)
54{
55 uint32_t freq;
56 uint16_t mode;
57 uint16_t ifc;
58
59 mode = (GPIO.PPR0 >> 2U) & 0x01U;
60
61 if (mode == 0) {
62 /* Clock Mode 0 */
63 /* CLKIN is between 10MHz and 13.33MHz */
64 /* Divider 1 uses 1/1 ratio, PLL x30 is ON */
65 freq = CM0_RENESAS_RZ_A1_CLKIN * 30U;
66 } else {
67 /* Clock Mode 1 */
68 /* CLKIN is 48MHz */
69 /* Divider 1 uses 1/4 ratio, PLL x32 is ON */
70 freq = (CM1_RENESAS_RZ_A1_CLKIN * 32U) / 4U;
71 }
72
73 /* Get CPG.FRQCR[IFC] bits */
74 ifc = (CPG.FRQCR >> 8U) & 0x03U;
75
76 /* Determine Divider 2 output clock */
77 if (ifc == 0x03U) {
78 /* Division ratio is 1/3 */
79 freq = (freq / 3U);
80 }
81 else {
82 if (ifc == 0x01U) {
83 /* Division ratio is 2/3 */
84 freq = (freq * 2U) / 3U;
85 }
86 }
87
88 SystemCoreClock = freq;
89}
90
91/*----------------------------------------------------------------------------
92 IRQ Handler Register/Unregister
93 *----------------------------------------------------------------------------*/
94uint32_t InterruptHandlerRegister (IRQn_Type irq, IRQHandler handler)
95{
96 return IRQ_SetHandler(irq, handler);
97}
98
99uint32_t InterruptHandlerUnregister (IRQn_Type irq)
100{
101 return IRQ_SetHandler(irq, (IRQHandler_t)NULL);
102}
103
104/*----------------------------------------------------------------------------
105 System Initialization
106 *----------------------------------------------------------------------------*/
107void SystemInit (void)
108{
109/* do not use global variables because this function is called before
110 reaching pre-main. RW section may be overwritten afterwards. */
111
112 // Enable SRAM write access
113 CPG.SYSCR3 = 0x0F;
114
115 RZ_A1_InitClock();
116 RZ_A1_InitBus();
117
118 // Invalidate entire Unified TLB
119 __set_TLBIALL(0);
120
121 // Invalidate entire branch predictor array
122 __set_BPIALL(0);
123 __DSB();
124 __ISB();
125
126 // Invalidate instruction cache and flush branch target cache
127 __set_ICIALLU(0);
128 __DSB();
129 __ISB();
130
131 // Invalidate data cache
132 L1C_InvalidateDCacheAll();
133
134 // Create Translation Table
135 MMU_CreateTranslationTable();
136
137 // Enable MMU
138 MMU_Enable();
139
140 // Enable Caches
141 L1C_EnableCaches();
142 L1C_EnableBTAC();
143
144#if (__L2C_PRESENT == 1)
145 L2C_InvAllByWay();
146 // Enable L2C
147 L2C_Enable();
148#endif
149
150#if ((__FPU_PRESENT == 1) && (__FPU_USED == 1))
151 // Enable FPU
152 __FPU_Enable();
153#endif
154
155 // IRQ Initialize
156 IRQ_Initialize();
157}
158
159void mbed_sdk_init(void) {
160 L1C_CleanDCacheAll();
161 L1C_InvalidateICacheAll();
162}
Note: See TracBrowser for help on using the repository browser.