
28 Sep
2009
28 Sep
'09
10:02 p.m.
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