public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Marek Vasut <marex@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v4] nios2: convert dma_alloc_coherent to use malloc_cache_aligned
Date: Mon, 12 Oct 2015 12:32:56 +0200	[thread overview]
Message-ID: <201510121232.56484.marex@denx.de> (raw)
In-Reply-To: <1444627783-15105-1-git-send-email-thomas@wytron.com.tw>

On Monday, October 12, 2015 at 07:29:43 AM, Thomas Chou wrote:
> Convert dma_alloc_coherent to use memalign.
> 
> Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
> ---
> v2
>   use memalign.
> v3
>   check memalign() return for out of memory.
> v4
>   use malloc_cache_aligned().
> 
>  arch/nios2/include/asm/dma-mapping.h | 24 +++++++++++-------------
>  1 file changed, 11 insertions(+), 13 deletions(-)
> 
> diff --git a/arch/nios2/include/asm/dma-mapping.h
> b/arch/nios2/include/asm/dma-mapping.h index 1350e3b..bfaf662 100644
> --- a/arch/nios2/include/asm/dma-mapping.h
> +++ b/arch/nios2/include/asm/dma-mapping.h
> @@ -1,23 +1,21 @@
>  #ifndef __ASM_NIOS2_DMA_MAPPING_H
>  #define __ASM_NIOS2_DMA_MAPPING_H
> 
> -/* dma_alloc_coherent() return cache-line aligned allocation which is
> mapped +#include <memalign.h>
> +#include <asm/io.h>
> +
> +/*
> + * dma_alloc_coherent() return cache-line aligned allocation which is
> mapped * to uncached io region.
> - *
> - * IO_REGION_BASE should be defined in board config header file
> - *   0x80000000 for nommu, 0xe0000000 for mmu
>   */
> -
>  static inline void *dma_alloc_coherent(size_t len, unsigned long *handle)
>  {
> -	void *addr = malloc(len + CONFIG_SYS_DCACHELINE_SIZE);
> -	if (!addr)
> -		return 0;
> -	flush_dcache((unsigned long)addr, len + CONFIG_SYS_DCACHELINE_SIZE);
> -	*handle = ((unsigned long)addr +
> -		   (CONFIG_SYS_DCACHELINE_SIZE - 1)) &
> -		~(CONFIG_SYS_DCACHELINE_SIZE - 1) & ~(IO_REGION_BASE);
> -	return (void *)(*handle | IO_REGION_BASE);
> +	*handle = (unsigned long)malloc_cache_aligned(len);
> +	if (!*handle)
> +		return NULL;
> +	flush_dcache_range(*handle, *handle + len);

Wouldn't invalidate_dcache_range() be enough here ? You don't care about the
data in the newly allocated area at this point I guess -- either you fill them
in and then flush, for DMA from CPU to device OR you receive data from device
to CPU and then you invalidate this buffer again.

> +	return ioremap(*handle, len);
>  }
> 
>  #endif /* __ASM_NIOS2_DMA_MAPPING_H */

Best regards,
Marek Vasut

  reply	other threads:[~2015-10-12 10:32 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-05  2:57 [U-Boot] [PATCH] nios2: convert dma mapping to use dm cpu data Thomas Chou
2015-10-06  6:49 ` [U-Boot] [PATCH v2] nios2: convert dma_alloc_coherent to use memalign Thomas Chou
2015-10-08 21:43   ` Marek Vasut
2015-10-09  8:48     ` Thomas Chou
2015-10-09 11:35       ` Thomas Chou
2015-10-09 11:31 ` [U-Boot] [PATCH v3] " Thomas Chou
2015-10-09 14:49   ` Marek Vasut
2015-10-10  5:33     ` Thomas Chou
2015-10-10 18:19       ` Marek Vasut
2015-10-11  1:48         ` Thomas Chou
2015-10-11 12:15           ` Marek Vasut
2015-10-12  5:29 ` [U-Boot] [PATCH v4] nios2: convert dma_alloc_coherent to use malloc_cache_aligned Thomas Chou
2015-10-12 10:32   ` Marek Vasut [this message]
2015-10-12 12:55     ` Thomas Chou
2015-10-12 13:46       ` Marek Vasut
2015-10-13  0:17         ` Thomas Chou
2015-10-14  1:48           ` Thomas Chou
2015-10-16 22:53             ` Marek Vasut
2015-10-16 22:56           ` Marek Vasut
2015-10-17  2:59             ` Thomas Chou
2015-10-17 11:52               ` Marek Vasut
2015-10-19  5:52       ` Albert ARIBAUD
2015-10-19  8:18         ` Thomas Chou
2015-10-19  8:27           ` Albert ARIBAUD
2015-10-14  1:42 ` [U-Boot] [PATCH v5] " Thomas Chou
2015-10-16  8:29 ` [U-Boot] [PATCH v6] " Thomas Chou
2015-10-16 22:58   ` Marek Vasut
2015-10-18 23:46   ` Thomas Chou

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201510121232.56484.marex@denx.de \
    --to=marex@denx.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox