[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