#include "hab_super_root.h"
+//#define IIM_FUSE_DEBUG
//#define CMD_CLOCK_DEBUG
#ifdef CMD_CLOCK_DEBUG
#define dbg(fmt...) \
}
break;
case DDR_CLK:
- if (((cbcdr >> 30) & 0x1) == 0x1) {
+ if (cbcdr & (1 << 30)) {
pll = pll_clock(PLL1);
pdf = (cbcdr >> 27) & 0x7;
} else {
void do_L2_caches(int argc, char *argv[])
{
u32 oldints;
- int L2cache_on=0;
if (argc == 2) {
if (strcasecmp(argv[1], "on") == 0) {
diag_printf("Invalid L2 cache mode: %s\n", argv[1]);
}
} else {
+ int L2cache_on;
+
HAL_L2CACHE_IS_ENABLED(L2cache_on);
- diag_printf("L2 cache: %s\n", L2cache_on?"On":"Off");
+ diag_printf("L2 cache: %s\n", L2cache_on ? "On" : "Off");
}
}
#endif //L2CC_ENABLED
return -1;
}
-static unsigned int sense_fuse(int bank, int row, int bit)
+unsigned int sense_fuse(int bank, int row, int bit)
{
int addr, addr_l, addr_h, reg_addr;
addr_l = (addr & 0x000000FF);
#ifdef IIM_FUSE_DEBUG
- diag_printf("%s: addr_h=0x%x, addr_l=0x%x\n",
+ diag_printf("%s: addr_h=0x%02x, addr_l=0x%02x\n",
__FUNCTION__, addr_h, addr_l);
#endif
writel(addr_h, IIM_BASE_ADDR + IIM_UA_OFF);
/* Blow fuses based on the bank, row and bit positions (all 0-based)
*/
-int fuse_blow(int bank,int row,int bit)
+static int fuse_blow(int bank, int row, int bit)
{
int addr, addr_l, addr_h, ret = -1;
addr_l = (addr & 0x000000FF);
#ifdef IIM_FUSE_DEBUG
- diag_printf("blowing addr_h=0x%x, addr_l=0x%x\n", addr_h, addr_l);
+ diag_printf("blowing fuse %d %d bit %d addr_h=0x%02x, addr_l=0x%02x\n",
+ bank, row, bit, addr_h, addr_l);
#endif
writel(addr_h, IIM_BASE_ADDR + IIM_UA_OFF);
writel(addr_l, IIM_BASE_ADDR + IIM_LA_OFF);
/* Start Programming */
- writel(0x31, IIM_BASE_ADDR + IIM_FCTL_OFF);
+ writel(0x71, IIM_BASE_ADDR + IIM_FCTL_OFF);
if (poll_fuse_op_done(POLL_FUSE_PRGD) == 0) {
ret = 0;
}
return num;
}
-static void fuse_blow_row(int bank, int row, int value)
+void fuse_blow_row(int bank, int row, int value)
{
unsigned int reg, i;
memcpy(val, s, 2);
val[2]='\0';
value = quick_atoi(val, 2);
- // diag_printf("fuse_blow_row(2, %d, value=0x%x)\n", i, value);
+ // diag_printf("fuse_blow_row(2, %d, value=0x%02x)\n", i, value);
fuse_blow_row(2, i, value);
if ((++s)[0] == '\0') {
bank, row, value);
fuse_blow_row(bank, row, value);
fuse_val = sense_fuse(bank, row, 0);
- diag_printf("fuses at (bank:%ld, row:%ld) = 0x%x\n", bank, row, fuse_val);
+ diag_printf("fuses at (bank:%ld, row:%ld) = 0x%02x\n", bank, row, fuse_val);
} else {
diag_printf("Passing in wrong arguments: %d\n", argc);