This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

How to disable the DDR3A

Other Parts Discussed in Thread: TCI6638K2K

 Dear support,

   I hope I can receive help from you one more time.

  I clone the U-Boot source tree from Arago git repository and download the kernel source code from the git repositories to the local Ubuntu.

  What should I do to disable the DDR3A.

 Thanks!

  • Hi,

    Would you please let us know why do want to disable DDR3A?

    Which processor device you use? Is it keystone - II?

    Regards,
    Shankari
  • Hi,
    Thanks for your reply!
    Our devive is TCI6638K2K,the DDR3A on our board is broken.Is it right No DDR3A can run only with DDR3B?
    thanks
  • Hi Charis,

    As of now, DDR3A is used to boot the u-boot.

    If you want to use the DDR3B, you have to modify the u-boot source code.

    Particularly have a look at modifying files, board_k2hk.c and ddr3_k2hk.c located at board/ti/ks2_evm

    Regards,

    Shankari

    -------------------------------------------------------------------------------------------------------

    Please click the Verify Answer button on this post if it answers your question.

    --------------------------------------------------------------------------------------------------------

  • Hi,Shankari G :
    According to your suggestion,I modify the void init_ddr3(void) in the ddr3_k2hk.c to
    void init_ddr3(void){ char dimm_name[32]; u8 spd_buf[256]; int ddr_speed;
    int ddr_size; struct ddr3_phy_config *phy_cfg = &phy_spd_cfg;
    struct ddr3_emif_config *emif_cfg = &emif_spd_cfg;
    /* First take care of DDR3B - simple case */
    if (__raw_readl(K2HK_PLL_CNTRL_BASE + MAIN_PLL_CTRL_RSTYPE) & 0x1)
    init_pll(&ddr3b_333);
    init_ddrphy(K2HK_DDR3B_DDRPHYC, &ddr3phy_1333_2g);
    init_ddremif(K2HK_DDR3B_EMIF_CTRL_BASE, &ddr3_1333_2g);
    /* Apply the workaround for PG 1.0 and 1.1 Silicons */
    if (cpu_revision() <= 1) ddr_reset_workaround();}
    Now the u-boot and kernel can boot up ,but there is anthor problem at the log of kernel:
    net eth1: netcp device eth1 opened dma dma1chan10: out of descriptors
    dma dma1chan10: out of descriptorsSendind discover...Sendind discover...
    No lease,failing
  • Hi,Shankari G :
    According to your suggestion,I modify the void init_ddr3(void) in the ddr3_k2hk.c to
    void init_ddr3(void){ char dimm_name[32]; u8 spd_buf[256];
    int ddr_speed; int ddr_size;
    struct ddr3_phy_config *phy_cfg = &phy_spd_cfg;
    struct ddr3_emif_config *emif_cfg = &emif_spd_cfg;
    /* First take care of DDR3B - simple case */
    if (__raw_readl(K2HK_PLL_CNTRL_BASE + MAIN_PLL_CTRL_RSTYPE) & 0x1)
    init_pll(&ddr3b_333);
    init_ddrphy(K2HK_DDR3B_DDRPHYC, &ddr3phy_1333_2g);
    init_ddremif(K2HK_DDR3B_EMIF_CTRL_BASE, &ddr3_1333_2g);
    /* Apply the workaround for PG 1.0 and 1.1 Silicons */
    if (cpu_revision() <= 1) ddr_reset_workaround();}
    Now the u-boot and kernel can boot up ,but there is anthor problem at the log of kernel:
    net eth1: netcp device eth1 opened dma dma1chan10: out of descriptors
    dma dma1chan10: out of descriptors Sendind discover...
    Sendind discover... No lease,failingExpect your help,thanks!
  • Hi,Shankari G:
    According to your suggestion, I modify the init_ddr3 in the ddr3_k2hk.c
    But there is anther problem in the log of kernel
    net eth1: netcp device eth1 opened dma dma1chan10: out of descriptors
    dma dma1chan10: out of descriptors Sendind discover...Sendind discover...
    No lease,failingExpect your help,thanks!
  • Hi,Shankari G : I delete the Part of the DDR3A initialization!
    I set the bootargs as "setenv bootargs 'console=ttyS0,115200n8 rootwait=1 earlyprintk rdinit=/sbin/init rw root=/dev/ram0 initrd=0x82000000,38M'" the size of tisdk-rootfs.cpio.gz is 38M.
    when the kernel boot up,there is a error "initramfs unpacking failed: junk in compressed archive"
    Expect your help,thanks!
  • Hi Charis,

    Please post the bootlogs.

    Meanwhile, please refer to the below link which gives guidance for booting linux

    Regards,

    Shankari

    -------------------------------------------------------------------------------------------------------

    Please click the Verify Answer button on this post if it answers your question.
    --------------------------------------------------------------------------------------------------------

  • Hi Shankari G:
    Thank you for your patience!
    Below is my boot log:

    Verifying Checksum ... OK
    ## Flattened Device Tree blob at 87000000
    Booting using the fdt blob at 0x87000000
    Loading Kernel Image ... OK
    OK
    Using Device Tree in place at 87000000, end 8700fbfc

    Starting kernel ...

    [ 0.000000] Booting Linux on physical CPU 0x0
    [ 0.000000] Linux version 3.10.61-00009-g80534c6-dirty (kang@kang-desktop) (g
    cc version 4.7.3 20130226 (prerelease) (crosstool-NG linaro-1.13.1-4.7-2013.03-2
    0130313 - Linaro GCC 2013.03) ) #1 SMP Tue May 19 15:17:15 CST 2015
    [ 0.000000] CPU: ARMv7 Processor [412fc0f4] revision 4 (ARMv7), cr=30c7387d
    [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
    [ 0.000000] Machine: KeyStone2, model: Texas Instruments Keystone 2 SoC
    [ 0.000000] cma: CMA: reserved 16 MiB at ae800000
    [ 0.000000] Memory policy: ECC disabled, Data cache writealloc
    [ 0.000000] PERCPU: Embedded 8 pages/cpu @c141f000 s11840 r8192 d12736 u32768

    [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pag
    es: 391696
    [ 0.000000] Kernel command line: console=ttyS0,115200n8 rootwait=1 earlyprint
    k rdinit=/sbin/init rw root=/dev/ram0 initrd=0x82000000,38M
    [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
    [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
    [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
    [ 0.000000] Memory: 1536MB = 1536MB total
    [ 0.000000] Memory: 1495940k/1495940k available, 76924k reserved, 794624K hig
    hmem
    [ 0.000000] Virtual kernel memory layout:
    [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
    [ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
    [ 0.000000] vmalloc : 0xf0000000 - 0xff000000 ( 240 MB)
    [ 0.000000] lowmem : 0xc0000000 - 0xef800000 ( 760 MB)
    [ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)
    [ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB)
    [ 0.000000] .text : 0xc0008000 - 0xc072fb60 (7327 kB)
    [ 0.000000] .init : 0xc0730000 - 0xc0782e40 ( 332 kB)
    [ 0.000000] .data : 0xc0784000 - 0xc07cbc58 ( 288 kB)
    [ 0.000000] .bss : 0xc07cbc58 - 0xc07fd8fc ( 200 kB)
    [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
    [ 0.000000] Hierarchical RCU implementation.
    [ 0.000000] NR_IRQS:16 nr_irqs:16 16
    [ 0.000000] ipc irq: irqchip registered, range 512-539
    [ 0.000000] Main PLL clk (1200000000 Hz), parent (122880000 Hz),postdiv = 2,
    mult = 624, prediv = 31
    [ 0.000000] Generic PLL clk (1400000000 Hz), parent (125000000 Hz),postdiv =
    1, mult = 55, prediv = 4
    [ 0.000000] Generic PLL clk (983040000 Hz), parent (122880000 Hz),postdiv = 2
    , mult = 15, prediv = 0
    [ 0.000000] Generic PLL clk (1000000000 Hz), parent (100000000 Hz),postdiv =
    2, mult = 19, prediv = 0
    [ 0.000000] Generic PLL clk (333333333 Hz), parent (100000000 Hz),postdiv = 6
    , mult = 19, prediv = 0
    [ 0.000000] Architected local timer running at 200.00MHz (phys).
    [ 0.000000] Switching to timer-based delay loop
    [ 0.000000] sched_clock: ARM arch timer >56 bits at 200000kHz, resolution 640
    /128ns
    [ 0.000000] keystone timer clock @200000000 MHz
    [ 0.000000] sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps ever
    y 4294967286ms
    [ 0.000000] Console: colour dummy device 80x30
    [ 420.437467] Calibrating delay loop (skipped), value calculated using timer fr
    equency.. 400.00 BogoMIPS (lpj=2000000)
    [ 420.437476] pid_max: default: 4096 minimum: 301
    [ 420.437602] Mount-cache hash table entries: 512
    [ 420.445512] CPU: Testing write buffer coherency: ok
    [ 420.445731] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
    [ 420.445741] psci: probing function IDs from device-tree
    [ 420.445754] Setting up static identity map for 0xc050e560 - 0xc050e5b8
    [ 420.495042] CPU1: Booted secondary processor
    [ 420.495076] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
    [ 420.541249] CPU2: Booted secondary processor
    [ 420.541283] CPU2: thread -1, cpu 2, socket 0, mpidr 80000002
    [ 420.587453] CPU3: Booted secondary processor
    [ 420.587485] CPU3: thread -1, cpu 3, socket 0, mpidr 80000003
    [ 420.587568] Brought up 4 CPUs
    [ 420.587584] SMP: Total of 4 processors activated (1600.00 BogoMIPS).
    [ 420.587589] CPU: All CPU(s) started in SVC mode.
    [ 420.588027] devtmpfs: initialized
    [ 420.599252] NET: Registered protocol family 16
    [ 420.600103] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [ 420.608867] No ATAGs?
    [ 420.608882] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint
    registers.
    [ 420.608887] hw-breakpoint: maximum watchpoint size is 8 bytes.
    [ 420.617663] bio: create slab <bio-0> at 0
    [ 420.618023] keystone-pcie: keystone_pcie_rc_init - start
    [ 420.618041] keystone2_pcie_serdes_setup for domain 0
    [ 420.620157] keystone2_pcie_serdes_setup done domain 0, en_link_train = 1
    [ 420.620184] keystone-pcie: MEM 0x0000000050000000..0x000000005fffffff -> 0x00
    00000050000000
    [ 420.620192] keystone-pcie: IO 0x0000000023250000..0x0000000023253fff -> 0x000
    0000000000000
    [ 420.620220] keystone-pcie: pcie - number of legacy irqs = 4
    [ 420.620259] keystone-pcie: pcie - number of MSI host irqs = 8, msi_irqs = 32
    [ 420.727483] keystone-pcie: Doing PCI Setup...Done
    [ 420.727488] keystone-pcie: Starting PCI scan, nr 0...
    [ 420.727594] PCI host bridge to bus 0000:00
    [ 420.727604] pci_bus 0000:00: root bus resource [mem 0x50000000-0x5fffffff]
    [ 420.727610] pci_bus 0000:00: root bus resource [io 0x0000-0x3fff]
    [ 420.727617] pci_bus 0000:00: No busn resource found for root bus, will use [b
    us 00-ff]
    [ 420.727661] PCI: bus0: Fast back to back transfers enabled
    [ 420.727681] keystone-pcie: Ending PCI scan...
    [ 420.727689] keystone-pcie: keystone_pcie_rc_init - end
    [ 420.727934] vgaarb: loaded
    [ 420.728205] SCSI subsystem initialized
    [ 420.728726] usbcore: registered new interface driver usbfs
    [ 420.728796] usbcore: registered new interface driver hub
    [ 420.728880] usbcore: registered new device driver usb
    [ 420.729930] pca953x 2-0020: failed reading register
    [ 420.729942] pca953x: probe of 2-0020 failed with error -121
    [ 420.730093] pps_core: LinuxPPS API ver. 1 registered
    [ 420.730097] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giome
    tti <giometti@linux.it>
    [ 420.730150] PTP clock support registered
    [ 420.730253] keystone-hwqueue hwqueue.12: qmgr start queue 0, number of queues
    8192
    [ 420.730322] keystone-hwqueue hwqueue.12: added qmgr start queue 0, num of que
    ues 8192, reg_peek f0040000, reg_status f0006000, reg_config f0008000, reg_regio
    n f000a000, reg_push f0080000, reg_pop f00c0000
    [ 420.730329] keystone-hwqueue hwqueue.12: qmgr start queue 8192, number of que
    ues 8192
    [ 420.730389] keystone-hwqueue hwqueue.12: added qmgr start queue 8192, num of
    queues 8192, reg_peek f0100000, reg_status f000c400, reg_config f000e000, reg_re
    gion f001a000, reg_push f0140000, reg_pop f0180000
    [ 420.731068] keystone-hwqueue hwqueue.12: qos: sched port @8096, drop sched @8
    000
    [ 420.731936] keystone-hwqueue hwqueue.12: qos: sched port @6496, drop sched @6
    400
    [ 420.732799] keystone-hwqueue hwqueue.12: added pool pool-rio: 128 descriptors
    of size 256
    [ 420.732808] keystone-hwqueue hwqueue.12: added pool pool-xge: 1024 descriptor
    s of size 128
    [ 420.732815] keystone-hwqueue hwqueue.12: added pool pool-crypto: 1024 descrip
    tors of size 128
    [ 420.732822] keystone-hwqueue hwqueue.12: added pool pool-net: 11264 descripto
    rs of size 128
    [ 420.732829] keystone-hwqueue hwqueue.12: added pool pool-udma: 1920 descripto
    rs of size 256
    [ 420.736783] keystone-hwqueue hwqueue.12: registered queues 0-16383
    [ 420.737202] keystone-hwqueue hwqueue.12: qos version 0x2000108, magic valid
    [ 420.737694] keystone-hwqueue hwqueue.12: qos version 0x2000108, magic valid
    [ 420.748431] keystone-pktdma 2a08000.pktdma: registered 32 logical channels, f
    lows 32, tx chans: 32, rx chans: 32, loopback
    [ 420.751664] keystone-pktdma 2004000.pktdma: registered 33 logical channels, f
    lows 32, tx chans: 9, rx chans: 24
    [ 420.752129] keystone-pktdma 2fa1000.pktdma: registered 4 logical channels, fl
    ows 32, tx chans: 16, rx chans: 16
    [ 420.752253] Switching to clocksource arch_sys_counter
    [ 420.769722] NET: Registered protocol family 2
    [ 420.770175] TCP established hash table entries: 8192 (order: 4, 65536 bytes)
    [ 420.770272] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
    [ 420.770366] TCP: Hash tables configured (established 8192 bind 8192)
    [ 420.770445] TCP: reno registered
    [ 420.770452] UDP hash table entries: 512 (order: 2, 16384 bytes)
    [ 420.770475] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
    [ 420.770666] NET: Registered protocol family 1
    [ 420.770855] RPC: Registered named UNIX socket transport module.
    [ 420.770860] RPC: Registered udp transport module.
    [ 420.770863] RPC: Registered tcp transport module.
    [ 420.770867] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [ 420.770976] Unpacking initramfs...
    [ 422.256245] Initramfs unpacking failed: junk in compressed archive
    [ 422.272908] Freeing initrd memory: 38912K (c2000000 - c4600000)
    [ 422.273234] hw perfevents: enabled with ARMv7 Cortex-A15 PMU driver, 7 counte
    rs available
    [ 422.337842] bounce pool size: 64 pages
    [ 422.344538] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
    [ 422.344694] NTFS driver 2.1.30 [Flags: R/O].
    [ 422.344893] jffs2: version 2.2. (NAND) 漏 2001-2006 Red Hat, Inc.
    [ 422.345165] msgmni has been set to 1477
    [ 422.346050] NET: Registered protocol family 38
    [ 422.346234] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 2
    52)
    [ 422.346241] io scheduler noop registered
    [ 422.346245] io scheduler deadline registered
    [ 422.346353] io scheduler cfq registered (default)
    [ 422.347759] keystone-udma udma0.13: registered udma device udma0
    [ 422.396349] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
    [ 422.397871] 2530c00.serial: ttyS0 at MMIO 0x2530c00 (irq = 309) is a 16550A
    [ 423.266650] console [ttyS0] enabled
    [ 423.270683] 2531000.serial: ttyS1 at MMIO 0x2531000 (irq = 312) is a 16550A
    [ 423.280375] loop: module loaded
    [ 423.283655] at24 0-0050: 131072 byte 24c1024 EEPROM, writable, 1 bytes/write
    [ 423.291853] Generic platform RAM MTD, (c) 2004 Simtec Electronics
    [ 423.299118] ONFI param page 0 valid
    [ 423.302627] ONFI flash detected
    [ 423.305777] NAND device: Manufacturer ID: 0x2c, Chip ID: 0xac (Micron MT29F4G
    08ABBDAHC), 512MiB, page size: 2048, OOB size: 64
    [ 423.317450] Bad block table found at page 262080, version 0x01
    [ 423.323699] Bad block table found at page 262016, version 0x01
    [ 423.329803] 3 ofpart partitions found on MTD device 30000000.nand
    [ 423.335919] Creating 3 MTD partitions on "30000000.nand":
    [ 423.341335] 0x000000000000-0x000000100000 : "u-boot"
    [ 423.346959] 0x000000100000-0x000000180000 : "params"
    [ 423.352475] 0x000000180000-0x000020000000 : "ubifs"
    [ 423.358023] davinci_nand 30000000.nand: controller rev. 2.5
    [ 423.364193] spi_davinci 21000400.spi: master is unqueued, this is deprecated
    [ 423.373934] m25p80 spi32766.0: unrecognized JEDEC id ffffff
    [ 423.381489] spi_davinci 21000400.spi: Controller at 0xf007a400
    [ 423.387671] spi_davinci 21000600.spi: master is unqueued, this is deprecated
    [ 423.394753] spi_davinci 21000600.spi: Controller at 0xf007c600
    [ 423.400904] spi_davinci 21000800.spi: master is unqueued, this is deprecated
    [ 423.407986] spi_davinci 21000800.spi: Controller at 0xf007e800
    [ 423.415007] libphy: GPIO Bitbanged MDIO: probed
    [ 423.420315] mdio_bus gpio-ffffffed: cannot get PHY at address 0
    [ 423.427023] mdio_bus gpio-ffffffed: cannot get PHY at address 1
    [ 423.433070] tun: Universal TUN/TAP device driver, 1.6
    [ 423.438133] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
    [ 423.444795] keystone-netcp 2090000.netcp: missing num_serdes parameter
    [ 423.451345] keystone-netcp 2090000.netcp: missing serdes_lanes parameter
    [ 423.458076] keystone-netcp 2090000.netcp: missing serdes_ref_clk parameter
    [ 423.465060] keystone-netcp 2090000.netcp: missing serdes_baud_rate parameter
    [ 423.472132] keystone-netcp 2090000.netcp: missing serdes_rate_mode parameter
    [ 423.479213] keystone-netcp 2090000.netcp: missing serdes_phy_intf parameter
    [ 423.486205] keystone-netcp 2090000.netcp: missing serdes_loopback parameter
    [ 423.493207] keystone-netcp 2090000.netcp: Missing cpts_clock_mult property in
    the DT.
    [ 423.501063] keystone-netcp 2090000.netcp: Missing cpts_clock_shift property i
    n the DT.
    [ 423.509010] keystone-netcp 2090000.netcp: Missing cpts_clock_div property in
    the DT.
    [ 423.517618] keystone-netcp 2090000.netcp: Created interface "eth0"
    [ 423.523834] keystone-netcp 2090000.netcp: dma_chan_name nettx0
    [ 423.530440] keystone-netcp 2090000.netcp: Created interface "eth1"
    [ 423.536687] keystone-netcp 2090000.netcp: dma_chan_name nettx1
    [ 423.543313] keystone-netcp 2090000.netcp: Created interface "eth2"
    [ 423.549518] keystone-netcp 2090000.netcp: dma_chan_name nettx2
    [ 423.556155] keystone-netcp 2090000.netcp: Created interface "eth3"
    [ 423.562367] keystone-netcp 2090000.netcp: dma_chan_name nettx3
    [ 423.568386] XGE serdes config:
    [ 423.571444] ref_clk=156.25MHz, link_rate=10.3125G, lanes=2
    [ 423.577223] c1=2, c2=0, cm=2, tx_att=12, tx_vreg=4
    [ 423.582200] eq flags: vreg=1, cdfe=1, offset=1
    [ 423.586857] XGE: serdes reset
    [ 424.818978] XGE: timeout waiting for serdes link up
    [ 424.824232] keystone-netcp 2f00000.netcp: Created interface "eth4"
    [ 424.830437] keystone-netcp 2f00000.netcp: dma_chan_name xgetx0
    [ 424.836300] XGE: serdes reset
    [ 426.068388] XGE: timeout waiting for serdes link up
    [ 426.073652] keystone-netcp 2f00000.netcp: Created interface "eth5"
    [ 426.079857] keystone-netcp 2f00000.netcp: dma_chan_name xgetx1
    [ 426.085722] XGE: serdes reset
    [ 427.317811] XGE: timeout waiting for serdes link up
    [ 427.322754] keystone-netcp 2090000.netcp: pdsp 0 firmware: keystone/pa_pdsp0_
    classify1.fw
    [ 427.330960] keystone-netcp 2090000.netcp: pdsp 1 firmware: keystone/pa_pdsp1_
    classify1.fw
    [ 427.339172] keystone-netcp 2090000.netcp: pdsp 2 firmware: keystone/pa_pdsp2_
    classify1.fw
    [ 427.347384] keystone-netcp 2090000.netcp: pdsp 3 firmware: keystone/pa_pdsp3_
    classify2.fw
    [ 427.355595] keystone-netcp 2090000.netcp: pdsp 4 firmware: keystone/pa_pdsp45
    _pam.fw
    [ 427.363371] keystone-netcp 2090000.netcp: pdsp 5 firmware: keystone/pa_pdsp45
    _pam.fw
    [ 427.371304] keystone-netcp 2090000.netcp: could not find interface 2 node in
    device tree
    [ 427.379431] keystone-netcp 2090000.netcp: Attach of module keystone-qos decli
    ned with -19
    [ 427.387643] keystone-netcp 2090000.netcp: could not find interface 3 node in
    device tree
    [ 427.395767] keystone-netcp 2090000.netcp: Attach of module keystone-qos decli
    ned with -19
    [ 427.403992] keystone-netcp 2090000.netcp: Attach of module keystone-sa declin
    ed with -19
    [ 427.412110] keystone-netcp 2090000.netcp: Attach of module keystone-sa declin
    ed with -19
    [ 427.421071] dwc3 2690000.dwc3: no usb2 phy configured
    [ 427.426158] platform 2690000.dwc3: Driver dwc3 requests probe deferral
    [ 427.433124] usbcore: registered new interface driver usb-storage
    [ 427.439540] mousedev: PS/2 mouse device common for all mice
    [ 427.445317] i2c /dev entries driver
    [ 427.449356] watchdog 22f0080.wdt: heartbeat 60 sec
    [ 427.457184] keystone-crypto 20c0000.crypto: crypto accelerator enabled
    [ 427.464043] usbcore: registered new interface driver usbhid
    [ 427.469630] usbhid: USB HID core driver
    [ 427.473817] remoteproc0: 2620040.dsp0 is available
    [ 427.478709] remoteproc0: Note: remoteproc is still under development and con
    sidered experimental.
    [ 427.487706] remoteproc0: THE BINARY FORMAT IS NOT YET FINALIZED, and backwar
    d compatibility isn't yet guaranteed.
    [ 427.498120] remoteproc0: no firmware found
    [ 427.502435] rproc-user 2620040.dsp0: registered misc device dsp0
    [ 427.508649] remoteproc1: 2620044.dsp1 is available
    [ 427.513550] remoteproc1: Note: remoteproc is still under development and con
    sidered experimental.
    [ 427.522546] remoteproc1: THE BINARY FORMAT IS NOT YET FINALIZED, and backwar
    d compatibility isn't yet guaranteed.
    [ 427.532953] remoteproc1: no firmware found
    [ 427.537251] rproc-user 2620044.dsp1: registered misc device dsp1
    [ 427.543473] remoteproc2: 2620048.dsp2 is available
    [ 427.548363] remoteproc2: Note: remoteproc is still under development and con
    sidered experimental.
    [ 427.557360] remoteproc2: THE BINARY FORMAT IS NOT YET FINALIZED, and backwar
    d compatibility isn't yet guaranteed.
    [ 427.567767] remoteproc2: no firmware found
    [ 427.572059] rproc-user 2620048.dsp2: registered misc device dsp2
    [ 427.578282] remoteproc3: 262004c.dsp3 is available
    [ 427.583181] remoteproc3: Note: remoteproc is still under development and con
    sidered experimental.
    [ 427.592169] remoteproc3: THE BINARY FORMAT IS NOT YET FINALIZED, and backwar
    d compatibility isn't yet guaranteed.
    [ 427.602576] remoteproc3: no firmware found
    [ 427.606868] rproc-user 262004c.dsp3: registered misc device dsp3
    [ 427.613093] remoteproc4: 2620050.dsp4 is available
    [ 427.617983] remoteproc4: Note: remoteproc is still under development and con
    sidered experimental.
    [ 427.626979] remoteproc4: THE BINARY FORMAT IS NOT YET FINALIZED, and backwar
    d compatibility isn't yet guaranteed.
    [ 427.637388] remoteproc4: no firmware found
    [ 427.641685] rproc-user 2620050.dsp4: registered misc device dsp4
    [ 427.647912] remoteproc5: 2620054.dsp5 is available
    [ 427.652812] remoteproc5: Note: remoteproc is still under development and con
    sidered experimental.
    [ 427.661801] remoteproc5: THE BINARY FORMAT IS NOT YET FINALIZED, and backwar
    d compatibility isn't yet guaranteed.
    [ 427.672221] remoteproc5: no firmware found
    [ 427.676519] rproc-user 2620054.dsp5: registered misc device dsp5
    [ 427.682751] remoteproc6: 2620058.dsp6 is available
    [ 427.687640] remoteproc6: Note: remoteproc is still under development and con
    sidered experimental.
    [ 427.696637] remoteproc6: THE BINARY FORMAT IS NOT YET FINALIZED, and backwar
    d compatibility isn't yet guaranteed.
    [ 427.707044] remoteproc6: no firmware found
    [ 427.711336] rproc-user 2620058.dsp6: registered misc device dsp6
    [ 427.717559] remoteproc7: 262005c.dsp7 is available
    [ 427.722459] remoteproc7: Note: remoteproc is still under development and con
    sidered experimental.
    [ 427.731447] remoteproc7: THE BINARY FORMAT IS NOT YET FINALIZED, and backwar
    d compatibility isn't yet guaranteed.
    [ 427.741855] remoteproc7: no firmware found
    [ 427.746158] rproc-user 262005c.dsp7: registered misc device dsp7
    [ 427.752200] rproc-user dspmem.14: kick gpio
    [ 427.756505] rproc-user dspmem.14: registered misc device dspmem
    [ 427.762724] oprofile: using arm/armv7-ca15
    [ 427.766948] ipip: IPv4 over IPv4 tunneling driver
    [ 427.772004] gre: GRE over IPv4 demultiplexor driver
    [ 427.776906] ip_gre: GRE over IPv4 tunneling driver
    [ 427.782383] TCP: cubic registered
    [ 427.785705] Initializing XFRM netlink socket
    [ 427.790378] NET: Registered protocol family 10
    [ 427.795944] NET: Registered protocol family 17
    [ 427.800411] NET: Registered protocol family 15
    [ 427.804934] Bridge firewalling registered
    [ 427.808958] 8021q: 802.1Q VLAN Support v1.8
    [ 427.814615] sctp: Hash tables configured (established 65536 bind 65536)
    [ 427.821452] NET: Registered protocol family 41
    [ 427.826037] VFP support v0.3: implementor 41 architecture 4 part 30 variant f
    rev 0
    [ 427.833743] Registering SWP/SWPB emulation handler
    [ 428.040656] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
    [ 428.046183] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus nu
    mber 1
    [ 428.054361] xhci-hcd xhci-hcd.0.auto: irq 425, io mem 0x02690000
    [ 428.060452] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
    [ 428.067272] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=
    1
    [ 428.074524] usb usb1: Product: xHCI Host Controller
    [ 428.079415] usb usb1: Manufacturer: Linux 3.10.61-00009-g80534c6-dirty xhci-h
    cd
    [ 428.086755] usb usb1: SerialNumber: xhci-hcd.0.auto
    [ 428.092075] hub 1-0:1.0: USB hub found
    [ 428.095852] hub 1-0:1.0: 1 port detected
    [ 428.099943] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
    [ 428.105466] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus nu
    mber 2
    [ 428.113214] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
    [ 428.120024] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=
    1
    [ 428.127275] usb usb2: Product: xHCI Host Controller
    [ 428.132166] usb usb2: Manufacturer: Linux 3.10.61-00009-g80534c6-dirty xhci-h
    cd
    [ 428.139503] usb usb2: SerialNumber: xhci-hcd.0.auto
    [ 428.144753] hub 2-0:1.0: USB hub found
    [ 428.148516] hub 2-0:1.0: 1 port detected
    [ 428.157007] Freeing unused kernel memory: 328K (c0730000 - c0782000)
    INIT: version 2.88 booting
    Starting udev
    Starting Bootlog daemon: bootlogd.
    Configuring network interfaces... [ 430.055146] keystone-netcp 2090000.netcp: i
    nitializing cpsw version 1.3 (1) SGMII identification value 0x4ed1
    [ 430.065279] keystone-netcp 2090000.netcp: Created a cpsw ale engine
    [ 430.173069] pps pps0: new PPS source ptp0
    [ 430.177111] cpts rftclk rate(600000000 HZ),mult(5120),shift(10),div(3)
    [ 430.218799] keystone-netcp 2090000.netcp: Using Packet Accelerator Firmware v
    ersion 0x03000104
    [ 430.227452] keystone-netcp 2090000.netcp: pa_clk_rate(163840000 HZ),mult(2500
    0),shift(12)
    [ 430.493074] net eth0: netcp device eth0 opened
    [ 430.499136] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
    [ 430.504997] 8021q: adding VLAN 0 to HW filter on device eth0
    udhcpc (v1.20.2) started
    Sending discover...
    Sending discover...
    Sending discover...
    No lease, failing
    [ 440.047937] keystone-netcp 2090000.netcp: initializing cpsw version 1.3 (1) S
    GMII identification value 0x4ed1
    [ 440.433033] net eth1: netcp device eth1 opened
    [ 440.438100] dma dma1chan10: out of descriptors
    [ 440.443124] dma dma1chan10: out of descriptors
    [ 440.447604] 8021q: adding VLAN 0 to HW filter on device eth1
    udhcpc (v1.20.2) started
    [ 440.475316] dma dma1chan10: out of descriptors
    [ 440.479849] dma dma1chan10: out of descriptors
    Sending discover...
    Sending discover...
    Sending discover...
    No lease, failing
    done.
    net.ipv4.conf.default.rp_filter = 1
    net.ipv4.conf.all.rp_filter = 1
    Sun Nov 24 22:34:00 UTC 2013
    Configuring update-modules.
    Configuring debianutils.
    update-alternatives: Linking //usr/sbin/add-shell to add-shell.debianutils
    update-alternatives: Linking //usr/sbin/installkernel to installkernel.debianuti
    ls
    update-alternatives: Linking //usr/sbin/mkboot to mkboot.debianutils
    update-alternatives: Linking //usr/sbin/remove-shell to remove-shell.debianutils

    update-alternatives: Linking //usr/bin/savelog to savelog.debianutils
    update-alternatives: Linking //usr/bin/sensible-browser to sensible-browser.debi
    anutils
    update-alternatives: Linking //usr/bin/sensible-editor to sensible-editor.debian
    utils
    update-alternatives: Linking //usr/bin/sensible-pager to sensible-pager.debianut
    ils
    update-alternatives: Linking //usr/bin/which to which.debianutils
    update-alternatives: Error: cannot register alternative run-parts to /bin/run-pa
    rts since it is already registered to /usr/bin/run-parts
    update-alternatives: Linking //bin/tempfile to tempfile.debianutils
    Configuring ndisc6-ndisc6.
    Configuring ndisc6-rltraceroute6.
    Configuring ndisc6-rdisc6.
    ERROR: could not open directory /lib/modules/3.10.61-00009-g80534c6-dirty: No su
    ch file or directory
    WARNING: -e needs -E or -F
    ERROR: could not open directory /lib/modules/3.10.61-00009-g80534c6-dirty: No su
    ch file or directory
    FATAL: could not search modules: No such file or directory
    INIT: Entering runlevel: 5
    Starting system message bus: dbus.
    Starting Dropbear SSH server: Will output 1024 bit rsa secret key to '/etc/dropb
    ear/dropbear_rsa_host_key'
    Generating key, this may take a while...
    Public key portion is:
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgwCDFP3fOjam/H1bjNvXmOJRsep2Y3MSrqmgn7w5ipHO
    FGC4gnR5APdQY1ikYljTz247rENXRPDd1H62S7Q8eL/aI6MOxfYzvbEfaSxfgSZwzxpDHhx6VXVWd66e
    kAjIpcnM+f5XVdEC5HFUk6BuH3sxX6YJt76iZRbcgdZ6V24aepFV root@keystone-evm
    Fingerprint: md5 c4:1e:77:da:25:f3:25:9e:5c:cd:0c:0b:b4:10:6c:96
    dropbear.
    Starting mpmsrv daemon.
    Starting telnet daemon.
    #>>>>> LCD 12
    IP Address:
    Starting tiipclad daemon.
    Starting network benchmark server: netserver.
    Starting syslog-ng:.
    Starting thttpd.
    Starting Lighttpd Web Server: lighttpd.
    2013-11-24 22:34:00: (log.c.166) server started
    * starting FTP Server: vsftpd... done.
    ***************************************************************
    ***************************************************************
    NOTICE: This file system contains the followin GPLv3 packages:
    binutils-symlinks
    binutils
    gdb
    gdbserver

    If you do not wish to distribute GPLv3 components please remove
    the above packages prior to distribution. This can be done using
    the opkg remove command. i.e.:
    opkg remove <package>
    Where <package> is the name printed in the list above

    NOTE: If the package is a dependency of another package you
    will be notified of the dependent packages. You should
    use the --force-removal-of-dependent-packages option to
    also remove the dependent packages as well
    ***************************************************************
    ***************************************************************
    Stopping Bootlog daemon: bootlogd.

    _____ _____ _ _
    | _ |___ ___ ___ ___ | _ |___ ___ |_|___ ___| |_
    | | _| .'| . | . | | __| _| . | | | -_| _| _|
    |__|__|_| |__,|_ |___| |__| |_| |___|_| |___|___|_|
    |___| |___|

    Arago Project http://arago-project.org keystone-evm ttyS0

    Arago 2013.04 keystone-evm ttyS0

    keystone-evm login:

    And there are other issues that cause the network to not work!


    Thanks!
  • Hi Shankari G:
    Some questions lead to the network barrier,please give me some advice to solve this problem.
    Thank you!
  • Hi Charis,

    I have forwarded your query to an expert for further assistance.

    Regards,
    Shankari
  • Hi Shankari G: Thank you for your help!
    After I disable the DDR3A,there is a message "The Host is not alive" under the u-boot ping PC.
    Thanks!
  • HI, Charis,

    what platform is this? and what the reason you want to disable DDR3A?

    Rex

  • Hi,Rex, Thank you for your reply!
    It is the TCI6638K2K, we modeled the xtcievmk2x to do our own board.Because we did not connect the IIC to the DIMM, I can not use the DDR3A.
    Best Regards!
  • Hi, Charis,

    It seems that you disabled the DDR3 successfully in u-boot and got the u-boot up and running. Your problem seems to be ping failed. Correct? You will need to debug the network issue why host is not alive.

    Rex

  • Hi,Rex, Yes,you are right!On the arm CorePac,ping failed.But on the DSP CorePac with ping successful(with NDK code helloworld,the UDP routine).Please give me some advice to solve this issue.
    Thank you!
  • Hi,
    Able to brought up ethernet at u-boot stage ?
    Did you change anything in kernel and dts fie regarding etherent or simply used pre-built kernel and dtb ?
    What are the other changes you have in your custom board ?
    Just DDR3B or any ethernet PHY etc.,


    On the arm CorePac,ping failed.But on the DSP CorePac with ping successful(with NDK code helloworld,the UDP routine)

    It seems, ethernet part is working good in your custom board.
    Could you please tell us, how you are doing this ?
    Running "DSP helloworld NDK" code on DSP core 0 by connecting JTAG with CCS and in parallel running Linux on ARM core ?

    FYI: When you running NDK example on DSP core, it would initialize everything EMAC,PHY etc.,
  • Hi, Thank you for your reply!1. NO,I ping failed at u-boot stage.
    2. I clone the U-Boot source tree from Arago git repository and download the kernel source code from the git repositories then compile them and run at the xtcievmk2x board,the network is ok! Then I disable the DDR3A initatialization part and enable 10Git ethernet(sgmii_link_type is XGMII_LINK_MAC_MAC_FORCED),the network can not work.
    3. We replace the MCU with FPGA.
    4.I just running NDK helloword on DSP core 0 by CCS and after repower the board I running linux on ARM core 0.
    Thanks!
  • Hi,
    I set the DDR3A_REMAP_EN to 0 by pull GPIO16 to down,and change CONFIG_SYS_LPAE_SDRAM_BASE from 0x800000000 to 0x80000000.
  • Hi,

    Thanks for the clarification.


    I set the DDR3A_REMAP_EN to 0 by pull GPIO16 to down,and change CONFIG_SYS_LPAE_SDRAM_BASE from 0x800000000 to 0x80000000.

    Understood, then only you able to access DDR3B at 0x80000000 as per the K2H memory map table.

    So, I would like you to suggest to bring up the ethernet in u-boot first and later will focus in linux kernel.
    Able to get the IP address automatically at u-boot through "dhcp" command ?

    Are you trying to enable 10GbE ethernet or 1GbE ?

    Have you taken the u-boot source from the following link ?

    git clone git://git.ti.com/keystone-linux/u-boot.git u-boot-keystone
  • Hi, Thank you for your quickly reply!
    1. after I used "dhcp" command,"BOOTP broadcast "is display.
    2.I want to enable both 10GbE and 1GbE.
    3.Yes,I get the u-boot source from the link you give above!Thanks!
  • Hi Charis
    Did you solve your problem ?
    If not, could you attach the modified files of u-boot to reproduce at our end with K2HK EVM board.
  • Hi,

        After I disable the DDR3A and set the REMAP_DDR3A_EN to 0,the logic address from 0x60000000 to 0x7FFFFFFF can not be used.whether this cause the exception?

       The file attach is what I modified.

    Thanks!

    /*
     * Copyright (C) 2013 - 2014 Texas Instruments Inc.
     *
     * Keystone2: DDR3 initialization
     *
     * See file CREDITS for list of people who contributed to this
     * project.
     *
     * This program is free software; you can redistribute it and/or modify
     * it under the terms of the GNU General Public License as published by
     * the Free Software Foundation; either version 2 of the License, or
     * (at your option) any later version.
     *
     * This program is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     * GNU General Public License for more details.
     *
     * You should have received a copy of the GNU General Public License
     * along with this program; if not, write to the Free Software
     * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
     */
    
    #include <common.h>
    
    #include <asm/arch/hardware.h>
    #include <asm/io.h>
    #include <asm/arch/clock.h>
    #include <asm/arch/clock_defs.h>
    #include "ddr3_cfg.h"
    
    DECLARE_GLOBAL_DATA_PTR;
    
    static void ddr_reset_workaround(void)
    {
    
    	unsigned int tmp, tmp_a, tmp_b;
    
    	/*
    	 * Check for PGSR0 error bits of DDR3 PHY.
    	 * Check for WLERR, QSGERR, WLAERR,
    	 * RDERR, WDERR, REERR, WEERR error to see if they are set or not
    	 */
    	tmp_a = __raw_readl(K2HK_DDR3A_DDRPHYC +
    				KS2_DDRPHY_PGSR0_OFFSET);
    	tmp_b = __raw_readl(K2HK_DDR3B_DDRPHYC +
    				KS2_DDRPHY_PGSR0_OFFSET);
    
    	if (((tmp_a & 0x0FE00000) != 0) || ((tmp_b & 0x0FE00000) != 0)) {
    
    		printf("DDR Leveling Error Detected!\n");
    		printf("DDR3A PGSR0 = 0x%x\n", tmp_a);
    		printf("DDR3B PGSR0 = 0x%x\n", tmp_b);
    
    		/*
    		 * Write Keys to KICK registers to enable writes to registers
    		 * in boot config space
    		 */
    		__raw_writel(KEYSTONE_KICK0_MAGIC, KEYSTONE_KICK0);
    		__raw_writel(KEYSTONE_KICK1_MAGIC, KEYSTONE_KICK1);
    
    		/*
    		 * Move DDR3A Module out of reset isolation by setting
    		 * MDCTL23[12] = 0
    		 */
    		tmp_a = __raw_readl(KS2_PSC_BASE + 0xA5C);
    		tmp_a &= ~(0x1000);
    		__raw_writel(tmp_a, KS2_PSC_BASE + 0xA5C);
    
    		/*
    		 * Move DDR3B Module out of reset isolation by setting
    		 * MDCTL24[12] = 0
    		 */
    		 tmp_b = __raw_readl(KS2_PSC_BASE + 0xA60);
    		 tmp_b &= ~(0x1000);
    		__raw_writel(tmp_b, KS2_PSC_BASE + 0xA60);
    
    		/*
    		 * Write 0x5A69 Key to RSTCTRL[15:0] to unlock writes
    		 * to RSTCTRL and RSTCFG
    		 */
    		tmp = __raw_readl(K2HK_PLL_CNTRL_BASE +
    					MAIN_PLL_CTRL_RSTCTRL);
    		tmp &= ~(0xFFFF);
    		tmp |= 0x5A69;
    		__raw_writel(tmp, K2HK_PLL_CNTRL_BASE +
    					MAIN_PLL_CTRL_RSTCTRL);
    
    		/*
    		 * Set PLL Controller to drive hard reset on SW trigger by
    		 * setting RSTCFG[13] = 0
    		 */
    		tmp = __raw_readl(K2HK_PLL_CNTRL_BASE +
    					MAIN_PLL_CTRL_RSTCFG);
    		tmp &= ~(0x2000);
    		tmp |= 0x0000;
    		__raw_writel(tmp, K2HK_PLL_CNTRL_BASE +
    					MAIN_PLL_CTRL_RSTCFG);
    
    		/*
    		 * Write 0x5A69 Key to RSTCTRL[15:0] to unlock writes to
    		 * RSTCTRL and RSTCFG
    		 */
    		tmp = __raw_readl(K2HK_PLL_CNTRL_BASE +
    					MAIN_PLL_CTRL_RSTCTRL);
    		tmp &= ~(0xFFFF);
    		tmp |= 0x5A69;
    		__raw_writel(tmp, K2HK_PLL_CNTRL_BASE +
    					MAIN_PLL_CTRL_RSTCTRL);
    
    		/*
    		 * Write RSTCTRL[16] = 0 to initiate software reset via PLL
    		 * controller
    		 */
    		tmp = __raw_readl(K2HK_PLL_CNTRL_BASE +
    					MAIN_PLL_CTRL_RSTCTRL);
    		tmp &= ~(0x10000);
    		tmp = 0x00000;
    		__raw_writel(tmp, K2HK_PLL_CNTRL_BASE +
    					MAIN_PLL_CTRL_RSTCTRL);
    
    		/* Wait for Reset */
    		for (;;)
    			;
    	}
    }
    
    
    struct pll_init_data ddr3a_333 = DDR3_PLL_333(A);
    struct pll_init_data ddr3b_333 = DDR3_PLL_333(B);
    struct pll_init_data ddr3a_400 = DDR3_PLL_400(A);
    struct pll_init_data ddr3b_400 = DDR3_PLL_400(B);
    
    void init_ddr3(void)
    {
    	char dimm_name[32];
    	u8 spd_buf[256];
    	int  ddr_speed;
    	int  ddr_size;
    
    	struct ddr3_phy_config *phy_cfg = &phy_spd_cfg;
    	struct ddr3_emif_config *emif_cfg = &emif_spd_cfg;
    
    	/* First take care of DDR3B - simple case */
    	if (__raw_readl(K2HK_PLL_CNTRL_BASE + MAIN_PLL_CTRL_RSTYPE) & 0x1)
    		init_pll(&ddr3b_333);
    
    	init_ddrphy(K2HK_DDR3B_DDRPHYC, &ddr3phy_1333_2g);
    	init_ddremif(K2HK_DDR3B_EMIF_CTRL_BASE, &ddr3_1333_2g);
    #if 0//kkh delete begin
    	if (get_dimm_params_from_spd(spd_buf, &ddr_speed, &ddr_size)) {
    		printf("Sorry, I don't know how to configure DDR3A.\n"
    		       "Bye :(\n");
    		 for (;;)
    			;
    	}
    
    	strncpy(dimm_name, &spd_buf[0x80], 18);
    	dimm_name[18] = '\0';
    
    	printf("Detected SO-DIMM [%s]\n", dimm_name);
    
    	if (__raw_readl(K2HK_PLL_CNTRL_BASE + MAIN_PLL_CTRL_RSTYPE) & 0x1) {
    		printf("DDR3 speed %d\n", ddr_speed);
    		if (ddr_speed == 1600)
    			init_pll(&ddr3a_400);
    		else
    			init_pll(&ddr3a_333);
    	} else
    		printf("Power-on reset was not the last reset to occur !\n");
    
    
    
    	if (cpu_revision() > 0) {
    		if (cpu_revision() > 1) {
    			/* PG 2.0 */
    			/* Reset DDR3A PHY after PLL enabled */
    			reset_ddrphy(KS2_DEVICE_STATE_CTRL_BASE);
    			phy_cfg->zq0cr1 |= 0x10000;
    			phy_cfg->zq1cr1 |= 0x10000;
    			phy_cfg->zq2cr1 |= 0x10000;
    
    		}
    		init_ddrphy(K2HK_DDR3A_DDRPHYC, phy_cfg);
    
    		init_ddremif(K2HK_DDR3A_EMIF_CTRL_BASE, emif_cfg);
    
    		gd->ddr3_size = ddr_size;
    	} else {
    		init_ddrphy(K2HK_DDR3A_DDRPHYC, phy_cfg);
    		emif_cfg->sdcfg |= 0x1000;
    		init_ddremif(K2HK_DDR3A_EMIF_CTRL_BASE, emif_cfg);
    		gd->ddr3_size = ddr_size / 2;
    	}
    #endif //kkh delete end
    	printf("DRAM: %d GiB (includes reported below)\n", gd->ddr3_size);
    
    	/* Apply the workaround for PG 1.0 and 1.1 Silicons */
    	if (cpu_revision() <= 1)
    		ddr_reset_workaround();
    }
    
    u32 get_ddr_seg_num(void)
    {
    	/* DDR3 size in segments (4KB seg size) */
    	return gd->ddr3_size << (30 - MSMC_SEG_SIZE_SHIFT);
    }