Angel Pons | 7c1d70e | 2020-04-04 18:51:19 +0200 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
Varadarajan Narayanan | a6935c2 | 2016-03-02 16:57:10 +0530 | [diff] [blame] | 2 | |
| 3 | #include <cbmem.h> |
| 4 | #include <soc/soc_services.h> |
| 5 | |
Varadarajan Narayanan | 8ce14a7 | 2016-03-29 12:30:38 +0530 | [diff] [blame] | 6 | static int cbmem_backing_store_ready; |
| 7 | |
| 8 | void ipq_cbmem_backing_store_ready(void) |
| 9 | { |
| 10 | cbmem_backing_store_ready = 1; |
| 11 | } |
| 12 | |
Arthur Heymans | 340e4b8 | 2019-10-23 17:25:58 +0200 | [diff] [blame] | 13 | void *cbmem_top_chipset(void) |
Varadarajan Narayanan | a6935c2 | 2016-03-02 16:57:10 +0530 | [diff] [blame] | 14 | { |
Varadarajan Narayanan | 8ce14a7 | 2016-03-29 12:30:38 +0530 | [diff] [blame] | 15 | /* |
| 16 | * In romstage, make sure that cbmem backing store is ready before |
| 17 | * returning pointer to cbmem top. Otherwise, it could lead to issues |
| 18 | * with components that utilize cbmem in romstage (e.g. vboot_locator |
| 19 | * for loading ipq blobs before DRAM is initialized). |
| 20 | */ |
Arthur Heymans | d3c58fd | 2019-10-27 07:13:55 +0100 | [diff] [blame] | 21 | if (cbmem_backing_store_ready == 0) |
Varadarajan Narayanan | 8ce14a7 | 2016-03-29 12:30:38 +0530 | [diff] [blame] | 22 | return NULL; |
| 23 | |
Varadarajan Narayanan | a6935c2 | 2016-03-02 16:57:10 +0530 | [diff] [blame] | 24 | return _memlayout_cbmem_top; |
| 25 | } |