[MTD] Remove nand writev support
[deliverable/linux.git] / drivers / mtd / onenand / onenand_base.c
index 4c2c61d54b3a9d4b2f0f2103a81d5ab935ebcb34..8e875fa140a8eb6d1f64584d99802afe65ef13f6 100644 (file)
@@ -1013,144 +1013,6 @@ out:
        return ret;
 }
 
-/**
- * onenand_writev_ecc - [MTD Interface] write with iovec with ecc
- * @param mtd          MTD device structure
- * @param vecs         the iovectors to write
- * @param count                number of vectors
- * @param to           offset to write to
- * @param retlen       pointer to variable to store the number of written bytes
- * @param eccbuf       filesystem supplied oob data buffer
- * @param oobsel       oob selection structure
- *
- * OneNAND write with iovec with ecc
- */
-static int onenand_writev_ecc(struct mtd_info *mtd, const struct kvec *vecs,
-       unsigned long count, loff_t to, size_t *retlen,
-       u_char *eccbuf, struct nand_oobinfo *oobsel)
-{
-       struct onenand_chip *this = mtd->priv;
-       unsigned char *pbuf;
-       size_t total_len, len;
-       int i, written = 0;
-       int ret = 0;
-
-       /* Preset written len for early exit */
-       *retlen = 0;
-
-       /* Calculate total length of data */
-       total_len = 0;
-       for (i = 0; i < count; i++)
-               total_len += vecs[i].iov_len;
-
-       DEBUG(MTD_DEBUG_LEVEL3, "onenand_writev_ecc: to = 0x%08x, len = %i, count = %ld\n", (unsigned int) to, (unsigned int) total_len, count);
-
-       /* Do not allow write past end of the device */
-       if (unlikely((to + total_len) > mtd->size)) {
-               DEBUG(MTD_DEBUG_LEVEL0, "onenand_writev_ecc: Attempted write past end of device\n");
-               return -EINVAL;
-       }
-
-       /* Reject writes, which are not page aligned */
-        if (unlikely(NOTALIGNED(to)) || unlikely(NOTALIGNED(total_len))) {
-                DEBUG(MTD_DEBUG_LEVEL0, "onenand_writev_ecc: Attempt to write not page aligned data\n");
-                return -EINVAL;
-        }
-
-       /* Grab the lock and see if the device is available */
-       onenand_get_device(mtd, FL_WRITING);
-
-       /* TODO handling oob */
-
-       /* Loop until all keve's data has been written */
-       len = 0;
-       while (count) {
-               pbuf = this->page_buf;
-               /*
-                * If the given tuple is >= pagesize then
-                * write it out from the iov
-                */
-               if ((vecs->iov_len - len) >= mtd->writesize) {
-                       pbuf = vecs->iov_base + len;
-
-                       len += mtd->writesize;
-
-                       /* Check, if we have to switch to the next tuple */
-                       if (len >= (int) vecs->iov_len) {
-                               vecs++;
-                               len = 0;
-                               count--;
-                       }
-               } else {
-                       int cnt = 0, thislen;
-                       while (cnt < mtd->writesize) {
-                               thislen = min_t(int, mtd->writesize - cnt, vecs->iov_len - len);
-                               memcpy(this->page_buf + cnt, vecs->iov_base + len, thislen);
-                               cnt += thislen;
-                               len += thislen;
-
-                               /* Check, if we have to switch to the next tuple */
-                               if (len >= (int) vecs->iov_len) {
-                                       vecs++;
-                                       len = 0;
-                                       count--;
-                               }
-                       }
-               }
-
-               this->command(mtd, ONENAND_CMD_BUFFERRAM, to, mtd->writesize);
-
-               this->write_bufferram(mtd, ONENAND_DATARAM, pbuf, 0, mtd->writesize);
-               this->write_bufferram(mtd, ONENAND_SPARERAM, ffchars, 0, mtd->oobsize);
-
-               this->command(mtd, ONENAND_CMD_PROG, to, mtd->writesize);
-
-               onenand_update_bufferram(mtd, to, 1);
-
-               ret = this->wait(mtd, FL_WRITING);
-               if (ret) {
-                       DEBUG(MTD_DEBUG_LEVEL0, "onenand_writev_ecc: write failed %d\n", ret);
-                       goto out;
-               }
-
-
-               /* Only check verify write turn on */
-               ret = onenand_verify_page(mtd, (u_char *) pbuf, to);
-               if (ret) {
-                       DEBUG(MTD_DEBUG_LEVEL0, "onenand_writev_ecc: verify failed %d\n", ret);
-                       goto out;
-               }
-
-               written += mtd->writesize;
-
-               to += mtd->writesize;
-       }
-
-out:
-       /* Deselect and wakt up anyone waiting on the device */
-       onenand_release_device(mtd);
-
-       *retlen = written;
-
-       return 0;
-}
-
-/**
- * onenand_writev - [MTD Interface] compabilty function for onenand_writev_ecc
- * @param mtd          MTD device structure
- * @param vecs         the iovectors to write
- * @param count                number of vectors
- * @param to           offset to write to
- * @param retlen       pointer to variable to store the number of written bytes
- *
- * OneNAND write with kvec. This just calls the ecc function
- */
-static int onenand_writev(struct mtd_info *mtd, const struct kvec *vecs,
-       unsigned long count, loff_t to, size_t *retlen)
-{
-       return onenand_writev_ecc(mtd, vecs, count, to, retlen, NULL, NULL);
-}
-
 /**
  * onenand_block_checkbad - [GENERIC] Check if a block is marked bad
  * @param mtd          MTD device structure
@@ -1964,8 +1826,6 @@ int onenand_scan(struct mtd_info *mtd, int maxchips)
 #endif
        mtd->readv = NULL;
        mtd->readv_ecc = NULL;
-       mtd->writev = onenand_writev;
-       mtd->writev_ecc = onenand_writev_ecc;
        mtd->sync = onenand_sync;
        mtd->lock = NULL;
        mtd->unlock = onenand_unlock;
This page took 0.029452 seconds and 5 git commands to generate.