mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-04 18:41:03 +00:00
548cc1095f
This patch provides the code to calibrate the DDR's DQS to DQ signals (RDLVL). It is based on: VFxxx Controller Reference Manual, Rev. 0, 10/2016, page 1600 10.1.6.16.4.1 "Software Read Leveling in MC Evaluation Mode" and NXP's community thread: "Vybrid: About DDR leveling feature on DDRMC." https://community.nxp.com/thread/395323 Signed-off-by: Lukasz Majewski <lukma@denx.de>
45 lines
1,013 B
C
45 lines
1,013 B
C
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* ddrmc DDR3 calibration code for NXP's VF610
|
|
*
|
|
* Copyright (C) 2018 DENX Software Engineering
|
|
* Lukasz Majewski, DENX Software Engineering, lukma@denx.de
|
|
*
|
|
*/
|
|
|
|
#ifndef __DDRMC_VF610_CALIBRATOIN_H_
|
|
#define __DDRMC_VF610_CALIBRATOIN_H_
|
|
|
|
/*
|
|
* Number of "samples" in the calibration bitmap
|
|
* to be considered during calibration.
|
|
*/
|
|
#define N_SAMPLES 3
|
|
|
|
/*
|
|
* Constants to indicate if we are looking for a rising or
|
|
* falling edge in the calibration bitmap
|
|
*/
|
|
enum edge {
|
|
FALLING_EDGE = 1,
|
|
RISING_EDGE
|
|
};
|
|
|
|
/*
|
|
* The max number of delay elements when DQS to DQ setting
|
|
*/
|
|
#define DDRMC_DQS_DQ_MAX_DELAY 0xFF
|
|
|
|
/**
|
|
* ddrmc_calibration - Vybrid's (VF610) DDR3 calibration code
|
|
*
|
|
* This function is calculating proper memory controller values
|
|
* during run time.
|
|
*
|
|
* @param ddrmr_regs - memory controller registers
|
|
*
|
|
* @return 0 on success, otherwise error code
|
|
*/
|
|
int ddrmc_calibration(struct ddrmr_regs *ddrmr);
|
|
|
|
#endif /* __DDRMC_VF610_CALIBRATOIN_H_ */
|