[PATCH 2/3] (Resend part #2) Add RapidIO memory mapping API and simple Bitmap allocation.

2007-12-21 Thread Zhang Wei
Add RapidIO memory mapping API and simple Bitmap allocation with fixed size.
Some bugs are fixed.

Signed-off-by: Zhang Wei <[EMAIL PROTECTED]>
---
 drivers/rapidio/Kconfig |   18 +-
 drivers/rapidio/Makefile|1 +
 drivers/rapidio/rio-access.c|   10 +-
 drivers/rapidio/rio-scan.c  |   53 +++--
 drivers/rapidio/rio-sysfs.c |3 +-
 drivers/rapidio/rio.c   |  486 ++-
 drivers/rapidio/rio.h   |9 +-
 drivers/rapidio/sallocator/Kconfig  |9 +
 drivers/rapidio/sallocator/Makefile |   12 +
 drivers/rapidio/sallocator/bitmap.c |  383 +++
 10 files changed, 944 insertions(+), 40 deletions(-)
 create mode 100644 drivers/rapidio/sallocator/Kconfig
 create mode 100644 drivers/rapidio/sallocator/Makefile
 create mode 100644 drivers/rapidio/sallocator/bitmap.c

diff --git a/drivers/rapidio/Kconfig b/drivers/rapidio/Kconfig
index 4142115..f669108 100644
--- a/drivers/rapidio/Kconfig
+++ b/drivers/rapidio/Kconfig
@@ -1,14 +1,6 @@
 #
 # RapidIO configuration
 #
-config RAPIDIO_8_BIT_TRANSPORT
-   bool "8-bit transport addressing"
-   depends on RAPIDIO
-   ---help---
- By default, the kernel assumes a 16-bit addressed RapidIO
- network. By selecting this option, the kernel will support
- an 8-bit addressed network.
-
 config RAPIDIO_DISC_TIMEOUT
int "Discovery timeout duration (seconds)"
depends on RAPIDIO
@@ -16,3 +8,13 @@ config RAPIDIO_DISC_TIMEOUT
---help---
  Amount of time a discovery node waits for a host to complete
  enumeration before giving up.
+
+config RAPIDIO_PROC_FS
+   bool "I/O and Memory resource debug"
+   depends on RAPIDIO && PROC_FS
+   default y
+   ---help---
+ Enable this option, it will create a /proc/riores node for
+ monitoring the RapidIO I/O and Memory resource.
+
+source "drivers/rapidio/sallocator/Kconfig"
diff --git a/drivers/rapidio/Makefile b/drivers/rapidio/Makefile
index 7c0e181..e5b2f11 100644
--- a/drivers/rapidio/Makefile
+++ b/drivers/rapidio/Makefile
@@ -4,3 +4,4 @@
 obj-y += rio.o rio-access.o rio-driver.o rio-scan.o rio-sysfs.o
 
 obj-$(CONFIG_RAPIDIO)  += switches/
+obj-$(CONFIG_RAPIDIO)  += sallocator/
diff --git a/drivers/rapidio/rio-access.c b/drivers/rapidio/rio-access.c
index 8b56bbd..a3824ba 100644
--- a/drivers/rapidio/rio-access.c
+++ b/drivers/rapidio/rio-access.c
@@ -48,7 +48,7 @@ int __rio_local_read_config_##size \
u32 data = 0;   \
if (RIO_##size##_BAD) return RIO_BAD_SIZE;  \
spin_lock_irqsave(_config_lock, flags); \
-   res = mport->ops->lcread(mport->id, offset, len, );\
+   res = mport->ops->lcread(mport, mport->id, offset, len, ); \
*value = (type)data;\
spin_unlock_irqrestore(_config_lock, flags);\
return res; \
@@ -71,7 +71,7 @@ int __rio_local_write_config_##size \
unsigned long flags;\
if (RIO_##size##_BAD) return RIO_BAD_SIZE;  \
spin_lock_irqsave(_config_lock, flags); \
-   res = mport->ops->lcwrite(mport->id, offset, len, value);   \
+   res = mport->ops->lcwrite(mport, mport->id, offset, len, value);\
spin_unlock_irqrestore(_config_lock, flags);\
return res; \
 }
@@ -108,7 +108,7 @@ int rio_mport_read_config_##size \
u32 data = 0;   \
if (RIO_##size##_BAD) return RIO_BAD_SIZE;  \
spin_lock_irqsave(_config_lock, flags); \
-   res = mport->ops->cread(mport->id, destid, hopcount, offset, len, 
); \
+   res = mport->ops->cread(mport, mport->id, destid, hopcount, offset, 
len, ); \
*value = (type)data;\
spin_unlock_irqrestore(_config_lock, flags);\
return res; \
@@ -131,7 +131,7 @@ int rio_mport_write_config_##size \
unsigned long flags;\
if (RIO_##size##_BAD) return RIO_BAD_SIZE;  \
spin_lock_irqsave(_config_lock, flags); \
-   res = mport->ops->cwrite(mport->id, destid, hopcount, offset, len, 
value); \
+   res = mport->ops->cwrite(mport, mport->id, destid, hopcount, offset, 
len, value); \
spin_unlock_irqrestore(_config_lock, flags);\
return res; \
 }
@@ -166,7 +166,7 @@ int 

[PATCH 2/3] (Resend part #2) Add RapidIO memory mapping API and simple Bitmap allocation.

2007-12-21 Thread Zhang Wei
Add RapidIO memory mapping API and simple Bitmap allocation with fixed size.
Some bugs are fixed.

Signed-off-by: Zhang Wei [EMAIL PROTECTED]
---
 drivers/rapidio/Kconfig |   18 +-
 drivers/rapidio/Makefile|1 +
 drivers/rapidio/rio-access.c|   10 +-
 drivers/rapidio/rio-scan.c  |   53 +++--
 drivers/rapidio/rio-sysfs.c |3 +-
 drivers/rapidio/rio.c   |  486 ++-
 drivers/rapidio/rio.h   |9 +-
 drivers/rapidio/sallocator/Kconfig  |9 +
 drivers/rapidio/sallocator/Makefile |   12 +
 drivers/rapidio/sallocator/bitmap.c |  383 +++
 10 files changed, 944 insertions(+), 40 deletions(-)
 create mode 100644 drivers/rapidio/sallocator/Kconfig
 create mode 100644 drivers/rapidio/sallocator/Makefile
 create mode 100644 drivers/rapidio/sallocator/bitmap.c

diff --git a/drivers/rapidio/Kconfig b/drivers/rapidio/Kconfig
index 4142115..f669108 100644
--- a/drivers/rapidio/Kconfig
+++ b/drivers/rapidio/Kconfig
@@ -1,14 +1,6 @@
 #
 # RapidIO configuration
 #
-config RAPIDIO_8_BIT_TRANSPORT
-   bool 8-bit transport addressing
-   depends on RAPIDIO
-   ---help---
- By default, the kernel assumes a 16-bit addressed RapidIO
- network. By selecting this option, the kernel will support
- an 8-bit addressed network.
-
 config RAPIDIO_DISC_TIMEOUT
int Discovery timeout duration (seconds)
depends on RAPIDIO
@@ -16,3 +8,13 @@ config RAPIDIO_DISC_TIMEOUT
---help---
  Amount of time a discovery node waits for a host to complete
  enumeration before giving up.
+
+config RAPIDIO_PROC_FS
+   bool I/O and Memory resource debug
+   depends on RAPIDIO  PROC_FS
+   default y
+   ---help---
+ Enable this option, it will create a /proc/riores node for
+ monitoring the RapidIO I/O and Memory resource.
+
+source drivers/rapidio/sallocator/Kconfig
diff --git a/drivers/rapidio/Makefile b/drivers/rapidio/Makefile
index 7c0e181..e5b2f11 100644
--- a/drivers/rapidio/Makefile
+++ b/drivers/rapidio/Makefile
@@ -4,3 +4,4 @@
 obj-y += rio.o rio-access.o rio-driver.o rio-scan.o rio-sysfs.o
 
 obj-$(CONFIG_RAPIDIO)  += switches/
+obj-$(CONFIG_RAPIDIO)  += sallocator/
diff --git a/drivers/rapidio/rio-access.c b/drivers/rapidio/rio-access.c
index 8b56bbd..a3824ba 100644
--- a/drivers/rapidio/rio-access.c
+++ b/drivers/rapidio/rio-access.c
@@ -48,7 +48,7 @@ int __rio_local_read_config_##size \
u32 data = 0;   \
if (RIO_##size##_BAD) return RIO_BAD_SIZE;  \
spin_lock_irqsave(rio_config_lock, flags); \
-   res = mport-ops-lcread(mport-id, offset, len, data);\
+   res = mport-ops-lcread(mport, mport-id, offset, len, data); \
*value = (type)data;\
spin_unlock_irqrestore(rio_config_lock, flags);\
return res; \
@@ -71,7 +71,7 @@ int __rio_local_write_config_##size \
unsigned long flags;\
if (RIO_##size##_BAD) return RIO_BAD_SIZE;  \
spin_lock_irqsave(rio_config_lock, flags); \
-   res = mport-ops-lcwrite(mport-id, offset, len, value);   \
+   res = mport-ops-lcwrite(mport, mport-id, offset, len, value);\
spin_unlock_irqrestore(rio_config_lock, flags);\
return res; \
 }
@@ -108,7 +108,7 @@ int rio_mport_read_config_##size \
u32 data = 0;   \
if (RIO_##size##_BAD) return RIO_BAD_SIZE;  \
spin_lock_irqsave(rio_config_lock, flags); \
-   res = mport-ops-cread(mport-id, destid, hopcount, offset, len, 
data); \
+   res = mport-ops-cread(mport, mport-id, destid, hopcount, offset, 
len, data); \
*value = (type)data;\
spin_unlock_irqrestore(rio_config_lock, flags);\
return res; \
@@ -131,7 +131,7 @@ int rio_mport_write_config_##size \
unsigned long flags;\
if (RIO_##size##_BAD) return RIO_BAD_SIZE;  \
spin_lock_irqsave(rio_config_lock, flags); \
-   res = mport-ops-cwrite(mport-id, destid, hopcount, offset, len, 
value); \
+   res = mport-ops-cwrite(mport, mport-id, destid, hopcount, offset, 
len, value); \
spin_unlock_irqrestore(rio_config_lock, flags);\
return res; \
 }
@@ -166,7 +166,7 @@ int