<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic mpc8349 - local bus on ppc in PowerQUICC Processors</title>
    <link>https://community.nxp.com/t5/PowerQUICC-Processors/mpc8349-local-bus-on-ppc/m-p/132452#M23</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;hello,&lt;BR /&gt;I am currently working on a ppc(mpc8349) platform.&lt;BR /&gt;I modified BR3 and OR3 to enable LCS3 when I'm trying to access a specific address on the local bus in a GPCM mode.&lt;BR /&gt;The problem is that i don't know how to access my device on the local bus.&lt;BR /&gt;I know that i have to change the physical address to virtual address, but what are those functions . . .&lt;BR /&gt;do we have dma function ?should i use virt_to_bus(...) or bus_to_virt(...) ?&lt;BR /&gt;some help could be very appreciated&lt;BR /&gt;Thank you all&lt;DIV&gt;&lt;/DIV&gt;&lt;P&gt;Message Edited by aurelihein on &lt;SPAN class="date_text"&gt;2007-05-02&lt;/SPAN&gt;&lt;SPAN class="time_text"&gt;10:43 AM&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Message Edited by Alban on &lt;SPAN class="date_text"&gt;2007-05-03&lt;/SPAN&gt; &lt;SPAN class="time_text"&gt;05:49 PM&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 02 May 2007 16:43:17 GMT</pubDate>
    <dc:creator>aurelihein</dc:creator>
    <dc:date>2007-05-02T16:43:17Z</dc:date>
    <item>
      <title>mpc8349 - local bus on ppc</title>
      <link>https://community.nxp.com/t5/PowerQUICC-Processors/mpc8349-local-bus-on-ppc/m-p/132452#M23</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;hello,&lt;BR /&gt;I am currently working on a ppc(mpc8349) platform.&lt;BR /&gt;I modified BR3 and OR3 to enable LCS3 when I'm trying to access a specific address on the local bus in a GPCM mode.&lt;BR /&gt;The problem is that i don't know how to access my device on the local bus.&lt;BR /&gt;I know that i have to change the physical address to virtual address, but what are those functions . . .&lt;BR /&gt;do we have dma function ?should i use virt_to_bus(...) or bus_to_virt(...) ?&lt;BR /&gt;some help could be very appreciated&lt;BR /&gt;Thank you all&lt;DIV&gt;&lt;/DIV&gt;&lt;P&gt;Message Edited by aurelihein on &lt;SPAN class="date_text"&gt;2007-05-02&lt;/SPAN&gt;&lt;SPAN class="time_text"&gt;10:43 AM&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Message Edited by Alban on &lt;SPAN class="date_text"&gt;2007-05-03&lt;/SPAN&gt; &lt;SPAN class="time_text"&gt;05:49 PM&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 02 May 2007 16:43:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/PowerQUICC-Processors/mpc8349-local-bus-on-ppc/m-p/132452#M23</guid>
      <dc:creator>aurelihein</dc:creator>
      <dc:date>2007-05-02T16:43:17Z</dc:date>
    </item>
    <item>
      <title>Re: mpc8349 - local bus on ppc</title>
      <link>https://community.nxp.com/t5/PowerQUICC-Processors/mpc8349-local-bus-on-ppc/m-p/132453#M24</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hello again, aurelihein&lt;BR /&gt;&lt;BR /&gt;I send you what I do in a linux 2.4 kernel to access registers in an external PLD connected to the memory bus (I use a mpc860 but I think it work for 83xx)&lt;BR /&gt;&lt;BR /&gt;&amp;lt;pre&amp;gt;&lt;BR /&gt;static void* PldRemap;&lt;BR /&gt;&lt;BR /&gt;static int&lt;BR /&gt;PLDDRV_Initialize(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * Inicialización de la PLD&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(check_mem_region(PLD_ADDRESS, PLD_SIZE) == 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request_mem_region(PLD_ADDRESS, PLD_SIZE, DRV_NAME);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PldRemap = ioremap_nocache(PLD_ADDRESS, PLD_SIZE);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(PldRemap != NULL)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; * now I can read/write the PLD registers using PldRemap&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk("ioremap failed\n");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk("region just used\n");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;static void&lt;BR /&gt;PLDDRV_Finalize(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * Finalización de la PLD&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iounmap(PldRemap);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;release_mem_region(PLD_ADDRESS, PLD_SIZE);&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&amp;lt;/pre&amp;gt;&lt;BR /&gt;&lt;BR /&gt;I hope it help you&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 04 May 2007 16:39:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/PowerQUICC-Processors/mpc8349-local-bus-on-ppc/m-p/132453#M24</guid>
      <dc:creator>fjpse</dc:creator>
      <dc:date>2007-05-04T16:39:09Z</dc:date>
    </item>
    <item>
      <title>Re: mpc8349 - local bus on ppc</title>
      <link>https://community.nxp.com/t5/PowerQUICC-Processors/mpc8349-local-bus-on-ppc/m-p/132454#M25</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;In the previous post,&lt;BR /&gt;&lt;BR /&gt;PLD_ADDRESS is the physical address of the PLD registers.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 04 May 2007 16:41:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/PowerQUICC-Processors/mpc8349-local-bus-on-ppc/m-p/132454#M25</guid>
      <dc:creator>fjpse</dc:creator>
      <dc:date>2007-05-04T16:41:12Z</dc:date>
    </item>
    <item>
      <title>Re: mpc8349 - local bus on ppc</title>
      <link>https://community.nxp.com/t5/PowerQUICC-Processors/mpc8349-local-bus-on-ppc/m-p/132455#M26</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;Thank you fjpse for your answer, i actually find out yersteday how to access to the local bus&lt;BR /&gt;I will try what you did&lt;BR /&gt;The first thing is to configure some registers BRn and ORn to enable the chip select when you are accessing the chip on the local bus, and window some adresses on the mapping with LBLAWBARn and LBLAWARn.&lt;BR /&gt;For example i have a chip at the address 0xf0010000, in GPCM mode, with a 16bits port.&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //VIRT_IMMRBAR is the base register of my ppc&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *(unsigned long*)(VIRT_IMMRBAR + 0x5010) = 0xf00110001;&amp;nbsp; //BR2&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *(unsigned long*)(VIRT_IMMRBAR + 0x5014) = 0xffff80f0;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //OR2&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *(unsigned long*)(VIRT_IMMRBAR + 0x38) = 0xf0010000;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; //LBLAWBAR3&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *(unsigned long*)(VIRT_IMMRBAR + 0x3c) = 0x8000000b;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //LBLAWAR3&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; char *mypointer = ioremap(0xf0010000,1*1024);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; writel(value,mypointer);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; iounmap(mypointer);&lt;BR /&gt;&lt;BR /&gt;I don't know what is the best way between our codes, after that i will have to use some DMA to do some transfers if you have some information i could be very interrested&lt;BR /&gt;&lt;BR /&gt;thanks for your answer,&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 04 May 2007 18:16:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/PowerQUICC-Processors/mpc8349-local-bus-on-ppc/m-p/132455#M26</guid>
      <dc:creator>aurelihein</dc:creator>
      <dc:date>2007-05-04T18:16:38Z</dc:date>
    </item>
  </channel>
</rss>

