[U-Boot-Users] Patch to cpu/mpc8260/speed.c

KokHow Teh KokHow.Teh at marconi.com
Thu Jun 16 08:46:21 CEST 2005


Hi;
      I am using u-boot-1.1.2 and I am sending this minor patch to the
cpu/mpc8260/speed.c file in view of MPC8280EC document which lays down how
the PCIDF is calculated but not reflected correctly in the file.

Index: cpu/mpc8260/speed.c
===================================================================
RCS file: /usr/cvsroot/u-boot/cpu/mpc8260/speed.c,v
retrieving revision 1.2
diff -u -b -B -r1.2 speed.c
--- cpu/mpc8260/speed.c 28 Apr 2005 07:01:04 -0000      1.2
+++ cpu/mpc8260/speed.c 16 Jun 2005 04:35:12 -0000
@@ -202,11 +202,12 @@

        volatile immap_t *immap = (immap_t *) CFG_IMMR;
        ulong sccr, dfbrg;
-       ulong scmr, corecnf, busdf, cpmdf, plldf, pllmf;
+       ulong scmr, corecnf, busdf, cpmdf, plldf, pllmf, pcidf;
        corecnf_t *cp;

        sccr = immap->im_clkrst.car_sccr;
        dfbrg = (sccr & SCCR_DFBRG_MSK) >> SCCR_DFBRG_SHIFT;
+       pcidf = (sccr & SCCR_PCIDF_MSK) >> SCCR_PCIDF_SHIFT;

        scmr = immap->im_clkrst.car_scmr;
        corecnf = (scmr & SCMR_CORECNF_MSK) >> SCMR_CORECNF_SHIFT;
@@ -243,8 +244,8 @@
                        cp->vco_div, cp->freq_60x, cp->freq_core);

        printf (" - dfbrg %ld, corecnf 0x%02lx, busdf %ld, cpmdf %ld, "
-                       "plldf %ld, pllmf %ld\n", dfbrg, corecnf, busdf, cpmdf, plldf,
-                       pllmf);
+                       "plldf %ld, pllmf %ld, pcidf %ld\n", dfbrg, corecnf, busdf, cpmdf, plldf,
+                       pllmf, pcidf);

        printf (" - vco_out %10ld, scc_clk %10ld, brg_clk %10ld\n",
                        gd->vco_out, gd->scc_clk, gd->brg_clk);
@@ -253,10 +254,18 @@
                        gd->cpu_clk, gd->cpm_clk, gd->bus_clk);

        if (sccr & SCCR_PCI_MODE) {
-               uint pci_div;
+               uint pci_div, pcidf = (sccr & SCCR_PCIDF_MSK) >> SCCR_PCIDF_SHIFT;

-               pci_div = ( (sccr & SCCR_PCI_MODCK) ? 2 : 1) *
-                       ( ( (sccr & SCCR_PCIDF_MSK) >> SCCR_PCIDF_SHIFT) + 1);
+               if (sccr & SCCR_PCI_MODCK) {
+                       pci_div = 2;
+                       if (pcidf == 9)
+                               pci_div *= 5;
+                       else if (pcidf == 0xB)
+                               pci_div *= 6;
+                       else
+                               pci_div *= (pcidf + 1);
+               } else
+                       pci_div = pcidf + 1;

                printf (" - pci_clk %10ld\n", (gd->cpm_clk * 2) / pci_div);
        }




Regards,
TEH






More information about the U-Boot mailing list