Tom Rini | 10e4779 | 2018-05-06 17:58:06 -0400 | [diff] [blame] | 1 | // SPDX-License-Identifier: GPL-2.0+ |
Mike Looijmans | 5ae48b1 | 2016-09-30 08:13:13 +0200 | [diff] [blame] | 2 | /* |
| 3 | * (c) Copyright 2010-2014 Xilinx, Inc. All rights reserved. |
| 4 | * (c) Copyright 2016 Topic Embedded Products. |
Mike Looijmans | 5ae48b1 | 2016-09-30 08:13:13 +0200 | [diff] [blame] | 5 | */ |
| 6 | |
Michal Simek | 351ee11 | 2017-11-10 09:47:28 +0100 | [diff] [blame] | 7 | #include <asm/arch/ps7_init_gpl.h> |
Mike Looijmans | 5ae48b1 | 2016-09-30 08:13:13 +0200 | [diff] [blame] | 8 | |
| 9 | static unsigned long ps7_pll_init_data_3_0[] = { |
| 10 | EMIT_MASKWRITE(0XF8000008, 0x0000FFFFU, 0x0000DF0DU), |
Mike Looijmans | 66cd9c6 | 2019-01-18 09:02:47 +0100 | [diff] [blame] | 11 | EMIT_MASKWRITE(0XF8000110, 0x003FFFF0U, 0x000FA240U), |
| 12 | EMIT_MASKWRITE(0XF8000100, 0x0007F000U, 0x00030000U), |
Mike Looijmans | 5ae48b1 | 2016-09-30 08:13:13 +0200 | [diff] [blame] | 13 | EMIT_MASKWRITE(0XF8000100, 0x00000010U, 0x00000010U), |
| 14 | EMIT_MASKWRITE(0XF8000100, 0x00000001U, 0x00000001U), |
| 15 | EMIT_MASKWRITE(0XF8000100, 0x00000001U, 0x00000000U), |
| 16 | EMIT_MASKPOLL(0XF800010C, 0x00000001U), |
| 17 | EMIT_MASKWRITE(0XF8000100, 0x00000010U, 0x00000000U), |
| 18 | EMIT_MASKWRITE(0XF8000120, 0x1F003F30U, 0x1F000200U), |
| 19 | EMIT_MASKWRITE(0XF8000114, 0x003FFFF0U, 0x0012C220U), |
| 20 | EMIT_MASKWRITE(0XF8000104, 0x0007F000U, 0x00020000U), |
| 21 | EMIT_MASKWRITE(0XF8000104, 0x00000010U, 0x00000010U), |
| 22 | EMIT_MASKWRITE(0XF8000104, 0x00000001U, 0x00000001U), |
| 23 | EMIT_MASKWRITE(0XF8000104, 0x00000001U, 0x00000000U), |
| 24 | EMIT_MASKPOLL(0XF800010C, 0x00000002U), |
| 25 | EMIT_MASKWRITE(0XF8000104, 0x00000010U, 0x00000000U), |
| 26 | EMIT_MASKWRITE(0XF8000124, 0xFFF00003U, 0x0C200003U), |
Mike Looijmans | ecf34d1 | 2019-01-18 09:02:48 +0100 | [diff] [blame] | 27 | EMIT_MASKWRITE(0XF8000118, 0x003FFFF0U, 0x001452C0U), |
| 28 | EMIT_MASKWRITE(0XF8000108, 0x0007F000U, 0x0001E000U), |
Mike Looijmans | 5ae48b1 | 2016-09-30 08:13:13 +0200 | [diff] [blame] | 29 | EMIT_MASKWRITE(0XF8000108, 0x00000010U, 0x00000010U), |
| 30 | EMIT_MASKWRITE(0XF8000108, 0x00000001U, 0x00000001U), |
| 31 | EMIT_MASKWRITE(0XF8000108, 0x00000001U, 0x00000000U), |
| 32 | EMIT_MASKPOLL(0XF800010C, 0x00000004U), |
| 33 | EMIT_MASKWRITE(0XF8000108, 0x00000010U, 0x00000000U), |
| 34 | EMIT_MASKWRITE(0XF8000004, 0x0000FFFFU, 0x0000767BU), |
| 35 | EMIT_EXIT(), |
| 36 | }; |
| 37 | |
| 38 | static unsigned long ps7_clock_init_data_3_0[] = { |
| 39 | EMIT_MASKWRITE(0XF8000008, 0x0000FFFFU, 0x0000DF0DU), |
Mike Looijmans | ecf34d1 | 2019-01-18 09:02:48 +0100 | [diff] [blame] | 40 | EMIT_MASKWRITE(0XF8000128, 0x03F03F01U, 0x00700F01U), |
| 41 | EMIT_MASKWRITE(0XF8000138, 0x00000011U, 0x00000001U), |
Mike Looijmans | 5ae48b1 | 2016-09-30 08:13:13 +0200 | [diff] [blame] | 42 | EMIT_MASKWRITE(0XF800013C, 0x00000011U, 0x00000011U), |
Mike Looijmans | ecf34d1 | 2019-01-18 09:02:48 +0100 | [diff] [blame] | 43 | EMIT_MASKWRITE(0XF8000140, 0x03F03F71U, 0x00100801U), |
| 44 | EMIT_MASKWRITE(0XF800014C, 0x00003F31U, 0x00000501U), |
| 45 | EMIT_MASKWRITE(0XF8000150, 0x00003F33U, 0x00000A01U), |
| 46 | EMIT_MASKWRITE(0XF8000154, 0x00003F33U, 0x00000A03U), |
| 47 | EMIT_MASKWRITE(0XF8000158, 0x00003F33U, 0x00000501U), |
| 48 | EMIT_MASKWRITE(0XF8000168, 0x00003F31U, 0x00000501U), |
| 49 | EMIT_MASKWRITE(0XF8000170, 0x03F03F30U, 0x00200500U), |
| 50 | EMIT_MASKWRITE(0XF8000180, 0x03F03F30U, 0x00100700U), |
| 51 | EMIT_MASKWRITE(0XF8000190, 0x03F03F30U, 0x00100500U), |
Mike Looijmans | 5ae48b1 | 2016-09-30 08:13:13 +0200 | [diff] [blame] | 52 | EMIT_MASKWRITE(0XF80001A0, 0x03F03F30U, 0x00101800U), |
| 53 | EMIT_MASKWRITE(0XF80001C4, 0x00000001U, 0x00000001U), |
| 54 | EMIT_MASKWRITE(0XF800012C, 0x01FFCCCDU, 0x01FC4C4DU), |
| 55 | EMIT_MASKWRITE(0XF8000004, 0x0000FFFFU, 0x0000767BU), |
| 56 | EMIT_EXIT(), |
| 57 | }; |
| 58 | |
| 59 | static unsigned long ps7_ddr_init_data_3_0[] = { |
| 60 | EMIT_MASKWRITE(0XF8006000, 0x0001FFFFU, 0x00000080U), |
| 61 | EMIT_MASKWRITE(0XF8006004, 0x0007FFFFU, 0x00001081U), |
| 62 | EMIT_MASKWRITE(0XF8006008, 0x03FFFFFFU, 0x03C0780FU), |
| 63 | EMIT_MASKWRITE(0XF800600C, 0x03FFFFFFU, 0x02001001U), |
| 64 | EMIT_MASKWRITE(0XF8006010, 0x03FFFFFFU, 0x00014001U), |
| 65 | EMIT_MASKWRITE(0XF8006014, 0x001FFFFFU, 0x0004281AU), |
| 66 | EMIT_MASKWRITE(0XF8006018, 0xF7FFFFFFU, 0x44E458D2U), |
| 67 | EMIT_MASKWRITE(0XF800601C, 0xFFFFFFFFU, 0x720238E5U), |
| 68 | EMIT_MASKWRITE(0XF8006020, 0x7FDFFFFCU, 0x270872D0U), |
| 69 | EMIT_MASKWRITE(0XF8006024, 0x0FFFFFC3U, 0x00000000U), |
| 70 | EMIT_MASKWRITE(0XF8006028, 0x00003FFFU, 0x00002007U), |
| 71 | EMIT_MASKWRITE(0XF800602C, 0xFFFFFFFFU, 0x00000008U), |
| 72 | EMIT_MASKWRITE(0XF8006030, 0xFFFFFFFFU, 0x00040930U), |
| 73 | EMIT_MASKWRITE(0XF8006034, 0x13FF3FFFU, 0x000116D4U), |
| 74 | EMIT_MASKWRITE(0XF8006038, 0x00000003U, 0x00000000U), |
| 75 | EMIT_MASKWRITE(0XF800603C, 0x000FFFFFU, 0x00000777U), |
| 76 | EMIT_MASKWRITE(0XF8006040, 0xFFFFFFFFU, 0xFFF00000U), |
| 77 | EMIT_MASKWRITE(0XF8006044, 0x0FFFFFFFU, 0x0F666666U), |
| 78 | EMIT_MASKWRITE(0XF8006048, 0x0003F03FU, 0x0003C008U), |
| 79 | EMIT_MASKWRITE(0XF8006050, 0xFF0F8FFFU, 0x77010800U), |
| 80 | EMIT_MASKWRITE(0XF8006058, 0x00010000U, 0x00000000U), |
| 81 | EMIT_MASKWRITE(0XF800605C, 0x0000FFFFU, 0x00005003U), |
| 82 | EMIT_MASKWRITE(0XF8006060, 0x000017FFU, 0x0000003EU), |
| 83 | EMIT_MASKWRITE(0XF8006064, 0x00021FE0U, 0x00020000U), |
| 84 | EMIT_MASKWRITE(0XF8006068, 0x03FFFFFFU, 0x00284141U), |
| 85 | EMIT_MASKWRITE(0XF800606C, 0x0000FFFFU, 0x00001610U), |
| 86 | EMIT_MASKWRITE(0XF8006078, 0x03FFFFFFU, 0x00466111U), |
| 87 | EMIT_MASKWRITE(0XF800607C, 0x000FFFFFU, 0x00032222U), |
| 88 | EMIT_MASKWRITE(0XF80060A4, 0xFFFFFFFFU, 0x10200802U), |
Mike Looijmans | ecf34d1 | 2019-01-18 09:02:48 +0100 | [diff] [blame] | 89 | EMIT_MASKWRITE(0XF80060A8, 0x0FFFFFFFU, 0x0690CB52U), |
Mike Looijmans | 5ae48b1 | 2016-09-30 08:13:13 +0200 | [diff] [blame] | 90 | EMIT_MASKWRITE(0XF80060AC, 0x000001FFU, 0x000001FEU), |
| 91 | EMIT_MASKWRITE(0XF80060B0, 0x1FFFFFFFU, 0x1CFFFFFFU), |
| 92 | EMIT_MASKWRITE(0XF80060B4, 0x00000200U, 0x00000200U), |
| 93 | EMIT_MASKWRITE(0XF80060B8, 0x01FFFFFFU, 0x00200066U), |
| 94 | EMIT_MASKWRITE(0XF80060C4, 0x00000003U, 0x00000003U), |
| 95 | EMIT_MASKWRITE(0XF80060C4, 0x00000003U, 0x00000000U), |
| 96 | EMIT_MASKWRITE(0XF80060C8, 0x000000FFU, 0x00000000U), |
| 97 | EMIT_MASKWRITE(0XF80060DC, 0x00000001U, 0x00000000U), |
| 98 | EMIT_MASKWRITE(0XF80060F0, 0x0000FFFFU, 0x00000000U), |
| 99 | EMIT_MASKWRITE(0XF80060F4, 0x0000000FU, 0x00000008U), |
| 100 | EMIT_MASKWRITE(0XF8006114, 0x000000FFU, 0x00000000U), |
| 101 | EMIT_MASKWRITE(0XF8006118, 0x7FFFFFCFU, 0x40000001U), |
| 102 | EMIT_MASKWRITE(0XF800611C, 0x7FFFFFCFU, 0x40000001U), |
| 103 | EMIT_MASKWRITE(0XF8006120, 0x7FFFFFCFU, 0x40000001U), |
| 104 | EMIT_MASKWRITE(0XF8006124, 0x7FFFFFCFU, 0x40000001U), |
| 105 | EMIT_MASKWRITE(0XF800612C, 0x000FFFFFU, 0x00025010U), |
| 106 | EMIT_MASKWRITE(0XF8006130, 0x000FFFFFU, 0x00026400U), |
| 107 | EMIT_MASKWRITE(0XF8006134, 0x000FFFFFU, 0x00029418U), |
| 108 | EMIT_MASKWRITE(0XF8006138, 0x000FFFFFU, 0x00027820U), |
| 109 | EMIT_MASKWRITE(0XF8006140, 0x000FFFFFU, 0x00000035U), |
| 110 | EMIT_MASKWRITE(0XF8006144, 0x000FFFFFU, 0x00000035U), |
| 111 | EMIT_MASKWRITE(0XF8006148, 0x000FFFFFU, 0x00000035U), |
| 112 | EMIT_MASKWRITE(0XF800614C, 0x000FFFFFU, 0x00000035U), |
| 113 | EMIT_MASKWRITE(0XF8006154, 0x000FFFFFU, 0x00000090U), |
| 114 | EMIT_MASKWRITE(0XF8006158, 0x000FFFFFU, 0x00000080U), |
| 115 | EMIT_MASKWRITE(0XF800615C, 0x000FFFFFU, 0x00000098U), |
| 116 | EMIT_MASKWRITE(0XF8006160, 0x000FFFFFU, 0x000000A0U), |
| 117 | EMIT_MASKWRITE(0XF8006168, 0x001FFFFFU, 0x000000E9U), |
| 118 | EMIT_MASKWRITE(0XF800616C, 0x001FFFFFU, 0x000000EEU), |
| 119 | EMIT_MASKWRITE(0XF8006170, 0x001FFFFFU, 0x000000FAU), |
| 120 | EMIT_MASKWRITE(0XF8006174, 0x001FFFFFU, 0x000000F3U), |
| 121 | EMIT_MASKWRITE(0XF800617C, 0x000FFFFFU, 0x000000D0U), |
| 122 | EMIT_MASKWRITE(0XF8006180, 0x000FFFFFU, 0x000000C0U), |
| 123 | EMIT_MASKWRITE(0XF8006184, 0x000FFFFFU, 0x000000D8U), |
| 124 | EMIT_MASKWRITE(0XF8006188, 0x000FFFFFU, 0x000000E0U), |
| 125 | EMIT_MASKWRITE(0XF8006190, 0x6FFFFEFEU, 0x00040080U), |
| 126 | EMIT_MASKWRITE(0XF8006194, 0x000FFFFFU, 0x0001FC82U), |
| 127 | EMIT_MASKWRITE(0XF8006204, 0xFFFFFFFFU, 0x00000000U), |
| 128 | EMIT_MASKWRITE(0XF8006208, 0x000703FFU, 0x000003FFU), |
| 129 | EMIT_MASKWRITE(0XF800620C, 0x000703FFU, 0x000003FFU), |
| 130 | EMIT_MASKWRITE(0XF8006210, 0x000703FFU, 0x000003FFU), |
| 131 | EMIT_MASKWRITE(0XF8006214, 0x000703FFU, 0x000003FFU), |
| 132 | EMIT_MASKWRITE(0XF8006218, 0x000F03FFU, 0x000003FFU), |
| 133 | EMIT_MASKWRITE(0XF800621C, 0x000F03FFU, 0x000003FFU), |
| 134 | EMIT_MASKWRITE(0XF8006220, 0x000F03FFU, 0x000003FFU), |
| 135 | EMIT_MASKWRITE(0XF8006224, 0x000F03FFU, 0x000003FFU), |
| 136 | EMIT_MASKWRITE(0XF80062A8, 0x00000FF5U, 0x00000000U), |
| 137 | EMIT_MASKWRITE(0XF80062AC, 0xFFFFFFFFU, 0x00000000U), |
| 138 | EMIT_MASKWRITE(0XF80062B0, 0x003FFFFFU, 0x00005125U), |
| 139 | EMIT_MASKWRITE(0XF80062B4, 0x0003FFFFU, 0x000012A8U), |
| 140 | EMIT_MASKPOLL(0XF8000B74, 0x00002000U), |
| 141 | EMIT_MASKWRITE(0XF8006000, 0x0001FFFFU, 0x00000081U), |
| 142 | EMIT_MASKPOLL(0XF8006054, 0x00000007U), |
| 143 | EMIT_EXIT(), |
| 144 | }; |
| 145 | |
| 146 | static unsigned long ps7_mio_init_data_3_0[] = { |
| 147 | EMIT_MASKWRITE(0XF8000008, 0x0000FFFFU, 0x0000DF0DU), |
| 148 | EMIT_MASKWRITE(0XF8000B40, 0x00000FFFU, 0x00000600U), |
| 149 | EMIT_MASKWRITE(0XF8000B44, 0x00000FFFU, 0x00000600U), |
| 150 | EMIT_MASKWRITE(0XF8000B48, 0x00000FFFU, 0x00000672U), |
| 151 | EMIT_MASKWRITE(0XF8000B4C, 0x00000FFFU, 0x00000672U), |
| 152 | EMIT_MASKWRITE(0XF8000B50, 0x00000FFFU, 0x00000674U), |
| 153 | EMIT_MASKWRITE(0XF8000B54, 0x00000FFFU, 0x00000674U), |
| 154 | EMIT_MASKWRITE(0XF8000B58, 0x00000FFFU, 0x00000600U), |
| 155 | EMIT_MASKWRITE(0XF8000B5C, 0xFFFFFFFFU, 0x0018C61CU), |
| 156 | EMIT_MASKWRITE(0XF8000B60, 0xFFFFFFFFU, 0x00F9861CU), |
| 157 | EMIT_MASKWRITE(0XF8000B64, 0xFFFFFFFFU, 0x00F9861CU), |
| 158 | EMIT_MASKWRITE(0XF8000B68, 0xFFFFFFFFU, 0x00F9861CU), |
| 159 | EMIT_MASKWRITE(0XF8000B6C, 0x00007FFFU, 0x00000E60U), |
| 160 | EMIT_MASKWRITE(0XF8000B70, 0x00000001U, 0x00000001U), |
| 161 | EMIT_MASKWRITE(0XF8000B70, 0x00000021U, 0x00000020U), |
| 162 | EMIT_MASKWRITE(0XF8000B70, 0x07FEFFFFU, 0x00000823U), |
| 163 | EMIT_MASKWRITE(0XF8000004, 0x0000FFFFU, 0x0000767BU), |
| 164 | EMIT_EXIT(), |
| 165 | }; |
| 166 | |
| 167 | static unsigned long ps7_peripherals_init_data_3_0[] = { |
| 168 | EMIT_MASKWRITE(0XF8000008, 0x0000FFFFU, 0x0000DF0DU), |
| 169 | EMIT_MASKWRITE(0XF8000B48, 0x00000180U, 0x00000180U), |
| 170 | EMIT_MASKWRITE(0XF8000B4C, 0x00000180U, 0x00000180U), |
| 171 | EMIT_MASKWRITE(0XF8000B50, 0x00000180U, 0x00000180U), |
| 172 | EMIT_MASKWRITE(0XF8000B54, 0x00000180U, 0x00000180U), |
| 173 | EMIT_MASKWRITE(0XF8000004, 0x0000FFFFU, 0x0000767BU), |
Mike Looijmans | 5ae48b1 | 2016-09-30 08:13:13 +0200 | [diff] [blame] | 174 | EMIT_MASKWRITE(0XE000D000, 0x000800FFU, 0x000800C1U), |
| 175 | EMIT_MASKWRITE(0XF8007000, 0x20000000U, 0x00000000U), |
| 176 | EMIT_MASKDELAY(0XF8F00200, 1), |
| 177 | EMIT_MASKWRITE(0XE000A244, 0x003FFFFFU, 0x00004000U), |
| 178 | EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0xBFFF4000U), |
| 179 | EMIT_MASKWRITE(0XE000A248, 0x003FFFFFU, 0x00004000U), |
| 180 | EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0xBFFF0000U), |
| 181 | EMIT_MASKDELAY(0XF8F00200, 1), |
| 182 | EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0xBFFF4000U), |
| 183 | EMIT_MASKDELAY(0XF8F00200, 1), |
| 184 | EMIT_MASKDELAY(0XF8F00200, 1), |
| 185 | EMIT_EXIT(), |
| 186 | }; |
| 187 | |
| 188 | static unsigned long ps7_post_config_3_0[] = { |
| 189 | EMIT_MASKWRITE(0XF8000008, 0x0000FFFFU, 0x0000DF0DU), |
| 190 | EMIT_MASKWRITE(0XF8000900, 0x0000000FU, 0x0000000FU), |
| 191 | EMIT_MASKWRITE(0XF8000240, 0xFFFFFFFFU, 0x00000000U), |
| 192 | EMIT_MASKWRITE(0XF8000004, 0x0000FFFFU, 0x0000767BU), |
| 193 | EMIT_EXIT(), |
| 194 | }; |
| 195 | |
| 196 | int ps7_init(void) |
| 197 | { |
| 198 | int ret; |
| 199 | |
| 200 | ret = ps7_config(ps7_mio_init_data_3_0); |
| 201 | if (ret != PS7_INIT_SUCCESS) |
| 202 | return ret; |
| 203 | ret = ps7_config(ps7_pll_init_data_3_0); |
| 204 | if (ret != PS7_INIT_SUCCESS) |
| 205 | return ret; |
| 206 | ret = ps7_config(ps7_clock_init_data_3_0); |
| 207 | if (ret != PS7_INIT_SUCCESS) |
| 208 | return ret; |
| 209 | ret = ps7_config(ps7_ddr_init_data_3_0); |
| 210 | if (ret != PS7_INIT_SUCCESS) |
| 211 | return ret; |
| 212 | ret = ps7_config(ps7_peripherals_init_data_3_0); |
| 213 | if (ret != PS7_INIT_SUCCESS) |
| 214 | return ret; |
| 215 | |
| 216 | return PS7_INIT_SUCCESS; |
| 217 | } |
| 218 | |
| 219 | int ps7_post_config(void) |
| 220 | { |
| 221 | return ps7_config(ps7_post_config_3_0); |
| 222 | } |