public inbox for linux-mtd@lists.infradead.org
 help / color / mirror / Atom feed
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

  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