intel/quark: Fix COMMONLIB_STORAGE in CAR
The allocation is not required before romstage, so it can be just another CAR_GLOBAL instead of polluting the linker script. Change-Id: I0738a655f6cc924fbed92ea630f85406e3f58c0b Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/31191 Reviewed-by: Nico Huber <nico.h@gmx.de> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
cc68c01bec
commit
f30123b739
|
@ -61,11 +61,6 @@
|
||||||
* to reside in the migrated area (between _car_relocatable_data_start
|
* to reside in the migrated area (between _car_relocatable_data_start
|
||||||
* and _car_relocatable_data_end). */
|
* and _car_relocatable_data_end). */
|
||||||
TIMESTAMP(., 0x200)
|
TIMESTAMP(., 0x200)
|
||||||
#if IS_ENABLED(CONFIG_COMMONLIB_STORAGE)
|
|
||||||
_car_drivers_storage_start = .;
|
|
||||||
. += 256;
|
|
||||||
_car_drivers_storage_end = .;
|
|
||||||
#endif
|
|
||||||
_car_ehci_dbg_info_start = .;
|
_car_ehci_dbg_info_start = .;
|
||||||
/* Reserve sizeof(struct ehci_dbg_info). */
|
/* Reserve sizeof(struct ehci_dbg_info). */
|
||||||
. += 80;
|
. += 80;
|
||||||
|
|
|
@ -33,8 +33,8 @@ uint8_t log_index CAR_GLOBAL;
|
||||||
int log_full CAR_GLOBAL;
|
int log_full CAR_GLOBAL;
|
||||||
long log_start_time CAR_GLOBAL;
|
long log_start_time CAR_GLOBAL;
|
||||||
#endif
|
#endif
|
||||||
extern uint8_t _car_drivers_storage_start;
|
|
||||||
extern uint8_t _car_drivers_storage_end;
|
static uint8_t drivers_storage[256] CAR_GLOBAL;
|
||||||
|
|
||||||
#define STORAGE_DEBUG BIOS_DEBUG
|
#define STORAGE_DEBUG BIOS_DEBUG
|
||||||
#define LOG_DEBUG (IS_ENABLED(CONFIG_STORAGE_LOG) ? STORAGE_DEBUG : BIOS_NEVER)
|
#define LOG_DEBUG (IS_ENABLED(CONFIG_STORAGE_LOG) ? STORAGE_DEBUG : BIOS_NEVER)
|
||||||
|
@ -169,16 +169,15 @@ void storage_test(uint32_t bar, int full_initialization)
|
||||||
unsigned int previous_partition;
|
unsigned int previous_partition;
|
||||||
struct sdhci_ctrlr *sdhci_ctrlr;
|
struct sdhci_ctrlr *sdhci_ctrlr;
|
||||||
|
|
||||||
|
ASSERT(sizeof(struct sdhci_ctrlr) <= sizeof(drivers_storage));
|
||||||
|
|
||||||
/* Get the structure addresses */
|
/* Get the structure addresses */
|
||||||
media = NULL;
|
media = NULL;
|
||||||
if (ENV_ROMSTAGE)
|
if (ENV_ROMSTAGE)
|
||||||
media = car_get_var_ptr(&_car_drivers_storage_start);
|
media = car_get_var_ptr(drivers_storage);
|
||||||
else
|
else
|
||||||
media = cbmem_find(CBMEM_ID_STORAGE_DATA);
|
media = cbmem_find(CBMEM_ID_STORAGE_DATA);
|
||||||
sdhci_ctrlr = (void *)(((uintptr_t)(media + 1) + 0x7) & ~7);
|
sdhci_ctrlr = (void *)(((uintptr_t)(media + 1) + 0x7) & ~7);
|
||||||
if (ENV_ROMSTAGE)
|
|
||||||
ASSERT((struct sdhci_ctrlr *)&_car_drivers_storage_end
|
|
||||||
>= (sdhci_ctrlr + 1));
|
|
||||||
media->ctrlr = (struct sd_mmc_ctrlr *)sdhci_ctrlr;
|
media->ctrlr = (struct sd_mmc_ctrlr *)sdhci_ctrlr;
|
||||||
sdhci_ctrlr->ioaddr = (void *)bar;
|
sdhci_ctrlr->ioaddr = (void *)bar;
|
||||||
|
|
||||||
|
@ -247,19 +246,15 @@ static void copy_storage_structures(int is_recovery)
|
||||||
{
|
{
|
||||||
struct storage_media *media;
|
struct storage_media *media;
|
||||||
struct sdhci_ctrlr *sdhci_ctrlr;
|
struct sdhci_ctrlr *sdhci_ctrlr;
|
||||||
size_t size;
|
size_t size = sizeof(drivers_storage);
|
||||||
|
|
||||||
/* Locate the data structures in CBMEM */
|
/* Locate the data structures in CBMEM */
|
||||||
size = &_car_drivers_storage_end - &_car_drivers_storage_start;
|
|
||||||
ASSERT(size == 256);
|
|
||||||
media = cbmem_add(CBMEM_ID_STORAGE_DATA, size);
|
media = cbmem_add(CBMEM_ID_STORAGE_DATA, size);
|
||||||
ASSERT(media != NULL);
|
ASSERT(media != NULL);
|
||||||
sdhci_ctrlr = (void *)(((uintptr_t)(media + 1) + 0x7) & ~7);
|
sdhci_ctrlr = (void *)(((uintptr_t)(media + 1) + 0x7) & ~7);
|
||||||
ASSERT((sdhci_ctrlr + 1)
|
|
||||||
<= (struct sdhci_ctrlr *)&_car_drivers_storage_end);
|
|
||||||
|
|
||||||
/* Migrate the data into CBMEM */
|
/* Migrate the data into CBMEM */
|
||||||
memcpy(media, &_car_drivers_storage_start, size);
|
memcpy(media, car_get_var_ptr(drivers_storage), size);
|
||||||
media->ctrlr = &sdhci_ctrlr->sd_mmc_ctrlr;
|
media->ctrlr = &sdhci_ctrlr->sd_mmc_ctrlr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue