[MTD] Remove read/write _ecc variants
MTD clients are agnostic of FLASH which needs ECC suppport. Remove the functions and fixup the callers. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
@@ -142,116 +142,6 @@ concat_write(struct mtd_info *mtd, loff_t to, size_t len,
|
||||
return err;
|
||||
}
|
||||
|
||||
static int
|
||||
concat_read_ecc(struct mtd_info *mtd, loff_t from, size_t len,
|
||||
size_t * retlen, u_char * buf, u_char * eccbuf,
|
||||
struct nand_oobinfo *oobsel)
|
||||
{
|
||||
struct mtd_concat *concat = CONCAT(mtd);
|
||||
int err = -EINVAL;
|
||||
int i;
|
||||
|
||||
*retlen = 0;
|
||||
|
||||
for (i = 0; i < concat->num_subdev; i++) {
|
||||
struct mtd_info *subdev = concat->subdev[i];
|
||||
size_t size, retsize;
|
||||
|
||||
if (from >= subdev->size) {
|
||||
/* Not destined for this subdev */
|
||||
size = 0;
|
||||
from -= subdev->size;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (from + len > subdev->size)
|
||||
/* First part goes into this subdev */
|
||||
size = subdev->size - from;
|
||||
else
|
||||
/* Entire transaction goes into this subdev */
|
||||
size = len;
|
||||
|
||||
if (subdev->read_ecc)
|
||||
err = subdev->read_ecc(subdev, from, size,
|
||||
&retsize, buf, eccbuf, oobsel);
|
||||
else
|
||||
err = -EINVAL;
|
||||
|
||||
if (err)
|
||||
break;
|
||||
|
||||
*retlen += retsize;
|
||||
len -= size;
|
||||
if (len == 0)
|
||||
break;
|
||||
|
||||
err = -EINVAL;
|
||||
buf += size;
|
||||
if (eccbuf) {
|
||||
eccbuf += subdev->oobsize;
|
||||
/* in nand.c at least, eccbufs are
|
||||
tagged with 2 (int)eccstatus'; we
|
||||
must account for these */
|
||||
eccbuf += 2 * (sizeof (int));
|
||||
}
|
||||
from = 0;
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
static int
|
||||
concat_write_ecc(struct mtd_info *mtd, loff_t to, size_t len,
|
||||
size_t * retlen, const u_char * buf, u_char * eccbuf,
|
||||
struct nand_oobinfo *oobsel)
|
||||
{
|
||||
struct mtd_concat *concat = CONCAT(mtd);
|
||||
int err = -EINVAL;
|
||||
int i;
|
||||
|
||||
if (!(mtd->flags & MTD_WRITEABLE))
|
||||
return -EROFS;
|
||||
|
||||
*retlen = 0;
|
||||
|
||||
for (i = 0; i < concat->num_subdev; i++) {
|
||||
struct mtd_info *subdev = concat->subdev[i];
|
||||
size_t size, retsize;
|
||||
|
||||
if (to >= subdev->size) {
|
||||
size = 0;
|
||||
to -= subdev->size;
|
||||
continue;
|
||||
}
|
||||
if (to + len > subdev->size)
|
||||
size = subdev->size - to;
|
||||
else
|
||||
size = len;
|
||||
|
||||
if (!(subdev->flags & MTD_WRITEABLE))
|
||||
err = -EROFS;
|
||||
else if (subdev->write_ecc)
|
||||
err = subdev->write_ecc(subdev, to, size,
|
||||
&retsize, buf, eccbuf, oobsel);
|
||||
else
|
||||
err = -EINVAL;
|
||||
|
||||
if (err)
|
||||
break;
|
||||
|
||||
*retlen += retsize;
|
||||
len -= size;
|
||||
if (len == 0)
|
||||
break;
|
||||
|
||||
err = -EINVAL;
|
||||
buf += size;
|
||||
if (eccbuf)
|
||||
eccbuf += subdev->oobsize;
|
||||
to = 0;
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
static int
|
||||
concat_writev(struct mtd_info *mtd, const struct kvec *vecs,
|
||||
unsigned long count, loff_t to, size_t * retlen)
|
||||
@@ -823,10 +713,6 @@ struct mtd_info *mtd_concat_create(struct mtd_info *subdev[], /* subdevices to c
|
||||
concat->mtd.oobsize = subdev[0]->oobsize;
|
||||
concat->mtd.ecctype = subdev[0]->ecctype;
|
||||
concat->mtd.eccsize = subdev[0]->eccsize;
|
||||
if (subdev[0]->read_ecc)
|
||||
concat->mtd.read_ecc = concat_read_ecc;
|
||||
if (subdev[0]->write_ecc)
|
||||
concat->mtd.write_ecc = concat_write_ecc;
|
||||
if (subdev[0]->writev)
|
||||
concat->mtd.writev = concat_writev;
|
||||
if (subdev[0]->read_oob)
|
||||
@@ -869,8 +755,6 @@ struct mtd_info *mtd_concat_create(struct mtd_info *subdev[], /* subdevices to c
|
||||
concat->mtd.oobsize != subdev[i]->oobsize ||
|
||||
concat->mtd.ecctype != subdev[i]->ecctype ||
|
||||
concat->mtd.eccsize != subdev[i]->eccsize ||
|
||||
!concat->mtd.read_ecc != !subdev[i]->read_ecc ||
|
||||
!concat->mtd.write_ecc != !subdev[i]->write_ecc ||
|
||||
!concat->mtd.read_oob != !subdev[i]->read_oob ||
|
||||
!concat->mtd.write_oob != !subdev[i]->write_oob) {
|
||||
kfree(concat);
|
||||
|
Reference in New Issue
Block a user