<?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 iMX6Q SDRAM Size Change in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/iMX6Q-SDRAM-Size-Change/m-p/1478550#M191816</link>
    <description>&lt;P&gt;&lt;SPAN&gt;I am using MT41K128M16JT memory from Micron. However, RAM capacity is not allocated from 1GB to 2GB. Please consider it.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I wrote it based on the wandboard.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;U-boot 2015-04&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;asm/arch/clock.h&amp;gt;&lt;BR /&gt;#include &amp;lt;asm/arch/imx-regs.h&amp;gt;&lt;BR /&gt;#include &amp;lt;asm/arch/iomux.h&amp;gt;&lt;BR /&gt;#include &amp;lt;asm/arch/mx6-pins.h&amp;gt;&lt;BR /&gt;#include &amp;lt;asm/errno.h&amp;gt;&lt;BR /&gt;#include &amp;lt;asm/gpio.h&amp;gt;&lt;BR /&gt;#include &amp;lt;asm/imx-common/iomux-v3.h&amp;gt;&lt;BR /&gt;#include &amp;lt;asm/imx-common/video.h&amp;gt;&lt;BR /&gt;#include &amp;lt;mmc.h&amp;gt;&lt;BR /&gt;#include &amp;lt;fsl_esdhc.h&amp;gt;&lt;BR /&gt;#include &amp;lt;asm/arch/crm_regs.h&amp;gt;&lt;BR /&gt;#include &amp;lt;asm/io.h&amp;gt;&lt;BR /&gt;#include &amp;lt;asm/arch/sys_proto.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;common.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;spl.h&amp;gt;&lt;/P&gt;&lt;P&gt;#ifdef CONFIG_APX_WATCHDOG&lt;BR /&gt;#include &amp;lt;watchdog.h&amp;gt;&lt;BR /&gt;#endif&lt;/P&gt;&lt;P&gt;DECLARE_GLOBAL_DATA_PTR;&lt;/P&gt;&lt;P&gt;#if defined(CONFIG_SPL_BUILD)&lt;BR /&gt;#include &amp;lt;asm/arch/mx6-ddr.h&amp;gt;&lt;/P&gt;&lt;P&gt;/*&lt;BR /&gt;* Driving strength:&lt;BR /&gt;* 0x30 == 40 Ohm&lt;BR /&gt;* 0x28 == 48 Ohm&lt;BR /&gt;*/&lt;BR /&gt;#define IMX6DQ_DRIVE_STRENGTH 0x30&lt;/P&gt;&lt;P&gt;/* configure MX6Q/DUAL mmdc DDR io registers */&lt;BR /&gt;static struct mx6dq_iomux_ddr_regs mx6dq_ddr_ioregs = {&lt;BR /&gt;.dram_sdclk_0 = 0x00020030,&lt;BR /&gt;.dram_sdclk_1 = 0x00020030,&lt;BR /&gt;.dram_cas = 0x00020030,&lt;BR /&gt;.dram_ras = 0x00020030,&lt;BR /&gt;.dram_reset = 0x00020030,&lt;BR /&gt;.dram_sdcke0 = 0x00003000,&lt;BR /&gt;.dram_sdcke1 = 0x00003000,&lt;BR /&gt;.dram_sdba2 = 0x00000000,&lt;BR /&gt;.dram_sdodt0 = 0x00003030,&lt;BR /&gt;.dram_sdodt1 = 0x00003030,&lt;BR /&gt;.dram_sdqs0 = 0x00000030,&lt;BR /&gt;.dram_sdqs1 = 0x00000030,&lt;BR /&gt;.dram_sdqs2 = 0x00000030,&lt;BR /&gt;.dram_sdqs3 = 0x00000030,&lt;BR /&gt;.dram_sdqs4 = 0x00000030,&lt;BR /&gt;.dram_sdqs5 = 0x00000030,&lt;BR /&gt;.dram_sdqs6 = 0x00000030,&lt;BR /&gt;.dram_sdqs7 = 0x00000030,&lt;BR /&gt;.dram_dqm0 = 0x00020030,&lt;BR /&gt;.dram_dqm1 = 0x00020030,&lt;BR /&gt;.dram_dqm2 = 0x00020030,&lt;BR /&gt;.dram_dqm3 = 0x00020030,&lt;BR /&gt;.dram_dqm4 = 0x00020030,&lt;BR /&gt;.dram_dqm5 = 0x00020030,&lt;BR /&gt;.dram_dqm6 = 0x00020030,&lt;BR /&gt;.dram_dqm7 = 0x00020030,&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;/* configure MX6Q/DUAL mmdc GRP io registers */&lt;BR /&gt;static struct mx6dq_iomux_grp_regs mx6dq_grp_ioregs = {&lt;BR /&gt;.grp_ddr_type = 0x000C0000,&lt;BR /&gt;.grp_ddrmode_ctl = 0x00020000,&lt;BR /&gt;.grp_ddrpke = 0x00000000,&lt;BR /&gt;.grp_addds = 0x00000030,&lt;BR /&gt;.grp_ctlds = 0x00000030,&lt;BR /&gt;.grp_ddrmode = 0x00020000,&lt;BR /&gt;.grp_b0ds = 0x00000030,&lt;BR /&gt;.grp_b1ds = 0x00000030,&lt;BR /&gt;.grp_b2ds = 0x00000030,&lt;BR /&gt;.grp_b3ds = 0x00000030,&lt;BR /&gt;.grp_b4ds = 0x00000030,&lt;BR /&gt;.grp_b5ds = 0x00000030,&lt;BR /&gt;.grp_b6ds = 0x00000030,&lt;BR /&gt;.grp_b7ds = 0x00000030,&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/* MT41K128M16JT-125 */&lt;BR /&gt;static struct mx6_ddr3_cfg mt41k128m16jt_125 = {&lt;BR /&gt;.mem_speed = 1600,&lt;BR /&gt;.density = 2,&lt;BR /&gt;.width = 16,&lt;BR /&gt;.banks = 8,&lt;BR /&gt;.rowaddr = 14,&lt;BR /&gt;.coladdr = 10,&lt;BR /&gt;.pagesz = 2,&lt;BR /&gt;.trcd = 1375,&lt;BR /&gt;.trcmin = 4875,&lt;BR /&gt;.trasmin = 3500,&lt;BR /&gt;.SRT = 0,&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;static struct mx6_mmdc_calibration mx6q_2g_mmdc_calib = {&lt;BR /&gt;.p0_mpwldectrl0 = 0x001F001F,&lt;BR /&gt;.p0_mpwldectrl1 = 0x001F001F,&lt;BR /&gt;.p1_mpwldectrl0 = 0x00440044,&lt;BR /&gt;.p1_mpwldectrl1 = 0x00440044,&lt;BR /&gt;.p0_mpdgctrl0 = 0x434B0350,&lt;BR /&gt;.p0_mpdgctrl1 = 0x034C0359,&lt;BR /&gt;.p1_mpdgctrl0 = 0x434B0350,&lt;BR /&gt;.p1_mpdgctrl1 = 0x03650348,&lt;BR /&gt;.p0_mprddlctl = 0x4436383B,&lt;BR /&gt;.p1_mprddlctl = 0x39393341,&lt;BR /&gt;.p0_mpwrdlctl = 0x35373933,&lt;BR /&gt;.p1_mpwrdlctl = 0x48254A36,&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;/* DDR 64bit 2GB */&lt;BR /&gt;static struct mx6_ddr_sysinfo mem_qdl = {&lt;BR /&gt;.dsize = 2,&lt;BR /&gt;.cs_density = 32,&lt;BR /&gt;.ncs = 1,&lt;BR /&gt;.cs1_mirror = 0,&lt;BR /&gt;.rtt_wr = 2, /* RZQ = 120 */&lt;BR /&gt;.rtt_nom = 2, /* RZQ = 120 */&lt;BR /&gt;.walat = 1,&lt;BR /&gt;.ralat = 5,&lt;BR /&gt;.mif3_mode = 3,&lt;BR /&gt;.bi_on = 1,&lt;BR /&gt;.sde_to_rst = 0x10,&lt;BR /&gt;.rst_to_cke = 0x23,&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;static void spl_dram_init(void)&lt;BR /&gt;{&lt;BR /&gt;mx6dq_dram_iocfg(64, &amp;amp;mx6dq_ddr_ioregs, &amp;amp;mx6dq_grp_ioregs);&lt;BR /&gt;mx6_dram_cfg(&amp;amp;mem_qdl, &amp;amp;mx6q_2g_mmdc_calib, &amp;amp;mt41k128m16jt_125);&lt;BR /&gt;udelay(100);&lt;BR /&gt;}&lt;/P&gt;</description>
    <pubDate>Thu, 23 Jun 2022 00:14:20 GMT</pubDate>
    <dc:creator>DaengCheong</dc:creator>
    <dc:date>2022-06-23T00:14:20Z</dc:date>
    <item>
      <title>iMX6Q SDRAM Size Change</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/iMX6Q-SDRAM-Size-Change/m-p/1478550#M191816</link>
      <description>&lt;P&gt;&lt;SPAN&gt;I am using MT41K128M16JT memory from Micron. However, RAM capacity is not allocated from 1GB to 2GB. Please consider it.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I wrote it based on the wandboard.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;U-boot 2015-04&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;asm/arch/clock.h&amp;gt;&lt;BR /&gt;#include &amp;lt;asm/arch/imx-regs.h&amp;gt;&lt;BR /&gt;#include &amp;lt;asm/arch/iomux.h&amp;gt;&lt;BR /&gt;#include &amp;lt;asm/arch/mx6-pins.h&amp;gt;&lt;BR /&gt;#include &amp;lt;asm/errno.h&amp;gt;&lt;BR /&gt;#include &amp;lt;asm/gpio.h&amp;gt;&lt;BR /&gt;#include &amp;lt;asm/imx-common/iomux-v3.h&amp;gt;&lt;BR /&gt;#include &amp;lt;asm/imx-common/video.h&amp;gt;&lt;BR /&gt;#include &amp;lt;mmc.h&amp;gt;&lt;BR /&gt;#include &amp;lt;fsl_esdhc.h&amp;gt;&lt;BR /&gt;#include &amp;lt;asm/arch/crm_regs.h&amp;gt;&lt;BR /&gt;#include &amp;lt;asm/io.h&amp;gt;&lt;BR /&gt;#include &amp;lt;asm/arch/sys_proto.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;common.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;spl.h&amp;gt;&lt;/P&gt;&lt;P&gt;#ifdef CONFIG_APX_WATCHDOG&lt;BR /&gt;#include &amp;lt;watchdog.h&amp;gt;&lt;BR /&gt;#endif&lt;/P&gt;&lt;P&gt;DECLARE_GLOBAL_DATA_PTR;&lt;/P&gt;&lt;P&gt;#if defined(CONFIG_SPL_BUILD)&lt;BR /&gt;#include &amp;lt;asm/arch/mx6-ddr.h&amp;gt;&lt;/P&gt;&lt;P&gt;/*&lt;BR /&gt;* Driving strength:&lt;BR /&gt;* 0x30 == 40 Ohm&lt;BR /&gt;* 0x28 == 48 Ohm&lt;BR /&gt;*/&lt;BR /&gt;#define IMX6DQ_DRIVE_STRENGTH 0x30&lt;/P&gt;&lt;P&gt;/* configure MX6Q/DUAL mmdc DDR io registers */&lt;BR /&gt;static struct mx6dq_iomux_ddr_regs mx6dq_ddr_ioregs = {&lt;BR /&gt;.dram_sdclk_0 = 0x00020030,&lt;BR /&gt;.dram_sdclk_1 = 0x00020030,&lt;BR /&gt;.dram_cas = 0x00020030,&lt;BR /&gt;.dram_ras = 0x00020030,&lt;BR /&gt;.dram_reset = 0x00020030,&lt;BR /&gt;.dram_sdcke0 = 0x00003000,&lt;BR /&gt;.dram_sdcke1 = 0x00003000,&lt;BR /&gt;.dram_sdba2 = 0x00000000,&lt;BR /&gt;.dram_sdodt0 = 0x00003030,&lt;BR /&gt;.dram_sdodt1 = 0x00003030,&lt;BR /&gt;.dram_sdqs0 = 0x00000030,&lt;BR /&gt;.dram_sdqs1 = 0x00000030,&lt;BR /&gt;.dram_sdqs2 = 0x00000030,&lt;BR /&gt;.dram_sdqs3 = 0x00000030,&lt;BR /&gt;.dram_sdqs4 = 0x00000030,&lt;BR /&gt;.dram_sdqs5 = 0x00000030,&lt;BR /&gt;.dram_sdqs6 = 0x00000030,&lt;BR /&gt;.dram_sdqs7 = 0x00000030,&lt;BR /&gt;.dram_dqm0 = 0x00020030,&lt;BR /&gt;.dram_dqm1 = 0x00020030,&lt;BR /&gt;.dram_dqm2 = 0x00020030,&lt;BR /&gt;.dram_dqm3 = 0x00020030,&lt;BR /&gt;.dram_dqm4 = 0x00020030,&lt;BR /&gt;.dram_dqm5 = 0x00020030,&lt;BR /&gt;.dram_dqm6 = 0x00020030,&lt;BR /&gt;.dram_dqm7 = 0x00020030,&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;/* configure MX6Q/DUAL mmdc GRP io registers */&lt;BR /&gt;static struct mx6dq_iomux_grp_regs mx6dq_grp_ioregs = {&lt;BR /&gt;.grp_ddr_type = 0x000C0000,&lt;BR /&gt;.grp_ddrmode_ctl = 0x00020000,&lt;BR /&gt;.grp_ddrpke = 0x00000000,&lt;BR /&gt;.grp_addds = 0x00000030,&lt;BR /&gt;.grp_ctlds = 0x00000030,&lt;BR /&gt;.grp_ddrmode = 0x00020000,&lt;BR /&gt;.grp_b0ds = 0x00000030,&lt;BR /&gt;.grp_b1ds = 0x00000030,&lt;BR /&gt;.grp_b2ds = 0x00000030,&lt;BR /&gt;.grp_b3ds = 0x00000030,&lt;BR /&gt;.grp_b4ds = 0x00000030,&lt;BR /&gt;.grp_b5ds = 0x00000030,&lt;BR /&gt;.grp_b6ds = 0x00000030,&lt;BR /&gt;.grp_b7ds = 0x00000030,&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/* MT41K128M16JT-125 */&lt;BR /&gt;static struct mx6_ddr3_cfg mt41k128m16jt_125 = {&lt;BR /&gt;.mem_speed = 1600,&lt;BR /&gt;.density = 2,&lt;BR /&gt;.width = 16,&lt;BR /&gt;.banks = 8,&lt;BR /&gt;.rowaddr = 14,&lt;BR /&gt;.coladdr = 10,&lt;BR /&gt;.pagesz = 2,&lt;BR /&gt;.trcd = 1375,&lt;BR /&gt;.trcmin = 4875,&lt;BR /&gt;.trasmin = 3500,&lt;BR /&gt;.SRT = 0,&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;static struct mx6_mmdc_calibration mx6q_2g_mmdc_calib = {&lt;BR /&gt;.p0_mpwldectrl0 = 0x001F001F,&lt;BR /&gt;.p0_mpwldectrl1 = 0x001F001F,&lt;BR /&gt;.p1_mpwldectrl0 = 0x00440044,&lt;BR /&gt;.p1_mpwldectrl1 = 0x00440044,&lt;BR /&gt;.p0_mpdgctrl0 = 0x434B0350,&lt;BR /&gt;.p0_mpdgctrl1 = 0x034C0359,&lt;BR /&gt;.p1_mpdgctrl0 = 0x434B0350,&lt;BR /&gt;.p1_mpdgctrl1 = 0x03650348,&lt;BR /&gt;.p0_mprddlctl = 0x4436383B,&lt;BR /&gt;.p1_mprddlctl = 0x39393341,&lt;BR /&gt;.p0_mpwrdlctl = 0x35373933,&lt;BR /&gt;.p1_mpwrdlctl = 0x48254A36,&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;/* DDR 64bit 2GB */&lt;BR /&gt;static struct mx6_ddr_sysinfo mem_qdl = {&lt;BR /&gt;.dsize = 2,&lt;BR /&gt;.cs_density = 32,&lt;BR /&gt;.ncs = 1,&lt;BR /&gt;.cs1_mirror = 0,&lt;BR /&gt;.rtt_wr = 2, /* RZQ = 120 */&lt;BR /&gt;.rtt_nom = 2, /* RZQ = 120 */&lt;BR /&gt;.walat = 1,&lt;BR /&gt;.ralat = 5,&lt;BR /&gt;.mif3_mode = 3,&lt;BR /&gt;.bi_on = 1,&lt;BR /&gt;.sde_to_rst = 0x10,&lt;BR /&gt;.rst_to_cke = 0x23,&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;static void spl_dram_init(void)&lt;BR /&gt;{&lt;BR /&gt;mx6dq_dram_iocfg(64, &amp;amp;mx6dq_ddr_ioregs, &amp;amp;mx6dq_grp_ioregs);&lt;BR /&gt;mx6_dram_cfg(&amp;amp;mem_qdl, &amp;amp;mx6q_2g_mmdc_calib, &amp;amp;mt41k128m16jt_125);&lt;BR /&gt;udelay(100);&lt;BR /&gt;}&lt;/P&gt;</description>
      <pubDate>Thu, 23 Jun 2022 00:14:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/iMX6Q-SDRAM-Size-Change/m-p/1478550#M191816</guid>
      <dc:creator>DaengCheong</dc:creator>
      <dc:date>2022-06-23T00:14:20Z</dc:date>
    </item>
  </channel>
</rss>

