On 05/01/11 20:56, John Crispin wrote: > > adr += chip->start; > +#ifdef CONFIG_MTD_CFI_CMD_SWIZZLE > + adr ^= 2; > +#endif > > mutex_lock(&chip->mutex); > ret = get_chip(map, chip, adr, FL_WRITING); > Hi, What this patch essentially does is to make sure to pass a addr with the ^=2 hack already applied, so that the complex map ends up with an un swizzled addr as it applies the hack internally again. I think it would be cleanest to extend the read/write callbacks of struct map_info; with a flag indicating whether we are doing a CMD or DATA action. as the 2 following macros are used anyway, it should not be too hard to implement this. #define map_read(map, ofs) (map)->read(map, ofs) #define map_write(map, datum, ofs) (map)->write(map, datum, ofs) I am not sure however if this is the correct fix. Thanks, John