[Intel-gfx] [PULL] drm-misc-next

Maarten Lankhorst maarten.lankhorst at linux.intel.com
Fri Oct 13 14:08:53 UTC 2017


Op 12-10-17 om 14:05 schreef Daniel Vetter:
> Hi Dave,
>
> drm-misc-next-2017-10-12:
> More 4.15 drm-misc stuff:
>
> Cross-subsystem Changes:
> - bridge cleanup refactor (Benjamin Gaignard)
>
> Core Changes:
> - less surprising atomic iterators (Maarten), fixes an oops introduced
>   in drm-next
> - better gem/fb helper docs (Noralf)
> - fix dma-buf rcu races (Christian König)
>
> Driver Changes:
> - adv7511: CEC support (Hans Verkuil)
> - sun4i update from Chen-Yu to improve hdmi and A31 support
> - sii8620: add remote control support (Maceiej Purski)
>
> New drivers:
> - SiI9234 bridge driver (Maciej Purski)
> - 7" rpi touch panel (Eric Anholt)
>
> Note that this contains a topic pull from regmap, needed by the sun4i
> changes. Mark Brown sent that out for pulling into drm-misc.
>
> Cheers, Daniel
> The following changes since commit 15438ab06515b093d61e2f35bb27d21e5e7f966e:
>
>   Merge tag 'drm-misc-next-2017-10-05' of git://anongit.freedesktop.org/git/drm-misc into drm-next (2017-10-06 11:10:25 +1000)
>
> are available in the git repository at:
>
>   git://anongit.freedesktop.org/drm/drm-misc tags/drm-misc-next-2017-10-12
>
> for you to fetch changes up to cccf4e3fe3e286b55634c2c5d0c4399f4288e440:
>
>   drm/dp: WARN about invalid/unknown link rates and bw codes (2017-10-11 18:41:44 +0300)
>
> ----------------------------------------------------------------
> More 4.15 drm-misc stuff:
>
> Cross-subsystem Changes:
> - bridge cleanup refactor (Benjamin Gaignard)
>
> Core Changes:
> - less surprising atomic iterators (Maarten), fixes an oops introduced
>   in drm-next
> - better gem/fb helper docs (Noralf)
> - fix dma-buf rcu races (Christian König)
>
> Driver Changes:
> - adv7511: CEC support (Hans Verkuil)
> - sun4i update from Chen-Yu to improve hdmi and A31 support
> - sii8620: add remote control support (Maceiej Purski)
>
> New drivers:
> - SiI9234 bridge driver (Maciej Purski)
> - 7" rpi touch panel (Eric Anholt)
>
> Note that this contains a topic pull from regmap, needed by the sun4i
> changes. Mark Brown sent that out for pulling into drm-misc.
>
> ----------------------------------------------------------------
> Aishwarya Pant (1):
>       drm/msm/mdp5: remove less than 0 comparison for unsigned value
>
> Chen-Yu Tsai (10):
>       regmap: add iopoll-like polling macro for regmap_field
>       drm/sun4i: tcon: Add variant callback for TCON output muxing
>       drm/sun4i: tcon: Add support for demuxing TCON output on A31
>       drm/sun4i: hdmi: Disable clks in bind function error path and unbind function
>       drm/sun4i: hdmi: create a regmap for later use
>       drm/sun4i: hdmi: Allow using second PLL as TMDS clk parent
>       dt-bindings: display: sun4i: Add binding for A31 HDMI controller
>       drm/sun4i: hdmi: Add support for controller hardware variants
>       drm/sun4i: hdmi: Add A31 specific DDC register definitions
>       drm/sun4i: hdmi: Add support for A31's HDMI controller
>
> Christian König (2):
>       dma-buf: make reservation_object_copy_fences rcu save
>       dma-fence: fix dma_fence_get_rcu_safe v2
>
> Daniel Vetter (1):
>       Merge tag 'regmap-poll-field' of git://git.kernel.org/.../broonie/regmap into drm-misc-next
>
> Eric Anholt (2):
>       dt-bindings: Document the Raspberry Pi Touchscreen nodes.
>       drm/panel: Add support for the Raspberry Pi 7" Touchscreen.
>
> Hans Verkuil (2):
>       dt-bindings: adi,adv7511.txt: document cec clock
>       drm: adv7511/33: add HDMI CEC support
>
> Jani Nikula (1):
>       drm/dp: WARN about invalid/unknown link rates and bw codes
>
> Jeffy Chen (1):
>       drm/atomic: Unref duplicated drm_atomic_state in drm_atomic_helper_resume()
>
> Maarten Lankhorst (2):
>       drm/atomic: Remove unneeded null check for private objects
>       drm/atomic: Make atomic iterators less surprising
>
> Maciej Purski (2):
>       drm/bridge: add Silicon Image SiI9234 driver
>       drm/bridge/sii8620: add remote control support
>
> Noralf Trønnes (1):
>       drm/gem-fb-helper: Improve documentation
>
> benjamin.gaignard at linaro.org (5):
>       drm/bridge: make drm_panel_bridge_remove more robust
>       drm/drm_of: add drm_of_panel_bridge_remove function

