|
@@ -486,9 +486,6 @@ int cpm1_clk_setup(enum cpm_clk_target target, int clock, int mode)
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
|
- if (reg == &mpc8xx_immr->im_cpm.cp_sicr && mode == CPM_CLK_RX)
|
|
|
- shift += 3;
|
|
|
-
|
|
|
for (i = 0; i < ARRAY_SIZE(clk_map); i++) {
|
|
|
if (clk_map[i][0] == target && clk_map[i][1] == clock) {
|
|
|
bits = clk_map[i][2];
|
|
@@ -503,6 +500,17 @@ int cpm1_clk_setup(enum cpm_clk_target target, int clock, int mode)
|
|
|
|
|
|
bits <<= shift;
|
|
|
mask <<= shift;
|
|
|
+
|
|
|
+ if (reg == &mpc8xx_immr->im_cpm.cp_sicr) {
|
|
|
+ if (mode == CPM_CLK_RTX) {
|
|
|
+ bits |= bits << 3;
|
|
|
+ mask |= mask << 3;
|
|
|
+ } else if (mode == CPM_CLK_RX) {
|
|
|
+ bits <<= 3;
|
|
|
+ mask <<= 3;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
out_be32(reg, (in_be32(reg) & ~mask) | bits);
|
|
|
|
|
|
return 0;
|