On Tue, Apr 08, 2025 at 04:57:44PM +0200, Maxime Ripard wrote:
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>

unfortunately in plain text we don't have the equivalent of
`git show --color-moved`. I confirmed here it's only moving code outside
the ifdef so the only functions inside it are the of_* ones. I will push
them to drm-misc-next soon

thanks
Lucas De Marchi


Maxime


Reply via email to