All of lore.kernel.org
 help / color / mirror / Atom feed
From: York Sun <yorksun@freescale.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v3 2/2] mpc85xx: support for Freescale COM Express P2020
Date: Fri, 11 Nov 2011 15:02:46 -0800	[thread overview]
Message-ID: <1321052566.21147.46.camel@oslab-l1> (raw)
In-Reply-To: <CAEsOVNcNkYe6xQcd3oHYTbMcmw6pXR1JxdTMsyy4jsMAV_FubQ@mail.gmail.com>

Looking good so far, what's the question? You can always override the
register values and try it since you got the interactive debug up.

York



On Fri, 2011-11-11 at 14:54 -0800, McClintock Matthew-B29882 wrote:
> Adding York who might be able to help more...
> 
> -M
> 
> On Fri, Nov 11, 2011 at 4:18 PM, Ira W. Snyder <iws@ovro.caltech.edu> wrote:
> > On Fri, Nov 11, 2011 at 09:07:23PM +0000, McClintock Matthew-B29882 wrote:
> >> On Fri, Nov 11, 2011 at 3:03 PM, Ira W. Snyder <iws@ovro.caltech.edu> wrote:
> >> > Thanks. That config_sram.dat is exactly what I came up with.
> >> >
> >> > I have my board booting via L2SRAM, but the DDR doesn't get configured
> >> > correctly yet. I'm trying to figure out how the DDR SPD stuff works in
> >> > U-Boot. I've never used it before. I'm following the P2020DS code as an
> >> > example, but I haven't yet figured out how the code in
> >> > board/freescale/p2020ds/ddr.c was derived (the board_specific_parameters
> >> > structure especially).
> >>
> >> If you board has i2c to the ddr modules it should be able to use the
> >> timing info from there. I think CONFIG_DDR_SPD is the config option
> >> you are looking for. I know the P2020DS does SPD from L2SRAM.
> >>
> >
> > The only thing that looks like an SPD chip is at i2c bus 1, address
> > 0x53. I setup my board configuration with:
> >
> > #define CONFIG_FSL_DDR3
> > #define CONFIG_FSL_DDR_INTERACTIVE
> > #define CONFIG_CHIP_SELECTS_PER_CTRL    2
> > #define CONFIG_SYS_DDR_SBE              0x00010000
> >
> > #define CONFIG_DDR_SPD
> > #define CONFIG_SYS_SPD_BUS_NUM          1
> > #define SPD_EEPROM_ADDRESS              0x53
> >
> > Some of the settings the SPD code computes are correct, and some are
> > completely wrong. I can't figure out how to make this work.
> >
> > Here is the raw SPD dumped from a working U-Boot:
> >
> > 0000: 92 10 0b 08 02 11 00 09 0b 52 01 08 0c 00 3e 00    .........R....>.
> > 0010: 69 78 69 30 69 11 20 89 70 03 3c 3c 00 f0 83 05    ixi0i. .p.<<....
> > 0020: 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
> > 0030: 00 00 00 00 00 00 00 00 00 00 00 00 0f 11 1f 00    ................
> > 0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
> > 0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
> > 0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
> > 0070: 00 00 00 00 00 01 94 01 10 25 03 ae 48 48 e3 e3    .........%..HH..
> > 0080: 53 47 35 37 32 35 36 38 45 4d 52 30 36 39 53 32    SG572568EMR069S2
> > 0090: 53 46 00 00 80 ce 53 4d 41 52 54 4d 6f 64 75 6c    SF....SMARTModul
> > 00a0: 61 72 54 65 63 68 6e 6f 6c 6f 67 69 65 73 00 00    arTechnologies..
> > 00b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
> > 00c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
> > 00d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
> > 00e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
> > 00f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
> >
> > And here is the output of an interactive FSL DDR run:
> >
> > U-Boot 2011.09-00929-g3b5f71c-dirty (Nov 11 2011 - 13:31:13)
> >
> > CPU0:  P2020E, Version: 2.0, (0x80ea0020)
> > Core:  E500, Version: 5.0, (0x80211050)
> > Clock Configuration:
> >       CPU0:1200 MHz, CPU1:1200 MHz,
> >       CCB:600  MHz,
> >       DDR:333.333 MHz (666.667 MT/s data rate) (Asynchronous), LBC:37.500 MHz
> > L1:    D-cache 32 kB enabled
> >       I-cache 32 kB enabled
> > Board: Freescale COM Express P2020
> > I2C:   ready
> > SPI:   ready
> > DRAM:  FSL DDR>
> > FSL DDR>
> > FSL DDR>compute
> > unknown module_type 0x08
> > Detected UDIMM SG572568EMR069S2SF
> > The choosen cas latency 16 is too large
> > FSL DDR>print c0 d0
> > SPD info:  Controller=0 DIMM=0
> > 0      : 92 info_size_crc  bytes written into serial memory, CRC coverage
> > 1      : 10 spd_rev        SPD Revision
> > 2      : 0b mem_type       Key Byte / DRAM Device Type
> > 3      : 08 module_type    Key Byte / Module Type
> > 4      : 02 density_banks  SDRAM Density and Banks
> > 5      : 11 addressing     SDRAM Addressing
> > 6      : 00 module_vdd     Module Nominal Voltage, VDD
> > 7      : 09 organization   Module Organization
> > 8      : 0b bus_width      Module Memory Bus Width
> > 9      : 52 ftb_div        Fine Timebase (FTB) Dividend / Divisor
> > 10     : 01 mtb_dividend   Medium Timebase (MTB) Dividend
> > 11     : 08 mtb_divisor    Medium Timebase (MTB) Divisor
> > 12     : 0c tCK_min        SDRAM Minimum Cycle Time
> > 13     : 00 res_13         Reserved
> > 14     : 3e caslat_lsb     CAS Latencies Supported, LSB
> > 15     : 00 caslat_msb     CAS Latencies Supported, MSB
> > 16     : 69 tAA_min        Min CAS Latency Time
> > 17     : 78 tWR_min        Min Write REcovery Time
> > 18     : 69 tRCD_min       Min RAS# to CAS# Delay Time
> > 19     : 30 tRRD_min       Min Row Active to Row Active Delay Time
> > 20     : 69 tRP_min        Min Row Precharge Delay Time
> > 21     : 11 tRAS_tRC_ext   Upper Nibbles for tRAS and tRC
> > 22     : 20 tRAS_min_lsb   Min Active to Precharge Delay Time, LSB
> > 23     : 89 tRC_min_lsb    Min Active to Active/Refresh Delay Time, LSB
> > 24     : 70 tRFC_min_lsb   Min Refresh Recovery Delay Time LSB
> > 25     : 03 tRFC_min_msb   Min Refresh Recovery Delay Time MSB
> > 26     : 3c tWTR_min       Min Internal Write to Read Command Delay Time
> > 27     : 3c tRTP_min Min Internal Read to Precharge Command Delay Time
> > 28     : 00 tFAW_msb       Upper Nibble for tFAW
> > 29     : f0 tFAW_min       Min Four Activate Window Delay Time
> > 30     : 83 opt_features   SDRAM Optional Features
> > 31     : 05 therm_ref_opt  SDRAM Thermal and Refresh Opts
> > 32     : 80 therm_sensor  SDRAM Thermal Sensor
> > 33     : 00 device_type  SDRAM Device Type
> > 34 - 59: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> > 60 -116: 0f111f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000117    : 01 Module MfgID Code LSB - JEP-106
> > 118    : 94 Module MfgID Code MSB - JEP-106
> > 119    : 01 Mfg Location
> > 120-121: 10 25 Mfg Date
> > 122-125: 03 ae 48 48    Module Serial Number
> > 126-127: e3 e3   SPD CRC
> > 128-145: 53 47 35 37 32 35 36 38 45 4d 52 30 36 39 53 32 53 46    Mfg's Module Part Number
> > 146-147: 00 00 Module Revision code
> > 148    : 80 DRAM MfgID Code LSB - JEP-106
> > 149    : ce DRAM MfgID Code MSB - JEP-106
> > 150-175: 53 4d 41 52 54 4d 6f 64 75 6c 61 72 54 65 63 68 6e 6f 6c 6f 67 69 65 73 00 00    Mfg's Specific Data
> > 176-255: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   Mfg's Specific Data
> >
> >
> >
> > DIMM parameters:  Controller=0 DIMM=0
> > DIMM organization parameters:
> > module part name = SG572568EMR069S2SF
> > rank_density = 1073741824 bytes (1024 megabytes)
> > capacity = 2147483648 bytes (2048 megabytes)
> > burst_lengths_bitmask = 00
> > base_addresss = 0 (00000000 00000000)
> > n_ranks = 2
> > data_width = 72
> > primary_sdram_width = 64
> > ec_sdram_width = 8
> > registered_dimm = 0
> > n_row_addr = 0
> > n_col_addr = 0
> > edc_config = 0
> > n_banks_per_sdram_device = 0
> > tCKmin_X_ps = 0
> > tCKmin_X_minus_1_ps = 0
> > tCKmin_X_minus_2_ps = 0
> > tCKmax_ps = 0
> > caslat_X = 0
> > tAA_ps = 0
> > caslat_X_minus_1 = 0
> > caslat_X_minus_2 = 0
> > caslat_lowest_derated = 0
> > tRCD_ps = 0
> > tRP_ps = 0
> > tRAS_ps = 0
> > tWR_ps = 0
> > tWTR_ps = 0
> > tRFC_ps = 0
> > tRRD_ps = 0
> > tRC_ps = 0
> > refresh_rate_ps = 0
> > tIS_ps = 0
> > tIH_ps = 0
> > tDS_ps = 0
> > tDH_ps = 0
> > tRTP_ps = 0
> > tDQSQ_max_ps = 0
> > tQHS_ps = 0
> >
> >
> >
> > "lowest common" DIMM parameters:  Controller=0
> > tCKmin_X_ps = 0 (4294967295 MHz)
> > tCKmax_ps = 0 (4294967295 MHz)
> > all_DIMMs_burst_lengths_bitmask = 00
> > tCKmax_max_ps = 0
> > tRCD_ps = 0
> > tRP_ps = 0
> > tRAS_ps = 0
> > tWR_ps = 0
> > tWTR_ps = 0
> > tRFC_ps = 0
> > tRRD_ps = 0
> > tRC_ps = 0
> > refresh_rate_ps = 0
> > tIS_ps = 0
> > tDS_ps = 0
> > tDH_ps = 0
> > tRTP_ps = 0
> > tDQSQ_max_ps = 0
> > tQHS_ps = 0
> > lowest_common_SPD_caslat = 0
> > highest_common_derated_caslat = 0
> > additive_latency = 0
> > ndimms_present = 1
> > all_DIMMs_registered = 0
> > all_DIMMs_unbuffered = 1
> > all_DIMMs_ECC_capable = 0
> > total_mem = 2147483648 (2048 megabytes)
> > base_address = 0 (0 megabytes)
> >
> >
> > User Config Options: Controller=0
> > cs0_odt_rd_cfg = 0
> > cs0_odt_wr_cfg = 1
> > cs1_odt_rd_cfg = 0
> > cs1_odt_wr_cfg = 1
> > cs0_odt_rtt_norm = 3
> > cs0_odt_rtt_wr = 0
> > cs1_odt_rtt_norm = 0
> > cs1_odt_rtt_wr = 0
> > memctl_interleaving = 0
> > memctl_interleaving_mode = 0
> > ba_intlv_ctl = 0x00000040
> > ECC_mode = 0
> > ECC_init_using_memctl = 1
> > DQS_config = 1
> > self_refresh_in_sleep = 1
> > dynamic_power = 0
> > data_bus_width = 0
> > burst_length = 6
> > cas_latency_override = 0
> > cas_latency_override_value = 3
> > use_derated_caslat = 0
> > additive_latency_override = 0
> > additive_latency_override_value = 3
> > clk_adjust = 6
> > cpo_override = 31
> > write_data_delay = 4
> > half_strength_driver_enable = 0
> > twoT_en = 0
> > threeT_en = 0
> > registered_dimm_en = 0
> > ap_en = 1
> > bstopre = 256
> > wrlvl_override = 1
> > wrlvl_sample = 10
> > wrlvl_start = 8
> > rcw_override = 0
> > rcw_1 = 0
> > rcw_2 = 0
> > tCKE_clock_pulse_width_ps = 9000
> > tFAW_window_four_activates_ps = 0
> > trwt_override = 0
> > trwt = 0
> >
> >
> > Address Assignment: Controller=0 DIMM=0
> > Don't have this functionality yet
> >
> >
> > Computed Register Values: Controller=0
> > cs0_bnds = 0x0000007F
> > cs0_config = 0x80014400
> > cs0_config_2 = 0x00000000
> > cs1_bnds = 0x00000000
> > cs1_config = 0x80014400
> > cs1_config_2 = 0x00000000
> > timing_cfg_3 = 0x000F0000
> > timing_cfg_0 = 0x40110104
> > timing_cfg_1 = 0x000F8246
> > timing_cfg_2 = 0x0FA8D0C0
> > ddr_sdram_cfg = 0xC7004000
> > ddr_sdram_cfg_2 = 0x24401040
> > ddr_sdram_mode = 0x00401021
> > ddr_sdram_mode_2 = 0x00000000
> > ddr_sdram_mode_3 = 0x00000000
> > ddr_sdram_mode_4 = 0x00000000
> > ddr_sdram_mode_5 = 0x00000000
> > ddr_sdram_mode_6 = 0x00000000
> > ddr_sdram_mode_7 = 0x00000000
> > ddr_sdram_mode_8 = 0x00000000
> > ddr_sdram_interval = 0x00000100
> > ddr_data_init = 0xDEADBEEF
> > ddr_sdram_clk_cntl = 0x03000000
> > ddr_init_addr = 0x00000000
> > ddr_init_ext_addr = 0x00000000
> > timing_cfg_4 = 0x00220001
> > timing_cfg_5 = 0x1C401400
> > ddr_zq_cntl = 0x89080600
> > ddr_wrlvl_cntl = 0x8675A608
> > ddr_sr_cntr = 0x00000000
> > ddr_sdram_rcw_1 = 0x00000000
> > ddr_sdram_rcw_2 = 0x00000000
> > ddr_cdr1 = 0x00000000
> > ddr_cdr2 = 0x00000000
> > err_disable = 0x00000000
> > err_int_en = 0x00000000
> > debug_01 = 0x00000000
> > debug_02 = 0x00000000
> > debug_03 = 0x00000000
> > debug_04 = 0x00000000
> > debug_05 = 0x00000000
> > debug_06 = 0x00000000
> > debug_07 = 0x00000000
> > debug_08 = 0x00000000
> > debug_09 = 0x00000000
> > debug_10 = 0x00000000
> > debug_11 = 0x00000000
> > debug_12 = 0x00000000
> > debug_13 = 0x00000000
> > debug_14 = 0x00000000
> > debug_15 = 0x00000000
> > debug_16 = 0x00000000
> > debug_17 = 0x00000000
> > debug_18 = 0x00000000
> > debug_19 = 0x00000000
> > debug_20 = 0x00000000
> > debug_21 = 0x00000000
> > debug_22 = 0x00000000
> > debug_23 = 0x00000000
> > debug_24 = 0x00000000
> > debug_25 = 0x00000000
> > debug_26 = 0x00000000
> > debug_27 = 0x00000000
> > debug_28 = 0x00000000
> > debug_29 = 0x00000000
> > debug_30 = 0x00000000
> > debug_31 = 0x00000000
> > debug_32 = 0x00000000
> >
> > _______________________________________________
> > U-Boot mailing list
> > U-Boot at lists.denx.de
> > http://lists.denx.de/mailman/listinfo/u-boot
> >

  reply	other threads:[~2011-11-11 23:02 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-10 21:11 [U-Boot] [PATCH v3 0/2] mpc85xx: support for Freescale COM Express P2020 Ira W. Snyder
2011-11-10 21:11 ` [U-Boot] [PATCH v3 1/2] mpc85xx: support board-specific reset function Ira W. Snyder
2011-11-10 21:11 ` [U-Boot] [PATCH v3 2/2] mpc85xx: support for Freescale COM Express P2020 Ira W. Snyder
2011-11-11 13:22   ` Kumar Gala
2011-11-11 16:53     ` Ira W. Snyder
2011-11-11 16:58       ` McClintock Matthew-B29882
2011-11-11 17:12         ` Ira W. Snyder
2011-11-11 20:36           ` McClintock Matthew-B29882
2011-11-11 21:03             ` Ira W. Snyder
2011-11-11 21:07               ` McClintock Matthew-B29882
2011-11-11 22:18                 ` Ira W. Snyder
2011-11-11 22:54                   ` McClintock Matthew-B29882
2011-11-11 23:02                     ` York Sun [this message]
2011-11-11 23:10                       ` Ira W. Snyder
2011-11-11 23:33                         ` Ira W. Snyder
2011-11-12 18:16       ` Kumar Gala
2011-11-19  1:31         ` Ira W. Snyder
2011-11-19 16:13           ` Kumar Gala

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1321052566.21147.46.camel@oslab-l1 \
    --to=yorksun@freescale.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.