
4 Nov
2009
4 Nov
'09
6 a.m.
Hi Scott,
+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.
Accepted and corrected
+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.
Accepted and corrected
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?
Yes, there are certain functionalities that OneNAND doesn't need in U-Boot. Sending the updated patches.
Regards, Amul Kumar Saha