aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKyungmin Park <kyungmin.park@samsung.com>2010-04-28 11:46:47 -0400
committerDavid Woodhouse <David.Woodhouse@intel.com>2010-05-13 20:50:04 -0400
commit3328dc315914aa6db486da2ceb021b6f0b36b877 (patch)
tree4fbce95b6e6469600181fad1fd6f900bf5a45766
parent4a8ce0b030716b95004a4ace969953bc3ad7d2fe (diff)
mtd: onenand: add new callback for bufferram read
This patch adds a new callback for the underlying drivers, which is called instead of accessing the buffer ram directly. This callback will be used by Samsung OneNAND driver to implement DMA transfers on S5PC110 SoC. Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
-rw-r--r--drivers/mtd/onenand/onenand_base.c6
-rw-r--r--include/linux/mtd/onenand.h2
2 files changed, 4 insertions, 4 deletions
diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c
index 045811f21497..9827ab779c08 100644
--- a/drivers/mtd/onenand/onenand_base.c
+++ b/drivers/mtd/onenand/onenand_base.c
@@ -1635,7 +1635,6 @@ static int onenand_verify_oob(struct mtd_info *mtd, const u_char *buf, loff_t to
1635static int onenand_verify(struct mtd_info *mtd, const u_char *buf, loff_t addr, size_t len) 1635static int onenand_verify(struct mtd_info *mtd, const u_char *buf, loff_t addr, size_t len)
1636{ 1636{
1637 struct onenand_chip *this = mtd->priv; 1637 struct onenand_chip *this = mtd->priv;
1638 void __iomem *dataram;
1639 int ret = 0; 1638 int ret = 0;
1640 int thislen, column; 1639 int thislen, column;
1641 1640
@@ -1655,10 +1654,9 @@ static int onenand_verify(struct mtd_info *mtd, const u_char *buf, loff_t addr,
1655 1654
1656 onenand_update_bufferram(mtd, addr, 1); 1655 onenand_update_bufferram(mtd, addr, 1);
1657 1656
1658 dataram = this->base + ONENAND_DATARAM; 1657 this->read_bufferram(mtd, ONENAND_DATARAM, this->verify_buf, 0, mtd->writesize);
1659 dataram += onenand_bufferram_offset(mtd, ONENAND_DATARAM);
1660 1658
1661 if (memcmp(buf, dataram + column, thislen)) 1659 if (memcmp(buf, this->verify_buf, thislen))
1662 return -EBADMSG; 1660 return -EBADMSG;
1663 1661
1664 len -= thislen; 1662 len -= thislen;
diff --git a/include/linux/mtd/onenand.h b/include/linux/mtd/onenand.h
index 9b43268224a7..c26ff86ad08a 100644
--- a/include/linux/mtd/onenand.h
+++ b/include/linux/mtd/onenand.h
@@ -212,6 +212,8 @@ struct mtd_partition;
212 212
213struct onenand_platform_data { 213struct onenand_platform_data {
214 void (*mmcontrol)(struct mtd_info *mtd, int sync_read); 214 void (*mmcontrol)(struct mtd_info *mtd, int sync_read);
215 int (*read_bufferram)(struct mtd_info *mtd, int area,
216 unsigned char *buffer, int offset, size_t count);
215 struct mtd_partition *parts; 217 struct mtd_partition *parts;
216 unsigned int nr_parts; 218 unsigned int nr_parts;
217}; 219};