From: Lukasz Majewski <l.majewski@samsung.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] mmc:dcache: Cache line size aligned internal MMC buffers
Date: Wed, 24 Aug 2011 16:31:37 +0200 [thread overview]
Message-ID: <20110824163137.2e0f24a3@lmajewski.digital.local> (raw)
In-Reply-To: <20110824132553.A5F2C11F9E76@gemini.denx.de>
Hi Wolfgang,
> I think I'd like to see a macro that can be used like this:
>
> void *dma_buffer_pointer = DMA_BUFFER(size_in_bytes);
>
Frankly speaking I don't know any easy way to define buffer this way
in a macro (at least without digging deep enough to C preprocessor
programming tricks). Maybe Mike or Anton knows.
The void *dma_buffer_pointer = DMA_BUFFER(size_in_bytes); approach
needs to do following things in macro:
#define DMA_BUFFER(100) \
char buf[100 + get_dcache_line_size]; \
unsigned long tmp = (unsigned long) buf; \
void* buf_out = (void*) ((tmp + (get_dcache_line_size() - 1)) &
~(get_dcache_line_size() - 1))
The problem here is to assign the buf_out pointer to the void
*dma_buffer_pointer. How can we "return" the void *buf_out?
For comparison please look to this solution:
#define ALIGN_ADDR(addr) ((void *)(((unsigned long) addr +
get_dcache_line_size() - 1)\ & ~(get_dcache_line_size() - 1)))
#define DMA_DECLARE_BUFFER(type, name, size) \
char *__##name[size + get_dcache_line_size()]; \
type *name = ALIGN_ADDR(__##name);
int mmc_startup(struct mmc *mmc)
{
/* Some declarations */
/* char ext_csd[512]; */
DMA_DECLARE_BUFFER(char, ext_csd, 512);
printf("%s: ptr:%p\n", __func__, ext_csd);
/* rest of the code */
}
Here the DMA_DECLARE_BUFFER really defines the buffer as an automatic
variable with this function scope. This is tested and works :-)
>
> > 4. get_dcache_line_size() can be simply defined as
> > #define get_dcache_line_size() CONFIG_SYS_CACHE_LINE_SIZE if we
> > _really_ want to save a few bytes.
>
> Actually I fail to understand why we would ever need
> get_dcache_line_size() in a boot loader.
If I can ask for clarification here.
Shall not u-boot read on fly the cache line size (as it is now done) or
you don't like the get_cache_line_size defined as function?
Going further shall the get_cache_line_size be removed completely and
replaced with CONFIG_SYS_CACHE_LINE_SIZE?
>
> Best regards,
>
> Wolfgang Denk
>
--
Best regards,
Lukasz Majewski
Samsung Poland R&D Center
Platform Group
next prev parent reply other threads:[~2011-08-24 14:31 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-19 9:25 [U-Boot] [PATCH] mmc:dcache: Cache line size aligned internal MMC buffers Lukasz Majewski
2011-08-19 13:57 ` Mike Frysinger
2011-08-19 15:28 ` Lukasz Majewski
2011-08-19 15:35 ` Mike Frysinger
2011-08-22 7:29 ` Lukasz Majewski
2011-08-22 16:08 ` Mike Frysinger
2011-08-22 16:42 ` Anton Staaf
2011-08-22 16:52 ` Marek Vasut
2011-08-22 17:17 ` Mike Frysinger
2011-08-22 18:15 ` Anton Staaf
2011-08-22 18:31 ` Mike Frysinger
2011-08-22 18:57 ` Anton Staaf
2011-08-23 9:19 ` Lukasz Majewski
2011-08-23 17:00 ` Anton Staaf
2011-08-23 17:30 ` Mike Frysinger
2011-08-23 18:12 ` Anton Staaf
2011-08-23 18:35 ` Mike Frysinger
2011-08-23 18:36 ` Mike Frysinger
2011-08-23 18:46 ` Anton Staaf
2011-08-23 20:12 ` Wolfgang Denk
2011-08-23 20:27 ` Anton Staaf
2011-08-23 20:37 ` Mike Frysinger
2011-08-23 21:06 ` Anton Staaf
2011-08-23 21:32 ` Mike Frysinger
2011-08-23 21:09 ` Wolfgang Denk
2011-08-23 21:32 ` Mike Frysinger
2011-08-23 21:48 ` Anton Staaf
2011-08-24 16:16 ` Mike Frysinger
2011-08-23 22:42 ` Wolfgang Denk
2011-08-24 3:00 ` Mike Frysinger
2011-08-24 10:07 ` Lukasz Majewski
2011-08-24 13:25 ` Wolfgang Denk
2011-08-24 14:31 ` Lukasz Majewski [this message]
2011-08-24 16:20 ` Mike Frysinger
2011-08-24 17:27 ` Anton Staaf
2011-08-24 18:06 ` Mike Frysinger
2011-08-24 18:12 ` Wolfgang Denk
2011-08-24 18:25 ` Anton Staaf
2011-08-24 19:04 ` Wolfgang Denk
2011-08-24 20:12 ` Anton Staaf
2011-08-24 19:18 ` Lukasz Majewski
2011-08-24 20:13 ` Anton Staaf
2011-08-29 20:12 ` Anton Staaf
2011-08-29 20:35 ` Wolfgang Denk
2011-08-29 21:08 ` Anton Staaf
2011-08-29 20:47 ` Scott Wood
2011-08-29 20:58 ` Anton Staaf
2011-08-29 21:23 ` Scott Wood
2011-08-29 21:54 ` Anton Staaf
2011-08-29 22:03 ` Scott Wood
2011-08-29 22:49 ` Anton Staaf
2011-08-29 23:01 ` Scott Wood
2011-08-29 23:05 ` Anton Staaf
2011-08-23 20:35 ` Mike Frysinger
2011-08-23 8:42 ` Lukasz Majewski
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=20110824163137.2e0f24a3@lmajewski.digital.local \
--to=l.majewski@samsung.com \
--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