[U-Boot] [PATCH 18/69] x86: Create a common header for Intel register access
Bin Meng
bmeng.cn at gmail.com
Fri Mar 11 06:05:38 CET 2016
Hi Simon,
On Mon, Mar 7, 2016 at 10:28 AM, Simon Glass <sjg at chromium.org> wrote:
> There are several blocks of registers that are accessed from all over the
> code on Intel CPUs. These don't currently have their own driver and it is
> not clear whether having a driver makes sense.
>
> An example is the Memory Controller Hub (MCH). We map it to a known location
> on some Intel chips (mostly those without FSP - Firmware Support Package).
>
> Add a new header file for these registers, and move MCH into it.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> arch/x86/cpu/ivybridge/cpu.c | 1 +
> arch/x86/cpu/ivybridge/gma.c | 1 +
> arch/x86/cpu/ivybridge/northbridge.c | 5 +++--
> arch/x86/cpu/ivybridge/sdram.c | 3 ++-
> arch/x86/include/asm/arch-ivybridge/sandybridge.h | 3 ---
> arch/x86/include/asm/intel_regs.h | 15 +++++++++++++++
> 6 files changed, 22 insertions(+), 6 deletions(-)
> create mode 100644 arch/x86/include/asm/intel_regs.h
>
> diff --git a/arch/x86/cpu/ivybridge/cpu.c b/arch/x86/cpu/ivybridge/cpu.c
> index c54e800..f847a2f 100644
> --- a/arch/x86/cpu/ivybridge/cpu.c
> +++ b/arch/x86/cpu/ivybridge/cpu.c
> @@ -17,6 +17,7 @@
> #include <fdtdec.h>
> #include <pch.h>
> #include <asm/cpu.h>
> +#include <asm/intel_regs.h>
> #include <asm/io.h>
> #include <asm/lapic.h>
> #include <asm/microcode.h>
> diff --git a/arch/x86/cpu/ivybridge/gma.c b/arch/x86/cpu/ivybridge/gma.c
> index 3b6291e..87e06e7 100644
> --- a/arch/x86/cpu/ivybridge/gma.c
> +++ b/arch/x86/cpu/ivybridge/gma.c
> @@ -12,6 +12,7 @@
> #include <errno.h>
> #include <fdtdec.h>
> #include <pci_rom.h>
> +#include <asm/intel_regs.h>
> #include <asm/io.h>
> #include <asm/mtrr.h>
> #include <asm/pci.h>
> diff --git a/arch/x86/cpu/ivybridge/northbridge.c b/arch/x86/cpu/ivybridge/northbridge.c
> index a066607..f7e0bc3 100644
> --- a/arch/x86/cpu/ivybridge/northbridge.c
> +++ b/arch/x86/cpu/ivybridge/northbridge.c
> @@ -12,6 +12,7 @@
> #include <asm/msr.h>
> #include <asm/acpi.h>
> #include <asm/cpu.h>
> +#include <asm/intel_regs.h>
> #include <asm/io.h>
> #include <asm/pci.h>
> #include <asm/processor.h>
> @@ -167,8 +168,8 @@ static void sandybridge_setup_northbridge_bars(struct udevice *dev)
> debug("Setting up static registers\n");
> dm_pci_write_config32(dev, EPBAR, DEFAULT_EPBAR | 1);
> dm_pci_write_config32(dev, EPBAR + 4, (0LL + DEFAULT_EPBAR) >> 32);
> - dm_pci_write_config32(dev, MCHBAR, DEFAULT_MCHBAR | 1);
> - dm_pci_write_config32(dev, MCHBAR + 4, (0LL + DEFAULT_MCHBAR) >> 32);
> + dm_pci_write_config32(dev, MCHBAR, MCH_BASE_ADDRESS | 1);
> + dm_pci_write_config32(dev, MCHBAR + 4, (0LL + MCH_BASE_ADDRESS) >> 32);
> /* 64MB - busses 0-63 */
> dm_pci_write_config32(dev, PCIEXBAR, DEFAULT_PCIEXBAR | 5);
> dm_pci_write_config32(dev, PCIEXBAR + 4,
> diff --git a/arch/x86/cpu/ivybridge/sdram.c b/arch/x86/cpu/ivybridge/sdram.c
> index e23c422..6f45071 100644
> --- a/arch/x86/cpu/ivybridge/sdram.c
> +++ b/arch/x86/cpu/ivybridge/sdram.c
> @@ -23,6 +23,7 @@
> #include <asm/processor.h>
> #include <asm/gpio.h>
> #include <asm/global_data.h>
> +#include <asm/intel_regs.h>
> #include <asm/mrccache.h>
> #include <asm/mtrr.h>
> #include <asm/pci.h>
> @@ -682,7 +683,7 @@ int dram_init(void)
> {
> struct pei_data pei_data __aligned(8) = {
> .pei_version = PEI_VERSION,
> - .mchbar = DEFAULT_MCHBAR,
> + .mchbar = MCH_BASE_ADDRESS,
> .dmibar = DEFAULT_DMIBAR,
> .epbar = DEFAULT_EPBAR,
> .pciexbar = CONFIG_PCIE_ECAM_BASE,
> diff --git a/arch/x86/include/asm/arch-ivybridge/sandybridge.h b/arch/x86/include/asm/arch-ivybridge/sandybridge.h
> index d137d67..59b05cc 100644
> --- a/arch/x86/include/asm/arch-ivybridge/sandybridge.h
> +++ b/arch/x86/include/asm/arch-ivybridge/sandybridge.h
> @@ -38,7 +38,6 @@
> #define IED_SIZE 0x400000
>
> /* Northbridge BARs */
> -#define DEFAULT_MCHBAR 0xfed10000 /* 16 KB */
> #define DEFAULT_DMIBAR 0xfed18000 /* 4 KB */
> #define DEFAULT_EPBAR 0xfed19000 /* 4 KB */
> #define DEFAULT_RCBABASE 0xfed1c000
> @@ -97,8 +96,6 @@
> /*
> * MCHBAR
> */
> -#define MCHBAR_REG(reg) (DEFAULT_MCHBAR + (reg))
> -
> #define SSKPD 0x5d14 /* 16bit (scratchpad) */
> #define BIOS_RESET_CPL 0x5da8 /* 8bit */
>
> diff --git a/arch/x86/include/asm/intel_regs.h b/arch/x86/include/asm/intel_regs.h
> new file mode 100644
> index 0000000..61e0ec2
> --- /dev/null
> +++ b/arch/x86/include/asm/intel_regs.h
> @@ -0,0 +1,15 @@
> +/*
> + * Copyright (c) 2016 Google, Inc
> + *
> + * SPDX-License-Identifier: GPL-2.0
nits: GPL-2.0+?
> + */
> +
> +#ifndef __asm_intel_regs_h
> +#define __asm_intel_regs_h
nits: all capital letters
> +
> +/* Access the memory-controller hub */
> +#define MCH_BASE_ADDRESS 0xfed10000
> +#define MCH_BASE_SIZE 0x8000
> +#define MCHBAR_REG(reg) (MCH_BASE_ADDRESS + (reg))
> +
> +#endif
> --
Reviewed-by: Bin Meng <bmeng.cn at gmail.com>
Regards,
Bin
More information about the U-Boot
mailing list