RE: [PATCH V5 1/2] powerpc/85xx: Add QE common init function

2013-11-05 Thread Xiaobo Xie
Hi Scott,

 -Original Message-
 From: Wood Scott-B07421
 Sent: Saturday, September 28, 2013 1:01 AM
 To: Xie Xiaobo-R63061
 Cc: linuxppc-dev@lists.ozlabs.org
 Subject: Re: [PATCH V5 1/2] powerpc/85xx: Add QE common init function
 
 On Thu, 2013-09-26 at 17:37 +0800, Xie Xiaobo wrote:
  +#ifdef CONFIG_QUICC_ENGINE
  +void __init mpc85xx_qe_init(void)
  +{
  +   struct device_node *np;
  +
  +   np = of_find_compatible_node(NULL, NULL, fsl,qe);
  +   if (!np) {
  +   np = of_find_node_by_name(NULL, qe);
  +   if (!np) {
  +   pr_err(%s: Could not find Quicc Engine node\n,
  +   __func__);
  +   return;
  +   }
  +   }
  +
  +   qe_reset();
  +   of_node_put(np);
 
 You're missing the of_device_is_available() check:

I will add this check, thanks.

 
  -   np = of_find_compatible_node(NULL, NULL, fsl,qe);
  -   if (!np) {
  -   np = of_find_node_by_name(NULL, qe);
 
 -Scott
 

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


Re: [PATCH V5 1/2] powerpc/85xx: Add QE common init function

2013-09-27 Thread Scott Wood
On Thu, 2013-09-26 at 17:37 +0800, Xie Xiaobo wrote:
 +#ifdef CONFIG_QUICC_ENGINE
 +void __init mpc85xx_qe_init(void)
 +{
 + struct device_node *np;
 +
 + np = of_find_compatible_node(NULL, NULL, fsl,qe);
 + if (!np) {
 + np = of_find_node_by_name(NULL, qe);
 + if (!np) {
 + pr_err(%s: Could not find Quicc Engine node\n,
 + __func__);
 + return;
 + }
 + }
 +
 + qe_reset();
 + of_node_put(np);

You're missing the of_device_is_available() check:

 - np = of_find_compatible_node(NULL, NULL, fsl,qe);
 - if (!np) {
 - np = of_find_node_by_name(NULL, qe);
 - if (!np)
 - return;
 - }
 -
 - if (!of_device_is_available(np)) {
 - of_node_put(np);
 - return;
 - }
 -
 - qe_reset();
 - of_node_put(np);

-Scott



___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


[PATCH V5 1/2] powerpc/85xx: Add QE common init function

2013-09-26 Thread Xie Xiaobo
Define a QE init function in common file, and avoid
the same codes being duplicated in board files.

Signed-off-by: Xie Xiaobo x@freescale.com
---
V5 - V4: add the board files modification, remove the qe_pic_init.
V4 - V3: Nochange

 arch/powerpc/platforms/85xx/common.c  | 33 +++
 arch/powerpc/platforms/85xx/mpc85xx.h |  6 ++
 arch/powerpc/platforms/85xx/mpc85xx_mds.c | 29 ++-
 arch/powerpc/platforms/85xx/mpc85xx_rdb.c | 25 ++-
 4 files changed, 43 insertions(+), 50 deletions(-)

diff --git a/arch/powerpc/platforms/85xx/common.c 
b/arch/powerpc/platforms/85xx/common.c
index d0861a0..568fd1f 100644
--- a/arch/powerpc/platforms/85xx/common.c
+++ b/arch/powerpc/platforms/85xx/common.c
@@ -7,6 +7,7 @@
  */
 #include linux/of_platform.h
 
+#include asm/qe.h
 #include sysdev/cpm2_pic.h
 
 #include mpc85xx.h
@@ -80,3 +81,35 @@ void __init mpc85xx_cpm2_pic_init(void)
irq_set_chained_handler(irq, cpm2_cascade);
 }
 #endif
+
+#ifdef CONFIG_QUICC_ENGINE
+void __init mpc85xx_qe_init(void)
+{
+   struct device_node *np;
+
+   np = of_find_compatible_node(NULL, NULL, fsl,qe);
+   if (!np) {
+   np = of_find_node_by_name(NULL, qe);
+   if (!np) {
+   pr_err(%s: Could not find Quicc Engine node\n,
+   __func__);
+   return;
+   }
+   }
+
+   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);
+
+   }
+}
+#endif
diff --git a/arch/powerpc/platforms/85xx/mpc85xx.h 
b/arch/powerpc/platforms/85xx/mpc85xx.h
index 2aa7c5d..fc51dd4 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx.h
+++ b/arch/powerpc/platforms/85xx/mpc85xx.h
@@ -8,4 +8,10 @@ extern void mpc85xx_cpm2_pic_init(void);
 static inline void __init mpc85xx_cpm2_pic_init(void) {}
 #endif /* CONFIG_CPM2 */
 
+#ifdef CONFIG_QUICC_ENGINE
+extern void mpc85xx_qe_init(void);
+#else
+static inline void __init mpc85xx_qe_init(void) {}
+#endif
+
 #endif
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_mds.c 
b/arch/powerpc/platforms/85xx/mpc85xx_mds.c
index a7b3621..34f3c5e 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_mds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_mds.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006-2010, 2012 Freescale Semiconductor, Inc.
+ * Copyright (C) 2006-2010, 2012-2013 Freescale Semiconductor, Inc.
  * All rights reserved.
  *
  * Author: Andy Fleming aflem...@freescale.com
@@ -238,32 +238,7 @@ static void __init mpc85xx_mds_qe_init(void)
 {
struct device_node *np;
 
-   np = of_find_compatible_node(NULL, NULL, fsl,qe);
-   if (!np) {
-   np = of_find_node_by_name(NULL, qe);
-   if (!np)
-   return;
-   }
-
-   if (!of_device_is_available(np)) {
-   of_node_put(np);
-   return;
-   }
-
-   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);
-   }
-
+   mpc85xx_qe_init();
mpc85xx_mds_reset_ucc_phys();
 
if (machine_is(p1021_mds)) {
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_rdb.c 
b/arch/powerpc/platforms/85xx/mpc85xx_rdb.c
index 53b6fb0..e15bdd1 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_rdb.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_rdb.c
@@ -1,7 +1,7 @@
 /*
  * MPC85xx RDB Board Setup
  *
- * Copyright 2009,2012 Freescale Semiconductor Inc.
+ * Copyright 2009,2012-2013 Freescale Semiconductor Inc.
  *
  * This program is free software; you can redistribute  it and/or modify it
  * under  the terms of  the GNU General  Public License as published by the
@@ -98,26 +98,7 @@ static void __init mpc85xx_rdb_setup_arch(void)
fsl_pci_assign_primary();
 
 #ifdef CONFIG_QUICC_ENGINE
-   np = of_find_compatible_node(NULL, NULL, fsl,qe);
-   if (!np) {
-   pr_err(%s: Could not find Quicc Engine node\n, __func__);
-   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);
-
-   }
+   mpc85xx_qe_init();
 #if defined(CONFIG_UCC_GETH) || defined(CONFIG_SERIAL_QE)
if (machine_is(p1025_rdb)) {
 
@@ -148,8 +129,6 @@ static void __init