
Untitled
By: a guest on
Nov 22nd, 2011 | syntax:
None | size: 0.86 KB | hits: 102 | expires: Never
if (FlashSpec[chip].Vendor == TOSHIBA)
{
totpages = FlashSpec[chip].PagePerBlock * FlashSpec[chip].TotBlks;
/* Interleave can be 0 or 1 */
r12 = ((totpages/2)>>FlashSpec[chip].Interleave) * (row & 1);
r3 = (row/2) % ((totpage/2)>>FlashSpec[chip].Interleave);
r0 = row & (totpages >> FlashSpec[chip].Interleaved);
row = r0 + r3 + r12;
}
else
{
/* dual plane */
page_offset = (row/2) % FlashSpec[chip].PagePerBlockRaw;
/* PagePerBlock = PagePerBlockRaw*MulPlane */
mulplane_offset = row & ~(FlashSpec[chip].PagePerBlock - 1);
row = mulplne_offset + ((row & 1) * FlashSpec[chip].PagePerBlockRaw) + page_offset;
}