From: Stephen Warren <swarren@wwwdotorg.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 2/3] common: rework bouncebuf implementation
Date: Tue, 06 Nov 2012 12:30:26 -0700 [thread overview]
Message-ID: <50996552.1040802@wwwdotorg.org> (raw)
In-Reply-To: <CAPnjgZ28FfX8V530Y7YYwDum01pLCeK_gFTCaMS1MXCmz1t7wQ@mail.gmail.com>
On 11/05/2012 04:54 PM, Simon Glass wrote:
> Hi Stephen,
>
> On Mon, Nov 5, 2012 at 3:04 PM, Stephen Warren <swarren@wwwdotorg.org> wrote:
>> From: Stephen Warren <swarren@nvidia.com>
>>
>> The current bouncebuf API requires all parameters to be passed to both
>> bounce_buffer_start() and bounce_buffer_stop(). This works fine when
>> both functions are called from the same place. However, Tegra's MMC
>> driver splits the data setup and post-processing steps between two
>> functions, and passing all that state around separately would be painful.
>> Modify the bouncebuf API to accept a state structure as a parameter, so
>> that only a single struct needs to be passed to both APIs.
>> diff --git a/common/bouncebuf.c b/common/bouncebuf.c
>> -int bounce_buffer_start(void **data, size_t len, void **backup, uint8_t flags)
>> +int bounce_buffer_start(struct bounce_buffer_state *state, void *data,
>> + size_t len, uint8_t flags)
>> {
>> - void *tmp;
>> - size_t alen;
>> + state->user_buffer = data;
>> + state->bounce_buffer = data;
>> + state->len = len;
>> + state->len_aligned = roundup(len, ARCH_DMA_MINALIGN);
>> + state->flags = flags;
>>
>> - if (addr_aligned(*data, len)) {
>> - *backup = NULL;
>> + if (addr_aligned(data, len))
>
> Maybe consider checking for data == NULL here, and return 0. This
> would allow you to remove your 'if (data)' checks in the tegra driver.
> Would need to update function description in the header file though.
That doesn't actually work out. The if (data) test in the Tegra driver
is checking whether a non-NULL "struct mmc_data *data" is passed to
Tegra's mmc_send_cmd(). That value isn't directly passed to
bounce_buffer_start(), but rather data->{src,dest}, which doesn't even
exist if (!data).
next prev parent reply other threads:[~2012-11-06 19:30 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-05 23:04 [U-Boot] [PATCH 1/3] common: add ifdefs around bouncebuf.c body Stephen Warren
2012-11-05 23:04 ` [U-Boot] [PATCH 2/3] common: rework bouncebuf implementation Stephen Warren
2012-11-05 23:54 ` Simon Glass
2012-11-06 18:44 ` Stephen Warren
2012-11-06 19:30 ` Stephen Warren [this message]
2012-11-05 23:04 ` [U-Boot] [PATCH 3/3] mmc: tegra: use bounce buffer APIs Stephen Warren
2012-11-06 0:00 ` Simon Glass
2012-11-06 18:50 ` Stephen Warren
2012-11-06 19:03 ` Simon Glass
2012-11-05 23:47 ` [U-Boot] [PATCH 1/3] common: add ifdefs around bouncebuf.c body Simon Glass
2012-11-06 18:04 ` Stephen Warren
2012-11-06 0:54 ` Marek Vasut
2012-11-06 18:07 ` Stephen Warren
2012-11-06 22:43 ` Marek Vasut
2012-11-06 22:49 ` Stephen Warren
2012-11-06 22:57 ` Marek Vasut
2012-11-06 23:13 ` Stephen Warren
2012-11-07 13:21 ` Marek Vasut
2012-11-07 17:00 ` Stephen Warren
2012-11-08 1:20 ` Marek Vasut
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=50996552.1040802@wwwdotorg.org \
--to=swarren@wwwdotorg.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.