Message ID | 20200915123818.13272-4-paul@crapouillou.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Small improvements to ingenic-drm | expand |
On Tue, Sep 15, 2020 at 02:38:18PM +0200, Paul Cercueil wrote: > Add support for static memory reserved from Device Tree. Since we're > using GEM buffers backed by CMA, it is interesting to have an option to > specify the CMA area where the GEM buffers will be allocated. > > Signed-off-by: Paul Cercueil <paul@crapouillou.net> Acked-by: Sam Ravnborg <sam@ravnborg.org> > --- > drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > > diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c > index aa32660033d2..44b0d029095e 100644 > --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c > +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c > @@ -14,6 +14,7 @@ > #include <linux/module.h> > #include <linux/mutex.h> > #include <linux/of_device.h> > +#include <linux/of_reserved_mem.h> > #include <linux/platform_device.h> > #include <linux/regmap.h> > > @@ -827,6 +828,11 @@ static void ingenic_drm_unbind_all(void *d) > component_unbind_all(priv->dev, &priv->drm); > } > > +static void __maybe_unused ingenic_drm_release_rmem(void *d) > +{ > + of_reserved_mem_device_release(d); > +} > + > static int ingenic_drm_bind(struct device *dev, bool has_components) > { > struct platform_device *pdev = to_platform_device(dev); > @@ -848,6 +854,19 @@ static int ingenic_drm_bind(struct device *dev, bool has_components) > return -EINVAL; > } > > + if (IS_ENABLED(CONFIG_OF_RESERVED_MEM)) { > + ret = of_reserved_mem_device_init(dev); > + > + if (ret && ret != -ENODEV) > + return dev_err_probe(dev, ret, "Failed to get reserved memory\n"); > + > + if (ret != -ENODEV) { > + ret = devm_add_action_or_reset(dev, ingenic_drm_release_rmem, dev); > + if (ret) > + return ret; > + } > + } > + > priv = devm_drm_dev_alloc(dev, &ingenic_drm_driver_data, > struct ingenic_drm, drm); > if (IS_ERR(priv)) > -- > 2.28.0
diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c index aa32660033d2..44b0d029095e 100644 --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c @@ -14,6 +14,7 @@ #include <linux/module.h> #include <linux/mutex.h> #include <linux/of_device.h> +#include <linux/of_reserved_mem.h> #include <linux/platform_device.h> #include <linux/regmap.h> @@ -827,6 +828,11 @@ static void ingenic_drm_unbind_all(void *d) component_unbind_all(priv->dev, &priv->drm); } +static void __maybe_unused ingenic_drm_release_rmem(void *d) +{ + of_reserved_mem_device_release(d); +} + static int ingenic_drm_bind(struct device *dev, bool has_components) { struct platform_device *pdev = to_platform_device(dev); @@ -848,6 +854,19 @@ static int ingenic_drm_bind(struct device *dev, bool has_components) return -EINVAL; } + if (IS_ENABLED(CONFIG_OF_RESERVED_MEM)) { + ret = of_reserved_mem_device_init(dev); + + if (ret && ret != -ENODEV) + return dev_err_probe(dev, ret, "Failed to get reserved memory\n"); + + if (ret != -ENODEV) { + ret = devm_add_action_or_reset(dev, ingenic_drm_release_rmem, dev); + if (ret) + return ret; + } + } + priv = devm_drm_dev_alloc(dev, &ingenic_drm_driver_data, struct ingenic_drm, drm); if (IS_ERR(priv))
Add support for static memory reserved from Device Tree. Since we're using GEM buffers backed by CMA, it is interesting to have an option to specify the CMA area where the GEM buffers will be allocated. Signed-off-by: Paul Cercueil <paul@crapouillou.net> --- drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)