[PATCH 3/6] resource: introduce add_generic_device to register simple device
Jean-Christophe PLAGNIOL-VILLARD
plagnioj at jcrosoft.com
Fri Jul 22 11:38:36 EDT 2011
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
---
drivers/base/resource.c | 16 ++++++++++------
include/driver.h | 16 ++++++++++++++--
2 files changed, 24 insertions(+), 8 deletions(-)
diff --git a/drivers/base/resource.c b/drivers/base/resource.c
index 7b0020b..f0450d3 100644
--- a/drivers/base/resource.c
+++ b/drivers/base/resource.c
@@ -25,22 +25,26 @@
#include <driver.h>
#include <xfuncs.h>
-struct device_d *add_mem_device(const char *name, resource_size_t start,
- resource_size_t size, unsigned int flags)
+struct device_d *add_generic_device(const char* devname, int id, const char *resname,
+ resource_size_t start, resource_size_t size, unsigned int flags,
+ void *pdata)
{
struct device_d *dev;
dev = xzalloc(sizeof(*dev));
- strcpy(dev->name, "mem");
- dev->id = -1;
+ strcpy(dev->name, devname);
+ dev->id = id;
dev->resource = xzalloc(sizeof(struct resource));
dev->num_resources = 1;
- dev->resource[0].name = xstrdup(name);
+ if (resname)
+ dev->resource[0].name = xstrdup(resname);
dev->resource[0].start = start;
dev->resource[0].size = size;
- dev->resource[0].flags = IORESOURCE_MEM | flags;
+ dev->resource[0].flags = flags;
+ dev->platform_data = pdata;
register_device(dev);
return dev;
}
+EXPORT_SYMBOL(add_generic_device);
diff --git a/include/driver.h b/include/driver.h
index 11c42fe..738cfae 100644
--- a/include/driver.h
+++ b/include/driver.h
@@ -203,10 +203,22 @@ static inline void __iomem *dev_request_mem_region(struct device_d *dev, int num
}
/*
+ * register a generic device
+ * with only one resource
+ */
+struct device_d *add_generic_device(const char* devname, int id, const char *resname,
+ resource_size_t start, resource_size_t size, unsigned int flags,
+ void *pdata);
+
+/*
* register a memory device
*/
-struct device_d *add_mem_device(const char *name, resource_size_t start,
- resource_size_t size, unsigned int flags);
+static inline struct device_d *add_mem_device(const char *name, resource_size_t start,
+ resource_size_t size, unsigned int flags)
+{
+ return add_generic_device("mem", -1, name, start, size,
+ IORESOURCE_MEM | flags, NULL);
+}
/* linear list over all available devices
*/
--
1.7.5.4
More information about the barebox
mailing list