Skip to content
Snippets Groups Projects
Commit 4d563c45 authored by minute's avatar minute
Browse files

Merge branch 'master' into 'master'

Update lpddr4_timing and blobs from upstream

See merge request reform/reform-boundary-uboot!7
parents 42d74a12 749874ee
No related branches found
No related tags found
No related merge requests found
......@@ -8,5 +8,5 @@ obj-y += nitrogen8m_som.o mmc.o
ifdef CONFIG_SPL_BUILD
obj-y += spl.o
obj-y += lpddr4_timing.o
obj-y += lpddr4_timing_8mq.o
endif
This diff is collapsed.
This diff is collapsed.
/*
* Copyright Boundary Devices
*
* SPDX-License-Identifier: GPL-2.0+
*/
#include <config.h>
#include <linux/kernel.h>
#include <asm/arch/ddr.h>
#include <asm/arch/lpddr4_define.h>
#include <asm/arch/imx8m_ddr.h>
#ifdef WR_POST_EXT_3200
#define CH2_VAL_INIT4 ((LPDDR4_MR3 << 16) | 0x00020008)
#else
#define CH2_VAL_INIT4 ((LPDDR4_MR3 << 16) | 8)
#endif
#if CONFIG_DDR_MB == 1024
/* Address map is from MSB 28: r14, r13-r0, b2-b0, c9-c0 */
#define CH2_VAL_DDRC_ADDRMAP0_R0 0x0000001F
#define CH2_VAL_DDRC_ADDRMAP6_R0 0x0F070707
#elif CONFIG_DDR_MB == 2048
/* Address map is from MSB 28: r15, r14, r13-r0, b2-b0, c9-c0 */
#define CH2_VAL_DDRC_ADDRMAP0_R0 0x0000001F
#define CH2_VAL_DDRC_ADDRMAP6_R0 0x07070707
/* Address map is from MSB 28: cs, r14, r13-r0, b2-b0, c9-c0 */
#define CH2_VAL_DDRC_ADDRMAP0_R1 0x00000016
#define CH2_VAL_DDRC_ADDRMAP6_R1 0x0F070707
#elif CONFIG_DDR_MB == 3072
/* Address map is from MSB 29: r15, r14, cs, r13-r0, b2-b0, c9-c0 */
#define CH2_VAL_DDRC_ADDRMAP0_R1 0x00000015
#define CH2_VAL_DDRC_ADDRMAP6_R1 0x48080707
#elif CONFIG_DDR_MB == 4096
/* Address map is from MSB 29: cs, r15, r14, r13-r0, b2-b0, c9-c0 */
#define CH2_VAL_DDRC_ADDRMAP0_R1 0x00000017
#define CH2_VAL_DDRC_ADDRMAP6_R1 0x07070707
#elif CONFIG_DDR_MB == 8192
/* Address map is from MSB 29: cs, r15, r14, r13-r0, b2-b0, c9-c0 */
#define CH2_VAL_DDRC_ADDRMAP0_R1 0x00000018
#define CH2_VAL_DDRC_ADDRMAP6_R1 0x07070707
#else
#error unsupported memory size
#endif
#define LPDDR4_CS_R0 0x1 /* 0 rank bits, 1 chip select */
#define LPDDR4_CS_R1 0x3 /* 1 rank bit, 2 chip selects */
#if (CONFIG_DDR_RANK_BITS == 0) || !defined(CH2_VAL_DDRC_ADDRMAP0_R1)
#ifdef CH2_VAL_DDRC_ADDRMAP0_R0
#define CH2_LPDDR4_CS LPDDR4_CS_R0
#define CH2_VAL_DDRC_ADDRMAP0 CH2_VAL_DDRC_ADDRMAP0_R0
#define CH2_VAL_DDRC_ADDRMAP6 CH2_VAL_DDRC_ADDRMAP6_R0
#else
#error unsupported memory rank/size
#endif
/*
* rank0 will succeed, even if really rank 1, so we need
* to probe memory if rank0 succeeds
*/
#if defined(CH2_VAL_DDRC_ADDRMAP0_R0) && defined(CH2_VAL_DDRC_ADDRMAP0_R1)
#define CH2_LPDDR4_CS_NEW LPDDR4_CS_R1
#define CH2_VAL_DDRC_ADDRMAP0_NEW CH2_VAL_DDRC_ADDRMAP0_R1
#define CH2_VAL_DDRC_ADDRMAP6_NEW CH2_VAL_DDRC_ADDRMAP6_R1
#endif
#elif (CONFIG_DDR_RANK_BITS == 1) || !defined(CH2_VAL_DDRC_ADDRMAP0_R0)
#ifdef CH2_VAL_DDRC_ADDRMAP0_R1
#define CH2_LPDDR4_CS LPDDR4_CS_R1
#define CH2_VAL_DDRC_ADDRMAP0 CH2_VAL_DDRC_ADDRMAP0_R1
#define CH2_VAL_DDRC_ADDRMAP6 CH2_VAL_DDRC_ADDRMAP6_R1
#else
#error unsupported memory rank/size
#endif
#if defined(CH2_VAL_DDRC_ADDRMAP0_R0) && defined(CH2_VAL_DDRC_ADDRMAP0_R1)
#define CH2_LPDDR4_CS_NEW LPDDR4_CS_R0
#define CH2_VAL_DDRC_ADDRMAP0_NEW CH2_VAL_DDRC_ADDRMAP0_R0
#define CH2_VAL_DDRC_ADDRMAP6_NEW CH2_VAL_DDRC_ADDRMAP6_R0
#endif
#else
#error unsupported rank bits
#endif
#if (CONFIG_DDR_CHANNEL_CNT == 2)
#if (CONFIG_DDR_RANK_BITS == 0) && !defined(CH2_VAL_DDRC_ADDRMAP0_R0)
#error unsupported options
#endif
#if (CONFIG_DDR_RANK_BITS == 1) && !defined(CH2_VAL_DDRC_ADDRMAP0_R1)
#error unsupported options
#endif
#endif
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
......@@ -733,6 +733,10 @@ CONFIG_IMX8M_LPDDR4=y
# CONFIG_IMX8M_DDR4 is not set
CONFIG_SAVED_DRAM_TIMING_BASE=0x40000000
CONFIG_DDR_DRIVE_STRENGTH=6
CONFIG_DDR_RANK_BITS=1
CONFIG_DDR_CHANNEL_CNT=2
#
# Demo for driver model
#
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment