diff options
author | Zhicheng Fan <b32736@freescale.com> | 2012-02-22 00:44:07 -0500 |
---|---|---|
committer | Kumar Gala <galak@kernel.crashing.org> | 2012-03-16 15:59:38 -0400 |
commit | c141b38f8643b46701c9db819909120c5b667a26 (patch) | |
tree | 648c6bff433717827e3fdf8e61a5f3d234cd3596 /arch/powerpc | |
parent | 0c350a9a5cf01db3875ceb8b01121d8ce6a7f287 (diff) |
powerpc/85xx: Abstract common define of signal multiplex control for qe
The mpc85xx_rdb and mpc85xx_mds have commom define of signal multiplex for qe, so
they need to go in common header, the patch abstract them to fsl_guts.h
Signed-off-by: Zhicheng Fan <b32736@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/include/asm/fsl_guts.h | 6 | ||||
-rw-r--r-- | arch/powerpc/platforms/85xx/mpc85xx_mds.c | 35 |
2 files changed, 20 insertions, 21 deletions
diff --git a/arch/powerpc/include/asm/fsl_guts.h b/arch/powerpc/include/asm/fsl_guts.h index bebd12463ec9..ce04530d2000 100644 --- a/arch/powerpc/include/asm/fsl_guts.h +++ b/arch/powerpc/include/asm/fsl_guts.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * Authors: Jeff Brown | 4 | * Authors: Jeff Brown |
5 | * Timur Tabi <timur@freescale.com> | 5 | * Timur Tabi <timur@freescale.com> |
6 | * | 6 | * |
7 | * Copyright 2004,2007 Freescale Semiconductor, Inc | 7 | * Copyright 2004,2007,2012 Freescale Semiconductor, Inc |
8 | * | 8 | * |
9 | * This program is free software; you can redistribute it and/or modify it | 9 | * This program is free software; you can redistribute it and/or modify it |
10 | * under the terms of the GNU General Public License as published by the | 10 | * under the terms of the GNU General Public License as published by the |
@@ -114,6 +114,10 @@ struct ccsr_guts_86xx { | |||
114 | __be32 srds2cr1; /* 0x.0f44 - SerDes2 Control Register 0 */ | 114 | __be32 srds2cr1; /* 0x.0f44 - SerDes2 Control Register 0 */ |
115 | } __attribute__ ((packed)); | 115 | } __attribute__ ((packed)); |
116 | 116 | ||
117 | |||
118 | /* Alternate function signal multiplex control */ | ||
119 | #define MPC85xx_PMUXCR_QE(x) (0x8000 >> (x)) | ||
120 | |||
117 | #ifdef CONFIG_PPC_86xx | 121 | #ifdef CONFIG_PPC_86xx |
118 | 122 | ||
119 | #define CCSR_GUTS_DMACR_DEV_SSI 0 /* DMA controller/channel set to SSI */ | 123 | #define CCSR_GUTS_DMACR_DEV_SSI 0 /* DMA controller/channel set to SSI */ |
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_mds.c b/arch/powerpc/platforms/85xx/mpc85xx_mds.c index 57aceb5d273e..f33662b46b8d 100644 --- a/arch/powerpc/platforms/85xx/mpc85xx_mds.c +++ b/arch/powerpc/platforms/85xx/mpc85xx_mds.c | |||
@@ -1,5 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) Freescale Semicondutor, Inc. 2006-2010. All rights reserved. | 2 | * Copyright (C) 2006-2010, 2012 Freescale Semicondutor, Inc. |
3 | * All rights reserved. | ||
3 | * | 4 | * |
4 | * Author: Andy Fleming <afleming@freescale.com> | 5 | * Author: Andy Fleming <afleming@freescale.com> |
5 | * | 6 | * |
@@ -51,6 +52,7 @@ | |||
51 | #include <asm/qe_ic.h> | 52 | #include <asm/qe_ic.h> |
52 | #include <asm/mpic.h> | 53 | #include <asm/mpic.h> |
53 | #include <asm/swiotlb.h> | 54 | #include <asm/swiotlb.h> |
55 | #include <asm/fsl_guts.h> | ||
54 | #include "smp.h" | 56 | #include "smp.h" |
55 | 57 | ||
56 | #include "mpc85xx.h" | 58 | #include "mpc85xx.h" |
@@ -268,34 +270,27 @@ static void __init mpc85xx_mds_qe_init(void) | |||
268 | mpc85xx_mds_reset_ucc_phys(); | 270 | mpc85xx_mds_reset_ucc_phys(); |
269 | 271 | ||
270 | if (machine_is(p1021_mds)) { | 272 | if (machine_is(p1021_mds)) { |
271 | #define MPC85xx_PMUXCR_OFFSET 0x60 | ||
272 | #define MPC85xx_PMUXCR_QE0 0x00008000 | ||
273 | #define MPC85xx_PMUXCR_QE3 0x00001000 | ||
274 | #define MPC85xx_PMUXCR_QE9 0x00000040 | ||
275 | #define MPC85xx_PMUXCR_QE12 0x00000008 | ||
276 | static __be32 __iomem *pmuxcr; | ||
277 | 273 | ||
278 | np = of_find_node_by_name(NULL, "global-utilities"); | 274 | struct ccsr_guts_85xx __iomem *guts; |
279 | 275 | ||
276 | np = of_find_node_by_name(NULL, "global-utilities"); | ||
280 | if (np) { | 277 | if (np) { |
281 | pmuxcr = of_iomap(np, 0) + MPC85xx_PMUXCR_OFFSET; | 278 | guts = of_iomap(np, 0); |
282 | 279 | if (!guts) | |
283 | if (!pmuxcr) | 280 | pr_err("mpc85xx-rdb: could not map global utilities register\n"); |
284 | printk(KERN_EMERG "Error: Alternate function" | 281 | else{ |
285 | " signal multiplex control register not" | ||
286 | " mapped!\n"); | ||
287 | else | ||
288 | /* P1021 has pins muxed for QE and other functions. To | 282 | /* P1021 has pins muxed for QE and other functions. To |
289 | * enable QE UEC mode, we need to set bit QE0 for UCC1 | 283 | * enable QE UEC mode, we need to set bit QE0 for UCC1 |
290 | * in Eth mode, QE0 and QE3 for UCC5 in Eth mode, QE9 | 284 | * in Eth mode, QE0 and QE3 for UCC5 in Eth mode, QE9 |
291 | * and QE12 for QE MII management signals in PMUXCR | 285 | * and QE12 for QE MII management signals in PMUXCR |
292 | * register. | 286 | * register. |
293 | */ | 287 | */ |
294 | setbits32(pmuxcr, MPC85xx_PMUXCR_QE0 | | 288 | setbits32(&guts->pmuxcr, MPC85xx_PMUXCR_QE(0) | |
295 | MPC85xx_PMUXCR_QE3 | | 289 | MPC85xx_PMUXCR_QE(3) | |
296 | MPC85xx_PMUXCR_QE9 | | 290 | MPC85xx_PMUXCR_QE(9) | |
297 | MPC85xx_PMUXCR_QE12); | 291 | MPC85xx_PMUXCR_QE(12)); |
298 | 292 | iounmap(guts); | |
293 | } | ||
299 | of_node_put(np); | 294 | of_node_put(np); |
300 | } | 295 | } |
301 | 296 | ||