[U-Boot] [PATCH] bouncebuf: add feature to support buffer only available in DRAM

Christoph Müllner christoph.muellner at theobroma-systems.com
Tue May 7 14:12:34 UTC 2019



On 07.05.19 15:51, Kever Yang wrote:
> Some DMA which inside peripheral controller can only access space in
> DRAM area, the target address outside DRAM is not available.
> eg. Rockchip MMC contrller's internal DMA can only access DRAM area.
> 
> Add Kconfig option and driver for people who need it.

Hi Kever,

I've addressed this in a different way:

https://lists.denx.de/pipermail/u-boot/2019-May/368307.html
https://lists.denx.de/pipermail/u-boot/2019-May/368305.html
https://lists.denx.de/pipermail/u-boot/2019-May/368306.html

BR
Christoph

> 
> Signed-off-by: Kever Yang <kever.yang at rock-chips.com>
> ---
> 
>  common/bouncebuf.c  | 9 +++++++++
>  drivers/mmc/Kconfig | 6 ++++++
>  2 files changed, 15 insertions(+)
> 
> diff --git a/common/bouncebuf.c b/common/bouncebuf.c
> index a7098e2caf..7ff2f488a4 100644
> --- a/common/bouncebuf.c
> +++ b/common/bouncebuf.c
> @@ -10,6 +10,8 @@
>  #include <errno.h>
>  #include <bouncebuf.h>
>  
> +DECLARE_GLOBAL_DATA_PTR;
> +
>  static int addr_aligned(struct bounce_buffer *state)
>  {
>  	const ulong align_mask = ARCH_DMA_MINALIGN - 1;
> @@ -26,6 +28,13 @@ static int addr_aligned(struct bounce_buffer *state)
>  		return 0;
>  	}
>  
> +#ifdef MMC_BUF_IN_DRAM
> +	if (((ulong)state->user_buffer < CONFIG_SYS_SDRAM_BASE) ||
> +	    ((ulong)state->user_buffer > gd->ram_top)) {
> +		debug("Not support buffer address %p\n", state->user_buffer);
> +		return 0;
> +	}
> +#endif
>  	/* Aligned */
>  	return 1;
>  }
> diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig
> index c23299ea96..e852ee6175 100644
> --- a/drivers/mmc/Kconfig
> +++ b/drivers/mmc/Kconfig
> @@ -671,6 +671,12 @@ config FSL_ESDHC
>  	  This selects support for the eSDHC (enhanced secure digital host
>  	  controller) found on numerous Freescale/NXP SoCs.
>  
> +config MMC_BUF_IN_DRAM
> +	bool "Only buffer in DRAM is available"
> +	help
> +	  This selects support those controller whose internal DMA can only
> +	  access SDRAM spaces and other spaces are not available.
> +
>  endmenu
>  
>  config SYS_FSL_ERRATUM_ESDHC111
> 


More information about the U-Boot mailing list