blob: 6b6a162f56892e2a676b4e4ca01ef6b80a8e4ab6 [file] [log] [blame]
Masahiro Yamada144a3e02015-04-21 20:38:20 +09001if ARCH_SOCFPGA
2
Simon Goldschmidt17d78522019-10-22 21:29:48 +02003config ERR_PTR_OFFSET
4 default 0xfffec000 if TARGET_SOCFPGA_GEN5 # Boot ROM range
5
Simon Goldschmidtb1c42692019-04-09 21:02:05 +02006config NR_DRAM_BANKS
7 default 1
8
Siew Chin Lim2492d592021-03-01 20:04:11 +08009config SOCFPGA_SECURE_VAB_AUTH
10 bool "Enable boot image authentication with Secure Device Manager"
Jit Loon Lim977071e2024-03-12 22:01:03 +080011 depends on TARGET_SOCFPGA_AGILEX || TARGET_SOCFPGA_N5X || \
12 TARGET_SOCFPGA_AGILEX5
Siew Chin Lim2492d592021-03-01 20:04:11 +080013 select FIT_IMAGE_POST_PROCESS
14 select SHA384
Alexandru Gagniuc5df5d692021-09-02 19:54:18 -050015 select SHA512
Siew Chin Lim2492d592021-03-01 20:04:11 +080016 select SPL_FIT_IMAGE_POST_PROCESS
17 help
18 All images loaded from FIT will be authenticated by Secure Device
19 Manager.
20
21config SOCFPGA_SECURE_VAB_AUTH_ALLOW_NON_FIT_IMAGE
22 bool "Allow non-FIT VAB signed images"
23 depends on SOCFPGA_SECURE_VAB_AUTH
24
Simon Goldschmidt20fd7de2019-06-13 21:50:28 +020025config SPL_SIZE_LIMIT
Simon Glassa8f0c942019-09-25 08:56:28 -060026 default 0x10000 if TARGET_SOCFPGA_GEN5
Simon Goldschmidt20fd7de2019-06-13 21:50:28 +020027
28config SPL_SIZE_LIMIT_PROVIDE_STACK
29 default 0x200 if TARGET_SOCFPGA_GEN5
30
Simon Goldschmidtb1c42692019-04-09 21:02:05 +020031config SPL_STACK_R_ADDR
32 default 0x00800000 if TARGET_SOCFPGA_GEN5
33
Simon Glassb59037b2023-09-26 08:14:25 -060034config SPL_SYS_MALLOC_F
35 default y if TARGET_SOCFPGA_GEN5
36
Simon Goldschmidt4f57b9a2019-04-09 21:02:06 +020037config SPL_SYS_MALLOC_F_LEN
38 default 0x800 if TARGET_SOCFPGA_GEN5
39
Dalon Westergreen8d770f42017-02-10 17:15:34 -080040config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE
41 default 0xa2
42
Simon Goldschmidtb1c42692019-04-09 21:02:05 +020043config SYS_MALLOC_F_LEN
44 default 0x2000 if TARGET_SOCFPGA_ARRIA10
45 default 0x2000 if TARGET_SOCFPGA_GEN5
46
Simon Glass72cc5382022-10-20 18:22:39 -060047config TEXT_BASE
Simon Goldschmidtb1c42692019-04-09 21:02:05 +020048 default 0x01000040 if TARGET_SOCFPGA_ARRIA10
49 default 0x01000040 if TARGET_SOCFPGA_GEN5
50
Ley Foon Tan461d2982019-11-27 15:55:32 +080051config TARGET_SOCFPGA_AGILEX
52 bool
53 select ARMV8_MULTIENTRY
54 select ARMV8_SET_SMPEN
Siew Chin Limdbe60eb2020-12-24 18:21:12 +080055 select BINMAN if SPL_ATF
Ley Foon Tan461d2982019-11-27 15:55:32 +080056 select CLK
Chee Hong Ang89ac34d2020-08-07 11:50:05 +080057 select FPGA_INTEL_SDM_MAILBOX
Ley Foon Tan461d2982019-11-27 15:55:32 +080058 select NCORE_CACHE
59 select SPL_CLK if SPL
Siew Chin Lim8a714162021-03-01 20:04:10 +080060 select TARGET_SOCFPGA_SOC64
Ley Foon Tan461d2982019-11-27 15:55:32 +080061
Jit Loon Lim977071e2024-03-12 22:01:03 +080062config TARGET_SOCFPGA_AGILEX5
63 bool
64 select BINMAN if SPL_ATF
65 select CLK
66 select FPGA_INTEL_SDM_MAILBOX
67 select GICV3
68 select SPL_CLK if SPL
69 select TARGET_SOCFPGA_SOC64
70
Marek Vasut822e7952015-08-02 21:57:57 +020071config TARGET_SOCFPGA_ARRIA5
72 bool
Dinh Nguyen677a16f2015-12-02 13:31:25 -060073 select TARGET_SOCFPGA_GEN5
Marek Vasut822e7952015-08-02 21:57:57 +020074
Ley Foon Tan5b7cea62017-04-26 02:44:48 +080075config TARGET_SOCFPGA_ARRIA10
76 bool
Ley Foon Tan17b9ba62019-05-06 09:55:59 +080077 select SPL_ALTERA_SDRAM
Michal Simek7e7ba3b2018-07-23 15:55:15 +020078 select SPL_BOARD_INIT if SPL
Ley Foon Tan1d07b3e2020-04-07 15:43:14 +080079 select SPL_CACHE if SPL
Marek Vasute1dcd622018-07-30 15:56:19 +020080 select CLK
81 select SPL_CLK if SPL
Marek Vasut69fbb882018-08-13 18:32:38 +020082 select DM_I2C
Marek Vasut700b2c62018-08-13 18:32:38 +020083 select DM_RESET
84 select SPL_DM_RESET if SPL
Marek Vasut04c8f4f2018-08-13 20:06:46 +020085 select REGMAP
86 select SPL_REGMAP if SPL
87 select SYSCON
88 select SPL_SYSCON if SPL
89 select ETH_DESIGNWARE_SOCFPGA
Simon Goldschmidtb1c42692019-04-09 21:02:05 +020090 imply FPGA_SOCFPGA
Simon Glass7611ac62019-09-25 08:56:27 -060091 imply SPL_USE_TINY_PRINTF
Ley Foon Tan5b7cea62017-04-26 02:44:48 +080092
Michał Barnaś8fdccae2024-03-19 18:18:13 +000093config SOCFPGA_ARRIA10_ALWAYS_REPROGRAM
94 bool "Always reprogram Arria 10 FPGA"
95 depends on TARGET_SOCFPGA_ARRIA10
96 help
97 Arria 10 FPGA is only programmed during the cold boot.
98 This option forces the FPGA to be reprogrammed every reboot,
99 allowing to change the bitstream and apply it with warm reboot.
100
Marek Vasut822e7952015-08-02 21:57:57 +0200101config TARGET_SOCFPGA_CYCLONE5
102 bool
Dinh Nguyen677a16f2015-12-02 13:31:25 -0600103 select TARGET_SOCFPGA_GEN5
104
105config TARGET_SOCFPGA_GEN5
106 bool
Ley Foon Tan17b9ba62019-05-06 09:55:59 +0800107 select SPL_ALTERA_SDRAM
Simon Goldschmidtb1c42692019-04-09 21:02:05 +0200108 imply FPGA_SOCFPGA
Simon Goldschmidt20fd7de2019-06-13 21:50:28 +0200109 imply SPL_SIZE_LIMIT_SUBTRACT_GD
110 imply SPL_SIZE_LIMIT_SUBTRACT_MALLOC
Simon Goldschmidtb1c42692019-04-09 21:02:05 +0200111 imply SPL_STACK_R
112 imply SPL_SYS_MALLOC_SIMPLE
Simon Glass7611ac62019-09-25 08:56:27 -0600113 imply SPL_USE_TINY_PRINTF
Marek Vasut822e7952015-08-02 21:57:57 +0200114
Siew Chin Lim988bfe42021-08-10 11:26:42 +0800115config TARGET_SOCFPGA_N5X
116 bool
117 select ARMV8_MULTIENTRY
118 select ARMV8_SET_SMPEN
119 select BINMAN if SPL_ATF
120 select CLK
121 select FPGA_INTEL_SDM_MAILBOX
122 select NCORE_CACHE
123 select SPL_ALTERA_SDRAM
124 select SPL_CLK if SPL
125 select TARGET_SOCFPGA_SOC64
126
127config TARGET_SOCFPGA_N5X_SOCDK
128 bool "Intel eASIC SoCDK (N5X)"
129 select TARGET_SOCFPGA_N5X
130
Siew Chin Lim8a714162021-03-01 20:04:10 +0800131config TARGET_SOCFPGA_SOC64
132 bool
133
Ley Foon Tan9c407b52018-05-24 00:17:32 +0800134config TARGET_SOCFPGA_STRATIX10
135 bool
136 select ARMV8_MULTIENTRY
Ley Foon Tan9c407b52018-05-24 00:17:32 +0800137 select ARMV8_SET_SMPEN
Siew Chin Limdbe60eb2020-12-24 18:21:12 +0800138 select BINMAN if SPL_ATF
Chee Hong Ang14192452020-08-07 11:50:03 +0800139 select FPGA_INTEL_SDM_MAILBOX
Siew Chin Lim8a714162021-03-01 20:04:10 +0800140 select TARGET_SOCFPGA_SOC64
Ley Foon Tan9c407b52018-05-24 00:17:32 +0800141
Masahiro Yamada144a3e02015-04-21 20:38:20 +0900142choice
143 prompt "Altera SOCFPGA board select"
Joe Hershbergerf0699602015-05-12 14:46:23 -0500144 optional
Masahiro Yamada144a3e02015-04-21 20:38:20 +0900145
Ley Foon Tan461d2982019-11-27 15:55:32 +0800146config TARGET_SOCFPGA_AGILEX_SOCDK
147 bool "Intel SOCFPGA SoCDK (Agilex)"
148 select TARGET_SOCFPGA_AGILEX
149
Jit Loon Lim977071e2024-03-12 22:01:03 +0800150config TARGET_SOCFPGA_AGILEX5_SOCDK
151 bool "Intel SOCFPGA SoCDK (Agilex5)"
152 select TARGET_SOCFPGA_AGILEX5
153
Wolfgang Grandegger7789aab22019-05-12 19:25:18 +0200154config TARGET_SOCFPGA_ARIES_MCVEVK
155 bool "Aries MCVEVK (Cyclone V)"
156 select TARGET_SOCFPGA_CYCLONE5
157
Ley Foon Tan5b7cea62017-04-26 02:44:48 +0800158config TARGET_SOCFPGA_ARRIA10_SOCDK
159 bool "Altera SOCFPGA SoCDK (Arria 10)"
160 select TARGET_SOCFPGA_ARRIA10
161
Holger Brunckddef8892020-02-19 19:55:14 +0100162config TARGET_SOCFPGA_ARRIA5_SECU1
163 bool "ABB SECU1 (Arria V)"
164 select TARGET_SOCFPGA_ARRIA5
165 select VENDOR_KM
166
Marek Vasut822e7952015-08-02 21:57:57 +0200167config TARGET_SOCFPGA_ARRIA5_SOCDK
168 bool "Altera SOCFPGA SoCDK (Arria V)"
169 select TARGET_SOCFPGA_ARRIA5
Masahiro Yamada144a3e02015-04-21 20:38:20 +0900170
Paweł Anikiel5ee903d2022-06-17 12:47:20 +0200171config TARGET_SOCFPGA_CHAMELEONV3
172 bool "Google Chameleon v3 (Arria 10)"
173 select TARGET_SOCFPGA_ARRIA10
174
Marek Vasut822e7952015-08-02 21:57:57 +0200175config TARGET_SOCFPGA_CYCLONE5_SOCDK
176 bool "Altera SOCFPGA SoCDK (Cyclone V)"
177 select TARGET_SOCFPGA_CYCLONE5
Masahiro Yamada144a3e02015-04-21 20:38:20 +0900178
Marek Vasutb06dad22018-02-24 23:34:00 +0100179config TARGET_SOCFPGA_DEVBOARDS_DBM_SOC1
180 bool "Devboards DBM-SoC1 (Cyclone V)"
181 select TARGET_SOCFPGA_CYCLONE5
182
Marek Vasut567356a2015-11-23 17:06:27 +0100183config TARGET_SOCFPGA_EBV_SOCRATES
184 bool "EBV SoCrates (Cyclone V)"
185 select TARGET_SOCFPGA_CYCLONE5
186
Pavel Machek9802e872016-06-07 12:37:23 +0200187config TARGET_SOCFPGA_IS1
188 bool "IS1 (Cyclone V)"
189 select TARGET_SOCFPGA_CYCLONE5
190
Marek Vasut13da18c2019-06-27 00:19:31 +0200191config TARGET_SOCFPGA_SOFTING_VINING_FPGA
192 bool "Softing VIN|ING FPGA (Cyclone V)"
Tom Rini22d567e2017-01-22 19:43:11 -0500193 select BOARD_LATE_INIT
Marek Vasutba2ade92015-12-01 18:09:52 +0100194 select TARGET_SOCFPGA_CYCLONE5
195
Marek Vasut2e717ec2016-06-08 02:57:05 +0200196config TARGET_SOCFPGA_SR1500
197 bool "SR1500 (Cyclone V)"
198 select TARGET_SOCFPGA_CYCLONE5
199
Ley Foon Tan9c407b52018-05-24 00:17:32 +0800200config TARGET_SOCFPGA_STRATIX10_SOCDK
201 bool "Intel SOCFPGA SoCDK (Stratix 10)"
202 select TARGET_SOCFPGA_STRATIX10
203
Dinh Nguyenc3364da2015-09-01 17:41:52 -0500204config TARGET_SOCFPGA_TERASIC_DE0_NANO
205 bool "Terasic DE0-Nano-Atlas (Cyclone V)"
206 select TARGET_SOCFPGA_CYCLONE5
207
Dalon Westergreen7a0fe0d2017-04-18 08:11:16 -0700208config TARGET_SOCFPGA_TERASIC_DE10_NANO
209 bool "Terasic DE10-Nano (Cyclone V)"
210 select TARGET_SOCFPGA_CYCLONE5
211
Humberto Navesa563e2e2022-05-22 21:54:57 -0400212config TARGET_SOCFPGA_TERASIC_DE10_STANDARD
213 bool "Terasic DE10-Standard (Cyclone V)"
214 select TARGET_SOCFPGA_CYCLONE5
215
Anatolij Gustschin705bf372016-11-14 16:07:10 +0100216config TARGET_SOCFPGA_TERASIC_DE1_SOC
217 bool "Terasic DE1-SoC (Cyclone V)"
218 select TARGET_SOCFPGA_CYCLONE5
219
Marek Vasutb415bad2015-06-21 17:28:53 +0200220config TARGET_SOCFPGA_TERASIC_SOCKIT
221 bool "Terasic SoCkit (Cyclone V)"
222 select TARGET_SOCFPGA_CYCLONE5
223
Masahiro Yamada144a3e02015-04-21 20:38:20 +0900224endchoice
225
226config SYS_BOARD
Jit Loon Lim977071e2024-03-12 22:01:03 +0800227 default "agilex5-socdk" if TARGET_SOCFPGA_AGILEX5_SOCDK
Ley Foon Tan461d2982019-11-27 15:55:32 +0800228 default "agilex-socdk" if TARGET_SOCFPGA_AGILEX_SOCDK
Marek Vasut3f4c5612015-08-10 21:24:53 +0200229 default "arria5-socdk" if TARGET_SOCFPGA_ARRIA5_SOCDK
Ley Foon Tan5b7cea62017-04-26 02:44:48 +0800230 default "arria10-socdk" if TARGET_SOCFPGA_ARRIA10_SOCDK
Paweł Anikiel5ee903d2022-06-17 12:47:20 +0200231 default "chameleonv3" if TARGET_SOCFPGA_CHAMELEONV3
Marek Vasut3f4c5612015-08-10 21:24:53 +0200232 default "cyclone5-socdk" if TARGET_SOCFPGA_CYCLONE5_SOCDK
Marek Vasutb06dad22018-02-24 23:34:00 +0100233 default "dbm-soc1" if TARGET_SOCFPGA_DEVBOARDS_DBM_SOC1
Dinh Nguyenc3364da2015-09-01 17:41:52 -0500234 default "de0-nano-soc" if TARGET_SOCFPGA_TERASIC_DE0_NANO
Anatolij Gustschin705bf372016-11-14 16:07:10 +0100235 default "de1-soc" if TARGET_SOCFPGA_TERASIC_DE1_SOC
Dalon Westergreen7a0fe0d2017-04-18 08:11:16 -0700236 default "de10-nano" if TARGET_SOCFPGA_TERASIC_DE10_NANO
Humberto Navesa563e2e2022-05-22 21:54:57 -0400237 default "de10-standard" if TARGET_SOCFPGA_TERASIC_DE10_STANDARD
Pavel Machek9802e872016-06-07 12:37:23 +0200238 default "is1" if TARGET_SOCFPGA_IS1
Wolfgang Grandegger7789aab22019-05-12 19:25:18 +0200239 default "mcvevk" if TARGET_SOCFPGA_ARIES_MCVEVK
Siew Chin Lim988bfe42021-08-10 11:26:42 +0800240 default "n5x-socdk" if TARGET_SOCFPGA_N5X_SOCDK
Holger Brunckddef8892020-02-19 19:55:14 +0100241 default "secu1" if TARGET_SOCFPGA_ARRIA5_SECU1
Marek Vasutb415bad2015-06-21 17:28:53 +0200242 default "sockit" if TARGET_SOCFPGA_TERASIC_SOCKIT
Marek Vasut567356a2015-11-23 17:06:27 +0100243 default "socrates" if TARGET_SOCFPGA_EBV_SOCRATES
Stefan Roesebf5ed2e2015-11-18 11:06:09 +0100244 default "sr1500" if TARGET_SOCFPGA_SR1500
Ley Foon Tan9c407b52018-05-24 00:17:32 +0800245 default "stratix10-socdk" if TARGET_SOCFPGA_STRATIX10_SOCDK
Marek Vasut13da18c2019-06-27 00:19:31 +0200246 default "vining_fpga" if TARGET_SOCFPGA_SOFTING_VINING_FPGA
Masahiro Yamada144a3e02015-04-21 20:38:20 +0900247
248config SYS_VENDOR
Jit Loon Lim977071e2024-03-12 22:01:03 +0800249 default "intel" if TARGET_SOCFPGA_AGILEX5_SOCDK
Ley Foon Tan461d2982019-11-27 15:55:32 +0800250 default "intel" if TARGET_SOCFPGA_AGILEX_SOCDK
Siew Chin Lim988bfe42021-08-10 11:26:42 +0800251 default "intel" if TARGET_SOCFPGA_N5X_SOCDK
Marek Vasut822e7952015-08-02 21:57:57 +0200252 default "altera" if TARGET_SOCFPGA_ARRIA5_SOCDK
Ley Foon Tan5b7cea62017-04-26 02:44:48 +0800253 default "altera" if TARGET_SOCFPGA_ARRIA10_SOCDK
Marek Vasut822e7952015-08-02 21:57:57 +0200254 default "altera" if TARGET_SOCFPGA_CYCLONE5_SOCDK
Ley Foon Tan9c407b52018-05-24 00:17:32 +0800255 default "altera" if TARGET_SOCFPGA_STRATIX10_SOCDK
Wolfgang Grandegger7789aab22019-05-12 19:25:18 +0200256 default "aries" if TARGET_SOCFPGA_ARIES_MCVEVK
Marek Vasutb06dad22018-02-24 23:34:00 +0100257 default "devboards" if TARGET_SOCFPGA_DEVBOARDS_DBM_SOC1
Marek Vasut567356a2015-11-23 17:06:27 +0100258 default "ebv" if TARGET_SOCFPGA_EBV_SOCRATES
Paweł Anikiel5ee903d2022-06-17 12:47:20 +0200259 default "google" if TARGET_SOCFPGA_CHAMELEONV3
Holger Brunckddef8892020-02-19 19:55:14 +0100260 default "keymile" if TARGET_SOCFPGA_ARRIA5_SECU1
Marek Vasut13da18c2019-06-27 00:19:31 +0200261 default "softing" if TARGET_SOCFPGA_SOFTING_VINING_FPGA
Dinh Nguyenc3364da2015-09-01 17:41:52 -0500262 default "terasic" if TARGET_SOCFPGA_TERASIC_DE0_NANO
Anatolij Gustschin705bf372016-11-14 16:07:10 +0100263 default "terasic" if TARGET_SOCFPGA_TERASIC_DE1_SOC
Dalon Westergreen7a0fe0d2017-04-18 08:11:16 -0700264 default "terasic" if TARGET_SOCFPGA_TERASIC_DE10_NANO
Humberto Navesa563e2e2022-05-22 21:54:57 -0400265 default "terasic" if TARGET_SOCFPGA_TERASIC_DE10_STANDARD
Marek Vasutb415bad2015-06-21 17:28:53 +0200266 default "terasic" if TARGET_SOCFPGA_TERASIC_SOCKIT
Masahiro Yamada144a3e02015-04-21 20:38:20 +0900267
268config SYS_SOC
269 default "socfpga"
270
271config SYS_CONFIG_NAME
Jit Loon Lim977071e2024-03-12 22:01:03 +0800272 default "socfpga_agilex5_socdk" if TARGET_SOCFPGA_AGILEX5_SOCDK
Ley Foon Tan461d2982019-11-27 15:55:32 +0800273 default "socfpga_agilex_socdk" if TARGET_SOCFPGA_AGILEX_SOCDK
Holger Brunckddef8892020-02-19 19:55:14 +0100274 default "socfpga_arria5_secu1" if TARGET_SOCFPGA_ARRIA5_SECU1
Dinh Nguyen16f6ffd2015-09-22 17:01:32 -0500275 default "socfpga_arria5_socdk" if TARGET_SOCFPGA_ARRIA5_SOCDK
Ley Foon Tan5b7cea62017-04-26 02:44:48 +0800276 default "socfpga_arria10_socdk" if TARGET_SOCFPGA_ARRIA10_SOCDK
Paweł Anikiel5ee903d2022-06-17 12:47:20 +0200277 default "socfpga_chameleonv3" if TARGET_SOCFPGA_CHAMELEONV3
Dinh Nguyen16f6ffd2015-09-22 17:01:32 -0500278 default "socfpga_cyclone5_socdk" if TARGET_SOCFPGA_CYCLONE5_SOCDK
Marek Vasutb06dad22018-02-24 23:34:00 +0100279 default "socfpga_dbm_soc1" if TARGET_SOCFPGA_DEVBOARDS_DBM_SOC1
Dinh Nguyenc3364da2015-09-01 17:41:52 -0500280 default "socfpga_de0_nano_soc" if TARGET_SOCFPGA_TERASIC_DE0_NANO
Anatolij Gustschin705bf372016-11-14 16:07:10 +0100281 default "socfpga_de1_soc" if TARGET_SOCFPGA_TERASIC_DE1_SOC
Dalon Westergreen7a0fe0d2017-04-18 08:11:16 -0700282 default "socfpga_de10_nano" if TARGET_SOCFPGA_TERASIC_DE10_NANO
Humberto Navesa563e2e2022-05-22 21:54:57 -0400283 default "socfpga_de10_standard" if TARGET_SOCFPGA_TERASIC_DE10_STANDARD
Pavel Machek9802e872016-06-07 12:37:23 +0200284 default "socfpga_is1" if TARGET_SOCFPGA_IS1
Wolfgang Grandegger7789aab22019-05-12 19:25:18 +0200285 default "socfpga_mcvevk" if TARGET_SOCFPGA_ARIES_MCVEVK
Siew Chin Lim988bfe42021-08-10 11:26:42 +0800286 default "socfpga_n5x_socdk" if TARGET_SOCFPGA_N5X_SOCDK
Marek Vasutb415bad2015-06-21 17:28:53 +0200287 default "socfpga_sockit" if TARGET_SOCFPGA_TERASIC_SOCKIT
Marek Vasut567356a2015-11-23 17:06:27 +0100288 default "socfpga_socrates" if TARGET_SOCFPGA_EBV_SOCRATES
Stefan Roesebf5ed2e2015-11-18 11:06:09 +0100289 default "socfpga_sr1500" if TARGET_SOCFPGA_SR1500
Ley Foon Tan9c407b52018-05-24 00:17:32 +0800290 default "socfpga_stratix10_socdk" if TARGET_SOCFPGA_STRATIX10_SOCDK
Marek Vasut13da18c2019-06-27 00:19:31 +0200291 default "socfpga_vining_fpga" if TARGET_SOCFPGA_SOFTING_VINING_FPGA
Masahiro Yamada144a3e02015-04-21 20:38:20 +0900292
Masahiro Yamada144a3e02015-04-21 20:38:20 +0900293endif