/* * Command d2pll & ddrtest support. */ #include #include #include #include #include #include #include int do_ddr2pll(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { char *endp; unsigned long pll, zqcr; /* need at least two arguments */ if (argc < 2) goto usage; pll = simple_strtoul(argv[1], &endp,0); if (*argv[1] == 0 || *endp != 0) { printf ("Error: Wrong format parament!\n"); return 1; } if (argc >2) { zqcr = simple_strtoul(argv[2], &endp, 16); if (*argv[2] == 0 || *endp != 0) { zqcr = 0; } } else { zqcr = 0; } #if defined(CONFIG_M6TV) || defined(CONFIG_M6TVD) writel(zqcr | (0x3c << 24), P_PREG_STICKY_REG0); #else writel(zqcr | (0xf13 << 20), P_PREG_STICKY_REG0); #endif writel(pll | (readl(P_PREG_STICKY_REG1)), P_PREG_STICKY_REG1); printf("Set pll done [0x%08x]\n", readl(P_PREG_STICKY_REG1)); #ifdef CONFIG_M8B writel(0xf080000 | 2000, WATCHDOG_TC); #else reset_system(); #endif return 0; usage: cmd_usage(cmdtp); return 1; } U_BOOT_CMD( d2pll, 5, 1, do_ddr2pll, "DDR set PLL function", "DDR PLL set: d2pll PLL [ZQCR], e...g... 0x1022c.\n" ); #define DDR_FULL_TEST_CTRL_BIT 21 //use sticky1 bit21 int do_ddrft(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { unsigned long ddr_full_test = 0; //printf("sticky1: 0x%x\n", readl(P_PREG_STICKY_REG1)); if (get_cpu_id().family_id <= MESON_CPU_MAJOR_ID_GXTVBB) { printf("Only support gxl/gxm/txl... chips!\n"); return 0; } if (argc == 1) { /* no parameters, switch 1/0 */ if ((readl(P_PREG_STICKY_REG1)) & (1<2) { zqcr = simple_strtoul(argv[2], &endp, 16); if (*argv[2] == 0 || *endp != 0) { zqcr = 0; } } else { zqcr = 0; } #if defined(CONFIG_M6TV) || defined(CONFIG_M6TVD) writel(zqcr | (0x3c << 24), P_PREG_STICKY_REG0); #else writel(zqcr | (0xf13 << 20), P_PREG_STICKY_REG0); #endif //writel(P_PREG_STICKY_REG1, pll); writel(pll|(1<<31), P_PREG_STICKY_REG1);//modify printf("Set pll done [0x%08x]\n", readl(P_PREG_STICKY_REG1)); #ifdef CONFIG_M8B writel(0xf080000 | 2000, WATCHDOG_TC); #else reset_system(); #endif return 0; usage: cmd_usage(cmdtp); return 1; } U_BOOT_CMD( ddr_sram_tune, 5, 1, do_ddr_sram_tune, "DDR sram tune dqs", "ddr_sram_tune PLL [ZQCR], e...g... 0x1022c.\n\n" );