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@xxxxxxxxxx (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@xxxxxxxxxx <benjamin.gaignard@xxxxxxxxxx> 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@xxxxxxxxxxxxxxx> --- 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) _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel