From: "Jörn Engel" <joern@logfs.org>
To: Bryan Wu <cooloney@kernel.org>
Cc: linux-mtd@lists.infradead.org, dwmw2@infradead.org,
will.newton@gmail.com, Mike Frysinger <vapier.adi@gmail.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/1] [MTD/MAPS] Blackfin Async Flash Maps: Handle the case where flash memory and ethernet mac/phy are mapped onto the same async bank
Date: Tue, 13 May 2008 10:07:27 +0200 [thread overview]
Message-ID: <20080513080727.GA15795@logfs.org> (raw)
In-Reply-To: <1210653525-19437-1-git-send-email-cooloney@kernel.org>
On Tue, 13 May 2008 12:38:45 +0800, Bryan Wu wrote:
>
> +#define pr_devinit(fmt, args...) ({ static const __devinitdata char __fmt[] = fmt; printk(__fmt, ## args); })
Is this still needed?
> +static void bfin_copy_from(struct map_info *map, void *to, unsigned long from, ssize_t len)
> +{
> + size_t i;
> + map_word test;
> +
> + if ((unsigned long)to & 0x1) {
> + for (i = 0; i < len; i += 2) {
> + u16 *dst = (u16 *)(to + i);
> + test = bfin_read(map, from + i);
> + put_unaligned(test.x[0], dst);
> + }
> + } else {
> + for (i = 0; i < len; i += 2) {
> + u16 *dst = (u16 *)(to + i);
> + test = bfin_read(map, from + i);
> + *dst = test.x[0];
> + }
> + }
> +
> + if (len & 0x1) {
> + u8 *last_to_byte = (u8 *)(to + i);
> + test = bfin_read(map, from + i);
> + *last_to_byte = (u8)test.x[0];
> + }
> +}
The pointer casts are superfluous. Linus prefers variable declarations
up front (sorry for my bad example). The "+ i" in the last conditional
is a bit dangerous as any changes to the loop can break it. Linux code
has lots of churn and not everyone is careful enough to spot such
subtleties.
And I believe you can improve performance by killing the put_unaligned
in the loop. So if we put it all together the end result should be
something like this:
static void bfin_copy_from(struct map_info *map, void *to, unsigned long from, ssize_t len)
{
size_t i;
map_word test;
u8 *byte;
u16 *dst;
if ((unsigned long)to & 0x1) {
byte = to;
test = bfin_read(map, from);
*byte = test.x[0] >> 8;
to++;
from++;
len--;
}
for (i = 0; i < len; i += 2) {
dst = to + i;
test = bfin_read(map, from + i);
*dst = test.x[0];
}
if ((len & 0x1) {
byte = to + len - 1;
test = bfin_read(map, from + len - 1);
*byte = test.x[0] & 0xff;
}
}
What do you think?
> +static void bfin_write(struct map_info *map, map_word d1, unsigned long ofs)
> +{
> + struct async_state *state = (struct async_state *)map->map_priv_1;
> + u16 d;
> +
> + d = (u16)d1.x[0];
You didn't need the cast above. Why here?
Otherwise looks good to me.
Jörn
--
Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it.
-- Brian W. Kernighan
next prev parent reply other threads:[~2008-05-13 8:07 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-13 4:38 [PATCH 1/1] [MTD/MAPS] Blackfin Async Flash Maps: Handle the case where flash memory and ethernet mac/phy are mapped onto the same async bank Bryan Wu
2008-05-13 8:07 ` Jörn Engel [this message]
2008-05-13 12:42 ` Mike Frysinger
2008-05-13 15:01 ` Jörn Engel
2008-05-13 15:15 ` Mike Frysinger
2008-05-13 15:34 ` Jörn Engel
2008-05-13 17:42 ` Mike Frysinger
2008-05-13 19:16 ` Jörn Engel
2008-05-14 2:50 ` Bryan Wu
2008-05-13 17:41 ` Mike Frysinger
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=20080513080727.GA15795@logfs.org \
--to=joern@logfs.org \
--cc=cooloney@kernel.org \
--cc=dwmw2@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=vapier.adi@gmail.com \
--cc=will.newton@gmail.com \
/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