[PATCH v2 2/2] nvmxip: add sandbox support

Marek Vasut marek.vasut at mailbox.org
Wed Aug 16 13:18:54 CEST 2023


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 at arm.com>
> Cc: Tom Rini <trini at konsulko.com>
> Cc: Simon Glass <sjg at chromium.org>
> Cc: Marek Vasut <marek.vasut at 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/b07772226b405d6212d4faa9329d64a09708b188

>   #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/85a662e98c44921a0f5652fa4b170625424ef9a9

>   	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-sandbox64?ref_type=heads


More information about the U-Boot mailing list