Hi Bin, On Wed, 2 Oct 2019 at 08:08, Bin Meng <bmeng...@gmail.com> wrote: > > On Wed, Sep 25, 2019 at 10:13 PM Simon Glass <s...@chromium.org> wrote: > > > > Most x86 CPUs use a mechanism where the SPI flash is mapped into the very > > top of 32-bit address space, so that it can be executed in place and read > > simply by copying from memory. For an 8MB ROM the mapping starts at > > 0xff800000. > > > > However some recent Intel CPUs do not use a simple 1:1 memory map. Instead > > the map starts at a different address and not all of the SPI flash is > > accessible through the map. This 'Fast SPI' feature requires that U-Boot > > check the location of the map. It is also possible (optionally) to read > > from the SPI flash using a driver. > > > > Add support for booting from Fast SPI. The memory-mapped version is used > > by both TPL and SPL on apollolake. > > > > Signed-off-by: Simon Glass <s...@chromium.org> > > --- > > > > Changes in v2: > > - Rename the fast SPI headers > > > > arch/x86/cpu/intel_common/Makefile | 1 + > > arch/x86/cpu/intel_common/fast_spi.c | 48 ++++++++++++++++++++++++++++ > > arch/x86/include/asm/spl.h | 1 + > > 3 files changed, 50 insertions(+) > > create mode 100644 arch/x86/cpu/intel_common/fast_spi.c > > > > diff --git a/arch/x86/cpu/intel_common/Makefile > > b/arch/x86/cpu/intel_common/Makefile > > index 07f27c29ec7..2de567dd9fe 100644 > > --- a/arch/x86/cpu/intel_common/Makefile > > +++ b/arch/x86/cpu/intel_common/Makefile > > @@ -9,6 +9,7 @@ obj-$(CONFIG_$(SPL_TPL_)X86_32BIT_INIT) += report_platform.o > > obj-$(CONFIG_$(SPL_TPL_)X86_32BIT_INIT) += mrc.o > > endif > > obj-y += cpu.o > > +obj-$(CONFIG_SPI_FLASH_INTEL_FAST) += fast_spi.o > > obj-y += lpc.o > > ifndef CONFIG_TARGET_EFI_APP > > obj-$(CONFIG_$(SPL_TPL_)X86_32BIT_INIT) += microcode.o > > diff --git a/arch/x86/cpu/intel_common/fast_spi.c > > b/arch/x86/cpu/intel_common/fast_spi.c > > new file mode 100644 > > index 00000000000..a7334ecf1a3 > > --- /dev/null > > +++ b/arch/x86/cpu/intel_common/fast_spi.c > > @@ -0,0 +1,48 @@ > > +// SPDX-License-Identifier: GPL-2.0 > > +/* > > + * Copyright 2019 Google LLC > > + */ > > + > > +#include <common.h> > > +#include <asm/io.h> > > +#include <asm/pci.h> > > +#include <asm/arch/fast_spi.h> > > +#include <asm/arch/iomap.h> > > + > > +/* > > + * Returns bios_start and fills in size of the BIOS region. > > + */ > > +ulong fast_spi_get_bios_region(struct fast_spi_regs *regs, size_t > > *bios_size) > > I suspect we need a public header file for these 2 APIs?
Yes but I've added it in a separate patch since it is apollolake-specific. But based on your other comments I wonder if I can fix that and use the generic driver. Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot