chip driver mar_ram.c never sets MTD_ERASE_DONE state

Oliver Kühlert oliver.kuehlert at
Thu Jun 17 09:51:46 EDT 2004


trying to erase on an mtd devices using the map_ram.c driver
blocks the current process and never wakes up. (see mtdchar.c, ioctl func)

I believe, that this can be fixed by adding the marked line in map_ram.c:

static int mapram_erase (struct mtd_info *mtd, struct erase_info *instr)
         /* Yeah, it's inefficient. Who cares? It's faster than a _real_
            flash erase. */
         struct map_info *map = (struct map_info *)mtd->priv;
         unsigned long i;

         for (i=0; i<instr->len; i++)
                 map_write8(map, 0xFF, instr->addr + i);

!!!!!!---->   instr->state = MTD_ERASE_DONE;   <----- !!!!!!

         if (instr->callback)

         return 0;

Best regards, Oliver Kühlert

Dr. Oliver Kuehlert          SYSGO Real-Time Solutions AG
oliver.kuehlert at
Software Engineering     Embedded and Real-Time Software
Voice: +49-6136-9948-0   Am Pfaffenstein 14       
FAX:   +49-6136-9948-10  55270 Klein-Winternheim, Germany

More information about the linux-mtd mailing list