Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 68523
b: refs/heads/master
c: 097f257
h: refs/heads/master
i:
  68521: 6e9df7e
  68519: 38db195
v: v3
  • Loading branch information
Andy Lowe authored and David Woodhouse committed Sep 23, 2007
1 parent 4cc505a commit 6652e5c
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e644f7d6289456657996df4192de76c5d0a9f9c7
refs/heads/master: 097f2576eb7dbc8cd5f610847f229f4fea305b80
15 changes: 11 additions & 4 deletions trunk/drivers/mtd/chips/cfi_cmdset_0001.c
Original file line number Diff line number Diff line change
Expand Up @@ -1166,28 +1166,34 @@ static int cfi_intelext_point (struct mtd_info *mtd, loff_t from, size_t len, si
{
struct map_info *map = mtd->priv;
struct cfi_private *cfi = map->fldrv_priv;
unsigned long ofs;
unsigned long ofs, last_end = 0;
int chipnum;
int ret = 0;

if (!map->virt || (from + len > mtd->size))
return -EINVAL;

*mtdbuf = (void *)map->virt + from;
*retlen = 0;

/* Now lock the chip(s) to POINT state */

/* ofs: offset within the first chip that the first read should start */
chipnum = (from >> cfi->chipshift);
ofs = from - (chipnum << cfi->chipshift);

*mtdbuf = (void *)map->virt + cfi->chips[chipnum].start + ofs;
*retlen = 0;

while (len) {
unsigned long thislen;

if (chipnum >= cfi->numchips)
break;

/* We cannot point across chips that are virtually disjoint */
if (!last_end)
last_end = cfi->chips[chipnum].start;
else if (cfi->chips[chipnum].start != last_end)
break;

if ((len + ofs -1) >> cfi->chipshift)
thislen = (1<<cfi->chipshift) - ofs;
else
Expand All @@ -1201,6 +1207,7 @@ static int cfi_intelext_point (struct mtd_info *mtd, loff_t from, size_t len, si
len -= thislen;

ofs = 0;
last_end += 1 << cfi->chipshift;
chipnum++;
}
return 0;
Expand Down

0 comments on commit 6652e5c

Please sign in to comment.