2017-10-13 16:08 GMT+02:00 Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx>: > 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) > Acked-by: Benjamin Gaignard <benjamin.gaignard@xxxxxxxxxx> _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx