Hi Simon, On Thu, Dec 3, 2015 at 5:05 AM, Simon Glass <s...@chromium.org> wrote: > Hi Bin, > > On 2 December 2015 at 01:59, Bin Meng <bmeng...@gmail.com> wrote: >> Since VPD/UPD may not exist on every FSP, move the codes that >> verifies VPD/UPD to chipset-specific update_fsp_configs(). >> This also updates update_fsp_configs() signature to accpect >> FSP runtime buffer pointer as its second parameter. >> >> Signed-off-by: Bin Meng <bmeng...@gmail.com> >> --- >> >> arch/x86/cpu/baytrail/fsp_configs.c | 24 +++++++++++++++++++++++- >> arch/x86/cpu/queensbay/fsp_configs.c | 26 +++++++++++++++++++++++++- >> arch/x86/include/asm/fsp/fsp_support.h | 4 +++- >> arch/x86/lib/fsp/fsp_support.c | 24 +----------------------- >> 4 files changed, 52 insertions(+), 26 deletions(-) >> >> diff --git a/arch/x86/cpu/baytrail/fsp_configs.c >> b/arch/x86/cpu/baytrail/fsp_configs.c >> index 9810921..3a03392 100644 >> --- a/arch/x86/cpu/baytrail/fsp_configs.c >> +++ b/arch/x86/cpu/baytrail/fsp_configs.c >> @@ -125,13 +125,35 @@ const struct pch_azalia_config azalia_config = { >> * If the device tree does not specify an integer setting, use the default >> * provided in Intel's Baytrail_FSP_Gold4.tgz release FSP/BayleyBayFsp.bsf >> file. >> */ >> -void update_fsp_configs(struct fsp_config_data *config) >> +void update_fsp_configs(struct fsp_config_data *config, >> + struct fspinit_rtbuf *rt_buf) >> { >> + struct fsp_header *fsp_hdr = config->fsp_hdr; >> + struct vpd_region *fsp_vpd; >> struct upd_region *fsp_upd = &config->fsp_upd; >> struct memory_down_data *mem; >> const void *blob = gd->fdt_blob; >> int node; >> >> + /* Initialize runtime buffer for fsp_init() */ >> + rt_buf->common.stack_top = config->stack_top - 32; >> + rt_buf->common.boot_mode = config->boot_mode; >> + rt_buf->common.upd_data = &config->fsp_upd; >> + >> + /* Get VPD region start */ >> + fsp_vpd = (struct vpd_region *)(fsp_hdr->img_base + >> + fsp_hdr->cfg_region_off); >> + >> + /* Verify the VPD data region is valid */ >> + assert(fsp_vpd->sign == VPD_IMAGE_ID); >> + >> + /* Copy default data from Flash */ >> + memcpy(fsp_upd, (void *)(fsp_hdr->img_base + fsp_vpd->upd_offset), >> + sizeof(struct upd_region)); >> + >> + /* Verify the UPD data region is valid */ >> + assert(fsp_upd->terminator == UPD_TERMINATOR); >> + > > Maybe rather than duplicating this code, it can go in a common > function that is called for these two boards? >
Yes, we can create a common function to do these, but that requires we create a Kconfig option something like CONFIG_FSP_USE_UPD or CONFIG_FSP_NO_UPD to wrap these codes in arch/x86/lib/fsp_support.c. I don't want to create a Kconfig option so chose to duplicate the codes. What do you think? [snip] Regards, Bin _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot