diff options
author | Xiang Wang <wxjstz@126.com> | 2019-05-29 15:39:48 +0800 |
---|---|---|
committer | Patrick Rudolph <siro@das-labor.org> | 2019-08-12 08:35:17 +0000 |
commit | f4e158337683640220e3662fd6ca135bd3bad31b (patch) | |
tree | ecf48ac9a68ffe399fd64b40986cc53754470651 /src/mainboard/sifive/hifive-unleashed | |
parent | 8adaffcbed6372970f34b85177bd42bb508d03e2 (diff) |
soc/sifive/fu540: add code for spi and map flash to memory spaces
SiFive's ZSBL has initialized flash, but only 16MB of space is available.
1. add code for spi
2. add code to map flash to memory spaces
Change-Id: I106688c65ac7dd70be7479dc4691797b700682d9
Signed-off-by: Xiang Wang <merle@hardenedlinux.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/33055
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Patrick Rudolph <siro@das-labor.org>
Diffstat (limited to 'src/mainboard/sifive/hifive-unleashed')
-rw-r--r-- | src/mainboard/sifive/hifive-unleashed/Makefile.inc | 3 | ||||
-rw-r--r-- | src/mainboard/sifive/hifive-unleashed/media.c | 49 |
2 files changed, 52 insertions, 0 deletions
diff --git a/src/mainboard/sifive/hifive-unleashed/Makefile.inc b/src/mainboard/sifive/hifive-unleashed/Makefile.inc index 207898e973..8ce266f034 100644 --- a/src/mainboard/sifive/hifive-unleashed/Makefile.inc +++ b/src/mainboard/sifive/hifive-unleashed/Makefile.inc @@ -12,12 +12,15 @@ # GNU General Public License for more details. bootblock-y += memlayout.ld +bootblock-y += media.c romstage-y += memlayout.ld romstage-y += romstage.c +romstage-y += media.c ramstage-y += memlayout.ld ramstage-y += fixup_fdt.c +ramstage-y += media.c DTB=$(obj)/hifive-unleashed.dtb diff --git a/src/mainboard/sifive/hifive-unleashed/media.c b/src/mainboard/sifive/hifive-unleashed/media.c new file mode 100644 index 0000000000..b0198a7abe --- /dev/null +++ b/src/mainboard/sifive/hifive-unleashed/media.c @@ -0,0 +1,49 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2018 Jonathan Neuschäfer + * Copyright (C) 2019 HardenedLinux + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <boot_device.h> +#include <soc/spi.h> + +/* At 0x20000000: A 256MiB long memory-mapped view of the flash at QSPI0 */ +static struct mem_region_device mdev = + MEM_REGION_DEV_RO_INIT((void *)0x20000000, CONFIG_ROM_SIZE); + +const struct region_device *boot_device_ro(void) +{ + return &mdev.rdev; +} + +const static struct fu540_spi_mmap_config spi_mmap_config = { + .cmd_en = 1, + .addr_len = 4, + .pad_cnt = 6, + .cmd_proto = FU540_SPI_PROTO_S, + .addr_proto = FU540_SPI_PROTO_Q, + .data_proto = FU540_SPI_PROTO_Q, + .cmd_code = 0xec, + .pad_code = 0 +}; + +void boot_device_init(void) +{ + struct spi_slave slave; + + /* initialize spi controller */ + spi_setup_slave(0, 0, &slave); + + /* map flash to memory space */ + fu540_spi_mmap(&slave, &spi_mmap_config); +} |