]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702/ZC702_hw_platform/ps7_init.h
Add back Zynq demo - this time using SDK V14.2.
[freertos] / FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702 / ZC702_hw_platform / ps7_init.h
1 \r
2 /******************************************************************************\r
3 *\r
4 * (c) Copyright 2010-2012 Xilinx, Inc. All rights reserved.\r
5 *\r
6 * This file contains confidential and proprietary information of Xilinx, Inc.\r
7 * and is protected under U.S. and international copyright and other\r
8 * intellectual property laws.\r
9 *\r
10 * DISCLAIMER\r
11 * This disclaimer is not a license and does not grant any rights to the\r
12 * materials distributed herewith. Except as otherwise provided in a valid\r
13 * license issued to you by Xilinx, and to the maximum extent permitted by\r
14 * applicable law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND WITH ALL\r
15 * FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS,\r
16 * IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF\r
17 * MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE;\r
18 * and (2) Xilinx shall not be liable (whether in contract or tort, including\r
19 * negligence, or under any other theory of liability) for any loss or damage\r
20 * of any kind or nature related to, arising under or in connection with these\r
21 * materials, including for any direct, or any indirect, special, incidental,\r
22 * or consequential loss or damage (including loss of data, profits, goodwill,\r
23 * or any type of loss or damage suffered as a result of any action brought by\r
24 * a third party) even if such damage or loss was reasonably foreseeable or\r
25 * Xilinx had been advised of the possibility of the same.\r
26 *\r
27 * CRITICAL APPLICATIONS\r
28 * Xilinx products are not designed or intended to be fail-safe, or for use in\r
29 * any application requiring fail-safe performance, such as life-support or\r
30 * safety devices or systems, Class III medical devices, nuclear facilities,\r
31 * applications related to the deployment of airbags, or any other applications\r
32 * that could lead to death, personal injury, or severe property or\r
33 * environmental damage (individually and collectively, "Critical\r
34 * Applications"). Customer assumes the sole risk and liability of any use of\r
35 * Xilinx products in Critical Applications, subject only to applicable laws\r
36 * and regulations governing limitations on product liability.\r
37 *\r
38 * THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS PART OF THIS FILE\r
39 * AT ALL TIMES.\r
40 *\r
41 ******************************************************************************/\r
42 /****************************************************************************/\r
43 /**\r
44 *\r
45 * @file ps7_init.h\r
46 *\r
47 * This file can be included in FSBL code\r
48 * to get prototype of ps7_init() function\r
49 * and error codes\r
50 *\r
51 *****************************************************************************/\r
52 \r
53 #ifdef __cplusplus\r
54 extern "C" {\r
55 #endif\r
56 \r
57 \r
58 //typedef unsigned int  u32;\r
59 \r
60 \r
61 /** do we need to make this name more unique ? **/\r
62 //extern u32 ps7_init_data[];\r
63 extern unsigned long  * ps7_ddr_init_data;\r
64 extern unsigned long  * ps7_mio_init_data;\r
65 extern unsigned long  * ps7_pll_init_data;\r
66 extern unsigned long  * ps7_clock_init_data;\r
67 extern unsigned long  * ps7_peripherals_init_data;\r
68 \r
69 \r
70 \r
71 #define OPCODE_EXIT       0U\r
72 #define OPCODE_CLEAR      1U\r
73 #define OPCODE_WRITE      2U\r
74 #define OPCODE_MASKWRITE  3U\r
75 #define OPCODE_MASKPOLL   4U\r
76 #define OPCODE_MASKDELAY  5U\r
77 #define NEW_PS7_ERR_CODE 1\r
78 \r
79 /* Encode number of arguments in last nibble */\r
80 #define EMIT_EXIT()                   ( (OPCODE_EXIT      << 4 ) | 0 )\r
81 #define EMIT_CLEAR(addr)              ( (OPCODE_CLEAR     << 4 ) | 1 ) , addr\r
82 #define EMIT_WRITE(addr,val)          ( (OPCODE_WRITE     << 4 ) | 2 ) , addr, val\r
83 #define EMIT_MASKWRITE(addr,mask,val) ( (OPCODE_MASKWRITE << 4 ) | 3 ) , addr, mask, val\r
84 #define EMIT_MASKPOLL(addr,mask)      ( (OPCODE_MASKPOLL  << 4 ) | 2 ) , addr, mask\r
85 #define EMIT_MASKDELAY(addr,mask)      ( (OPCODE_MASKDELAY << 4 ) | 2 ) , addr, mask\r
86 \r
87 /* Returns codes  of PS7_Init */\r
88 #define PS7_INIT_SUCCESS   (0)    // 0 is success in good old C\r
89 #define PS7_INIT_CORRUPT   (1)    // 1 the data is corrupted, and slcr reg are in corrupted state now\r
90 #define PS7_INIT_TIMEOUT   (2)    // 2 when a poll operation timed out\r
91 #define PS7_POLL_FAILED_DDR_INIT (3)    // 3 when a poll operation timed out for ddr init\r
92 #define PS7_POLL_FAILED_DMA      (4)    // 4 when a poll operation timed out for dma done bit\r
93 #define PS7_POLL_FAILED_PLL      (5)    // 5 when a poll operation timed out for pll sequence init\r
94 \r
95 \r
96 /* Silicon Versions */\r
97 #define PCW_SILICON_VERSION_1 0\r
98 #define PCW_SILICON_VERSION_2 1\r
99 #define PCW_SILICON_VERSION_3 2\r
100 \r
101 /* This flag to be used by FSBL to check whether ps7_post_config() proc exixts */\r
102 #define PS7_POST_CONFIG\r
103 \r
104 /* Freq of all peripherals */\r
105 \r
106 #define APU_FREQ  666666687
107 #define DDR_FREQ  533333374
108 #define DCI_FREQ  10158731
109 #define QSPI_FREQ  200000000
110 #define SMC_FREQ  10000000
111 #define ENET0_FREQ  25000000
112 #define ENET1_FREQ  10000000
113 #define USB0_FREQ  60000000
114 #define USB1_FREQ  60000000
115 #define SDIO_FREQ  50000000
116 #define UART_FREQ  50000000
117 #define SPI_FREQ  10000000
118 #define I2C_FREQ  111111115
119 #define WDT_FREQ  111111115
120 #define TTC_FREQ  50000000
121 #define CAN_FREQ  23809523
122 #define PCAP_FREQ  200000000
123 #define TPIU_FREQ  200000000
124 #define FPGA0_FREQ  50000000
125 #define FPGA1_FREQ  50000000
126 #define FPGA2_FREQ  50000000
127 #define FPGA3_FREQ  50000000
128
129 \r
130 /* For delay calculation using global registers*/\r
131 #define SCU_GLOBAL_TIMER_COUNT_L32      0xF8F00200\r
132 #define SCU_GLOBAL_TIMER_COUNT_U32      0xF8F00204\r
133 #define SCU_GLOBAL_TIMER_CONTROL        0xF8F00208\r
134 #define SCU_GLOBAL_TIMER_AUTO_INC       0xF8F00218\r
135 \r
136 int ps7_config( unsigned long*);\r
137 int ps7_init();\r
138 int ps7_post_config();\r
139 int ps7_debug();\r
140 char* getPS7MessageInfo(unsigned key);\r
141 \r
142 void perf_start_clock(void);\r
143 void perf_disable_clock(void);\r
144 void perf_reset_clock(void);\r
145 void perf_reset_and_start_timer(); \r
146 int get_number_of_cycles_for_delay(unsigned int delay); \r
147 #ifdef __cplusplus\r
148 }\r
149 #endif\r
150 \r