diff options
author | Grant Likely <grant.likely@secretlab.ca> | 2012-02-24 16:58:34 -0500 |
---|---|---|
committer | Grant Likely <grant.likely@secretlab.ca> | 2012-02-26 18:48:06 -0500 |
commit | 964dba283439a4db50dae61d3afe6e438b7fc30f (patch) | |
tree | df23cd3d6032187d46093512aaf3772aeffb8c76 | |
parent | d593f25ff263b1a7752b7380f8b7d57809206c40 (diff) |
devicetree: Add empty of_platform_populate() for !CONFIG_OF_ADDRESS (sparc)
Sparc has its own helpers for translating address ranges when the device
tree is parsed at boot time, and it isn't able to use of_platform_populate().
However, there are some device drivers that want to use that function on
other DT enabled platforms (ie. TWL4030). This patch adds an empty
of_platform_populate() implementation that returns an error when
CONFIG_OF_ADDRESS is not selected.
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Cc: Benoit Cousson <b-cousson@ti.com>
Cc: Samuel Ortiz <sameo@linux.intel.com>
-rw-r--r-- | drivers/mfd/twl-core.c | 5 | ||||
-rw-r--r-- | drivers/of/platform.c | 4 | ||||
-rw-r--r-- | include/linux/of_platform.h | 12 |
3 files changed, 14 insertions, 7 deletions
diff --git a/drivers/mfd/twl-core.c b/drivers/mfd/twl-core.c index 66f9bffc50f0..4970d43952db 100644 --- a/drivers/mfd/twl-core.c +++ b/drivers/mfd/twl-core.c | |||
@@ -1305,11 +1305,10 @@ twl_probe(struct i2c_client *client, const struct i2c_device_id *id) | |||
1305 | twl_i2c_write_u8(TWL4030_MODULE_INTBR, temp, REG_GPPUPDCTR1); | 1305 | twl_i2c_write_u8(TWL4030_MODULE_INTBR, temp, REG_GPPUPDCTR1); |
1306 | } | 1306 | } |
1307 | 1307 | ||
1308 | #ifdef CONFIG_OF_DEVICE | 1308 | status = -ENODEV; |
1309 | if (node) | 1309 | if (node) |
1310 | status = of_platform_populate(node, NULL, NULL, &client->dev); | 1310 | status = of_platform_populate(node, NULL, NULL, &client->dev); |
1311 | else | 1311 | if (status) |
1312 | #endif | ||
1313 | status = add_children(pdata, id->driver_data); | 1312 | status = add_children(pdata, id->driver_data); |
1314 | 1313 | ||
1315 | fail: | 1314 | fail: |
diff --git a/drivers/of/platform.c b/drivers/of/platform.c index 63b3ec48c203..20fbebd49db3 100644 --- a/drivers/of/platform.c +++ b/drivers/of/platform.c | |||
@@ -55,7 +55,7 @@ EXPORT_SYMBOL(of_find_device_by_node); | |||
55 | #include <asm/dcr.h> | 55 | #include <asm/dcr.h> |
56 | #endif | 56 | #endif |
57 | 57 | ||
58 | #if !defined(CONFIG_SPARC) | 58 | #ifdef CONFIG_OF_ADDRESS |
59 | /* | 59 | /* |
60 | * The following routines scan a subtree and registers a device for | 60 | * The following routines scan a subtree and registers a device for |
61 | * each applicable node. | 61 | * each applicable node. |
@@ -462,4 +462,4 @@ int of_platform_populate(struct device_node *root, | |||
462 | of_node_put(root); | 462 | of_node_put(root); |
463 | return rc; | 463 | return rc; |
464 | } | 464 | } |
465 | #endif /* !CONFIG_SPARC */ | 465 | #endif /* CONFIG_OF_ADDRESS */ |
diff --git a/include/linux/of_platform.h b/include/linux/of_platform.h index 040ce2f6e8de..242fa3563e2e 100644 --- a/include/linux/of_platform.h +++ b/include/linux/of_platform.h | |||
@@ -81,7 +81,7 @@ extern struct platform_device *of_device_alloc(struct device_node *np, | |||
81 | struct device *parent); | 81 | struct device *parent); |
82 | extern struct platform_device *of_find_device_by_node(struct device_node *np); | 82 | extern struct platform_device *of_find_device_by_node(struct device_node *np); |
83 | 83 | ||
84 | #if !defined(CONFIG_SPARC) /* SPARC has its own device registration method */ | 84 | #ifdef CONFIG_OF_ADDRESS /* device reg helpers depend on OF_ADDRESS */ |
85 | /* Platform devices and busses creation */ | 85 | /* Platform devices and busses creation */ |
86 | extern struct platform_device *of_platform_device_create(struct device_node *np, | 86 | extern struct platform_device *of_platform_device_create(struct device_node *np, |
87 | const char *bus_id, | 87 | const char *bus_id, |
@@ -94,7 +94,15 @@ extern int of_platform_populate(struct device_node *root, | |||
94 | const struct of_device_id *matches, | 94 | const struct of_device_id *matches, |
95 | const struct of_dev_auxdata *lookup, | 95 | const struct of_dev_auxdata *lookup, |
96 | struct device *parent); | 96 | struct device *parent); |
97 | #endif /* !CONFIG_SPARC */ | 97 | #else |
98 | static inline int of_platform_populate(struct device_node *root, | ||
99 | const struct of_device_id *matches, | ||
100 | const struct of_dev_auxdata *lookup, | ||
101 | struct device *parent) | ||
102 | { | ||
103 | return -ENODEV; | ||
104 | } | ||
105 | #endif /* !CONFIG_OF_ADDRESS */ | ||
98 | 106 | ||
99 | #endif /* CONFIG_OF_DEVICE */ | 107 | #endif /* CONFIG_OF_DEVICE */ |
100 | 108 | ||