[U-Boot] [PATCH 1/3] [OneNAND] Flex-OneNAND driver support

Scott Wood scottwood at freescale.com
Mon Sep 28 22:02:41 CEST 2009


On Thu, Sep 24, 2009 at 11:43:47AM +0530, Amul Kumar Saha wrote:
> +static loff_t flexonenand_addr(struct onenand_chip *this, int block)
> +{
> +	loff_t ofs = 0;
> +	int die = 0, boundary;
> +
> +	if (ONENAND_IS_DDP(this) && block >= this->density_mask) {
> +		block -= this->density_mask;
> +		die = 1;
> +		ofs = this->diesize[0];
> +	}
> +
> +	boundary = this->boundary[die];
> +	ofs += block << (this->erase_shift - 1);
> +	if (block > (boundary + 1))
> +		ofs += (block - boundary - 1) << (this->erase_shift - 1);
> +	return ofs;

You're missing some (loff_t) casts that are in Linux, here and elsewhere.

> +inline loff_t onenand_addr(struct onenand_chip *this, int block)

This is not a header file; let GCC decide when to inline.  Note that this
function is not specified as inline in Linux.

There are some other fairly significant differences with Linux later in
the patch -- is this due to missing functionality that u-boot doesn't
need, or something else?

-Scott


More information about the U-Boot mailing list