soc/amd/stoneyridge: Add UMA settings to devicetree
Add three settings for the UMA configuration to correspond with definitions in AGESA.h. * UMA off, Auto, or size specified * Size (if specified above) * Legacy vs. non-legacy (if Auto) BUG=b:64927639 Change-Id: I38b6603f365fdc1f1f615794365476f749e58be7 Signed-off-by: Marshall Dawson <marshalldawson3rd@gmail.com> Signed-off-by: Richard Spiegel <richard.spiegel@silverbackltd.com> Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: https://review.coreboot.org/21334 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Martin Roth <martinroth@google.com>
This commit is contained in:
parent
bf131b2616
commit
36dbf1d74a
|
@ -16,7 +16,9 @@
|
||||||
#ifndef __STONEYRIDGE_CHIP_H__
|
#ifndef __STONEYRIDGE_CHIP_H__
|
||||||
#define __STONEYRIDGE_CHIP_H__
|
#define __STONEYRIDGE_CHIP_H__
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <commonlib/helpers.h>
|
||||||
|
|
||||||
#define MAX_NODES 1
|
#define MAX_NODES 1
|
||||||
#define MAX_DRAM_CH 1
|
#define MAX_DRAM_CH 1
|
||||||
|
@ -28,6 +30,20 @@ struct soc_amd_stoneyridge_config {
|
||||||
DRAM_CONTENTS_KEEP,
|
DRAM_CONTENTS_KEEP,
|
||||||
DRAM_CONTENTS_CLEAR
|
DRAM_CONTENTS_CLEAR
|
||||||
} dram_clear_on_reset;
|
} dram_clear_on_reset;
|
||||||
|
|
||||||
|
enum {
|
||||||
|
/* Do not enable UMA in the system. */
|
||||||
|
UMAMODE_NONE,
|
||||||
|
/* Enable UMA with a specific size. */
|
||||||
|
UMAMODE_SPECIFIED_SIZE,
|
||||||
|
/* Let AGESA determine the proper size. Non-legacy requires
|
||||||
|
* the resolution to be specified PLATFORM_CONFIGURATION */
|
||||||
|
UMAMODE_AUTO_LEGACY,
|
||||||
|
UMAMODE_AUTO_NON_LEGACY,
|
||||||
|
} uma_mode;
|
||||||
|
|
||||||
|
/* Used if UMAMODE_SPECIFIED_SIZE is set. */
|
||||||
|
size_t uma_size;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct soc_amd_stoneyridge_config config_t;
|
typedef struct soc_amd_stoneyridge_config config_t;
|
||||||
|
|
|
@ -119,9 +119,32 @@ void SetMemParams(AMD_POST_PARAMS *PostParams)
|
||||||
|
|
||||||
if (!dev || !dev->chip_info) {
|
if (!dev || !dev->chip_info) {
|
||||||
printk(BIOS_ERR, "ERROR: Could not find SoC devicetree config\n");
|
printk(BIOS_ERR, "ERROR: Could not find SoC devicetree config\n");
|
||||||
|
/* In case of a BIOS error, only attempt to set UMA. */
|
||||||
|
PostParams->MemConfig.UmaMode = IS_ENABLED(CONFIG_GFXUMA) ?
|
||||||
|
UMA_AUTO : UMA_NONE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
cfg = dev->chip_info;
|
cfg = dev->chip_info;
|
||||||
|
|
||||||
PostParams->MemConfig.EnableMemClr = cfg->dram_clear_on_reset;
|
PostParams->MemConfig.EnableMemClr = cfg->dram_clear_on_reset;
|
||||||
|
|
||||||
|
switch (cfg->uma_mode) {
|
||||||
|
case UMAMODE_NONE:
|
||||||
|
PostParams->MemConfig.UmaMode = UMA_NONE;
|
||||||
|
break;
|
||||||
|
case UMAMODE_SPECIFIED_SIZE:
|
||||||
|
PostParams->MemConfig.UmaMode = UMA_SPECIFIED;
|
||||||
|
/* 64 KiB blocks. */
|
||||||
|
PostParams->MemConfig.UmaSize = cfg->uma_size / (64 * KiB);
|
||||||
|
break;
|
||||||
|
case UMAMODE_AUTO_LEGACY:
|
||||||
|
PostParams->MemConfig.UmaMode = UMA_AUTO;
|
||||||
|
PostParams->MemConfig.UmaVersion = UMA_LEGACY;
|
||||||
|
break;
|
||||||
|
case UMAMODE_AUTO_NON_LEGACY:
|
||||||
|
PostParams->MemConfig.UmaMode = UMA_AUTO;
|
||||||
|
PostParams->MemConfig.UmaVersion = UMA_NON_LEGACY;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue