Hi Lucas, On Tue, Apr 08, 2025 at 09:34:22AM -0500, Lucas De Marchi wrote: > On Tue, Apr 08, 2025 at 02:20:06PM +0200, Maxime Ripard wrote: > > Commit 9d7d7c3c9a19 ("panel/auo-a030jtn01: Use refcounted allocation in > > place of devm_kzalloc()") switched from a kmalloc + drm_panel_init call > > to a devm_drm_panel_alloc one. > > > > However, the variable it was storing the allocated pointer in doesn't > > exist, resulting in a compilation breakage. > > > > Fixes: 9d7d7c3c9a19 ("panel/auo-a030jtn01: Use refcounted allocation in > > place of devm_kzalloc()") > > Signed-off-by: Maxime Ripard <mrip...@kernel.org> > > I still get a failure in modpost: > > ERROR: modpost: "__devm_drm_panel_alloc" > [drivers/gpu/drm/panel/panel-auo-a030jtn01.ko] undefined! > > because that entire block is: > > #ifdef CONFIG_OF > > Based on the header, I think the intention wasn't to add those functions > there, right? Moving it outside the ifdef at least fixes the build for > me. > > Lucas De Marchi > > -------8<------------ > Subject: [PATCH] drm/panel: Fix build error on !CONFIG_OF > > Move helpers outside of CONFIG_OF, so basic allocation also works > without it. > > Fixes: ed9c594d495d ("drm/panel: Add new helpers for refcounted panel > allocatons") > Fixes: dcba396f6907 ("drm/panel: Add refcount support") > Signed-off-by: Lucas De Marchi <lucas.demar...@intel.com> > --- > drivers/gpu/drm/drm_panel.c | 76 ++++++++++++++++++------------------- > 1 file changed, 38 insertions(+), 38 deletions(-) > > diff --git a/drivers/gpu/drm/drm_panel.c b/drivers/gpu/drm/drm_panel.c > index 870bf8d471ee9..99b348782ce31 100644 > --- a/drivers/gpu/drm/drm_panel.c > +++ b/drivers/gpu/drm/drm_panel.c > @@ -318,44 +318,6 @@ int drm_panel_get_modes(struct drm_panel *panel, > } > EXPORT_SYMBOL(drm_panel_get_modes); > -#ifdef CONFIG_OF > -/** > - * of_drm_find_panel - look up a panel using a device tree node > - * @np: device tree node of the panel > - * > - * Searches the set of registered panels for one that matches the given > device > - * tree node. If a matching panel is found, return a pointer to it. > - * > - * Return: A pointer to the panel registered for the specified device tree > - * node or an ERR_PTR() if no panel matching the device tree node can be > found. > - * > - * Possible error codes returned by this function: > - * > - * - EPROBE_DEFER: the panel device has not been probed yet, and the caller > - * should retry later > - * - ENODEV: the device is not available (status != "okay" or "ok") > - */ > -struct drm_panel *of_drm_find_panel(const struct device_node *np) > -{ > - struct drm_panel *panel; > - > - if (!of_device_is_available(np)) > - return ERR_PTR(-ENODEV); > - > - mutex_lock(&panel_lock); > - > - list_for_each_entry(panel, &panel_list, list) { > - if (panel->dev->of_node == np) { > - mutex_unlock(&panel_lock); > - return panel; > - } > - } > - > - mutex_unlock(&panel_lock); > - return ERR_PTR(-EPROBE_DEFER); > -} > -EXPORT_SYMBOL(of_drm_find_panel); > - > static void __drm_panel_free(struct kref *kref) > { > struct drm_panel *panel = container_of(kref, struct drm_panel, > refcount); > @@ -443,6 +405,44 @@ void *__devm_drm_panel_alloc(struct device *dev, size_t > size, size_t offset, > } > EXPORT_SYMBOL(__devm_drm_panel_alloc); > +#ifdef CONFIG_OF > +/** > + * of_drm_find_panel - look up a panel using a device tree node > + * @np: device tree node of the panel > + * > + * Searches the set of registered panels for one that matches the given > device > + * tree node. If a matching panel is found, return a pointer to it. > + * > + * Return: A pointer to the panel registered for the specified device tree > + * node or an ERR_PTR() if no panel matching the device tree node can be > found. > + * > + * Possible error codes returned by this function: > + * > + * - EPROBE_DEFER: the panel device has not been probed yet, and the caller > + * should retry later > + * - ENODEV: the device is not available (status != "okay" or "ok") > + */ > +struct drm_panel *of_drm_find_panel(const struct device_node *np) > +{ > + struct drm_panel *panel; > + > + if (!of_device_is_available(np)) > + return ERR_PTR(-ENODEV); > + > + mutex_lock(&panel_lock); > + > + list_for_each_entry(panel, &panel_list, list) { > + if (panel->dev->of_node == np) { > + mutex_unlock(&panel_lock); > + return panel; > + } > + } > + > + mutex_unlock(&panel_lock); > + return ERR_PTR(-EPROBE_DEFER); > +} > +EXPORT_SYMBOL(of_drm_find_panel); > + > /** > * of_drm_get_panel_orientation - look up the orientation of the panel > through > * the "rotation" binding from a device tree node
It's a bit hard to read with that change log, but assuming this doesn't change of_drm_find_panel, Reviewed-by: Maxime Ripard <mrip...@kernel.org> Maxime
signature.asc
Description: PGP signature