RE: Supporting flash that is locked by default

Christopher Hoover
2004-09-25T02:19:25Z

> Various flash chips may be locked (at a chip or block level)
> at power-on
> (perhaps depending on the board wiring), requiring an unlock before
> writing to the device.

I raised this issue several years ago. There wasn't (to me at least) a
satisfactory answer. I carry a private patch forward from release to
release that performs the unlock operation in the mtd map code.

Basically I do this which gets called in the probe:

static void __init xxxx_unlock_mtd(struct mtd_info *mtd)
{
int i;

/* argh, no way to get to the slaves that make up the parts of
our device, so instead cruise over all the available
devices */
for (i = 0;; i++) {
struct mtd_info *info;

info = get_mtd_device(0, i);
if (!info)
break;

if ((info->flags & MTD_WRITEABLE) &&
(info->unlock)) {
int ret;

printk(KERN_DEBUG "unlocking mtd device %s\n",
info->name);
ret = info->unlock(info, 0, info->size);
if (ret)
printk(KERN_ERR "failed (%d) to unlock mtd
device %s\n", ret, info->name);
}

put_mtd_device(info);
}
}

Somone (either rmk or David -- I don't recall whom) didn't feel the unlock
belonged in the mapping code and didn't want the patch. It would be nice
to come up with a solution that pleased everyone.

-ch