* [PATCH 2/2 v2] powerpc: Abstract common define of signal multiplex control for qe @ 2012-02-08 9:52 Zhicheng Fan 2012-02-08 9:52 ` [PATCH 1/2 v2] P1025RDB: Add Quicc Engine support Zhicheng Fan 0 siblings, 1 reply; 3+ messages in thread From: Zhicheng Fan @ 2012-02-08 9:52 UTC (permalink / raw) To: galak, linuxppc-dev; +Cc: Zhicheng Fan From: Zhicheng Fan <b32736@freeescale.com> 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@freeescale.com> --- arch/powerpc/include/asm/fsl_guts.h | 19 +++++++++++++++++++ arch/powerpc/platforms/85xx/mpc85xx_mds.c | 7 ++----- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/arch/powerpc/include/asm/fsl_guts.h b/arch/powerpc/include/asm/fsl_guts.h index bebd124..efacfe3 100644 --- a/arch/powerpc/include/asm/fsl_guts.h +++ b/arch/powerpc/include/asm/fsl_guts.h @@ -114,6 +114,25 @@ struct ccsr_guts_86xx { __be32 srds2cr1; /* 0x.0f44 - SerDes2 Control Register 0 */ } __attribute__ ((packed)); +#ifdef CONFIG_PPC_85xx + +/* Alternate function signal multiplex control */ +#define MPC85xx_PMUXCR_OFFSET 0x60 +#define MPC85xx_PMUXCR_QE0 0x00008000 +#define MPC85xx_PMUXCR_QE2 0x00002000 +#define MPC85xx_PMUXCR_QE3 0x00001000 +#define MPC85xx_PMUXCR_QE4 0x00000800 +#define MPC85xx_PMUXCR_QE5 0x00000400 +#define MPC85xx_PMUXCR_QE6 0x00000200 +#define MPC85xx_PMUXCR_QE7 0x00000100 +#define MPC85xx_PMUXCR_QE8 0x00000080 +#define MPC85xx_PMUXCR_QE9 0x00000040 +#define MPC85xx_PMUXCR_QE10 0x00000020 +#define MPC85xx_PMUXCR_QE11 0x00000010 +#define MPC85xx_PMUXCR_QE12 0x00000008 + +#endif + #ifdef CONFIG_PPC_86xx #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 1d15a0c..1bd339a 100644 --- a/arch/powerpc/platforms/85xx/mpc85xx_mds.c +++ b/arch/powerpc/platforms/85xx/mpc85xx_mds.c @@ -51,6 +51,7 @@ #include <asm/qe_ic.h> #include <asm/mpic.h> #include <asm/swiotlb.h> +#include <asm/fsl_guts.h> #include "smp.h" #include "mpc85xx.h" @@ -268,11 +269,7 @@ static void __init mpc85xx_mds_qe_init(void) mpc85xx_mds_reset_ucc_phys(); if (machine_is(p1021_mds)) { -#define MPC85xx_PMUXCR_OFFSET 0x60 -#define MPC85xx_PMUXCR_QE0 0x00008000 -#define MPC85xx_PMUXCR_QE3 0x00001000 -#define MPC85xx_PMUXCR_QE9 0x00000040 -#define MPC85xx_PMUXCR_QE12 0x00000008 + static __be32 __iomem *pmuxcr; np = of_find_node_by_name(NULL, "global-utilities"); -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 1/2 v2] P1025RDB: Add Quicc Engine support 2012-02-08 9:52 [PATCH 2/2 v2] powerpc: Abstract common define of signal multiplex control for qe Zhicheng Fan @ 2012-02-08 9:52 ` Zhicheng Fan 2012-02-09 16:17 ` Tabi Timur-B04825 0 siblings, 1 reply; 3+ messages in thread From: Zhicheng Fan @ 2012-02-08 9:52 UTC (permalink / raw) To: galak, linuxppc-dev; +Cc: Zhicheng Fan From: Zhicheng Fan <b32736@freeescale.com> Signed-off-by: Zhicheng Fan <b32736@freeescale.com> --- arch/powerpc/platforms/85xx/mpc85xx_rdb.c | 80 ++++++++++++++++++++++++++++- 1 files changed, 79 insertions(+), 1 deletions(-) diff --git a/arch/powerpc/platforms/85xx/mpc85xx_rdb.c b/arch/powerpc/platforms/85xx/mpc85xx_rdb.c index 1950076..4c27b3b 100644 --- a/arch/powerpc/platforms/85xx/mpc85xx_rdb.c +++ b/arch/powerpc/platforms/85xx/mpc85xx_rdb.c @@ -26,6 +26,9 @@ #include <asm/prom.h> #include <asm/udbg.h> #include <asm/mpic.h> +#include <asm/qe.h> +#include <asm/qe_ic.h> +#include <asm/fsl_guts.h> #include <sysdev/fsl_soc.h> #include <sysdev/fsl_pci.h> @@ -47,6 +50,10 @@ void __init mpc85xx_rdb_pic_init(void) struct mpic *mpic; unsigned long root = of_get_flat_dt_root(); +#ifdef CONFIG_QUICC_ENGINE + struct device_node *np; +#endif + if (of_flat_dt_is_compatible(root, "fsl,MPC85XXRDB-CAMP")) { mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS | @@ -62,6 +69,18 @@ void __init mpc85xx_rdb_pic_init(void) BUG_ON(mpic == NULL); mpic_init(mpic); + +#ifdef CONFIG_QUICC_ENGINE + np = of_find_compatible_node(NULL, NULL, "fsl,qe-ic"); + if (np) { + qe_ic_init(np, 0, qe_ic_cascade_low_mpic, + qe_ic_cascade_high_mpic); + of_node_put(np); + + } else + pr_err("Could not find qe-ic node\n"); +#endif + } /* @@ -69,7 +88,7 @@ void __init mpc85xx_rdb_pic_init(void) */ static void __init mpc85xx_rdb_setup_arch(void) { -#ifdef CONFIG_PCI +#if defined(CONFIG_PCI) || defined(CONFIG_QUICC_ENGINE) struct device_node *np; #endif @@ -85,6 +104,65 @@ static void __init mpc85xx_rdb_setup_arch(void) #endif mpc85xx_smp_init(); + +#ifdef CONFIG_QUICC_ENGINE + np = of_find_compatible_node(NULL, NULL, "fsl,qe"); + if (!np) { + pr_err("Could not find Quicc Engine node\n"); + goto qe_fail; + } + + qe_reset(); + of_node_put(np); + + np = of_find_node_by_name(NULL, "par_io"); + if (np) { + struct device_node *ucc; + + par_io_init(np); + of_node_put(np); + + for_each_node_by_name(ucc, "ucc") + par_io_of_config(ucc); + + } + if (machine_is(p1025_rdb)) { + + __be32 __iomem *pmuxcr; + + np = of_find_node_by_name(NULL, "global-utilities"); + + if (np) { + pmuxcr = of_iomap(np, 0) + MPC85xx_PMUXCR_OFFSET; + + if (!pmuxcr) + pr_err(KERN_EMERG "Error: Alternate function" + " signal multiplex control register not" + " mapped!\n"); + else { +#if defined(CONFIG_UCC_GETH) || defined(CONFIG_SERIAL_QE) + /* P1025 has pins muxed for QE and other functions. To + * enable QE UEC mode, we need to set bit QE0 for UCC1 + * in Eth mode, QE0 and QE3 for UCC5 in Eth mode, QE9 + * and QE12 for QE MII management singals in PMUXCR + * register. + */ + setbits32(pmuxcr, MPC85xx_PMUXCR_QE0 | + MPC85xx_PMUXCR_QE3 | + MPC85xx_PMUXCR_QE9 | + MPC85xx_PMUXCR_QE12); +#endif + } + + iounmap(pmuxcr); + of_node_put(np); + } + + } + +qe_fail: +#endif /* CONFIG_QUICC_ENGINE */ + printk(KERN_INFO "MPC85xx RDB board from Freescale Semiconductor\n"); } -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 1/2 v2] P1025RDB: Add Quicc Engine support 2012-02-08 9:52 ` [PATCH 1/2 v2] P1025RDB: Add Quicc Engine support Zhicheng Fan @ 2012-02-09 16:17 ` Tabi Timur-B04825 0 siblings, 0 replies; 3+ messages in thread From: Tabi Timur-B04825 @ 2012-02-09 16:17 UTC (permalink / raw) To: Fan Zhicheng-B32736; +Cc: linuxppc-dev, Zhicheng Fan > +#ifdef CONFIG_QUICC_ENGINE > + =A0 =A0 =A0 np =3D of_find_compatible_node(NULL, NULL, "fsl,qe-ic"); > + =A0 =A0 =A0 if (np) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 qe_ic_init(np, 0, qe_ic_cascade_low_mpic, > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 qe_ic_casca= de_high_mpic); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 of_node_put(np); > + > + =A0 =A0 =A0 } else > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 pr_err("Could not find qe-ic node\n"); Since you have to use pr_err instead of dev_err, please add a prefix to the message. Like this: pr_err("mpc85xx-rdb: could not find qe-ic node\n"); or maybe something like this: pr_err("%s: could not find qe-ic node\n", __func__); > + =A0 =A0 =A0 if (machine_is(p1025_rdb)) { > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 __be32 __iomem *pmuxcr; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 np =3D of_find_node_by_name(NULL, "global-u= tilities"); > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (np) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 pmuxcr =3D of_iomap(np, 0) = + MPC85xx_PMUXCR_OFFSET; Use the ccsr_guts_85xx structure instead of hard-coded offsets. MPC85xx_PMUXCR_OFFSET should be deleted. > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (!pmuxcr) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 pr_err(KERN= _EMERG "Error: Alternate function" > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0= =A0 " signal multiplex control register not" > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0= =A0 " mapped!\n"); A missing node in the device tree is NOT an emergency. Also, the KERN_xxx macros are not supposed to be used in a pr_xxx macro. Please don't blindly copy/paste code from somewhere else without thinking about it. --=20 Timur Tabi Linux kernel developer at Freescale= ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2012-02-09 16:17 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2012-02-08 9:52 [PATCH 2/2 v2] powerpc: Abstract common define of signal multiplex control for qe Zhicheng Fan 2012-02-08 9:52 ` [PATCH 1/2 v2] P1025RDB: Add Quicc Engine support Zhicheng Fan 2012-02-09 16:17 ` Tabi Timur-B04825
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.