
On 8/16/23 13:05, Abdellatif El Khlifi wrote:
enable the 32-bit version of sandbox
Initially NVMXIP came with sandbox64 support. Let's enable sandbox support as well.
Signed-off-by: Abdellatif El Khlifi abdellatif.elkhlifi@arm.com Cc: Tom Rini trini@konsulko.com Cc: Simon Glass sjg@chromium.org Cc: Marek Vasut marek.vasut@mailbox.org
Changelog:
v2:
- split into 2 commits: one for sandbox 32-bit support, and one for moving PHYS_ADDR_LN* to log.h
v1: introduce the sandbox 32-bit support
arch/sandbox/dts/sandbox.dts | 14 ++++++++++++++
Please separate DT change
configs/sandbox_defconfig | 4 ++--
Config change too, separate patch that goes last.
drivers/mtd/nvmxip/nvmxip-uclass.c | 6 +++--- drivers/mtd/nvmxip/nvmxip.c | 13 +++++++++++-- drivers/mtd/nvmxip/nvmxip_qspi.c | 2 +- test/dm/Makefile | 2 +- 6 files changed, 32 insertions(+), 9 deletions(-)
[...]
--- a/drivers/mtd/nvmxip/nvmxip-uclass.c +++ b/drivers/mtd/nvmxip/nvmxip-uclass.c @@ -9,7 +9,7 @@ #include <common.h> #include <dm.h> #include <log.h> -#if CONFIG_IS_ENABLED(SANDBOX64) +#if CONFIG_IS_ENABLED(SANDBOX) #include <asm/test.h> #endif #include <linux/bitops.h> @@ -39,7 +39,7 @@ static int nvmxip_post_bind(struct udevice *udev) char bdev_name[NVMXIP_BLKDEV_NAME_SZ + 1]; int devnum;
-#if CONFIG_IS_ENABLED(SANDBOX64) +#if CONFIG_IS_ENABLED(SANDBOX) sandbox_set_enable_memio(true);
This should not be in drivers at all, this should be in tests/ , see
https://source.denx.de/u-boot/custodians/u-boot-sh/-/commit/b07772226b405d62...
#endif
@@ -62,7 +62,7 @@ static int nvmxip_post_bind(struct udevice *udev) return ret; }
- log_info("[%s]: the block device %s ready for use\n", udev->name, bdev_name);
- log_debug("[%s]: the block device %s ready for use\n", udev->name, bdev_name);
Unrelated change -> separate patch please.
return 0; } diff --git a/drivers/mtd/nvmxip/nvmxip.c b/drivers/mtd/nvmxip/nvmxip.c index a359e3b482..9191e69a40 100644 --- a/drivers/mtd/nvmxip/nvmxip.c +++ b/drivers/mtd/nvmxip/nvmxip.c @@ -11,6 +11,7 @@ #include <log.h> #include <mapmem.h> #include <asm/io.h> +#include <linux/bitfield.h> #include <linux/bitops.h> #include <linux/errno.h> #include "nvmxip.h" @@ -26,9 +27,17 @@
- Always return 0.
*/ -static int nvmxip_mmio_rawread(const phys_addr_t address, u64 *value) +static int nvmxip_mmio_rawread(const u64 *address, u64 *value) { +#if CONFIG_IS_ENABLED(PHYS_64BIT) *value = readq(address); +#else
- u32 h_word, l_word;
- l_word = readl(address);
- h_word = readl((u8 *)address + sizeof(u32));
- *value = FIELD_PREP(GENMASK_ULL(63, 32), h_word) | l_word;
+#endif return 0; }
@@ -67,7 +76,7 @@ static ulong nvmxip_blk_read(struct udevice *dev, lbaint_t blknr, lbaint_t blkcn /* assumption: the data is virtually contiguous */
for (qdata_idx = 0 ; qdata_idx < qwords ; qdata_idx++)
nvmxip_mmio_rawread((phys_addr_t)(virt_blkaddr + qdata_idx), pdst++);
nvmxip_mmio_rawread(virt_blkaddr + qdata_idx, pdst++);
Separate patch please, or just use this commit as part of this series:
https://source.denx.de/u-boot/custodians/u-boot-sh/-/commit/85a662e98c44921a...
log_debug("[%s]: src[0]: 0x%llx , dst[0]: 0x%llx , src[-1]: 0x%llx , dst[-1]: 0x%llx\n", dev->name, diff --git a/drivers/mtd/nvmxip/nvmxip_qspi.c b/drivers/mtd/nvmxip/nvmxip_qspi.c index 7221fd1cb4..faeb99b4ad 100644 --- a/drivers/mtd/nvmxip/nvmxip_qspi.c +++ b/drivers/mtd/nvmxip/nvmxip_qspi.c @@ -50,7 +50,7 @@ static int nvmxip_qspi_of_to_plat(struct udevice *dev) return -EINVAL; }
- log_debug("[%s]: XIP device base addr: 0x%llx , lba_shift: %d , lbas: %lu\n",
- log_debug("[%s]: XIP device base addr: " PHYS_ADDR_LN " , lba_shift: %d , lbas: %lu\n", dev->name, plat->phys_base, plat->lba_shift, plat->lba);
Another separate patch.
return 0; diff --git a/test/dm/Makefile b/test/dm/Makefile index 7ed00733c1..77172d9012 100644 --- a/test/dm/Makefile +++ b/test/dm/Makefile @@ -18,7 +18,7 @@ obj-$(CONFIG_UT_DM) += test-uclass.o obj-$(CONFIG_UT_DM) += core.o obj-$(CONFIG_UT_DM) += read.o obj-$(CONFIG_UT_DM) += phys2bus.o -ifeq ($(CONFIG_NVMXIP_QSPI)$(CONFIG_SANDBOX64),yy) +ifeq ($(CONFIG_NVMXIP_QSPI),y)
Separate patch.
Look here for some ideas:
https://source.denx.de/u-boot/custodians/u-boot-sh/-/commits/ci%2Ftest-sandb...