diff options
| author | Ohad Ben-Cohen <ohad@wizery.com> | 2012-02-20 09:43:29 -0800 | 
|---|---|---|
| committer | Tony Lindgren <tony@atomide.com> | 2012-02-20 10:00:39 -0800 | 
| commit | 993e4fbd7822cdf874fcf9f1b054a323d67ccf97 (patch) | |
| tree | eff8a45e979d7cf35ea332ea2b736de2f70218b0 /arch/arm/plat-omap/omap_device.c | |
| parent | d517110243130965e2803cc2373d434bdaf6dafb (diff) | |
| download | olio-linux-3.10-993e4fbd7822cdf874fcf9f1b054a323d67ccf97.tar.xz olio-linux-3.10-993e4fbd7822cdf874fcf9f1b054a323d67ccf97.zip  | |
ARM: OMAP: omap_device: Expose omap_device_{alloc, delete, register}
Expose omap_device_{alloc, delete, register} so we can use them outside
of omap_device.c.
This approach allows users, which need to manipulate an archdata member
of a device before it is registered, to do so. This is also useful
for users who have their devices created very early so they can be used
at ->reserve() time to reserve CMA memory.
The immediate use case for this is to set the private iommu archdata
member, which binds a device to its associated iommu controller.
This way, generic code will be able to attach omap devices to their
iommus, without calling any omap-specific API.
With this in hand, we can further clean the existing mainline OMAP iommu
driver and its mainline users, and focus on generic IOMMU approaches
for future users (rpmsg/remoteproc and the upcoming generic DMA API).
This patch is still considered an interim solution until DT fully materializes
for omap; at that point, this functionality will be removed as DT will
take care of creating the devices and configuring them correctly.
Tested on OMAP4 with a generic rpmsg/remoteproc that doesn't use any
omap-specific IOMMU API anymore.
Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
Signed-off-by: Kevin Hilman <khilman@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/plat-omap/omap_device.c')
| -rw-r--r-- | arch/arm/plat-omap/omap_device.c | 13 | 
1 files changed, 3 insertions, 10 deletions
diff --git a/arch/arm/plat-omap/omap_device.c b/arch/arm/plat-omap/omap_device.c index e8d98693d2d..f72fafc9e9f 100644 --- a/arch/arm/plat-omap/omap_device.c +++ b/arch/arm/plat-omap/omap_device.c @@ -97,14 +97,7 @@  #define USE_WAKEUP_LAT			0  #define IGNORE_WAKEUP_LAT		1 -static int omap_device_register(struct platform_device *pdev);  static int omap_early_device_register(struct platform_device *pdev); -static struct omap_device *omap_device_alloc(struct platform_device *pdev, -				      struct omap_hwmod **ohs, int oh_cnt, -				      struct omap_device_pm_latency *pm_lats, -				      int pm_lats_cnt); -static void omap_device_delete(struct omap_device *od); -  static struct omap_device_pm_latency omap_default_latency[] = {  	{ @@ -509,7 +502,7 @@ static int omap_device_fill_resources(struct omap_device *od,   *   * Returns an struct omap_device pointer or ERR_PTR() on error;   */ -static struct omap_device *omap_device_alloc(struct platform_device *pdev, +struct omap_device *omap_device_alloc(struct platform_device *pdev,  					struct omap_hwmod **ohs, int oh_cnt,  					struct omap_device_pm_latency *pm_lats,  					int pm_lats_cnt) @@ -591,7 +584,7 @@ oda_exit1:  	return ERR_PTR(ret);  } -static void omap_device_delete(struct omap_device *od) +void omap_device_delete(struct omap_device *od)  {  	if (!od)  		return; @@ -817,7 +810,7 @@ static struct dev_pm_domain omap_device_pm_domain = {   * platform_device_register() on the underlying platform_device.   * Returns the return value of platform_device_register().   */ -static int omap_device_register(struct platform_device *pdev) +int omap_device_register(struct platform_device *pdev)  {  	pr_debug("omap_device: %s: registering\n", pdev->name);  |