ARM: OMAP5/DRA7: Enable iodelay recalibration to be done from uboot
Add a new API to perform iodelay recalibration without isolate io to be used in uboot. The data manual of J6/J6 Eco recommends to set different IODELAY values depending on the mode in which the MMC/SD is enumerated in order to ensure IO timings are met. The MMC driver can use the new API to set the IO delay values depending on the MMC mode. Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
This commit is contained in:
parent
2d7482cf79
commit
6a27333ba3
@ -83,6 +83,9 @@
|
||||
void __recalibrate_iodelay(struct pad_conf_entry const *pad, int npads,
|
||||
struct iodelay_cfg_entry const *iodelay,
|
||||
int niodelays);
|
||||
void late_recalibrate_iodelay(struct pad_conf_entry const *pad, int npads,
|
||||
struct iodelay_cfg_entry const *iodelay,
|
||||
int niodelays);
|
||||
int __recalibrate_iodelay_start(void);
|
||||
void __recalibrate_iodelay_end(int ret);
|
||||
|
||||
|
@ -272,3 +272,33 @@ err:
|
||||
__recalibrate_iodelay_end(ret);
|
||||
|
||||
}
|
||||
|
||||
void late_recalibrate_iodelay(struct pad_conf_entry const *pad, int npads,
|
||||
struct iodelay_cfg_entry const *iodelay,
|
||||
int niodelays)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
/* unlock IODELAY CONFIG registers */
|
||||
writel(CFG_IODELAY_UNLOCK_KEY, (*ctrl)->iodelay_config_base +
|
||||
CFG_REG_8_OFFSET);
|
||||
|
||||
ret = calibrate_iodelay((*ctrl)->iodelay_config_base);
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
ret = update_delay_mechanism((*ctrl)->iodelay_config_base);
|
||||
|
||||
/* Configure Mux settings */
|
||||
do_set_mux32((*ctrl)->control_padconf_core_base, pad, npads);
|
||||
|
||||
/* Configure Manual IO timing modes */
|
||||
ret = do_set_iodelay((*ctrl)->iodelay_config_base, iodelay, niodelays);
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
err:
|
||||
/* lock IODELAY CONFIG registers */
|
||||
writel(CFG_IODELAY_LOCK_KEY, (*ctrl)->iodelay_config_base +
|
||||
CFG_REG_8_OFFSET);
|
||||
}
|
||||
|
@ -15,9 +15,7 @@
|
||||
#include <environment/ti/dfu.h>
|
||||
#include <linux/sizes.h>
|
||||
|
||||
#ifdef CONFIG_SPL_BUILD
|
||||
#define CONFIG_IODELAY_RECALIBRATION
|
||||
#endif
|
||||
|
||||
#define CONFIG_NR_DRAM_BANKS 2
|
||||
|
||||
|
@ -14,9 +14,7 @@
|
||||
|
||||
#include <environment/ti/dfu.h>
|
||||
|
||||
#ifdef CONFIG_SPL_BUILD
|
||||
#define CONFIG_IODELAY_RECALIBRATION
|
||||
#endif
|
||||
|
||||
#define CONFIG_VERY_BIG_RAM
|
||||
#define CONFIG_NR_DRAM_BANKS 2
|
||||
|
Loading…
Reference in New Issue
Block a user