[U-Boot] [PATCH 59/69] x86: broadwell: Add support for SDRAM setup
Simon Glass
sjg at chromium.org
Sat Mar 12 06:04:40 CET 2016
Hi Bin,
On 11 March 2016 at 01:30, Bin Meng <bmeng.cn at gmail.com> wrote:
> Hi Simon,
>
> On Mon, Mar 7, 2016 at 10:28 AM, Simon Glass <sjg at chromium.org> wrote:
>> Broadwell uses a binary blob called the memory reference code (MRC) to start
>> up its SDRAM. This is similar to ivybridge so we can mostly use common code
>> for running this blob.
>>
>> Signed-off-by: Simon Glass <sjg at chromium.org>
>> ---
>>
>> arch/x86/cpu/broadwell/Makefile | 1 +
>> arch/x86/cpu/broadwell/sdram.c | 307 +++++++++++++++++++++++++
>> arch/x86/include/asm/arch-broadwell/pei_data.h | 177 ++++++++++++++
>> arch/x86/include/asm/global_data.h | 24 ++
>> 4 files changed, 509 insertions(+)
>> create mode 100644 arch/x86/cpu/broadwell/sdram.c
>> create mode 100644 arch/x86/include/asm/arch-broadwell/pei_data.h
>>
>> diff --git a/arch/x86/cpu/broadwell/Makefile b/arch/x86/cpu/broadwell/Makefile
>> index 5a62afa..012798f 100644
>> --- a/arch/x86/cpu/broadwell/Makefile
>> +++ b/arch/x86/cpu/broadwell/Makefile
>> @@ -13,3 +13,4 @@ obj-y += pinctrl_broadwell.o
>> obj-y += power_state.o
>> obj-y += refcode.o
>> obj-y += sata.o
>> +obj-y += sdram.o
>> diff --git a/arch/x86/cpu/broadwell/sdram.c b/arch/x86/cpu/broadwell/sdram.c
>> new file mode 100644
>> index 0000000..caf6ef6
>> --- /dev/null
>> +++ b/arch/x86/cpu/broadwell/sdram.c
>> @@ -0,0 +1,307 @@
>> +/*
>> + * Copyright (c) 2016 Google, Inc
>> + *
>> + * From coreboot src/soc/intel/broadwell/romstage/raminit.c
>> + *
>> + * SPDX-License-Identifier: GPL-2.0
>
> nits: GPL-2.0+?
>
>> + */
>> +
>> +#include <common.h>
>> +#include <dm.h>
>> +#include <pci.h>
>> +#include <syscon.h>
>> +#include <asm/cpu.h>
>> +#include <asm/io.h>
>> +#include <asm/lpc_common.h>
>> +#include <asm/mrccache.h>
>> +#include <asm/mtrr.h>
>> +#include <asm/pci.h>
>> +#include <asm/sdram_common.h>
>> +#include <asm/arch/iomap.h>
>> +#include <asm/arch/me.h>
>> +#include <asm/arch/pch.h>
>> +#include <asm/arch/pei_data.h>
>> +#include <asm/arch/pm.h>
[snip]
>> diff --git a/arch/x86/include/asm/arch-broadwell/pei_data.h b/arch/x86/include/asm/arch-broadwell/pei_data.h
>> new file mode 100644
>> index 0000000..b2cc8b8
>> --- /dev/null
>> +++ b/arch/x86/include/asm/arch-broadwell/pei_data.h
>> @@ -0,0 +1,177 @@
>> +/*
>> + * From Coreboot soc/intel/broadwell/include/soc/pei_data.h
>> + *
>> + * Copyright (C) 2014 Google Inc.
>> + *
>> + * SPDX-License-Identifier: BSD-3-Clause
>> + */
>> +
>> +#ifndef ASM_ARCH_PEI_DATA_H
>> +#define ASM_ARCH_PEI_DATA_H
>> +
>> +#include <linux/linkage.h>
>> +
>> +#define PEI_VERSION 22
>> +
[snip]
>>
>> +struct dimm_info {
>> + uint32_t dimm_size;
>> + uint16_t ddr_type;
>> + uint16_t ddr_frequency;
>> + uint8_t rank_per_dimm;
>> + uint8_t channel_num;
>> + uint8_t dimm_num;
>> + uint8_t bank_locator;
>> + /* The 5th byte is '\0' for the end of string */
>> + uint8_t serial[5];
>> + /* The 19th byte is '\0' for the end of string */
>> + uint8_t module_part_number[19];
>> + uint16_t mod_id;
>> + uint8_t mod_type;
>> + uint8_t bus_width;
>> +} __packed;
>> +
>> +struct pei_memory_info {
>> + uint8_t dimm_cnt;
>> + /* Maximum num of dimm is 8 */
>> + struct dimm_info dimm[8];
>> +} __packed;
>
> I am thinking whether we can put these platform specific structures to
> somewhere else? It looks the broadwell is using different memory_info
> from ivybridge.
Where should they go? This file is for broadwell - ivybridge could
have its own if we need it.
Regards,
Simon
More information about the U-Boot
mailing list