int do_sar(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) { const char *cmd; /* need at least two arguments */ if (argc < 2) goto usage; cmd = argv[1]; if (strcmp(cmd, "list") == 0) return do_sar_list(argc - 2, argv + 2); else if (strcmp(cmd, "write") == 0) { if (do_sar_write(argc - 2, argv + 2) == 0) do_sar_read(argc - 2, argv + 2); return 0; } else if (strcmp(cmd, "read") == 0) return do_sar_read(argc - 2, argv + 2); usage: cmd_usage(cmdtp); return 1; }
int do_sar(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) { const char *cmd, *cmd2 = NULL; /* need at least two arguments */ if (argc < 2) goto usage; cmd = argv[1]; if (argc > 2) cmd2 = argv[2]; if (strcmp(cmd, "list") == 0) return do_sar_list(argc - 2, argv + 2); else if ((strcmp(cmd, "write") == 0) && (strcmp(cmd2, "default") == 0)) { if (do_sar_default() == 0) { do_sar_read(argc - 3, argv + 3); printf("\nChanges will be applied after reset.\n\n"); return 0; } else return 1; } else if (strcmp(cmd, "write") == 0) { if (do_sar_write(argc - 2, argv + 2) == 0) { do_sar_read(argc - 2, argv + 2); if (strcmp(cmd2, "freq") == 0 && !mvCtrlIsValidSatR()) printf("\n*** Selected Unsupported DDR/CPU/L2 Clock configuration ***\n\n"); printf("\nChanges will be applied after reset.\n"); return 0; } else return 1; } else if (strcmp(cmd, "read") == 0) return do_sar_read(argc - 2, argv + 2); usage: cmd_usage(cmdtp); return 1; }
static int do_sar_write(int argc, char *const argv[]) { const char *cmd = argv[0]; MV_U32 temp, boardId = mvBoardIdGet(); MV_BOOL flag = MV_ERROR; MV_U8 writeVal = simple_strtoul(argv[1], NULL, 10); MV_FREQ_MODE cpuFreqMode; if (boardId != DB_6660_ID && boardId != DB_6650_ID) { printf("\nError: S@R fields are readable only for current board\n"); return 1; } if (argc < 2) goto usage; if (strcmp(cmd, "freq") == 0) { if (mvCtrlFreqModeGet(writeVal, &cpuFreqMode) != MV_OK) goto input_error; else if (GetAndVerifySatr(MV_SATR_CPU_DDR_L2_FREQ, &temp) == MV_OK ) flag = mvCtrlSatRWrite(MV_SATR_CPU_DDR_L2_FREQ, writeVal, MV_FALSE); } else if (strcmp(cmd, "coreclock") == 0) { if (writeVal != 0 && writeVal != 1) goto input_error; else if (GetAndVerifySatr(MV_SATR_CORE_CLK_SELECT, &temp) == MV_OK ) flag = mvCtrlSatRWrite(MV_SATR_CORE_CLK_SELECT, writeVal, MV_FALSE); } else if (strcmp(cmd, "cpusnum") == 0) { if (writeVal != 0 && writeVal != 1) goto input_error; else if (GetAndVerifySatr(MV_SATR_CPU1_ENABLE, &temp) == MV_OK ) flag = mvCtrlSatRWrite(MV_SATR_CPU1_ENABLE, writeVal, MV_FALSE); } else if (strcmp(cmd, "sscg") == 0) { if (writeVal != 0 && writeVal != 1) goto input_error; else if (GetAndVerifySatr(MV_SATR_SSCG_DISABLE, &temp) == MV_OK ) flag = mvCtrlSatRWrite(MV_SATR_SSCG_DISABLE, writeVal, MV_FALSE); } else if (strcmp(cmd, "pcimode0") == 0) { if (writeVal != 0 && writeVal != 1) goto input_error; else if (GetAndVerifySatr(MV_SATR_PEX0_CLOCK, &temp) == MV_OK) flag = mvCtrlSatRWrite(MV_SATR_PEX0_CLOCK, writeVal, MV_FALSE); } else if (strcmp(cmd, "pcimode1") == 0) { if (writeVal != 0 && writeVal != 1) goto input_error; else if (GetAndVerifySatr(MV_SATR_PEX1_CLOCK, &temp) == MV_OK) flag = mvCtrlSatRWrite(MV_SATR_PEX1_CLOCK, writeVal, MV_FALSE); } else goto usage; if (flag == MV_ERROR) { printf("Write S@R failed!\n"); return 1; } return 0; input_error: printf("\nError: value is not valid for \"%s\" (%d)\n\n", cmd , writeVal); do_sar_list(1, argv); return 1; usage: printf("Usage: SatR write [options] (see help) \n"); return 1; }