--- /dev/null
+/***********************************************************************************************************************\r
+* DISCLAIMER\r
+* This software is supplied by Renesas Electronics Corporation and is only\r
+* intended for use with Renesas products. No other uses are authorized. This\r
+* software is owned by Renesas Electronics Corporation and is protected under\r
+* all applicable laws, including copyright laws.\r
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING\r
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT\r
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE\r
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.\r
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS\r
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE\r
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR\r
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE\r
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
+* Renesas reserves the right, without notice, to make changes to this software\r
+* and to discontinue the availability of this software. By using this software,\r
+* you agree to the additional terms and conditions found by accessing the\r
+* following link:\r
+* http://www.renesas.com/disclaimer\r
+*\r
+* Copyright (C) 2014 Renesas Electronics Corporation. All rights reserved.\r
+***********************************************************************************************************************/\r
+/***********************************************************************************************************************\r
+* System Name : RZ/T1 Init program\r
+* File Name : r_ram_init.c\r
+* Version : 0.1\r
+* Device : R7S910018\r
+* Abstract : API for internal extended RAM function\r
+* Tool-Chain : GNUARM-NONEv14.02-EABI\r
+* OS : not use\r
+* H/W Platform : Renesas Starter Kit for RZ/T1(Preliminary)\r
+* Description : internal extended RAM setting API of RZ/T1\r
+* Limitation : none\r
+***********************************************************************************************************************/\r
+/***********************************************************************************************************************\r
+* History : DD.MM.YYYY Version Description\r
+* : 21.05.2015 1.00 First Release\r
+***********************************************************************************************************************/\r
+\r
+/***********************************************************************************************************************\r
+Includes <System Includes> , "Project Includes"\r
+***********************************************************************************************************************/\r
+#include <stdint.h>\r
+#include "iodefine.h"\r
+#include "r_system.h"\r
+#include "r_ram_init.h"\r
+#include "r_typedefs.h"\r
+\r
+/***********************************************************************************************************************\r
+Macro definitions\r
+***********************************************************************************************************************/\r
+#define RAM_ECC_ENABLE (0x00000001)\r
+#define RAM_ECC_DISABLE (0x00000000)\r
+#define RAM_PROTECT (0x00000000)\r
+\r
+/***********************************************************************************************************************\r
+Typedef definitions\r
+***********************************************************************************************************************/\r
+\r
+\r
+\r
+/***********************************************************************************************************************\r
+Imported global variables and functions (from other files)\r
+***********************************************************************************************************************/\r
+\r
+\r
+/***********************************************************************************************************************\r
+Exported global variables and functions (to be accessed by other files)\r
+***********************************************************************************************************************/\r
+\r
+\r
+\r
+/***********************************************************************************************************************\r
+Private variables and functions\r
+***********************************************************************************************************************/\r
+\r
+/***********************************************************************************************************************\r
+* Function Name : R_RAM_ECCEnable\r
+* Description : Enable ECC function for internal extended RAM.\r
+* Arguments : none\r
+* Return Value : none\r
+***********************************************************************************************************************/\r
+void R_RAM_ECCEnable(void)\r
+{\r
+ /* Enables writing to the protected registers related to RAM function */\r
+ R_RAM_WriteEnable();\r
+ \r
+ /* Enable ECC function */\r
+ ECCRAM.RAMEDC.LONG = RAM_ECC_ENABLE;\r
+ \r
+ /* Disables writing to the protected registers related to RAM function */\r
+ R_RAM_WriteDisable();\r
+ \r
+}\r
+\r
+/***********************************************************************************************************************\r
+ End of function R_RAM_ECCEnable\r
+***********************************************************************************************************************/\r
+\r
+\r
+/***********************************************************************************************************************\r
+* Function Name : R_RAM_WriteEnable\r
+* Description : Enable writing to the protected registers related to RAM.\r
+* And dummy read the register in order to fix the register value.\r
+* Arguments : none\r
+* Return Value : none\r
+***********************************************************************************************************************/\r
+void R_RAM_WriteEnable(void)\r
+{\r
+ volatile uint32_t dummy=0;\r
+\r
+ UNUSED_VARIABLE(dummy);\r
+ \r
+ /* Special sequence for protect release */\r
+ ECCRAM.RAMPCMD.LONG = 0x000000A5; // Write fixed value 0x000000A5\r
+ ECCRAM.RAMPCMD.LONG = 0x00000001; // Write expected value \r
+ ECCRAM.RAMPCMD.LONG = 0x0000FFFE; // Write inverted value of the expected value\r
+ ECCRAM.RAMPCMD.LONG = 0x00000001; // Write expected value again\r
+ dummy = ECCRAM.RAMPCMD.LONG; \r
+ \r
+}\r
+\r
+/***********************************************************************************************************************\r
+ End of function R_RAM_WriteEnable\r
+***********************************************************************************************************************/\r
+\r
+/***********************************************************************************************************************\r
+* Function Name : R_RAM_WriteDisable\r
+* Description : Disable writing to the protected registers related to RAM.\r
+* And dummy read the register in order to fix the register value.\r
+* Arguments : none\r
+* Return Value : none\r
+***********************************************************************************************************************/\r
+void R_RAM_WriteDisable(void)\r
+{\r
+ volatile uint32_t dummy=0;\r
+\r
+ UNUSED_VARIABLE(dummy);\r
+ \r
+ /* Clear RAMPCMD register to zero */\r
+ ECCRAM.RAMPCMD.LONG = RAM_PROTECT; \r
+ dummy = ECCRAM.RAMPCMD.LONG; \r
+ \r
+}\r
+\r
+/***********************************************************************************************************************\r
+ End of function R_RAM_WriteDisable\r
+***********************************************************************************************************************/\r
+\r
+/* End of File */\r
+\r
+\r