[PULL] drm-misc-next

Benjamin Gaignard benjamin.gaignard at linaro.org
Fri Oct 13 14:24:38 UTC 2017


2017-10-13 16:08 GMT+02:00 Maarten Lankhorst
<maarten.lankhorst at linux.intel.com>:
> 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)
>

Acked-by: Benjamin Gaignard <benjamin.gaignard at linaro.org>


More information about the dri-devel mailing list