Just found out that this breaks modular drm with cross dependency between drm_of.c and drm_bridge.

insmod drm fails with
[ 6087.674390] drm: Unknown symbol drm_panel_bridge_remove (err 0)

which is defined in drm_kms_helper.ko

Offending commit is likely:

commit c70087e8f16f1dfe703d223aadd95ede1cde8e30
Author: benjamin.gaignard at linaro.org <benjamin.gaignard at linaro.org>
Date:   Mon Oct 2 11:34:45 2017 +0200

    drm/drm_of: add drm_of_panel_bridge_remove function
    
Fixup below?

Signed-off-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
---
diff --git a/drivers/gpu/drm/drm_of.c b/drivers/gpu/drm/drm_of.c
index 7a36934ea5db..4c191c050e7d 100644
--- a/drivers/gpu/drm/drm_of.c
+++ b/drivers/gpu/drm/drm_of.c
@@ -262,36 +262,3 @@ int drm_of_find_panel_or_bridge(const struct device_node *np,
 	return ret;
 }
 EXPORT_SYMBOL_GPL(drm_of_find_panel_or_bridge);
-
-#ifdef CONFIG_DRM_PANEL_BRIDGE
-/*
- * drm_of_panel_bridge_remove - remove panel bridge
- * @np: device tree node containing panel bridge output ports
- *
- * Remove the panel bridge of a given DT node's port and endpoint number
- *
- * Returns zero if successful, or one of the standard error codes if it fails.
- */
-int drm_of_panel_bridge_remove(const struct device_node *np,
-			       int port, int endpoint)
-{
-	struct drm_bridge *bridge;
-	struct device_node *remote;
-
-	remote = of_graph_get_remote_node(np, port, endpoint);
-	if (!remote)
-		return -ENODEV;
-
-	bridge = of_drm_find_bridge(remote);
-	drm_panel_bridge_remove(bridge);
-
-	return 0;
-}
-#else
-int drm_of_panel_bridge_remove(const struct device_node *np,
-			       int port, int endpoint)
-{
-	return -EINVAL;
-}
-#endif
-EXPORT_SYMBOL_GPL(drm_of_panel_bridge_remove);
diff --git a/include/drm/drm_of.h b/include/drm/drm_of.h
index 390966e4a308..d20ec4e0431d 100644
--- a/include/drm/drm_of.h
+++ b/include/drm/drm_of.h
@@ -2,6 +2,9 @@
 #define __DRM_OF_H__
 
 #include <linux/of_graph.h>
+#if IS_ENABLED(CONFIG_OF) && IS_ENABLED(CONFIG_DRM_PANEL_BRIDGE)
+#include <drm/drm_bridge.h>
+#endif
 
 struct component_master_ops;
 struct component_match;
@@ -29,8 +32,6 @@ int drm_of_find_panel_or_bridge(const struct device_node *np,
 				int port, int endpoint,
 				struct drm_panel **panel,
 				struct drm_bridge **bridge);
-int drm_of_panel_bridge_remove(const struct device_node *np,
-			       int port, int endpoint);
 #else
 static inline uint32_t drm_of_find_possible_crtcs(struct drm_device *dev,
 						  struct device_node *port)
@@ -67,13 +68,35 @@ static inline int drm_of_find_panel_or_bridge(const struct device_node *np,
 {
 	return -EINVAL;
 }
+#endif
 
+/*
+ * drm_of_panel_bridge_remove - remove panel bridge
+ * @np: device tree node containing panel bridge output ports
+ *
+ * Remove the panel bridge of a given DT node's port and endpoint number
+ *
+ * Returns zero if successful, or one of the standard error codes if it fails.
+ */
 static inline int drm_of_panel_bridge_remove(const struct device_node *np,
 					     int port, int endpoint)
 {
+#if IS_ENABLED(CONFIG_OF) && IS_ENABLED(CONFIG_DRM_PANEL_BRIDGE)
+	struct drm_bridge *bridge;
+	struct device_node *remote;
+
+	remote = of_graph_get_remote_node(np, port, endpoint);
+	if (!remote)
+		return -ENODEV;
+
+	bridge = of_drm_find_bridge(remote);
+	drm_panel_bridge_remove(bridge);
+
+	return 0;
+#else
 	return -EINVAL;
-}
 #endif
+}
 
 static inline int drm_of_encoder_active_endpoint_id(struct device_node *node,
 						    struct drm_encoder *encoder)



More information about the Intel-gfx mailing list