From 31e7b0b784defb67457597ff8dbb66e7b509bdac Mon Sep 17 00:00:00 2001 From: p3 Date: Fri, 22 May 2020 12:54:19 -0500 Subject: [PATCH] Parsing of board ID for P3-ROC and P-ROC are now different. Both read from address 3, but P3-ROC is bits 11:8, and P-ROC is bits 7:4. --- utils/pinprocfw/pinprocfw.cpp | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/utils/pinprocfw/pinprocfw.cpp b/utils/pinprocfw/pinprocfw.cpp index 0bff8a2..794a65d 100644 --- a/utils/pinprocfw/pinprocfw.cpp +++ b/utils/pinprocfw/pinprocfw.cpp @@ -2176,10 +2176,20 @@ int checkPROCFile() { PRReadData(proc, 0, 0, 4, readdata); board_id = readdata[0]; board_rev = readdata[3]; - board_rev = (board_rev & 0x80) >> 7 | - (board_rev & 0x40) >> 5 | - (board_rev & 0x20) >> 3 | - (board_rev & 0x10) >> 1; + if (board_id == P3_ROC_CHIP_ID) { + board_rev = (board_rev & 0x800) >> 11 | + (board_rev & 0x400) >> 10 | + (board_rev & 0x200) >> 9 | + (board_rev & 0x100) >> 8; + fprintf(stderr, "\nReading P3-ROC board_rev: %d", board_rev); + } + else { + board_rev = (board_rev & 0x80) >> 7 | + (board_rev & 0x40) >> 6 | + (board_rev & 0x20) >> 5 | + (board_rev & 0x10) >> 4; + fprintf(stderr, "\nReading P-ROC board_rev: %d", board_rev); + } if (proc_file_version != 0) { fprintf(stderr, "\nERROR: Unsupported .p-roc file version: %x. Check for an updated version of this tool.\n\n", proc_file_version); @@ -2197,6 +2207,14 @@ int checkPROCFile() { return 0; } else fprintf(stderr, "\nBoard ID verified"); + + if (board_rev > max_board_rev) { + fprintf(stderr, "\nERROR: board_rev %d > max_board_rev %d", board_rev, max_board_rev); + } + if (board_rev < min_board_rev) { + fprintf(stderr, "\nERROR: board_rev < min_board_rev"); + } + if (board_rev > max_board_rev || board_rev < min_board_rev) { fprintf(stderr, "\nERROR: This image is not compatible with the P-ROC board (rev: %x)", board_id); return 0;