return ret;
}
ret = lp3972_reg_write(0x39, 0xf0);
- if (ret < 0) {
+ if (ret < 0 && ret != -ENOSYS) {
diag_printf("Failed to switch fuse programming voltage: %d\n", ret);
return ret;
}
ret = lp3972_reg_read(0x39);
- if (ret != 0xf0) {
+ if (ret != -ENOSYS && ret != 0xf0) {
diag_printf("Failed to switch fuse programming voltage: %d\n", ret);
return ret;
}
for (i = 0; i < ETHER_ADDR_LEN; i++) {
- int bit;
unsigned char fuse = readl(SOC_FEC_MAC_BASE +
ETHER_ADDR_LEN * 4 - ((i + 1) << 2));
+ int row = SOC_MAC_ADDR_FUSE + ETHER_ADDR_LEN - 1 - i;
- for (bit = 0; bit < 8; bit++) {
- if (((mac_addr[i] >> bit) & 0x1) == 0)
- continue;
- if (((mac_addr[i] >> bit) & 1) == ((fuse >> bit) & 1)) {
- continue;
- }
- if (fuse_blow(SOC_MAC_ADDR_FUSE_BANK,
- SOC_MAC_ADDR_FUSE + ETHER_ADDR_LEN - 1 - i,
- bit)) {
- diag_printf("Failed to blow fuse bank 0 row %d bit %d\n",
- i, bit);
- ret = -1;
- goto out;
- }
+ if (fuse == mac_addr[i]) {
+ continue;
+ }
+ fuse_blow_row(SOC_MAC_ADDR_FUSE_BANK, row, mac_addr[i]);
+ ret = sense_fuse(SOC_MAC_ADDR_FUSE_BANK, row, 0);
+ if (ret != mac_addr[i]) {
+ diag_printf("Failed to verify fuse bank %d row %d; expected %02x got %02x\n",
+ SOC_MAC_ADDR_FUSE_BANK, row, mac_addr[i], ret);
+ goto out;
}
}
#ifdef SOC_MAC_ADDR_LOCK_BIT
- fuse_blow(SOC_MAC_ADDR_FUSE_BANK, SOC_MAC_ADDR_LOCK_FUSE,
- SOC_MAC_ADDR_LOCK_BIT);
+ fuse_blow_row(SOC_MAC_ADDR_FUSE_BANK, SOC_MAC_ADDR_LOCK_FUSE,
+ (1 << SOC_MAC_ADDR_LOCK_BIT));
#endif
out:
lp3972_reg_write(0x39, 0);
}
RedBoot_init(random_init, RedBoot_INIT_FIRST);
-#define WDOG_WRSR ((CYG_WORD16 *)0x10002004)
static void display_board_type(void)
{
- CYG_WORD32 reset_cause;
- const char *dlm = "";
-
- diag_printf("\nBoard Type: Ka-Ro TX51\n");
- diag_printf("Last RESET cause: ");
- HAL_READ_UINT32(SRC_BASE_ADDR + 8, reset_cause);
-
- if ((reset_cause & 9) == 1) {
- diag_printf("%sPOWER_ON RESET", dlm);
- dlm = " | ";
- } else if ((reset_cause & 9) == 9) {
- diag_printf("%sUSER RESET", dlm);
- dlm = " | ";
- }
- if ((reset_cause & 0x11) == 0x11) {
- diag_printf("%sWATCHDOG RESET", dlm);
- dlm = " | ";
- } else if ((reset_cause & 0x11) == 0x10) {
- diag_printf("%sSOFT RESET", dlm);
- dlm = " | ";
- }
- if (*dlm == '\0') {
- diag_printf("UNKNOWN: %08x\n", reset_cause);
- } else {
- diag_printf("\n");
- }
+ diag_printf("\nBoard Type: Ka-Ro TX51-80x%d\n",
+ SDRAM_SIZE > SZ_128M);
}
static void display_board_info(void)