summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Bonesio <bones@secretlab.ca>2011-10-24 11:09:06 +0200
committerAndrey Konovalov <andrey.konovalov@linaro.org>2012-10-08 23:24:06 +0400
commitd5d6944c6252fff21579fb6bdff6afde65b450a9 (patch)
treeb0c291a791faeb886373bf651488119dd60dd87c
parent604441144b144886bc8843e5eb69111796e0aff3 (diff)
dt: Add id to AUXDATA structure
This patch adds the ability to set the device id in the AUXDATA structure for those few device drivers that just have to have a statically defined device id. Signed-off-by: John Bonesio <bones@secretlab.ca> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
-rw-r--r--drivers/of/platform.c7
-rw-r--r--include/linux/of_platform.h7
2 files changed, 13 insertions, 1 deletions
diff --git a/drivers/of/platform.c b/drivers/of/platform.c
index e44f8c2d239..4150b942704 100644
--- a/drivers/of/platform.c
+++ b/drivers/of/platform.c
@@ -348,6 +348,7 @@ static int of_platform_bus_create(struct device_node *bus,
struct platform_device *dev;
const char *bus_id = NULL;
void *platform_data = NULL;
+ int id = -1;
int rc = 0;
/* Make sure it has a compatible property */
@@ -360,6 +361,7 @@ static int of_platform_bus_create(struct device_node *bus,
auxdata = of_dev_lookup(lookup, bus);
if (auxdata) {
bus_id = auxdata->name;
+ id = auxdata->id;
platform_data = auxdata->platform_data;
}
@@ -369,6 +371,11 @@ static int of_platform_bus_create(struct device_node *bus,
}
dev = of_platform_device_create_pdata(bus, bus_id, platform_data, parent);
+
+ /* override the id if auxdata gives an id */
+ if (id != -1)
+ dev->id = id;
+
if (!dev || !of_match_node(matches, bus))
return 0;
diff --git a/include/linux/of_platform.h b/include/linux/of_platform.h
index b47d2040c9f..57d555ec713 100644
--- a/include/linux/of_platform.h
+++ b/include/linux/of_platform.h
@@ -44,13 +44,18 @@ struct of_dev_auxdata {
char *compatible;
resource_size_t phys_addr;
char *name;
+ int id;
void *platform_data;
};
/* Macro to simplify populating a lookup table */
#define OF_DEV_AUXDATA(_compat,_phys,_name,_pdata) \
{ .compatible = _compat, .phys_addr = _phys, .name = _name, \
- .platform_data = _pdata }
+ .id = -1, .platform_data = _pdata }
+
+#define OF_DEV_AUXDATA_ID(_compat,_phys,_name,_id,_pdata) \
+ { .compatible = _compat, .phys_addr = _phys, .name = _name, \
+ .id = _id, .platform_data = _pdata }
/**
* of_platform_driver - Legacy of-aware driver for platform devices.