<HTML><BODY style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space; "><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><FONT class="Apple-style-span" color="#3E174C" face="Arial" size="3"><SPAN class="Apple-style-span" style="font-size: 12.8px;">Adding the ability to get a physical address from point() in addition</SPAN></FONT></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><FONT class="Apple-style-span" color="#3E174C" face="Arial" size="3"><SPAN class="Apple-style-span" style="font-size: 12.8px;">to virtual address.  This physical address will be required for axfs</SPAN></FONT></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><FONT class="Apple-style-span" color="#3E174C" face="Arial" size="3"><SPAN class="Apple-style-span" style="font-size: 12.8px;">and cramfs with XIP.</SPAN></FONT></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12.8px/normal Arial; min-height: 15px; "><FONT class="Apple-style-span" color="#3E174C"><BR></FONT></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><FONT class="Apple-style-span" color="#3E174C" face="Arial" size="3"><SPAN class="Apple-style-span" style="font-size: 12.8px;">Signed-off-by: Jared Hulbert &lt;</SPAN></FONT><A href="mailto:jaredeh@gmail.com"><FONT class="Apple-style-span" face="Arial" size="3"><SPAN class="Apple-style-span" style="font-size: 12.8px;"><FONT class="Apple-style-span" color="#0036C1">jaredeh@gmail.com</FONT></SPAN></FONT></A><FONT class="Apple-style-span" color="#3E174C" face="Arial" size="3"><SPAN class="Apple-style-span" style="font-size: 12.8px;">&gt;</SPAN></FONT></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><FONT class="Apple-style-span" color="#3E174C" face="Arial" size="3"><SPAN class="Apple-style-span" style="font-size: 12.8px;">---</SPAN></FONT></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><FONT class="Apple-style-span" color="#3E174C" face="Arial" size="3"><SPAN class="Apple-style-span" style="font-size: 12.8px;">drivers/mtd/chips/cfi_cmdset_0001.c |   13 ++++++++-----</SPAN></FONT></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><FONT class="Apple-style-span" color="#3E174C" face="Arial" size="3"><SPAN class="Apple-style-span" style="font-size: 12.8px;">drivers/mtd/devices/mtdram.c        |   11 +++++++----</SPAN></FONT></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><FONT class="Apple-style-span" color="#3E174C" face="Arial" size="3"><SPAN class="Apple-style-span" style="font-size: 12.8px;">drivers/mtd/devices/phram.c         |   13 +++++++------</SPAN></FONT></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><FONT class="Apple-style-span" color="#3E174C" face="Arial" size="3"><SPAN class="Apple-style-span" style="font-size: 12.8px;">drivers/mtd/devices/pmc551.c        |   27 +++++++++++++++++----------</SPAN></FONT></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><FONT class="Apple-style-span" color="#3E174C" face="Arial" size="3"><SPAN class="Apple-style-span" style="font-size: 12.8px;">drivers/mtd/devices/slram.c         |   14 +++++++++-----</SPAN></FONT></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><FONT class="Apple-style-span" color="#3E174C" face="Arial" size="3"><SPAN class="Apple-style-span" style="font-size: 12.8px;">drivers/mtd/maps/uclinux.c          |    6 ++++--</SPAN></FONT></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><FONT class="Apple-style-span" color="#3E174C" face="Arial" size="3"><SPAN class="Apple-style-span" style="font-size: 12.8px;">drivers/mtd/mtdpart.c               |    8 ++++----</SPAN></FONT></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><FONT class="Apple-style-span" color="#3E174C" face="Arial" size="3"><SPAN class="Apple-style-span" style="font-size: 12.8px;">fs/jffs2/erase.c                    |    6 +++---</SPAN></FONT></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><FONT class="Apple-style-span" color="#3E174C" face="Arial" size="3"><SPAN class="Apple-style-span" style="font-size: 12.8px;">fs/jffs2/readinode.c                |    8 ++++----</SPAN></FONT></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><FONT class="Apple-style-span" color="#3E174C" face="Arial" size="3"><SPAN class="Apple-style-span" style="font-size: 12.8px;">fs/jffs2/scan.c                     |    6 +++---</SPAN></FONT></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><FONT class="Apple-style-span" color="#3E174C" face="Arial" size="3"><SPAN class="Apple-style-span" style="font-size: 12.8px;">include/linux/mtd/mtd.h             |    6 ++++--</SPAN></FONT></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><FONT class="Apple-style-span" color="#3E174C" face="Arial" size="3"><SPAN class="Apple-style-span" style="font-size: 12.8px;">include/linux/mtd/pmc551.h          |    5 +++--</SPAN></FONT></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><FONT class="Apple-style-span" color="#3E174C" face="Arial" size="3"><SPAN class="Apple-style-span" style="font-size: 12.8px;">12 files changed, 73 insertions(+), 50 deletions(-)</SPAN></FONT></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; "><BR></DIV><DIV>diff --git a/drivers/mtd/chips/cfi_cmdset_0001.c b/drivers/mtd/chips/cfi_cmdset_0001.c</DIV><DIV>index da851c2..a4ef81a 100644</DIV><DIV>--- a/drivers/mtd/chips/cfi_cmdset_0001.c</DIV><DIV>+++ b/drivers/mtd/chips/cfi_cmdset_0001.c</DIV><DIV>@@ -82,8 +82,8 @@ static struct mtd_info *cfi_intelext_setup (struct mtd_info *);</DIV><DIV> static int cfi_intelext_partition_fixup(struct mtd_info *, struct cfi_private **);</DIV><DIV> static int cfi_intelext_point (struct mtd_info *mtd, loff_t from, size_t len,</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>     size_t *retlen, u_char **mtdbuf);</DIV><DIV>-static void cfi_intelext_unpoint (struct mtd_info *mtd, u_char *addr, loff_t from,</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>     size_t *retlen, void **virt, resource_size_t *phys);</DIV><DIV>+static void cfi_intelext_unpoint (struct mtd_info *mtd, loff_t from,</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>size_t len);</DIV><DIV> static int chip_ready (struct map_info *map, struct flchip *chip, unsigned long adr, int mode);</DIV><DIV>@@ -1216,7 +1216,8 @@ static int do_point_onechip (struct map_info *map, struct flchip *chip, loff_t a</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>return ret;</DIV><DIV> }</DIV><DIV>-static int cfi_intelext_point (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char **mtdbuf)</DIV><DIV>+static int cfi_intelext_point (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen,</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>void **virt, resource_size_t *phys)</DIV><DIV> {</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>struct map_info *map = mtd-&gt;priv;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>struct cfi_private *cfi = map-&gt;fldrv_priv;</DIV><DIV>@@ -1233,8 +1234,10 @@ static int cfi_intelext_point (struct mtd_info *mtd, loff_t from, size_t len, si</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>chipnum = (from &gt;&gt; cfi-&gt;chipshift);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>ofs = from - (chipnum &lt;&lt; cfi-&gt;chipshift);</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>*mtdbuf = (void *)map-&gt;virt + cfi-&gt;chips[chipnum].start + ofs;</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>*virt = map-&gt;virt + cfi-&gt;chips[chipnum].start + ofs;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>*retlen = 0;</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>if (phys)</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>*phys = map-&gt;phys + cfi-&gt;chips[chipnum].start + ofs;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>while (len) {</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>unsigned long thislen;</DIV><DIV>@@ -1267,7 +1270,7 @@ static int cfi_intelext_point (struct mtd_info *mtd, loff_t from, size_t len, si</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>return 0;</DIV><DIV> }</DIV><DIV>-static void cfi_intelext_unpoint (struct mtd_info *mtd, u_char *addr, loff_t from, size_t len)</DIV><DIV>+static void cfi_intelext_unpoint (struct mtd_info *mtd, loff_t from, size_t len)</DIV><DIV> {</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>struct map_info *map = mtd-&gt;priv;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>struct cfi_private *cfi = map-&gt;fldrv_priv;</DIV><DIV>diff --git a/drivers/mtd/devices/mtdram.c b/drivers/mtd/devices/mtdram.c</DIV><DIV>index e427c82..fe39a9d 100644</DIV><DIV>--- a/drivers/mtd/devices/mtdram.c</DIV><DIV>+++ b/drivers/mtd/devices/mtdram.c</DIV><DIV>@@ -47,18 +47,21 @@ static int ram_erase(struct mtd_info *mtd, struct erase_info *instr)</DIV><DIV> }</DIV><DIV> static int ram_point(struct mtd_info *mtd, loff_t from, size_t len,</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>size_t *retlen, u_char **mtdbuf)</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>size_t *retlen, void **virt, resource_size_t *phys)</DIV><DIV> {</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>if (from + len &gt; mtd-&gt;size)</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>return -EINVAL;</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>*mtdbuf = mtd-&gt;priv + from;</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>/* can we return a physical address with this driver? */</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>if (phys)</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>return -EINVAL;</DIV><DIV>+</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>*virt = mtd-&gt;priv + from;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>*retlen = len;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>return 0;</DIV><DIV> }</DIV><DIV>-static void ram_unpoint(struct mtd_info *mtd, u_char * addr, loff_t from,</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>size_t len)</DIV><DIV>+static void ram_unpoint(struct mtd_info *mtd, loff_t from, size_t len)</DIV><DIV> {</DIV><DIV> }</DIV><DIV>diff --git a/drivers/mtd/devices/phram.c b/drivers/mtd/devices/phram.c</DIV><DIV>index 56cc1ca..06d1052 100644</DIV><DIV>--- a/drivers/mtd/devices/phram.c</DIV><DIV>+++ b/drivers/mtd/devices/phram.c</DIV><DIV>@@ -57,20 +57,21 @@ static int phram_erase(struct mtd_info *mtd, struct erase_info *instr)</DIV><DIV> }</DIV><DIV> static int phram_point(struct mtd_info *mtd, loff_t from, size_t len,</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>size_t *retlen, u_char **mtdbuf)</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>size_t *retlen, void **virt, resource_size_t *phys)</DIV><DIV> {</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>u_char *start = mtd-&gt;priv;</DIV><DIV>-</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>if (from + len &gt; mtd-&gt;size)</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>return -EINVAL;</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>*mtdbuf = start + from;</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>/* can we return a physical address with this driver? */</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>if (phys)</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>return -EINVAL;</DIV><DIV>+</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>*virt = mtd-&gt;priv + from;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>*retlen = len;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>return 0;</DIV><DIV> }</DIV><DIV>-static void phram_unpoint(struct mtd_info *mtd, u_char *addr, loff_t from,</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>size_t len)</DIV><DIV>+static void phram_unpoint(struct mtd_info *mtd, loff_t from, size_t len)</DIV><DIV> {</DIV><DIV> }</DIV><DIV>diff --git a/drivers/mtd/devices/pmc551.c b/drivers/mtd/devices/pmc551.c</DIV><DIV>index 7060a08..f82ba78 100644</DIV><DIV>--- a/drivers/mtd/devices/pmc551.c</DIV><DIV>+++ b/drivers/mtd/devices/pmc551.c</DIV><DIV>@@ -134,7 +134,8 @@ static int pmc551_erase(struct mtd_info *mtd, struct erase_info *instr)</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>eoff_lo = end &amp; (priv-&gt;asize - 1);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>soff_lo = instr-&gt;addr &amp; (priv-&gt;asize - 1);</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>pmc551_point(mtd, instr-&gt;addr, instr-&gt;len, &amp;retlen, &amp;ptr);</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>pmc551_point(mtd, instr-&gt;addr, instr-&gt;len, &amp;retlen, </DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>     (void **)&amp;ptr, NULL);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>if (soff_hi == eoff_hi || mtd-&gt;size == priv-&gt;asize) {</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>/* The whole thing fits within one access, so just one shot</DIV><DIV>@@ -154,7 +155,8 @@ static int pmc551_erase(struct mtd_info *mtd, struct erase_info *instr)</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>}</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>soff_hi += priv-&gt;asize;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>pmc551_point(mtd, (priv-&gt;base_map0 | soff_hi),</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">                                </SPAN>     priv-&gt;asize, &amp;retlen, &amp;ptr);</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                                </SPAN>     priv-&gt;asize, &amp;retlen,</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                                </SPAN>     (void **)&amp;ptr, NULL);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>}</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>memset(ptr, 0xff, eoff_lo);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>}</DIV><DIV>@@ -170,7 +172,7 @@ static int pmc551_erase(struct mtd_info *mtd, struct erase_info *instr)</DIV><DIV> }</DIV><DIV> static int pmc551_point(struct mtd_info *mtd, loff_t from, size_t len,</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>size_t * retlen, u_char ** mtdbuf)</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>size_t * retlen, void **virt, resource_size_t *phys)</DIV><DIV> {</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>struct mypriv *priv = mtd-&gt;priv;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>u32 soff_hi;</DIV><DIV>@@ -188,6 +190,10 @@ static int pmc551_point(struct mtd_info *mtd, loff_t from, size_t len,</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>return -EINVAL;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>}</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>/* can we return a physical address with this driver? */</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>if (phys)</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>return -EINVAL;</DIV><DIV>+</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>soff_hi = from &amp; ~(priv-&gt;asize - 1);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>soff_lo = from &amp; (priv-&gt;asize - 1);</DIV><DIV>@@ -198,13 +204,12 @@ static int pmc551_point(struct mtd_info *mtd, loff_t from, size_t len,</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>priv-&gt;curr_map0 = soff_hi;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>}</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>*mtdbuf = priv-&gt;start + soff_lo;</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>*virt = priv-&gt;start + soff_lo;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>*retlen = len;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>return 0;</DIV><DIV> }</DIV><DIV>-static void pmc551_unpoint(struct mtd_info *mtd, u_char * addr, loff_t from,</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>   size_t len)</DIV><DIV>+static void pmc551_unpoint(struct mtd_info *mtd, loff_t from, size_t len)</DIV><DIV> {</DIV><DIV> #ifdef CONFIG_MTD_PMC551_DEBUG</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>printk(KERN_DEBUG "pmc551_unpoint()\n");</DIV><DIV>@@ -242,7 +247,7 @@ static int pmc551_read(struct mtd_info *mtd, loff_t from, size_t len,</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>soff_lo = from &amp; (priv-&gt;asize - 1);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>eoff_lo = end &amp; (priv-&gt;asize - 1);</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>pmc551_point(mtd, from, len, retlen, &amp;ptr);</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>pmc551_point(mtd, from, len, retlen, (void **)&amp;ptr, NULL);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>if (soff_hi == eoff_hi) {</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>/* The whole thing fits within one access, so just one shot</DIV><DIV>@@ -263,7 +268,8 @@ static int pmc551_read(struct mtd_info *mtd, loff_t from, size_t len,</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                                </SPAN>goto out;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>}</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>soff_hi += priv-&gt;asize;</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>pmc551_point(mtd, soff_hi, priv-&gt;asize, retlen, &amp;ptr);</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>pmc551_point(mtd, soff_hi, priv-&gt;asize, retlen,</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN> <SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>     (void **)&amp;ptr, NULL);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>}</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>memcpy(copyto, ptr, eoff_lo);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>copyto += eoff_lo;</DIV><DIV>@@ -308,7 +314,7 @@ static int pmc551_write(struct mtd_info *mtd, loff_t to, size_t len,</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>soff_lo = to &amp; (priv-&gt;asize - 1);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>eoff_lo = end &amp; (priv-&gt;asize - 1);</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>pmc551_point(mtd, to, len, retlen, &amp;ptr);</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>pmc551_point(mtd, to, len, retlen, (void **)&amp;ptr, NULL);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>if (soff_hi == eoff_hi) {</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>/* The whole thing fits within one access, so just one shot</DIV><DIV>@@ -329,7 +335,8 @@ static int pmc551_write(struct mtd_info *mtd, loff_t to, size_t len,</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                                </SPAN>goto out;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>}</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>soff_hi += priv-&gt;asize;</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>pmc551_point(mtd, soff_hi, priv-&gt;asize, retlen, &amp;ptr);</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>pmc551_point(mtd, soff_hi, priv-&gt;asize, retlen,</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                                </SPAN>     (void **)&amp;ptr, NULL);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>}</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>memcpy(ptr, copyfrom, eoff_lo);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>copyfrom += eoff_lo;</DIV><DIV>diff --git a/drivers/mtd/devices/slram.c b/drivers/mtd/devices/slram.c</DIV><DIV>index d293add..110884f 100644</DIV><DIV>--- a/drivers/mtd/devices/slram.c</DIV><DIV>+++ b/drivers/mtd/devices/slram.c</DIV><DIV>@@ -76,8 +76,8 @@ static char *map;</DIV><DIV> static slram_mtd_list_t *slram_mtdlist = NULL;</DIV><DIV> static int slram_erase(struct mtd_info *, struct erase_info *);</DIV><DIV>-static int slram_point(struct mtd_info *, loff_t, size_t, size_t *, u_char **);</DIV><DIV>-static void slram_unpoint(struct mtd_info *, u_char *, loff_t,<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>size_t);</DIV><DIV>+static int slram_point(struct mtd_info *, loff_t, size_t, size_t *, void **, resource_size_t *);</DIV><DIV>+static void slram_unpoint(struct mtd_info *, loff_t, size_t);</DIV><DIV> static int slram_read(struct mtd_info *, loff_t, size_t, size_t *, u_char *);</DIV><DIV> static int slram_write(struct mtd_info *, loff_t, size_t, size_t *, const u_char *);</DIV><DIV>@@ -104,19 +104,23 @@ static int slram_erase(struct mtd_info *mtd, struct erase_info *instr)</DIV><DIV> }</DIV><DIV> static int slram_point(struct mtd_info *mtd, loff_t from, size_t len,</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>size_t *retlen, u_char **mtdbuf)</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>size_t *retlen, void **virt, resource_size_t *phys)</DIV><DIV> {</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>slram_priv_t *priv = mtd-&gt;priv;</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>/* can we return a physical address with this driver? */</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>if (phys)</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>return -EINVAL;</DIV><DIV>+</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>if (from + len &gt; mtd-&gt;size)</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>return -EINVAL;</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>*mtdbuf = priv-&gt;start + from;</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>*virt = priv-&gt;start + from;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>*retlen = len;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>return(0);</DIV><DIV> }</DIV><DIV>-static void slram_unpoint(struct mtd_info *mtd, u_char *addr, loff_t from, size_t len)</DIV><DIV>+static void slram_unpoint(struct mtd_info *mtd, loff_t from, size_t len)</DIV><DIV> {</DIV><DIV> }</DIV><DIV>diff --git a/drivers/mtd/maps/uclinux.c b/drivers/mtd/maps/uclinux.c</DIV><DIV>index 14ffb1a..c42f4b8 100644</DIV><DIV>--- a/drivers/mtd/maps/uclinux.c</DIV><DIV>+++ b/drivers/mtd/maps/uclinux.c</DIV><DIV>@@ -40,10 +40,12 @@ struct mtd_partition uclinux_romfs[] = {</DIV><DIV> /****************************************************************************/</DIV><DIV> int uclinux_point(struct mtd_info *mtd, loff_t from, size_t len,</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>size_t *retlen, u_char **mtdbuf)</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>size_t *retlen, void **virt, resource_size_t *phys)</DIV><DIV> {</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>struct map_info *map = mtd-&gt;priv;</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>*mtdbuf = (u_char *) (map-&gt;virt + ((int) from));</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>*virt = map-&gt;virt + from;</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>if (phys)</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>*phys = map-&gt;phys + from;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>*retlen = len;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>return(0);</DIV><DIV> }</DIV><DIV>diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c</DIV><DIV>index 6174a97..5f62018 100644</DIV><DIV>--- a/drivers/mtd/mtdpart.c</DIV><DIV>+++ b/drivers/mtd/mtdpart.c</DIV><DIV>@@ -68,7 +68,7 @@ static int part_read (struct mtd_info *mtd, loff_t from, size_t len,</DIV><DIV> }</DIV><DIV> static int part_point (struct mtd_info *mtd, loff_t from, size_t len,</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>size_t *retlen, u_char **buf)</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>size_t *retlen, void **virt, resource_size_t *phys)</DIV><DIV> {</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>struct mtd_part *part = PART(mtd);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>if (from &gt;= mtd-&gt;size)</DIV><DIV>@@ -76,14 +76,14 @@ static int part_point (struct mtd_info *mtd, loff_t from, size_t len,</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>else if (from + len &gt; mtd-&gt;size)</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>len = mtd-&gt;size - from;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>return part-&gt;master-&gt;point (part-&gt;master, from + part-&gt;offset,</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">                                </SPAN>    len, retlen, buf);</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                                </SPAN>    len, retlen, virt, phys);</DIV><DIV> }</DIV><DIV>-static void part_unpoint (struct mtd_info *mtd, u_char *addr, loff_t from, size_t len)</DIV><DIV>+static void part_unpoint (struct mtd_info *mtd, loff_t from, size_t len)</DIV><DIV> {</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>struct mtd_part *part = PART(mtd);</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>part-&gt;master-&gt;unpoint (part-&gt;master, addr, from + part-&gt;offset, len);</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>part-&gt;master-&gt;unpoint (part-&gt;master, from + part-&gt;offset, len);</DIV><DIV> }</DIV><DIV> static int part_read_oob(struct mtd_info *mtd, loff_t from,</DIV><DIV>diff --git a/fs/jffs2/erase.c b/fs/jffs2/erase.c</DIV><DIV>index a1db918..f6c6fe2 100644</DIV><DIV>--- a/fs/jffs2/erase.c</DIV><DIV>+++ b/fs/jffs2/erase.c</DIV><DIV>@@ -332,7 +332,7 @@ static int jffs2_block_check_erase(struct jffs2_sb_info *c, struct jffs2_erasebl</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>if (c-&gt;mtd-&gt;point) {</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>unsigned long *wordebuf;</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>ret = c-&gt;mtd-&gt;point(c-&gt;mtd, jeb-&gt;offset, c-&gt;sector_size, &amp;retlen, (unsigned char **)&amp;ebuf);</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>ret = c-&gt;mtd-&gt;point(c-&gt;mtd, jeb-&gt;offset, c-&gt;sector_size, &amp;retlen, &amp;ebuf, NULL);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>if (ret) {</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>D1(printk(KERN_DEBUG "MTD point failed %d\n", ret));</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>goto do_flash_read;</DIV><DIV>@@ -340,7 +340,7 @@ static int jffs2_block_check_erase(struct jffs2_sb_info *c, struct jffs2_erasebl</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>if (retlen &lt; c-&gt;sector_size) {</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>/* Don't muck about if it won't let us point to the whole erase sector */</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>D1(printk(KERN_DEBUG "MTD point returned len too short: 0x%zx\n", retlen));</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>c-&gt;mtd-&gt;unpoint(c-&gt;mtd, ebuf, jeb-&gt;offset, retlen);</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>c-&gt;mtd-&gt;unpoint(c-&gt;mtd, jeb-&gt;offset, retlen);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>goto do_flash_read;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>}</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>wordebuf = ebuf-sizeof(*wordebuf);</DIV><DIV>@@ -349,7 +349,7 @@ static int jffs2_block_check_erase(struct jffs2_sb_info *c, struct jffs2_erasebl</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>   if (*++wordebuf != ~0)</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>   break;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>} while(--retlen);</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>c-&gt;mtd-&gt;unpoint(c-&gt;mtd, ebuf, jeb-&gt;offset, c-&gt;sector_size);</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>c-&gt;mtd-&gt;unpoint(c-&gt;mtd, jeb-&gt;offset, c-&gt;sector_size);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>if (retlen)</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>printk(KERN_WARNING "Newly-erased block contained word 0x%lx at offset 0x%08tx\n",</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>       *wordebuf, jeb-&gt;offset + c-&gt;sector_size-retlen*sizeof(*wordebuf));</DIV><DIV>diff --git a/fs/jffs2/readinode.c b/fs/jffs2/readinode.c</DIV><DIV>index 2eae5d2..d782ffa 100644</DIV><DIV>--- a/fs/jffs2/readinode.c</DIV><DIV>+++ b/fs/jffs2/readinode.c</DIV><DIV>@@ -62,10 +62,10 @@ static int check_node_data(struct jffs2_sb_info *c, struct jffs2_tmp_dnode_info</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>/* TODO: instead, incapsulate point() stuff to jffs2_flash_read(),</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN> * adding and jffs2_flash_read_end() interface. */</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>if (c-&gt;mtd-&gt;point) {</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>err = c-&gt;mtd-&gt;point(c-&gt;mtd, ofs, len, &amp;retlen, &amp;buffer);</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>err = c-&gt;mtd-&gt;point(c-&gt;mtd, ofs, len, &amp;retlen, (void **)&amp;buffer, NULL);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>if (!err &amp;&amp; retlen &lt; tn-&gt;csize) {</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>JFFS2_WARNING("MTD point returned len too short: %zu instead of %u.\n", retlen, tn-&gt;csize);</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>c-&gt;mtd-&gt;unpoint(c-&gt;mtd, buffer, ofs, retlen);</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>c-&gt;mtd-&gt;unpoint(c-&gt;mtd, ofs, retlen);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>} else if (err)</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>JFFS2_WARNING("MTD point failed: error code %d.\n", err);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>else</DIV><DIV>@@ -99,7 +99,7 @@ static int check_node_data(struct jffs2_sb_info *c, struct jffs2_tmp_dnode_info</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>kfree(buffer);</DIV><DIV> #ifndef __ECOS</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>else</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>c-&gt;mtd-&gt;unpoint(c-&gt;mtd, buffer, ofs, len);</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>c-&gt;mtd-&gt;unpoint(c-&gt;mtd, ofs, len);</DIV><DIV> #endif</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>if (crc != tn-&gt;data_crc) {</DIV><DIV>@@ -135,7 +135,7 @@ free_out:</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>kfree(buffer);</DIV><DIV> #ifndef __ECOS</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>else</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>c-&gt;mtd-&gt;unpoint(c-&gt;mtd, buffer, ofs, len);</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>c-&gt;mtd-&gt;unpoint(c-&gt;mtd, ofs, len);</DIV><DIV> #endif</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>return err;</DIV><DIV> }</DIV><DIV>diff --git a/fs/jffs2/scan.c b/fs/jffs2/scan.c</DIV><DIV>index 272872d..0b7edc8 100644</DIV><DIV>--- a/fs/jffs2/scan.c</DIV><DIV>+++ b/fs/jffs2/scan.c</DIV><DIV>@@ -97,11 +97,11 @@ int jffs2_scan_medium(struct jffs2_sb_info *c)</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>size_t pointlen;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>if (c-&gt;mtd-&gt;point) {</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>ret = c-&gt;mtd-&gt;point (c-&gt;mtd, 0, c-&gt;mtd-&gt;size, &amp;pointlen, &amp;flashbuf);</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>ret = c-&gt;mtd-&gt;point(c-&gt;mtd, 0, c-&gt;mtd-&gt;size, &amp;pointlen, (void **)&amp;flashbuf, NULL);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>if (!ret &amp;&amp; pointlen &lt; c-&gt;mtd-&gt;size) {</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>/* Don't muck about if it won't let us point to the whole flash */</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>D1(printk(KERN_DEBUG "MTD point returned len too short: 0x%zx\n", pointlen));</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>c-&gt;mtd-&gt;unpoint(c-&gt;mtd, flashbuf, 0, pointlen);</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>c-&gt;mtd-&gt;unpoint(c-&gt;mtd, 0, pointlen);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>flashbuf = NULL;</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>}</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>if (ret)</DIV><DIV>@@ -267,7 +267,7 @@ int jffs2_scan_medium(struct jffs2_sb_info *c)</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>kfree(flashbuf);</DIV><DIV> #ifndef __ECOS</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>else</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>c-&gt;mtd-&gt;unpoint(c-&gt;mtd, flashbuf, 0, c-&gt;mtd-&gt;size);</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>c-&gt;mtd-&gt;unpoint(c-&gt;mtd, 0, c-&gt;mtd-&gt;size);</DIV><DIV> #endif</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>if (s)</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>kfree(s);</DIV><DIV>diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h</DIV><DIV>index 783fc98..041ce23 100644</DIV><DIV>--- a/include/linux/mtd/mtd.h</DIV><DIV>+++ b/include/linux/mtd/mtd.h</DIV><DIV>@@ -143,10 +143,12 @@ struct mtd_info {</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>int (*erase) (struct mtd_info *mtd, struct erase_info *instr);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>/* This stuff for eXecute-In-Place */</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>int (*point) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char **mtdbuf);</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>/* phys is optional and may be set to NULL */</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>int (*point) (struct mtd_info *mtd, loff_t from, size_t len,</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>size_t *retlen, void **virt, resource_size_t *phys);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>/* We probably shouldn't allow XIP if the unpoint isn't a NULL */</DIV><DIV>-<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>void (*unpoint) (struct mtd_info *mtd, u_char * addr, loff_t from, size_t len);</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>void (*unpoint) (struct mtd_info *mtd, loff_t from, size_t len);</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>int (*read) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf);</DIV><DIV>diff --git a/include/linux/mtd/pmc551.h b/include/linux/mtd/pmc551.h</DIV><DIV>index a7f6d20..fd139e9 100644</DIV><DIV>--- a/include/linux/mtd/pmc551.h</DIV><DIV>+++ b/include/linux/mtd/pmc551.h</DIV><DIV>@@ -36,8 +36,9 @@ struct mypriv {</DIV><DIV>  * Function Prototypes</DIV><DIV>  */</DIV><DIV> static int pmc551_erase(struct mtd_info *, struct erase_info *);</DIV><DIV>-static void pmc551_unpoint(struct mtd_info *, u_char *, loff_t, size_t);</DIV><DIV>-static int pmc551_point (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char **mtdbuf);</DIV><DIV>+static void pmc551_unpoint(struct mtd_info *, loff_t, size_t);</DIV><DIV>+static int pmc551_point (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, void **virt,</DIV><DIV>+<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>resource_size_t *phys);</DIV><DIV> static int pmc551_read(struct mtd_info *, loff_t, size_t, size_t *, u_char *);</DIV><DIV> static int pmc551_write(struct mtd_info *, loff_t, size_t, size_t *, const u_char *);</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; "></DIV></BODY></HTML>