2 * (C) Copyright 2000-2002
3 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
5 * SPDX-License-Identifier: GPL-2.0+
10 #include <asm/processor.h>
12 DECLARE_GLOBAL_DATA_PTR;
14 /* ------------------------------------------------------------------------- */
16 /* Bus-to-Core Multipliers */
18 static int bus2core[] = {
19 3, 2, 2, 2, 4, 4, 5, 9,
20 6, 11, 8, 10, 3, 12, 7, 0,
21 6, 5, 13, 2, 14, 4, 15, 9,
22 0, 11, 8, 10, 16, 12, 7, 0
24 /* ------------------------------------------------------------------------- */
34 #if !defined(CONFIG_SYS_MPC5XXX_CLKIN)
35 #error clock measuring not implemented yet - define CONFIG_SYS_MPC5XXX_CLKIN
38 val = *(vu_long *)MPC5XXX_CDM_PORCFG;
40 vco = CONFIG_SYS_MPC5XXX_CLKIN * 12;
42 vco = CONFIG_SYS_MPC5XXX_CLKIN * 16;
45 gd->bus_clk = vco / 8;
47 gd->bus_clk = vco / 4;
49 gd->cpu_clk = gd->bus_clk * bus2core[val & 0x1f] / 2;
51 val = *(vu_long *)MPC5XXX_CDM_CFG;
53 gd->arch.ipb_clk = gd->bus_clk / 2;
55 gd->arch.ipb_clk = gd->bus_clk;
59 gd->pci_clk = gd->arch.ipb_clk;
62 gd->pci_clk = gd->arch.ipb_clk / 2;
65 gd->pci_clk = gd->bus_clk / 4;
72 int prt_mpc5xxx_clks (void)
74 char buf1[32], buf2[32], buf3[32];
76 printf (" Bus %s MHz, IPB %s MHz, PCI %s MHz\n",
77 strmhz(buf1, gd->bus_clk),
78 strmhz(buf2, gd->arch.ipb_clk),
79 strmhz(buf3, gd->pci_clk)
84 /* ------------------------------------------------------------------------- */