/* * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 2008 Maxime Bizon <mbizon@freebox.fr> * Copyright (C) 2009 Florian Fainelli <florian@openwrt.org>
*/
switch (mips_pll_fcvo) { case 0x12: case 0x14: case 0x19: return 160000000; case 0x1c: return 192000000; case 0x13: case 0x15: return 200000000; case 0x1a: return 384000000; case 0x16: return 400000000; default: return 320000000;
}
} case BCM6338_CPU_ID: /* BCM6338 has a fixed 240 Mhz frequency */ return 240000000;
case BCM6345_CPU_ID: /* BCM6345 has a fixed 140Mhz frequency */ return 140000000;
case BCM6348_CPU_ID:
{ unsignedint tmp, n1, n2, m1;
case BCM6362_CPU_ID:
{ unsignedint tmp, mips_pll_fcvo;
tmp = bcm_misc_readl(MISC_STRAPBUS_6362_REG);
mips_pll_fcvo = (tmp & STRAPBUS_6362_FCVO_MASK)
>> STRAPBUS_6362_FCVO_SHIFT; switch (mips_pll_fcvo) { case 0x03: case 0x0b: case 0x13: case 0x1b: return 240000000; case 0x04: case 0x0c: case 0x14: case 0x1c: return 160000000; case 0x05: case 0x0e: case 0x16: case 0x1e: case 0x1f: return 400000000; case 0x06: return 440000000; case 0x07: case 0x17: return 384000000; case 0x15: case 0x1d: return 200000000; default: return 320000000;
}
} case BCM6368_CPU_ID:
{ unsignedint tmp, p1, p2, ndiv, m1;
/* soc registers location depends on cpu type */
chipid_reg = 0;
switch (current_cpu_type()) { case CPU_BMIPS3300: if ((read_c0_prid() & PRID_IMP_MASK) != PRID_IMP_BMIPS3300_ALT)
__cpu_name[cpu] = "Broadcom BCM6338";
fallthrough; case CPU_BMIPS32:
chipid_reg = BCM_6345_PERF_BASE; break; case CPU_BMIPS4350: switch ((read_c0_prid() & PRID_REV_MASK)) { case 0x04:
chipid_reg = BCM_3368_PERF_BASE; break; case 0x10:
chipid_reg = BCM_6345_PERF_BASE; break; default:
chipid_reg = BCM_6368_PERF_BASE; break;
} break;
}
/* * really early to panic, but delaying panic would not help since we * will never get any working console
*/ if (!chipid_reg)
panic("unsupported Broadcom CPU");
/* read out CPU type */
tmp = bcm_readl(chipid_reg);
bcm63xx_cpu_id = (tmp & REV_CHIPID_MASK) >> REV_CHIPID_SHIFT;
bcm63xx_cpu_rev = (tmp & REV_REVID_MASK) >> REV_REVID_SHIFT;
switch (bcm63xx_cpu_id) { case BCM3368_CPU_ID:
bcm63xx_regs_base = bcm3368_regs_base;
bcm63xx_irqs = bcm3368_irqs; break; case BCM6328_CPU_ID:
bcm63xx_regs_base = bcm6328_regs_base;
bcm63xx_irqs = bcm6328_irqs; break; case BCM6338_CPU_ID:
bcm63xx_regs_base = bcm6338_regs_base;
bcm63xx_irqs = bcm6338_irqs; break; case BCM6345_CPU_ID:
bcm63xx_regs_base = bcm6345_regs_base;
bcm63xx_irqs = bcm6345_irqs; break; case BCM6348_CPU_ID:
bcm63xx_regs_base = bcm6348_regs_base;
bcm63xx_irqs = bcm6348_irqs; break; case BCM6358_CPU_ID:
bcm63xx_regs_base = bcm6358_regs_base;
bcm63xx_irqs = bcm6358_irqs; break; case BCM6362_CPU_ID:
bcm63xx_regs_base = bcm6362_regs_base;
bcm63xx_irqs = bcm6362_irqs; break; case BCM6368_CPU_ID:
bcm63xx_regs_base = bcm6368_regs_base;
bcm63xx_irqs = bcm6368_irqs; break; default:
panic("unsupported broadcom CPU %x", bcm63xx_cpu_id); break;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.