<?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>i.MX ProcessorsのトピックHow to read/write CAAM registers in non-secure world kernel?</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/How-to-read-write-CAAM-registers-in-non-secure-world-kernel/m-p/301860#M38121</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I would like to read/write CAAM's Master Configuration Register (MCFGR) (address space 0x02100000+4) in non-secure world Linux kernel, but it does not function well and always return 0. The code I have used is as follows:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;res = platform_get_resource_byname(pdev,&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IORESOURCE_MEM, "iobase_caam");&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!res) {&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dev_err(dev, "caam: invalid address resource type\n");&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return -ENODEV;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;}&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;ctrl = ioremap(res-&amp;gt;start, SZ_64K); //0x02100000&lt;/STRONG&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;if (ctrl == NULL) {&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dev_err(dev, "caam: ioremap() failed\n");&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return -ENOMEM;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;}&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;...&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;printk("MCFGR: %x\n", ioread32(&amp;amp;ctrl-&amp;gt;mcr)); //0x02100000 + 4&lt;/STRONG&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;setbits32(&amp;amp;topregs-&amp;gt;ctrl.mcr, MCFGR_WDENABLE |(sizeof(dma_addr_t) == sizeof(u64) ? MCFGR_LONG_PTR : 0));&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;printk("MCFGR: %x\n", &lt;EM&gt;ioread32&lt;/EM&gt;(&amp;amp;ctrl-&amp;gt;mcr));&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The returned value is always 0, while the expected value is 0x2140&lt;/P&gt;&lt;P&gt;U-Boot &amp;gt; md.l 0x02100000 6&lt;/P&gt;&lt;P&gt;02100000: 00000000 &lt;STRONG&gt;00002140&lt;/STRONG&gt; 00000000 00000001&amp;nbsp;&amp;nbsp;&amp;nbsp; ....@!..........&lt;/P&gt;&lt;P&gt;02100010: 00000001 00020002&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ........&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have set the CSU_CSL17 register to 0x00ff00ff so that CAAM can be accessible in both non-secure and secure worlds. However, it does not solve the problem. Could anyone please help me figure it out? &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you very much!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 20 May 2014 14:58:56 GMT</pubDate>
    <dc:creator>hhan</dc:creator>
    <dc:date>2014-05-20T14:58:56Z</dc:date>
    <item>
      <title>How to read/write CAAM registers in non-secure world kernel?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-read-write-CAAM-registers-in-non-secure-world-kernel/m-p/301860#M38121</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I would like to read/write CAAM's Master Configuration Register (MCFGR) (address space 0x02100000+4) in non-secure world Linux kernel, but it does not function well and always return 0. The code I have used is as follows:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;res = platform_get_resource_byname(pdev,&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IORESOURCE_MEM, "iobase_caam");&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!res) {&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dev_err(dev, "caam: invalid address resource type\n");&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return -ENODEV;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;}&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;ctrl = ioremap(res-&amp;gt;start, SZ_64K); //0x02100000&lt;/STRONG&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;if (ctrl == NULL) {&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dev_err(dev, "caam: ioremap() failed\n");&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return -ENOMEM;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;}&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;...&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;printk("MCFGR: %x\n", ioread32(&amp;amp;ctrl-&amp;gt;mcr)); //0x02100000 + 4&lt;/STRONG&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;setbits32(&amp;amp;topregs-&amp;gt;ctrl.mcr, MCFGR_WDENABLE |(sizeof(dma_addr_t) == sizeof(u64) ? MCFGR_LONG_PTR : 0));&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;printk("MCFGR: %x\n", &lt;EM&gt;ioread32&lt;/EM&gt;(&amp;amp;ctrl-&amp;gt;mcr));&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The returned value is always 0, while the expected value is 0x2140&lt;/P&gt;&lt;P&gt;U-Boot &amp;gt; md.l 0x02100000 6&lt;/P&gt;&lt;P&gt;02100000: 00000000 &lt;STRONG&gt;00002140&lt;/STRONG&gt; 00000000 00000001&amp;nbsp;&amp;nbsp;&amp;nbsp; ....@!..........&lt;/P&gt;&lt;P&gt;02100010: 00000001 00020002&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ........&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have set the CSU_CSL17 register to 0x00ff00ff so that CAAM can be accessible in both non-secure and secure worlds. However, it does not solve the problem. Could anyone please help me figure it out? &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you very much!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 May 2014 14:58:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-read-write-CAAM-registers-in-non-secure-world-kernel/m-p/301860#M38121</guid>
      <dc:creator>hhan</dc:creator>
      <dc:date>2014-05-20T14:58:56Z</dc:date>
    </item>
    <item>
      <title>Re: How to read/write CAAM registers in non-secure world kernel?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-read-write-CAAM-registers-in-non-secure-world-kernel/m-p/301861#M38122</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Please use Linux driver as examples how to access CAAM registers,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;In particular use test module tcrypt.c. &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;The sources may be found in &lt;BR /&gt; &lt;BR /&gt; &amp;lt;kernel&amp;gt;/drivers/crypto/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;&amp;lt;kernel&amp;gt;/drivers/crypto/caam &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;&lt;BR /&gt; Also please refer to Chapter 51 [CAAM (Cryptographic Acceleration and Assurance&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN style="font-size: 12.0pt; font-family: 'Verdana','sans-serif';"&gt;Module)] of “i.MX_6_Linux_Reference_Manual.pdf”.&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;&lt;A href="https://www.freescale.com/webapp/Download?colCode=L3.10.17_1.0.0_IMX6QDLS_BUNDLE&amp;amp;appType=license&amp;amp;location=null&amp;amp;fasp=1&amp;amp;WT_TYPE=Board%20Support%20Packages&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_FILE_FORMAT=gz&amp;amp;WT_ASSET=Downloads&amp;amp;Parent_nodeId=1337637154535695831062&amp;amp;Parent_pageType=product" title="https://www.freescale.com/webapp/Download?colCode=L3.10.17_1.0.0_IMX6QDLS_BUNDLE&amp;amp;appType=license&amp;amp;location=null&amp;amp;fasp=1&amp;amp;WT_TYPE=Board%20Support%20Packages&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_FILE_FORMAT=gz&amp;amp;WT_ASSET=Downloads&amp;amp;Parent_nodeId=1337637154535695831062&amp;amp;Parent_pageType=product"&gt;https://www.freescale.com/webapp/Download?colCode=L3.10.17_1.0.0_IMX6QDLS_BUNDLE&amp;amp;appType=license&amp;amp;location=null&amp;amp;fasp=1&amp;amp;WT…&lt;/A&gt;&lt;BR /&gt; &lt;BR /&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Yuri&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 May 2014 06:36:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-read-write-CAAM-registers-in-non-secure-world-kernel/m-p/301861#M38122</guid>
      <dc:creator>Yuri</dc:creator>
      <dc:date>2014-05-26T06:36:58Z</dc:date>
    </item>
  </channel>
</rss>

