|
@@ -200,6 +200,9 @@ unsigned int qe_get_brg_clk(void)
|
|
|
}
|
|
|
EXPORT_SYMBOL(qe_get_brg_clk);
|
|
|
|
|
|
+#define PVR_VER_836x 0x8083
|
|
|
+#define PVR_VER_832x 0x8084
|
|
|
+
|
|
|
/* Program the BRG to the given sampling rate and multiplier
|
|
|
*
|
|
|
* @brg: the BRG, QE_BRG1 - QE_BRG16
|
|
@@ -226,8 +229,9 @@ int qe_setbrg(enum qe_clock brg, unsigned int rate, unsigned int multiplier)
|
|
|
/* Errata QE_General4, which affects some MPC832x and MPC836x SOCs, says
|
|
|
that the BRG divisor must be even if you're not using divide-by-16
|
|
|
mode. */
|
|
|
- if (!div16 && (divisor & 1) && (divisor > 3))
|
|
|
- divisor++;
|
|
|
+ if (pvr_version_is(PVR_VER_836x) || pvr_version_is(PVR_VER_832x))
|
|
|
+ if (!div16 && (divisor & 1) && (divisor > 3))
|
|
|
+ divisor++;
|
|
|
|
|
|
tempval = ((divisor - 1) << QE_BRGC_DIVISOR_SHIFT) |
|
|
|
QE_BRGC_ENABLE | div16;
|