mtdblk             78 drivers/mtd/mtdblock.c static int write_cached_data (struct mtdblk_dev *mtdblk)
mtdblk             80 drivers/mtd/mtdblock.c 	struct mtd_info *mtd = mtdblk->mbd.mtd;
mtdblk             83 drivers/mtd/mtdblock.c 	if (mtdblk->cache_state != STATE_DIRTY)
mtdblk             88 drivers/mtd/mtdblock.c 			mtdblk->cache_offset, mtdblk->cache_size);
mtdblk             90 drivers/mtd/mtdblock.c 	ret = erase_write (mtd, mtdblk->cache_offset,
mtdblk             91 drivers/mtd/mtdblock.c 			   mtdblk->cache_size, mtdblk->cache_data);
mtdblk            102 drivers/mtd/mtdblock.c 	mtdblk->cache_state = STATE_EMPTY;
mtdblk            107 drivers/mtd/mtdblock.c static int do_cached_write (struct mtdblk_dev *mtdblk, unsigned long pos,
mtdblk            110 drivers/mtd/mtdblock.c 	struct mtd_info *mtd = mtdblk->mbd.mtd;
mtdblk            111 drivers/mtd/mtdblock.c 	unsigned int sect_size = mtdblk->cache_size;
mtdblk            140 drivers/mtd/mtdblock.c 			if (mtdblk->cache_state == STATE_DIRTY &&
mtdblk            141 drivers/mtd/mtdblock.c 			    mtdblk->cache_offset != sect_start) {
mtdblk            142 drivers/mtd/mtdblock.c 				ret = write_cached_data(mtdblk);
mtdblk            147 drivers/mtd/mtdblock.c 			if (mtdblk->cache_state == STATE_EMPTY ||
mtdblk            148 drivers/mtd/mtdblock.c 			    mtdblk->cache_offset != sect_start) {
mtdblk            150 drivers/mtd/mtdblock.c 				mtdblk->cache_state = STATE_EMPTY;
mtdblk            152 drivers/mtd/mtdblock.c 					       &retlen, mtdblk->cache_data);
mtdblk            158 drivers/mtd/mtdblock.c 				mtdblk->cache_offset = sect_start;
mtdblk            159 drivers/mtd/mtdblock.c 				mtdblk->cache_size = sect_size;
mtdblk            160 drivers/mtd/mtdblock.c 				mtdblk->cache_state = STATE_CLEAN;
mtdblk            164 drivers/mtd/mtdblock.c 			memcpy (mtdblk->cache_data + offset, buf, size);
mtdblk            165 drivers/mtd/mtdblock.c 			mtdblk->cache_state = STATE_DIRTY;
mtdblk            177 drivers/mtd/mtdblock.c static int do_cached_read (struct mtdblk_dev *mtdblk, unsigned long pos,
mtdblk            180 drivers/mtd/mtdblock.c 	struct mtd_info *mtd = mtdblk->mbd.mtd;
mtdblk            181 drivers/mtd/mtdblock.c 	unsigned int sect_size = mtdblk->cache_size;
mtdblk            204 drivers/mtd/mtdblock.c 		if (mtdblk->cache_state != STATE_EMPTY &&
mtdblk            205 drivers/mtd/mtdblock.c 		    mtdblk->cache_offset == sect_start) {
mtdblk            206 drivers/mtd/mtdblock.c 			memcpy (buf, mtdblk->cache_data + offset, size);
mtdblk            226 drivers/mtd/mtdblock.c 	struct mtdblk_dev *mtdblk = container_of(dev, struct mtdblk_dev, mbd);
mtdblk            227 drivers/mtd/mtdblock.c 	return do_cached_read(mtdblk, block<<9, 512, buf);
mtdblk            233 drivers/mtd/mtdblock.c 	struct mtdblk_dev *mtdblk = container_of(dev, struct mtdblk_dev, mbd);
mtdblk            234 drivers/mtd/mtdblock.c 	if (unlikely(!mtdblk->cache_data && mtdblk->cache_size)) {
mtdblk            235 drivers/mtd/mtdblock.c 		mtdblk->cache_data = vmalloc(mtdblk->mbd.mtd->erasesize);
mtdblk            236 drivers/mtd/mtdblock.c 		if (!mtdblk->cache_data)
mtdblk            243 drivers/mtd/mtdblock.c 	return do_cached_write(mtdblk, block<<9, 512, buf);
mtdblk            248 drivers/mtd/mtdblock.c 	struct mtdblk_dev *mtdblk = container_of(mbd, struct mtdblk_dev, mbd);
mtdblk            252 drivers/mtd/mtdblock.c 	if (mtdblk->count) {
mtdblk            253 drivers/mtd/mtdblock.c 		mtdblk->count++;
mtdblk            258 drivers/mtd/mtdblock.c 	mtdblk->count = 1;
mtdblk            259 drivers/mtd/mtdblock.c 	mutex_init(&mtdblk->cache_mutex);
mtdblk            260 drivers/mtd/mtdblock.c 	mtdblk->cache_state = STATE_EMPTY;
mtdblk            262 drivers/mtd/mtdblock.c 		mtdblk->cache_size = mbd->mtd->erasesize;
mtdblk            263 drivers/mtd/mtdblock.c 		mtdblk->cache_data = NULL;
mtdblk            273 drivers/mtd/mtdblock.c 	struct mtdblk_dev *mtdblk = container_of(mbd, struct mtdblk_dev, mbd);
mtdblk            277 drivers/mtd/mtdblock.c 	mutex_lock(&mtdblk->cache_mutex);
mtdblk            278 drivers/mtd/mtdblock.c 	write_cached_data(mtdblk);
mtdblk            279 drivers/mtd/mtdblock.c 	mutex_unlock(&mtdblk->cache_mutex);
mtdblk            281 drivers/mtd/mtdblock.c 	if (!--mtdblk->count) {
mtdblk            288 drivers/mtd/mtdblock.c 		vfree(mtdblk->cache_data);
mtdblk            296 drivers/mtd/mtdblock.c 	struct mtdblk_dev *mtdblk = container_of(dev, struct mtdblk_dev, mbd);
mtdblk            298 drivers/mtd/mtdblock.c 	mutex_lock(&mtdblk->cache_mutex);
mtdblk            299 drivers/mtd/mtdblock.c 	write_cached_data(mtdblk);
mtdblk            300 drivers/mtd/mtdblock.c 	mutex_unlock(&mtdblk->cache_mutex);