]> git.sur5r.net Git - u-boot/blobdiff - cpu/mpc8260/speed.c
Add GIT version information (commid ID) to untagged U-Boot versions
[u-boot] / cpu / mpc8260 / speed.c
index 1f53c4f4c8223e683a0ebd086092469a12229401..a761a178bc12e179fe32fde00af597361a8de839 100644 (file)
@@ -120,15 +120,22 @@ int get_clocks (void)
 
        scmr = immap->im_clkrst.car_scmr;
        corecnf = (scmr & SCMR_CORECNF_MSK) >> SCMR_CORECNF_SHIFT;
-       busdf = (scmr & SCMR_BUSDF_MSK) >> SCMR_BUSDF_SHIFT;
-       cpmdf = (scmr & SCMR_CPMDF_MSK) >> SCMR_CPMDF_SHIFT;
-       plldf = (scmr & SCMR_PLLDF) ? 1 : 0;
-       pllmf = (scmr & SCMR_PLLMF_MSK) >> SCMR_PLLMF_SHIFT;
-
        cp = &corecnf_tab[corecnf];
 
-       gd->vco_out = (clkin * 2 * (pllmf + 1)) / (plldf + 1);
+       busdf = (scmr & SCMR_BUSDF_MSK) >> SCMR_BUSDF_SHIFT;
+       cpmdf = (scmr & SCMR_CPMDF_MSK) >> SCMR_CPMDF_SHIFT;
 
+       /* HiP7, HiP7 Rev01, HiP7 RevA */
+       if ((get_pvr () == PVR_8260_HIP7) ||
+           (get_pvr () == PVR_8260_HIP7R1) ||
+           (get_pvr () == PVR_8260_HIP7RA)) {
+               pllmf = (scmr & SCMR_PLLMF_MSKH7) >> SCMR_PLLMF_SHIFT;
+               gd->vco_out = clkin * (pllmf + 1);
+       } else {                        /* HiP3, HiP4 */
+               pllmf = (scmr & SCMR_PLLMF_MSK) >> SCMR_PLLMF_SHIFT;
+               plldf = (scmr & SCMR_PLLDF) ? 1 : 0;
+               gd->vco_out = (clkin * 2 * (pllmf + 1)) / (plldf + 1);
+       }
 #if 0
        if (gd->vco_out / (busdf + 1) != clkin) {
                /* aaarrrggghhh!!! */
@@ -171,19 +178,19 @@ int prt_8260_clks (void)
 
        cp = &corecnf_tab[corecnf];
 
-       printf (CPU_ID_STR " Clock Configuration\n - Bus-to-Core Mult ");
+       puts (CPU_ID_STR " Clock Configuration\n - Bus-to-Core Mult ");
 
        switch (cp->b2c_mult) {
        case _byp:
-               printf ("BYPASS");
+               puts ("BYPASS");
                break;
 
        case _off:
-               printf ("OFF");
+               puts ("OFF");
                break;
 
        case _unk:
-               printf ("UNKNOWN");
+               puts ("UNKNOWN");
                break;
 
        default:
@@ -203,8 +210,19 @@ int prt_8260_clks (void)
        printf (" - vco_out %10ld, scc_clk %10ld, brg_clk %10ld\n",
                        gd->vco_out, gd->scc_clk, gd->brg_clk);
 
-       printf (" - cpu_clk %10ld, cpm_clk %10ld, bus_clk %10ld\n\n",
+       printf (" - cpu_clk %10ld, cpm_clk %10ld, bus_clk %10ld\n",
                        gd->cpu_clk, gd->cpm_clk, gd->bus_clk);
+
+       if (sccr & SCCR_PCI_MODE) {
+               uint pci_div;
+
+               pci_div = ( (sccr & SCCR_PCI_MODCK) ? 2 : 1) *
+                       ( ( (sccr & SCCR_PCIDF_MSK) >> SCCR_PCIDF_SHIFT) + 1);
+
+               printf (" - pci_clk %10ld\n", (gd->cpm_clk * 2) / pci_div);
+       }
+       putc ('\n');
+
        return (0);
 }