CCCPaste

DPO2014 U-boot strapping pin check code

undefined4 strappingCheck(void)

{
  uint strapMSOvariant;
  char *pcVar1;
  int strapChannelNum;
  uint strapBoardRev;
  int unaff_r29;
  
  _PEPAR = 0;
  _PESO = 0;
  _PEDIR = 0;
  _PEODR = 0;
                    /* Check PE15, PE16, PE17 */
  strapBoardRev = _PEDAT >> 0xd & 4 | _PEDAT >> 0xf & 2 | _PEDAT >> 0x11 & 1;
  if (strapBoardRev == 0) {
    strapChannelNum = 4;
    strapMSOvariant = 1;
  }
  else {
                    /* Check PA14 */
    strapChannelNum = (-(uint)((_PEDAT >> 0xe & 1) == 0) & 2) + 2;
                    /* Check PA11 */
    strapMSOvariant = ((uint)(byte)(((_PEDAT & 0x800) == 0) << 1) << 0x1c) >> 0x1d;
  }
  *(uint *)(unaff_r29 + 0x7c) = strapBoardRev;
  *(int *)(unaff_r29 + 0x80) = strapChannelNum;
  *(uint *)(unaff_r29 + 0x84) = strapMSOvariant;
  consolePrintString("Board: Tektronix Fusion MPC870 Main Board\n");
  consolePrintString("  Version: %i (",*(undefined4 *)(unaff_r29 + 0x7c));
  switch(*(undefined4 *)(unaff_r29 + 0x7c)) {
  case 0:
    pcVar1 = "PROTO1) ";
    break;
  case 1:
    pcVar1 = "GREENWORM) ";
    break;
  case 2:
    pcVar1 = "CHAR) ";
    break;
  case 3:
    pcVar1 = "PRE-QUAL) ";
    break;
  case 4:
    pcVar1 = "QUAL) ";
    break;
  default:
    pcVar1 = "!!*UNDEFINED board type*!!) ";
  }
  consolePrintString(pcVar1);
  consolePrintString("%0d channel  ",*(undefined4 *)(unaff_r29 + 0x80));
  if (*(int *)(unaff_r29 + 0x84) == 0) {
    pcVar1 = "DPO\n";
  }
  else {
    pcVar1 = "MSO\n";
  }
  consolePrintString(pcVar1);
  return 0;
}