All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Nelson <eric.nelson@boundarydevices.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 07/12] MX6: add structs for mmdc and ddr iomux registers
Date: Tue, 29 Apr 2014 07:20:57 -0700	[thread overview]
Message-ID: <535FB549.5080803@boundarydevices.com> (raw)
In-Reply-To: <1398716258-8420-8-git-send-email-tharvey@gateworks.com>

Hi Tim,

On 04/28/2014 01:17 PM, Tim Harvey wrote:
> Add memory-mapped structures for MMDC iomux and configuration. Note that while
> the MMDC configuration registers are common between the IMX6DQ
> (IMX6DUAL/IMX6QUAD) and IMX6SDL (IMX6SOLO/IMX6DUALLITE) types the iomux
> registers differ. This requires two sets of structures.
>
> Add structures to describe DDR3 device information, system information
> (memory layout, etc), and MMDC calibration regitsers that can be used to
> configure the MMDC dynamically.
>
> We define these structures for SPL builds instead of including mx6q-ddr.h and
> mx6dl-ddr.h which use the same namespace and are only useful for imximage cfg
> files.
>
> Signed-off-by: Tim Harvey <tharvey@gateworks.com>
> ---
> v2:
> - split out from original mmdc configuration patch
> - only define for SPL build
> - do not include mx6q-ddr.h and mx6dl-ddr.h for SPL build - these use the
>    same namespace and are only useful for imximage cfg files
> ---
>   arch/arm/include/asm/arch-mx6/mx6-ddr.h | 231 ++++++++++++++++++++++++++++++++
>   1 file changed, 231 insertions(+)
>
> diff --git a/arch/arm/include/asm/arch-mx6/mx6-ddr.h b/arch/arm/include/asm/arch-mx6/mx6-ddr.h
> index 43d377a..d544d2e 100644
> --- a/arch/arm/include/asm/arch-mx6/mx6-ddr.h
> +++ b/arch/arm/include/asm/arch-mx6/mx6-ddr.h
> @@ -6,6 +6,7 @@
>   #ifndef __ASM_ARCH_MX6_DDR_H__
>   #define __ASM_ARCH_MX6_DDR_H__
>
> +#ifndef CONFIG_SPL_BUILD
>   #ifdef CONFIG_MX6Q
>   #include "mx6q-ddr.h"
>   #else
> @@ -15,6 +16,236 @@
>   #error "Please select cpu"
>   #endif	/* CONFIG_MX6DL or CONFIG_MX6S */
>   #endif	/* CONFIG_MX6Q */
> +#else
> +

This part of the patch matches the commit message for patch 7.

