From 04dd17822334871b23ea2862f7798fb0e0007777 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Sat, 11 May 2024 08:53:19 +0000
Subject: [PATCH] change otg to host mode
---
u-boot/drivers/ram/rockchip/sdram_rv1126.c | 38 ++++++++++++++++++++++++++++++--------
1 files changed, 30 insertions(+), 8 deletions(-)
diff --git a/u-boot/drivers/ram/rockchip/sdram_rv1126.c b/u-boot/drivers/ram/rockchip/sdram_rv1126.c
index bb2ce37..65f08a2 100644
--- a/u-boot/drivers/ram/rockchip/sdram_rv1126.c
+++ b/u-boot/drivers/ram/rockchip/sdram_rv1126.c
@@ -374,6 +374,8 @@
break;
delay--;
}
+ if (delay <= 0)
+ printascii("ERROR: DPLL lock timeout!\n");
writel(DPLL_MODE(CLOCK_FROM_PLL), &dram->cru->mode);
}
@@ -557,11 +559,18 @@
{
void __iomem *phy_base = dram->phy;
u32 fbdiv, prediv, postdiv, postdiv_en;
+ int delay = 1000;
if (wait) {
clrbits_le32(PHY_REG(phy_base, 0x53), PHY_PD_DISB);
- while (!(readl(PHY_REG(phy_base, 0x90)) & PHY_PLL_LOCK))
- continue;
+ while (!(readl(PHY_REG(phy_base, 0x90)) & PHY_PLL_LOCK)) {
+ udelay(1);
+ if (delay-- <= 0) {
+ printascii("ERROR: phy pll lock timeout!\n");
+ while (1)
+ ;
+ }
+ }
} else {
freq /= MHz;
prediv = 1;
@@ -2484,13 +2493,13 @@
return 0;
}
-static int sdram_init_(struct dram_info *dram,
- struct rv1126_sdram_params *sdram_params, u32 post_init)
+int sdram_init_(struct dram_info *dram, struct rv1126_sdram_params *sdram_params, u32 post_init)
{
void __iomem *pctl_base = dram->pctl;
void __iomem *phy_base = dram->phy;
u32 ddr4_vref;
u32 mr_tmp, tmp;
+ int delay = 1000;
rkclk_configure_ddr(dram, sdram_params);
@@ -2538,8 +2547,14 @@
rkclk_ddr_reset(dram, 0, 0, 0, 0);
- while ((readl(pctl_base + DDR_PCTL2_STAT) & 0x7) == 0)
- continue;
+ while ((readl(pctl_base + DDR_PCTL2_STAT) & 0x7) == 0) {
+ udelay(1);
+ if (delay-- <= 0) {
+ printascii("ERROR: Cannot wait dfi_init_done!\n");
+ while (1)
+ ;
+ }
+ }
if (sdram_params->base.dramtype == LPDDR3) {
pctl_write_mr(dram->pctl, 3, 11, lp3_odt_value, LPDDR3);
@@ -3300,6 +3315,7 @@
struct rv1126_sdram_params *sdram_params_new;
void __iomem *pctl_base = dram->pctl;
void __iomem *phy_base = dram->phy;
+ int delay = 1000;
lp_stat = low_power_update(dram, 0);
sdram_params_new = get_default_sdram_config(freq);
@@ -3388,8 +3404,14 @@
(0x0 << ACLK_DDR_UPCTL_EN_SHIFT),
BUS_SGRF_BASE_ADDR + SGRF_SOC_CON12);
while ((readl(pctl_base + DDR_PCTL2_DFISTAT) &
- PCTL2_DFI_INIT_COMPLETE) != PCTL2_DFI_INIT_COMPLETE)
- continue;
+ PCTL2_DFI_INIT_COMPLETE) != PCTL2_DFI_INIT_COMPLETE) {
+ udelay(1);
+ if (delay-- <= 0) {
+ printascii("ERROR: Cannot wait DFI_INIT_COMPLETE\n");
+ while (1)
+ ;
+ }
+ }
sw_set_req(dram);
setbits_le32(pctl_base + DDR_PCTL2_MSTR, 0x1 << 29);
--
Gitblit v1.6.2