<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Hello Anatolij, this is our code, used at University, but again it doesn’t work…<div><br></div><div>How i told, the only information we have about that reg are:</div><div><div><br></div><div><div>Chip select 4 specification:</div><div>Lp_cs4</div><div>bus size: 8 bit</div><div>bus control: 2 wait state R/W ACK disabled</div><div>size allocated: 4 KByte</div><div><br></div><div>Our Register 8 bit LP_cs4 (we want to write)</div><div><br></div><div>cs4 offset: 0x001</div></div></div><div><br></div><div>The code we have used:</div><div><br></div><div>——</div><div><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(120, 73, 42);">#define MBAR_BASE       <span style="color: #272ad8">0xF0000000</span></div><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(120, 73, 42);">#define MALab_MM_START<span class="Apple-tab-span" style="white-space:pre">  </span> <span style="color: #272ad8">0x10020000</span>U</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(120, 73, 42);">#define MALab_MM_END<span class="Apple-tab-span" style="white-space:pre">      </span> <span style="color: #272ad8">0x10030000</span>U</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(120, 73, 42);">#define MALab_MM_SIZE<span class="Apple-tab-span" style="white-space:pre">     </span> <span style="color: #272ad8">0x00010000</span>U</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px;"><br></div><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(120, 73, 42);">#define MALab_DEVICE_NAME<span class="Apple-tab-span" style="white-space:pre">  </span><span style="color: #d12f1b">"MALab"</span></div><div style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px;"><br></div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"><span style="color: #bb2ca2">int</span> init_module(<span style="color: #bb2ca2">void</span>) { ...</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    u16 cs4_start_value;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    u16 cs4_stop_value;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    u32 cs4_enable_value;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    u32 cs0_reg_value;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    u32 cs3_reg_value;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    u32 ipbi_cr_value;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    u32 cs_ctrl_reg_value;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    u8 rvoice_ioaddr_value;</div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px;">    <br class="webkit-block-placeholder"></p><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px;">    <br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(0, 132, 0);"><span style="color: #000000">    </span>// reserve a page of memory for our hardware /proc/iomem</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    <span style="color: #bb2ca2">if</span> ( check_region(MALab_MM_START,MALab_MM_SIZE) ) {</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(209, 47, 27);"><span style="color: #000000">        printk (KERN_ALERT </span>"LED init_module: memory already in use\n"<span style="color: #000000">);</span></div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">        <span style="color: #bb2ca2">return</span> -EBUSY;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    }</div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px;">    <br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    request_region(MALab_MM_START,MALab_MM_SIZE,MALab_DEVICE_NAME);</div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px;">    <br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    <span style="color: #bb2ca2">void</span> __iomem *reg_base = ioremap(MBAR_BASE, <span style="color: #272ad8">0x400</span>);</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    <span style="color: #bb2ca2">void</span> __iomem *cs0_reg   = reg_base + <span style="color: #272ad8">0x0300</span>;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    <span style="color: #bb2ca2">void</span> __iomem *cs1_reg   = reg_base + <span style="color: #272ad8">0x0304</span>;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    <span style="color: #bb2ca2">void</span> __iomem *cs2_reg   = reg_base + <span style="color: #272ad8">0x0308</span>;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    <span style="color: #bb2ca2">void</span> __iomem *cs3_reg   = reg_base + <span style="color: #272ad8">0x030C</span>;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    <span style="color: #bb2ca2">void</span> __iomem *ipbi_cr = reg_base + <span style="color: #272ad8">0x0054</span>;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    <span style="color: #bb2ca2">void</span> __iomem *cs4_start  = reg_base + <span style="color: #272ad8">0x0024</span>;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    <span style="color: #bb2ca2">void</span> __iomem *cs4_stop   = reg_base + <span style="color: #272ad8">0x0028</span>;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    <span style="color: #bb2ca2">void</span> __iomem *cs4_enable   = reg_base + <span style="color: #272ad8">0x0310</span>;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    <span style="color: #bb2ca2">void</span> __iomem *cs_ctrl_reg   = reg_base + <span style="color: #272ad8">0x0318</span>;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    <span style="color: #bb2ca2">void</span> __iomem *rvoice_ioaddr   = ioremap ((<span style="color: #bb2ca2">volatile</span> <span style="color: #bb2ca2">unsigned</span> <span style="color: #bb2ca2">long</span>)(MALab_MM_START), MALab_MM_SIZE);</div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px;">    <br class="webkit-block-placeholder"></p><div style="margin: 0px;"><font face="Menlo"><span style="font-size: 11px;">    printk(KERN_ALERT </span></font><font color="#d12f1b" face="Menlo"><span style="font-size: 11px;">“r_ioaddr: 0x%08x\n"</span></font><font face="Menlo"><span style="font-size: 11px;">, (u32)rvoice_ioaddr);</span></font></div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px;">    <br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(0, 132, 0);"><span style="color: #000000">    </span>//Chip Select 0/Boot Configuration Register: CE=0</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    cs0_reg_value =in_be32(cs0_reg);</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    out_be32(cs0_reg, (cs0_reg_value &= ~<span style="color: #272ad8">0x00010000</span>));</div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px;">    <br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(0, 132, 0);"><span style="color: #000000">    </span>//Chip Select 3 Configuration Register: CE=0</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    cs3_reg_value =in_be32(cs3_reg);</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    out_be32(cs3_reg, (cs3_reg_value &= ~<span style="color: #272ad8">0x00010000</span>));</div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px;">    <br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(0, 132, 0);"><span style="color: #000000">    </span>//enable LocalBus chip select CS4 to hit on our address range</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    ipbi_cr_value=in_be32(ipbi_cr);</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    out_be32(ipbi_cr, (ipbi_cr_value &= <span style="color: #272ad8">0x00100001</span>));</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    out_be32(ipbi_cr, (ipbi_cr_value |= <span style="color: #272ad8">0x00100001</span>));</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    out_be16(cs4_start+<span style="color: #272ad8">2</span>, MALab_MM_START >><span style="color: #272ad8">16</span>);</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    out_be16(cs4_stop+<span style="color: #272ad8">2</span>, MALab_MM_END >><span style="color: #272ad8">16</span>);</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px;"><br></div><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(0, 132, 0);"><span style="color: #000000">    </span>// LocalBus Chip Select 4 Configuration Register</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    out_be32(cs4_enable, <span style="color: #272ad8">0x0002DC00</span>);</div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px;">    <br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(0, 132, 0);"><span style="color: #000000">    </span>//Enable Chip Select Control Register</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    cs_ctrl_reg_value=in_be32(cs_ctrl_reg);</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    out_be32(cs_ctrl_reg, (cs_ctrl_reg_value |= <span style="color: #272ad8">0x01000000</span>));</div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px;">    <br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(0, 132, 0);"><span style="color: #000000">    </span>//start solution A</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    rvoice_ioaddr_value=in_8(rvoice_ioaddr);</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    rvoice_ioaddr_value=<span style="color: #272ad8">0xAA</span>;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(209, 47, 27);"><span style="color: #000000">    printk(</span>"A r_ioaddr_value---before : %x \n"<span style="color: #000000">,in_8(rvoice_ioaddr));</span></div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px;">    <br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    out_8(rvoice_ioaddr, rvoice_ioaddr_value);</div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px;">    <br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(209, 47, 27);"><span style="color: #000000">    printk(</span>"A r_ioaddr_value---after : %x \n"<span style="color: #000000">,in_8(rvoice_ioaddr));</span></div><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(0, 132, 0);"><span style="color: #000000">    </span>//end solution A</div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px;">    <br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(0, 132, 0);"><span style="color: #000000">    </span>//start solution B</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    *(<span style="color: #bb2ca2">volatile</span> u8 *)rvoice_ioaddr = <span style="color: #272ad8">0xAA</span>;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    printk(<span style="color: #d12f1b">"\n B r_ioaddr_value %x\n"</span>,*(<span style="color: #bb2ca2">volatile</span> u8 *)rvoice_ioaddr);</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(0, 132, 0);"><span style="color: #000000">    </span>//end solution B</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px;"><br></div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px;">    <br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; font-family: Menlo;">    ... }</div></div><div>——</div><div><br></div><div>the result is:</div><div><br></div><div><div>rvoice_ioaddr: 0xc9080000</div><div>A rvoice_ioaddr_value---before : 10 </div><div>A rvoice_ioaddr_value---after : 10 </div><div>B rvoice_ioaddr_value 10</div></div><div>——</div><div><br></div><div>we found some information on this post: <a href="http://linuxppc.10917.n7.nabble.com/MPC5200b-kernel-module-memory-mapping-td59862.html">http://linuxppc.10917.n7.nabble.com/MPC5200b-kernel-module-memory-mapping-td59862.html</a></div><div><br></div><div>Thanks again…</div><div><br></div><div>Lorenzo</div><div><br></div></body></html>