On Fri, Jan 09, 2015 at 01:33:10PM -0500, George G. Davis wrote: > On Fri, Jan 09, 2015 at 11:53:01AM -0600, Rob Herring wrote: > > On Fri, Jan 9, 2015 at 8:29 AM, George G. Davis <ggdavisiv@xxxxxxxxx> wrote: > > > Export of_reserved_mem_device_{init,release} so that modules > > > can initialize and release their assigned per-device cma_area. > > > > I believe the original intent was for the core bus code to call these > > functions. While the commit adding them says "automated assignment" > > that part did not go in. > > I suspected that there may have been a bit of missing magic. The only > use of these functions that I was able to find was in an earlier out of > tree patch series where these functions were called from the s5p-mfc > driver: > > http://lists.linaro.org/pipermail/linaro-mm-sig/2014-August/004140.html > > I agree that "automated assignment" via core bus code would be a better > solution but I don't know where to add the calls. How about something like the following for automated assignment?: diff --git a/drivers/base/platform.c b/drivers/base/platform.c index 9421fed..231b427 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -14,6 +14,7 @@ #include <linux/platform_device.h> #include <linux/of_device.h> #include <linux/of_irq.h> +#include <linux/of_reserved_mem.h> #include <linux/module.h> #include <linux/init.h> #include <linux/dma-mapping.h> @@ -509,9 +510,12 @@ static int platform_drv_probe(struct device *_dev) ret = dev_pm_domain_attach(_dev, true); if (ret != -EPROBE_DEFER) { + of_reserved_mem_device_init(_dev); ret = drv->probe(dev); - if (ret) + if (ret) { + of_reserved_mem_device_release(_dev); dev_pm_domain_detach(_dev, true); + } } if (drv->prevent_deferred_probe && ret == -EPROBE_DEFER) { @@ -534,6 +538,7 @@ static int platform_drv_remove(struct device *_dev) int ret; ret = drv->remove(dev); + of_reserved_mem_device_release(_dev); dev_pm_domain_detach(_dev, true); return ret; -- Regards, George > > > As it stands, there are no in tree users of > > these functions. > > > > Marek, comments? > > Thanks! > > -- > Regards, > George > > > > > Rob > > > > > > > > Signed-off-by: George G. Davis <george_davis@xxxxxxxxxx> > > > --- > > > drivers/of/of_reserved_mem.c | 2 ++ > > > 1 file changed, 2 insertions(+) > > > > > > diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c > > > index dc566b3..5eeb5b2 100644 > > > --- a/drivers/of/of_reserved_mem.c > > > +++ b/drivers/of/of_reserved_mem.c > > > @@ -265,6 +265,7 @@ int of_reserved_mem_device_init(struct device *dev) > > > > > > return ret; > > > } > > > +EXPORT_SYMBOL(of_reserved_mem_device_init); > > > > > > /** > > > * of_reserved_mem_device_release() - release reserved memory device structures > > > @@ -289,3 +290,4 @@ void of_reserved_mem_device_release(struct device *dev) > > > > > > rmem->ops->device_release(rmem, dev); > > > } > > > +EXPORT_SYMBOL(of_reserved_mem_device_release); > > > -- > > > 1.9.3 > > > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html