> +/* MMDC P0/P1 Registers */
> +struct mmdc_p_regs {
> +	u32 mdctl;
> +	u32 mdpdc;
> +	u32 mdotc;
> +	u32 mdcfg0;
> +	u32 mdcfg1;
> +	u32 mdcfg2;
> +	u32 mdmisc;
> +	u32 mdscr;
>
 > ...
 >

The following bits should probably be moved into patch 8 though:

> +
> +/* Device Information: Varies per DDR3 part number and speed grade */
> +struct mx6_ddr3_cfg {
> +	u16 mem_speed;	/* ie 1600 for DDR3-1600 (800,1066,1333,1600) */
> +	u8 density;	/* chip density (Gb) (1,2,4,8) */
> +	u8 width;	/* bus width (bits) (4,8,16) */
> +	u8 banks;	/* number of banks */
> +	u8 rowaddr;	/* row address bits (11-16)*/
> +	u8 coladdr;	/* col address bits (9-12) */
> +	u8 pagesz;	/* page size (K) (1-2) */
> +	u16 trcd;	/* tRCD=tRP=CL (ns*100) */
> +	u16 trcmin;	/* tRC min (ns*100) */
> +	u16 trasmin;	/* tRAS min (ns*100) */
> +	u8 SRT;		/* self-refresh temperature: 0=normal, 1=extended */
> +};
> +
> +/* System Information: Varies per board design, layout, and term choices */
> +struct mx6_ddr_sysinfo {
> +	u8 dsize;	/* size of bus (in dwords: 0=16bit,1=32bit,2=64bit) */
> +	u8 cs_density;	/* density per chip select (Gb) */
> +	u8 ncs;		/* number chip selects used (1|2) */
> +	char cs1_mirror;/* enable address mirror (0|1) */
> +	char bi_on;	/* Bank interleaving enable */
> +	u8 rtt_nom;	/* Rtt_Nom (DDR3_RTT_*) */
> +	u8 rtt_wr;	/* Rtt_Wr (DDR3_RTT_*) */
> +	u8 ralat;	/* Read Additional Latency (0-7) */
> +	u8 walat;	/* Write Additional Latency (0-3) */
> +	u8 mif3_mode;	/* Command prediction working mode */
> +	u8 rst_to_cke;	/* Time from SDE enable to CKE rise */
> +	u8 sde_to_rst;	/* Time from SDE enable until DDR reset# is high */
> +};
> +
> +/*
> + * Board specific calibration:
> + *   This includes write leveling calibration values as well as DQS gating
> + *   and read/write delays. These values are board/layout/device specific.
> + *   Freescale recommends using the i.MX6 DDR Stress Test Tool V1.0.2
> + *   (DOC-96412) to determine these values over a range of boards and
> + *   temperatures.
> + */
> +struct mx6_mmdc_calibration {
> +	/* write leveling calibration */
> +	u32 p0_mpwldectrl0;
> +	u32 p0_mpwldectrl1;
> +	u32 p1_mpwldectrl0;
> +	u32 p1_mpwldectrl1;
> +	/* read DQS gating */
> +	u32 p0_mpdgctrl0;
> +	u32 p0_mpdgctrl1;
> +	u32 p1_mpdgctrl0;
> +	u32 p1_mpdgctrl1;
> +	/* read delay */
> +	u32 p0_mprddlctl;
> +	u32 p1_mprddlctl;
> +	/* write delay */
> +	u32 p0_mpwrdlctl;
> +	u32 p1_mpwrdlctl;
> +};

Nicely done!

This partitioning of chip-level, design-level, and calibration data
makes perfect sense.

> +
> +/* configure iomux (pinctl/padctl) */
> +void mx6dq_dram_iocfg(unsigned width,
> +		      const struct mx6dq_iomux_ddr_regs *,
> +		      const struct mx6dq_iomux_grp_regs *);
> +void mx6sdl_dram_iocfg(unsigned width,
> +		       const struct mx6sdl_iomux_ddr_regs *,
> +		       const struct mx6sdl_iomux_grp_regs *);
> +
> +/* configure mx6 mmdc registers */
> +void mx6_dram_cfg(const struct mx6_ddr_sysinfo *,
> +		  const struct mx6_mmdc_calibration *,
> +		  const struct mx6_ddr3_cfg *);
> +
> +#endif /* CONFIG_SPL_BUILD */
>
>   #define MX6_MMDC_P0_MDCTL	0x021b0000
>   #define MX6_MMDC_P0_MDPDC	0x021b0004
>

Regards,


Eric

  reply	other threads:[~2014-04-29 14:20 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-28 20:17 [U-Boot] [PATCH 00/12] MX6: SPL NAND support Tim Harvey
2014-04-28 20:17 ` [U-Boot] [PATCH 01/12] SPL: NAND: remove CONFIG_SYS_NAND_PAGE_SIZE Tim Harvey
2014-04-28 20:17 ` [U-Boot] [PATCH 02/12] SPL: NAND: add support for mxs nand Tim Harvey
2014-05-02 20:56   ` Scott Wood
2014-05-06  4:08     ` Tim Harvey
2014-04-28 20:17 ` [U-Boot] [PATCH 03/12] MX6: add common SPL configuration Tim Harvey
2014-04-29  4:14   ` Eric Nelson
2014-04-29  6:37     ` Igor Grinberg
2014-04-29 11:55       ` Tim Harvey
2014-05-05  9:05   ` Stefano Babic
2014-05-07 17:01   ` Nikita Kiryanov
2014-04-28 20:17 ` [U-Boot] [PATCH 04/12] spl: consolidate arch/arm/include/asm/arch-*/spl.h Tim Harvey
2014-04-30  5:39   ` Masahiro Yamada
2014-05-05  9:08     ` Stefano Babic
2014-04-28 20:17 ` [U-Boot] [PATCH 05/12] MX6: add boot device support for SPL Tim Harvey
2014-04-29  4:28   ` Eric Nelson
2014-05-05  9:14   ` Stefano Babic
2014-05-05 15:46     ` Tim Harvey
2014-05-05 18:30       ` Stefano Babic
2014-05-06  6:36       ` Tapani Utriainen
2014-05-06  7:55         ` Stefano Babic
2014-05-06 15:42           ` Tim Harvey
2014-04-28 20:17 ` [U-Boot] [PATCH 06/12] IMX: add comments and remove unused struct fields Tim Harvey
2014-05-05 10:28   ` Stefano Babic
2014-04-28 20:17 ` [U-Boot] [PATCH 07/12] MX6: add structs for mmdc and ddr iomux registers Tim Harvey
2014-04-29 14:20   ` Eric Nelson [this message]
2014-05-05 10:34   ` Stefano Babic
2014-05-05 15:52     ` Tim Harvey
2014-04-28 20:17 ` [U-Boot] [PATCH 08/12] MX6: add mmdc configuration for MX6Q/MX6DL Tim Harvey
2014-04-29 15:15   ` Eric Nelson
2014-04-29 18:19     ` Tim Harvey
2014-04-29 18:26       ` Eric Nelson
2014-04-29 18:35     ` Otavio Salvador
2014-04-28 20:17 ` [U-Boot] [PATCH 09/12] IMX: add additional function for pinmux using an array Tim Harvey
2014-04-29 15:22   ` Eric Nelson
2014-05-06  4:35     ` Tim Harvey
2014-05-07 16:59       ` Nikita Kiryanov
2014-05-08  4:11         ` Tim Harvey
2014-04-28 20:17 ` [U-Boot] [PATCH 10/12] imx: ventana: split read_eeprom into standalone file Tim Harvey
2014-04-28 20:17 ` [U-Boot] [PATCH 11/12] imx: ventana: auto-configure for IMX6Q vs IMX6DL Tim Harvey
2014-04-28 20:17 ` [U-Boot] [PATCH 12/12] imx: ventana: switch to SPL Tim Harvey
2014-05-06 18:18   ` Tim Harvey
2014-05-06 18:45     ` York Sun
2014-05-06 19:11     ` Jeroen Hofstee
2014-05-06 23:35       ` Tim Harvey
2014-05-07 16:14         ` York Sun
2014-05-07 18:43           ` Jeroen Hofstee
2014-05-07 20:27           ` Tim Harvey
2014-05-07 20:29             ` York Sun
2014-05-07 20:35               ` Tim Harvey
2014-05-07 20:36                 ` York Sun
2014-05-07  9:29     ` Stefano Babic
2014-05-14  4:58       ` Tim Harvey
2014-05-14  5:03         ` Tim Harvey
2014-05-14 22:32           ` Tim Harvey
2014-05-15  9:20             ` Stefano Babic

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=535FB549.5080803@boundarydevices.com \
    --to=eric.nelson@boundarydevices.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.