RE: [PATCH 5/6] Add OF-tree support to RapidIO controller driver.

2008-02-17 Thread Zhang Wei
 

> -Original Message-
> From: Kumar Gala [mailto:[EMAIL PROTECTED] 
> 
> 
> On Feb 4, 2008, at 11:44 PM, Stephen Rothwell wrote:
> 
> >>
> >> +  aw = *(u32 *)of_get_property(dev->node, "#address-cells", NULL);
> >> +  sw = *(u32 *)of_get_property(dev->node, "#size-cells", NULL);
> >
> > What happens if either of these properties is missing?
> 
> Should we add __must_check to of_get_property?
> 

You are right, I'll add the checking here.

Thanks!
Wei.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [PATCH 5/6] Add OF-tree support to RapidIO controller driver.

2008-02-17 Thread Zhang Wei
 

 -Original Message-
 From: Kumar Gala [mailto:[EMAIL PROTECTED] 
 
 
 On Feb 4, 2008, at 11:44 PM, Stephen Rothwell wrote:
 
 
  +  aw = *(u32 *)of_get_property(dev-node, #address-cells, NULL);
  +  sw = *(u32 *)of_get_property(dev-node, #size-cells, NULL);
 
  What happens if either of these properties is missing?
 
 Should we add __must_check to of_get_property?
 

You are right, I'll add the checking here.

Thanks!
Wei.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 5/6] Add OF-tree support to RapidIO controller driver.

2008-02-05 Thread Kumar Gala


On Feb 4, 2008, at 11:44 PM, Stephen Rothwell wrote:



+   aw = *(u32 *)of_get_property(dev->node, "#address-cells", NULL);
+   sw = *(u32 *)of_get_property(dev->node, "#size-cells", NULL);


What happens if either of these properties is missing?


Should we add __must_check to of_get_property?

- k
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 5/6] Add OF-tree support to RapidIO controller driver.

2008-02-05 Thread Kumar Gala


On Feb 4, 2008, at 11:44 PM, Stephen Rothwell wrote:



+   aw = *(u32 *)of_get_property(dev-node, #address-cells, NULL);
+   sw = *(u32 *)of_get_property(dev-node, #size-cells, NULL);


What happens if either of these properties is missing?


Should we add __must_check to of_get_property?

- k
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 5/6] Add OF-tree support to RapidIO controller driver.

2008-02-04 Thread Stephen Rothwell
On Wed, 30 Jan 2008 18:30:52 +0800 Zhang Wei <[EMAIL PROTECTED]> wrote:
>
> -void fsl_rio_setup(int law_start, int law_size)
> +int fsl_rio_setup(struct of_device *dev)
>  {

> + if (!dev->node) {
> + dev_err(>dev, "Device OF-Node is NULL");
> + return -EFAULT;

Probably -EINVAL would be better. Here and all the other -EFAULTs.

> + aw = *(u32 *)of_get_property(dev->node, "#address-cells", NULL);
> + sw = *(u32 *)of_get_property(dev->node, "#size-cells", NULL);

What happens if either of these properties is missing?

> +static struct of_device_id fsl_of_rio_rpn_ids[] = {

This should be "const" please.

-- 
Cheers,
Stephen Rothwell[EMAIL PROTECTED]
http://www.canb.auug.org.au/~sfr/


pgp5nmctM9RR0.pgp
Description: PGP signature


Re: [PATCH 5/6] Add OF-tree support to RapidIO controller driver.

2008-02-04 Thread Stephen Rothwell
On Wed, 30 Jan 2008 18:30:52 +0800 Zhang Wei [EMAIL PROTECTED] wrote:

 -void fsl_rio_setup(int law_start, int law_size)
 +int fsl_rio_setup(struct of_device *dev)
  {

 + if (!dev-node) {
 + dev_err(dev-dev, Device OF-Node is NULL);
 + return -EFAULT;

Probably -EINVAL would be better. Here and all the other -EFAULTs.

 + aw = *(u32 *)of_get_property(dev-node, #address-cells, NULL);
 + sw = *(u32 *)of_get_property(dev-node, #size-cells, NULL);

What happens if either of these properties is missing?

 +static struct of_device_id fsl_of_rio_rpn_ids[] = {

This should be const please.

-- 
Cheers,
Stephen Rothwell[EMAIL PROTECTED]
http://www.canb.auug.org.au/~sfr/


pgp5nmctM9RR0.pgp
Description: PGP signature


[PATCH 5/6] Add OF-tree support to RapidIO controller driver.

2008-01-30 Thread Zhang Wei
Now, RapidIO driver for powerpc architecture is also support OF-device.

Signed-off-by: Zhang Wei <[EMAIL PROTECTED]>
---
 arch/powerpc/kernel/Makefile  |1 -
 arch/powerpc/kernel/rio.c |   52 -
 arch/powerpc/sysdev/fsl_rio.c |  101 +---
 arch/powerpc/sysdev/fsl_rio.h |   20 
 4 files changed, 93 insertions(+), 81 deletions(-)
 delete mode 100644 arch/powerpc/kernel/rio.c
 delete mode 100644 arch/powerpc/sysdev/fsl_rio.h

diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
index 58dbfef..d9b3770 100644
--- a/arch/powerpc/kernel/Makefile
+++ b/arch/powerpc/kernel/Makefile
@@ -70,7 +70,6 @@ pci64-$(CONFIG_PPC64) += pci_dn.o isa-bridge.o
 obj-$(CONFIG_PCI)  += pci_$(CONFIG_WORD_SIZE).o $(pci64-y) \
   pci-common.o
 obj-$(CONFIG_PCI_MSI)  += msi.o
-obj-$(CONFIG_RAPIDIO)  += rio.o
 obj-$(CONFIG_KEXEC)+= machine_kexec.o crash.o \
   machine_kexec_$(CONFIG_WORD_SIZE).o
 obj-$(CONFIG_AUDIT)+= audit.o
diff --git a/arch/powerpc/kernel/rio.c b/arch/powerpc/kernel/rio.c
deleted file mode 100644
index 29487fe..000
--- a/arch/powerpc/kernel/rio.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * RapidIO PPC32 support
- *
- * Copyright 2005 MontaVista Software, Inc.
- * Matt Porter <[EMAIL PROTECTED]>
- *
- * 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
- * Free Software Foundation;  either version 2 of the  License, or (at your
- * option) any later version.
- */
-
-#include 
-#include 
-#include 
-
-#include 
-
-/**
- * platform_rio_init - Do platform specific RIO init
- *
- * Any platform specific initialization of RapdIO
- * hardware is done here as well as registration
- * of any active master ports in the system.
- */
-void __attribute__ ((weak))
-platform_rio_init(void)
-{
-   printk(KERN_WARNING "RIO: No platform_rio_init() present\n");
-}
-
-/**
- * ppc_rio_init - Do PPC32 RIO init
- *
- * Calls platform-specific RIO init code and then calls
- * rio_init_mports() to initialize any master ports that
- * have been registered with the RIO subsystem.
- */
-static int __init ppc_rio_init(void)
-{
-   printk(KERN_INFO "RIO: RapidIO init\n");
-
-   /* Platform specific initialization */
-   platform_rio_init();
-
-   /* Enumerate all registered ports */
-   rio_init_mports();
-
-   return 0;
-}
-
-subsys_initcall(ppc_rio_init);
diff --git a/arch/powerpc/sysdev/fsl_rio.c b/arch/powerpc/sysdev/fsl_rio.c
index 3907a2c..36b43ec 100644
--- a/arch/powerpc/sysdev/fsl_rio.c
+++ b/arch/powerpc/sysdev/fsl_rio.c
@@ -20,6 +20,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include 
 
@@ -28,7 +29,6 @@
 #define IRQ_RIO_TX(m)  (((struct rio_priv *)(m->priv))->txirq)
 #define IRQ_RIO_RX(m)  (((struct rio_priv *)(m->priv))->rxirq)
 
-#define RIO_REGS_BASE  (CCSRBAR + 0xc)
 #define RIO_ATMU_REGS_OFFSET   0x10c00
 #define RIO_MSG_REGS_OFFSET0x11000
 #define RIO_MAINT_WIN_SIZE 0x40
@@ -908,19 +908,57 @@ __setup("riohdid=", fsl_rio_get_cmdline);
 
 /**
  * fsl_rio_setup - Setup MPC85xx RapidIO interface
- * @law_start: Starting physical address of RapidIO LAW
- * @law_size: Size of RapidIO LAW
+ * @fsl_rio_setup - Setup Freescale PowerPC RapidIO interface
  *
  * Initializes MPC85xx RapidIO hardware interface, configures
  * master port with system-specific info, and registers the
  * master port with the RapidIO subsystem.
  */
-void fsl_rio_setup(int law_start, int law_size)
+int fsl_rio_setup(struct of_device *dev)
 {
struct rio_ops *ops;
struct rio_mport *port;
-   struct rio_priv *priv = NULL;
-   int rc;
+   struct rio_priv *priv;
+   int rc = 0;
+   const u32 *dt_range;
+   struct resource regs;
+   int rlen;
+   u64 law_start, law_size;
+   int paw, aw, sw;
+
+   if (!dev->node) {
+   dev_err(>dev, "Device OF-Node is NULL");
+   return -EFAULT;
+   }
+
+   rc = of_address_to_resource(dev->node, 0, );
+   if (rc) {
+   dev_err(>dev, "Can't get %s property 'reg'\n",
+   dev->node->full_name);
+   return -EFAULT;
+   }
+   dev_info(>dev, "Of-device full name %s\n", dev->node->full_name);
+   dev_info(>dev, "Regs start 0x%08x size 0x%08x\n",  regs.start,
+   regs.end - regs.start + 1);
+
+   dt_range = of_get_property(dev->node, "ranges", );
+   if (!dt_range) {
+   dev_err(>dev, "Can't get %s property 'ranges'\n",
+   dev->node->full_name);
+   return -EFAULT;
+   }
+
+   /* Get node address wide */
+   aw = *(u32 *)of_get_property(dev->node, "#address-cells", NULL);
+   sw = 

[PATCH 5/6] Add OF-tree support to RapidIO controller driver.

2008-01-30 Thread Zhang Wei
Now, RapidIO driver for powerpc architecture is also support OF-device.

Signed-off-by: Zhang Wei [EMAIL PROTECTED]
---
 arch/powerpc/kernel/Makefile  |1 -
 arch/powerpc/kernel/rio.c |   52 -
 arch/powerpc/sysdev/fsl_rio.c |  101 +---
 arch/powerpc/sysdev/fsl_rio.h |   20 
 4 files changed, 93 insertions(+), 81 deletions(-)
 delete mode 100644 arch/powerpc/kernel/rio.c
 delete mode 100644 arch/powerpc/sysdev/fsl_rio.h

diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
index 58dbfef..d9b3770 100644
--- a/arch/powerpc/kernel/Makefile
+++ b/arch/powerpc/kernel/Makefile
@@ -70,7 +70,6 @@ pci64-$(CONFIG_PPC64) += pci_dn.o isa-bridge.o
 obj-$(CONFIG_PCI)  += pci_$(CONFIG_WORD_SIZE).o $(pci64-y) \
   pci-common.o
 obj-$(CONFIG_PCI_MSI)  += msi.o
-obj-$(CONFIG_RAPIDIO)  += rio.o
 obj-$(CONFIG_KEXEC)+= machine_kexec.o crash.o \
   machine_kexec_$(CONFIG_WORD_SIZE).o
 obj-$(CONFIG_AUDIT)+= audit.o
diff --git a/arch/powerpc/kernel/rio.c b/arch/powerpc/kernel/rio.c
deleted file mode 100644
index 29487fe..000
--- a/arch/powerpc/kernel/rio.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * RapidIO PPC32 support
- *
- * Copyright 2005 MontaVista Software, Inc.
- * Matt Porter [EMAIL PROTECTED]
- *
- * 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
- * Free Software Foundation;  either version 2 of the  License, or (at your
- * option) any later version.
- */
-
-#include linux/init.h
-#include linux/kernel.h
-#include linux/rio.h
-
-#include asm/rio.h
-
-/**
- * platform_rio_init - Do platform specific RIO init
- *
- * Any platform specific initialization of RapdIO
- * hardware is done here as well as registration
- * of any active master ports in the system.
- */
-void __attribute__ ((weak))
-platform_rio_init(void)
-{
-   printk(KERN_WARNING RIO: No platform_rio_init() present\n);
-}
-
-/**
- * ppc_rio_init - Do PPC32 RIO init
- *
- * Calls platform-specific RIO init code and then calls
- * rio_init_mports() to initialize any master ports that
- * have been registered with the RIO subsystem.
- */
-static int __init ppc_rio_init(void)
-{
-   printk(KERN_INFO RIO: RapidIO init\n);
-
-   /* Platform specific initialization */
-   platform_rio_init();
-
-   /* Enumerate all registered ports */
-   rio_init_mports();
-
-   return 0;
-}
-
-subsys_initcall(ppc_rio_init);
diff --git a/arch/powerpc/sysdev/fsl_rio.c b/arch/powerpc/sysdev/fsl_rio.c
index 3907a2c..36b43ec 100644
--- a/arch/powerpc/sysdev/fsl_rio.c
+++ b/arch/powerpc/sysdev/fsl_rio.c
@@ -20,6 +20,7 @@
 #include linux/interrupt.h
 #include linux/rio.h
 #include linux/rio_drv.h
+#include linux/of_platform.h
 
 #include asm/io.h
 
@@ -28,7 +29,6 @@
 #define IRQ_RIO_TX(m)  (((struct rio_priv *)(m-priv))-txirq)
 #define IRQ_RIO_RX(m)  (((struct rio_priv *)(m-priv))-rxirq)
 
-#define RIO_REGS_BASE  (CCSRBAR + 0xc)
 #define RIO_ATMU_REGS_OFFSET   0x10c00
 #define RIO_MSG_REGS_OFFSET0x11000
 #define RIO_MAINT_WIN_SIZE 0x40
@@ -908,19 +908,57 @@ __setup(riohdid=, fsl_rio_get_cmdline);
 
 /**
  * fsl_rio_setup - Setup MPC85xx RapidIO interface
- * @law_start: Starting physical address of RapidIO LAW
- * @law_size: Size of RapidIO LAW
+ * @fsl_rio_setup - Setup Freescale PowerPC RapidIO interface
  *
  * Initializes MPC85xx RapidIO hardware interface, configures
  * master port with system-specific info, and registers the
  * master port with the RapidIO subsystem.
  */
-void fsl_rio_setup(int law_start, int law_size)
+int fsl_rio_setup(struct of_device *dev)
 {
struct rio_ops *ops;
struct rio_mport *port;
-   struct rio_priv *priv = NULL;
-   int rc;
+   struct rio_priv *priv;
+   int rc = 0;
+   const u32 *dt_range;
+   struct resource regs;
+   int rlen;
+   u64 law_start, law_size;
+   int paw, aw, sw;
+
+   if (!dev-node) {
+   dev_err(dev-dev, Device OF-Node is NULL);
+   return -EFAULT;
+   }
+
+   rc = of_address_to_resource(dev-node, 0, regs);
+   if (rc) {
+   dev_err(dev-dev, Can't get %s property 'reg'\n,
+   dev-node-full_name);
+   return -EFAULT;
+   }
+   dev_info(dev-dev, Of-device full name %s\n, dev-node-full_name);
+   dev_info(dev-dev, Regs start 0x%08x size 0x%08x\n,  regs.start,
+   regs.end - regs.start + 1);
+
+   dt_range = of_get_property(dev-node, ranges, rlen);
+   if (!dt_range) {
+   dev_err(dev-dev, Can't get %s property 'ranges'\n,
+   dev-node-full_name);
+   return -EFAULT;
+   }
+
+   /* Get node