Merge tag 'drm-misc-next-2017-10-12' of git://anongit.freedesktop.org/drm/drm-misc into drm-next
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. * tag 'drm-misc-next-2017-10-12' of git://anongit.freedesktop.org/drm/drm-misc: (29 commits) drm/dp: WARN about invalid/unknown link rates and bw codes drm/msm/mdp5: remove less than 0 comparison for unsigned value drm/bridge/sii8620: add remote control support drm/sun4i: hdmi: Add support for A31's HDMI controller drm/sun4i: hdmi: Add A31 specific DDC register definitions drm/sun4i: hdmi: Add support for controller hardware variants dt-bindings: display: sun4i: Add binding for A31 HDMI controller drm/sun4i: hdmi: Allow using second PLL as TMDS clk parent drm/sun4i: hdmi: create a regmap for later use drm/sun4i: hdmi: Disable clks in bind function error path and unbind function drm/sun4i: tcon: Add support for demuxing TCON output on A31 drm/sun4i: tcon: Add variant callback for TCON output muxing drm/bridge/synopsys: dsi :remove is_panel_bridge drm/vc4: remove bridge from driver internal structure drm/stm: ltdc: remove bridge from driver internal structure drm/drm_of: add drm_of_panel_bridge_remove function drm/bridge: make drm_panel_bridge_remove more robust dma-fence: fix dma_fence_get_rcu_safe v2 dma-buf: make reservation_object_copy_fences rcu save drm/atomic: Unref duplicated drm_atomic_state in drm_atomic_helper_resume() ...
This commit is contained in:
@@ -262,6 +262,10 @@ enum {
|
||||
#define MHL_RAPK_UNSUPPORTED 0x02 /* Rcvd RAP action code not supported */
|
||||
#define MHL_RAPK_BUSY 0x03 /* Responder too busy to respond */
|
||||
|
||||
/* Bit masks for RCP messages */
|
||||
#define MHL_RCP_KEY_RELEASED_MASK 0x80
|
||||
#define MHL_RCP_KEY_ID_MASK 0x7F
|
||||
|
||||
/*
|
||||
* Error status codes for RCPE messages
|
||||
*/
|
||||
|
||||
+45
-49
@@ -585,12 +585,12 @@ void drm_state_dump(struct drm_device *dev, struct drm_printer *p);
|
||||
*/
|
||||
#define for_each_oldnew_connector_in_state(__state, connector, old_connector_state, new_connector_state, __i) \
|
||||
for ((__i) = 0; \
|
||||
(__i) < (__state)->num_connector && \
|
||||
((connector) = (__state)->connectors[__i].ptr, \
|
||||
(old_connector_state) = (__state)->connectors[__i].old_state, \
|
||||
(new_connector_state) = (__state)->connectors[__i].new_state, 1); \
|
||||
(__i)++) \
|
||||
for_each_if (connector)
|
||||
(__i) < (__state)->num_connector; \
|
||||
(__i)++) \
|
||||
for_each_if ((__state)->connectors[__i].ptr && \
|
||||
((connector) = (__state)->connectors[__i].ptr, \
|
||||
(old_connector_state) = (__state)->connectors[__i].old_state, \
|
||||
(new_connector_state) = (__state)->connectors[__i].new_state, 1))
|
||||
|
||||
/**
|
||||
* for_each_old_connector_in_state - iterate over all connectors in an atomic update
|
||||
@@ -606,11 +606,11 @@ void drm_state_dump(struct drm_device *dev, struct drm_printer *p);
|
||||
*/
|
||||
#define for_each_old_connector_in_state(__state, connector, old_connector_state, __i) \
|
||||
for ((__i) = 0; \
|
||||
(__i) < (__state)->num_connector && \
|
||||
((connector) = (__state)->connectors[__i].ptr, \
|
||||
(old_connector_state) = (__state)->connectors[__i].old_state, 1); \
|
||||
(__i)++) \
|
||||
for_each_if (connector)
|
||||
(__i) < (__state)->num_connector; \
|
||||
(__i)++) \
|
||||
for_each_if ((__state)->connectors[__i].ptr && \
|
||||
((connector) = (__state)->connectors[__i].ptr, \
|
||||
(old_connector_state) = (__state)->connectors[__i].old_state, 1))
|
||||
|
||||
/**
|
||||
* for_each_new_connector_in_state - iterate over all connectors in an atomic update
|
||||
@@ -626,11 +626,11 @@ void drm_state_dump(struct drm_device *dev, struct drm_printer *p);
|
||||
*/
|
||||
#define for_each_new_connector_in_state(__state, connector, new_connector_state, __i) \
|
||||
for ((__i) = 0; \
|
||||
(__i) < (__state)->num_connector && \
|
||||
((connector) = (__state)->connectors[__i].ptr, \
|
||||
(new_connector_state) = (__state)->connectors[__i].new_state, 1); \
|
||||
(__i)++) \
|
||||
for_each_if (connector)
|
||||
(__i) < (__state)->num_connector; \
|
||||
(__i)++) \
|
||||
for_each_if ((__state)->connectors[__i].ptr && \
|
||||
((connector) = (__state)->connectors[__i].ptr, \
|
||||
(new_connector_state) = (__state)->connectors[__i].new_state, 1))
|
||||
|
||||
/**
|
||||
* for_each_oldnew_crtc_in_state - iterate over all CRTCs in an atomic update
|
||||
@@ -646,12 +646,12 @@ void drm_state_dump(struct drm_device *dev, struct drm_printer *p);
|
||||
*/
|
||||
#define for_each_oldnew_crtc_in_state(__state, crtc, old_crtc_state, new_crtc_state, __i) \
|
||||
for ((__i) = 0; \
|
||||
(__i) < (__state)->dev->mode_config.num_crtc && \
|
||||
((crtc) = (__state)->crtcs[__i].ptr, \
|
||||
(old_crtc_state) = (__state)->crtcs[__i].old_state, \
|
||||
(new_crtc_state) = (__state)->crtcs[__i].new_state, 1); \
|
||||
(__i) < (__state)->dev->mode_config.num_crtc; \
|
||||
(__i)++) \
|
||||
for_each_if (crtc)
|
||||
for_each_if ((__state)->crtcs[__i].ptr && \
|
||||
((crtc) = (__state)->crtcs[__i].ptr, \
|
||||
(old_crtc_state) = (__state)->crtcs[__i].old_state, \
|
||||
(new_crtc_state) = (__state)->crtcs[__i].new_state, 1))
|
||||
|
||||
/**
|
||||
* for_each_old_crtc_in_state - iterate over all CRTCs in an atomic update
|
||||
@@ -666,11 +666,11 @@ void drm_state_dump(struct drm_device *dev, struct drm_printer *p);
|
||||
*/
|
||||
#define for_each_old_crtc_in_state(__state, crtc, old_crtc_state, __i) \
|
||||
for ((__i) = 0; \
|
||||
(__i) < (__state)->dev->mode_config.num_crtc && \
|
||||
((crtc) = (__state)->crtcs[__i].ptr, \
|
||||
(old_crtc_state) = (__state)->crtcs[__i].old_state, 1); \
|
||||
(__i) < (__state)->dev->mode_config.num_crtc; \
|
||||
(__i)++) \
|
||||
for_each_if (crtc)
|
||||
for_each_if ((__state)->crtcs[__i].ptr && \
|
||||
((crtc) = (__state)->crtcs[__i].ptr, \
|
||||
(old_crtc_state) = (__state)->crtcs[__i].old_state, 1))
|
||||
|
||||
/**
|
||||
* for_each_new_crtc_in_state - iterate over all CRTCs in an atomic update
|
||||
@@ -685,11 +685,11 @@ void drm_state_dump(struct drm_device *dev, struct drm_printer *p);
|
||||
*/
|
||||
#define for_each_new_crtc_in_state(__state, crtc, new_crtc_state, __i) \
|
||||
for ((__i) = 0; \
|
||||
(__i) < (__state)->dev->mode_config.num_crtc && \
|
||||
((crtc) = (__state)->crtcs[__i].ptr, \
|
||||
(new_crtc_state) = (__state)->crtcs[__i].new_state, 1); \
|
||||
(__i) < (__state)->dev->mode_config.num_crtc; \
|
||||
(__i)++) \
|
||||
for_each_if (crtc)
|
||||
for_each_if ((__state)->crtcs[__i].ptr && \
|
||||
((crtc) = (__state)->crtcs[__i].ptr, \
|
||||
(new_crtc_state) = (__state)->crtcs[__i].new_state, 1))
|
||||
|
||||
/**
|
||||
* for_each_oldnew_plane_in_state - iterate over all planes in an atomic update
|
||||
@@ -705,12 +705,12 @@ void drm_state_dump(struct drm_device *dev, struct drm_printer *p);
|
||||
*/
|
||||
#define for_each_oldnew_plane_in_state(__state, plane, old_plane_state, new_plane_state, __i) \
|
||||
for ((__i) = 0; \
|
||||
(__i) < (__state)->dev->mode_config.num_total_plane && \
|
||||
((plane) = (__state)->planes[__i].ptr, \
|
||||
(old_plane_state) = (__state)->planes[__i].old_state, \
|
||||
(new_plane_state) = (__state)->planes[__i].new_state, 1); \
|
||||
(__i) < (__state)->dev->mode_config.num_total_plane; \
|
||||
(__i)++) \
|
||||
for_each_if (plane)
|
||||
for_each_if ((__state)->planes[__i].ptr && \
|
||||
((plane) = (__state)->planes[__i].ptr, \
|
||||
(old_plane_state) = (__state)->planes[__i].old_state,\
|
||||
(new_plane_state) = (__state)->planes[__i].new_state, 1))
|
||||
|
||||
/**
|
||||
* for_each_old_plane_in_state - iterate over all planes in an atomic update
|
||||
@@ -725,12 +725,11 @@ void drm_state_dump(struct drm_device *dev, struct drm_printer *p);
|
||||
*/
|
||||
#define for_each_old_plane_in_state(__state, plane, old_plane_state, __i) \
|
||||
for ((__i) = 0; \
|
||||
(__i) < (__state)->dev->mode_config.num_total_plane && \
|
||||
((plane) = (__state)->planes[__i].ptr, \
|
||||
(old_plane_state) = (__state)->planes[__i].old_state, 1); \
|
||||
(__i) < (__state)->dev->mode_config.num_total_plane; \
|
||||
(__i)++) \
|
||||
for_each_if (plane)
|
||||
|
||||
for_each_if ((__state)->planes[__i].ptr && \
|
||||
((plane) = (__state)->planes[__i].ptr, \
|
||||
(old_plane_state) = (__state)->planes[__i].old_state, 1))
|
||||
/**
|
||||
* for_each_new_plane_in_state - iterate over all planes in an atomic update
|
||||
* @__state: &struct drm_atomic_state pointer
|
||||
@@ -744,11 +743,11 @@ void drm_state_dump(struct drm_device *dev, struct drm_printer *p);
|
||||
*/
|
||||
#define for_each_new_plane_in_state(__state, plane, new_plane_state, __i) \
|
||||
for ((__i) = 0; \
|
||||
(__i) < (__state)->dev->mode_config.num_total_plane && \
|
||||
((plane) = (__state)->planes[__i].ptr, \
|
||||
(new_plane_state) = (__state)->planes[__i].new_state, 1); \
|
||||
(__i) < (__state)->dev->mode_config.num_total_plane; \
|
||||
(__i)++) \
|
||||
for_each_if (plane)
|
||||
for_each_if ((__state)->planes[__i].ptr && \
|
||||
((plane) = (__state)->planes[__i].ptr, \
|
||||
(new_plane_state) = (__state)->planes[__i].new_state, 1))
|
||||
|
||||
/**
|
||||
* for_each_oldnew_private_obj_in_state - iterate over all private objects in an atomic update
|
||||
@@ -768,8 +767,7 @@ void drm_state_dump(struct drm_device *dev, struct drm_printer *p);
|
||||
((obj) = (__state)->private_objs[__i].ptr, \
|
||||
(old_obj_state) = (__state)->private_objs[__i].old_state, \
|
||||
(new_obj_state) = (__state)->private_objs[__i].new_state, 1); \
|
||||
(__i)++) \
|
||||
for_each_if (obj)
|
||||
(__i)++)
|
||||
|
||||
/**
|
||||
* for_each_old_private_obj_in_state - iterate over all private objects in an atomic update
|
||||
@@ -787,8 +785,7 @@ void drm_state_dump(struct drm_device *dev, struct drm_printer *p);
|
||||
(__i) < (__state)->num_private_objs && \
|
||||
((obj) = (__state)->private_objs[__i].ptr, \
|
||||
(old_obj_state) = (__state)->private_objs[__i].old_state, 1); \
|
||||
(__i)++) \
|
||||
for_each_if (obj)
|
||||
(__i)++)
|
||||
|
||||
/**
|
||||
* for_each_new_private_obj_in_state - iterate over all private objects in an atomic update
|
||||
@@ -806,8 +803,7 @@ void drm_state_dump(struct drm_device *dev, struct drm_printer *p);
|
||||
(__i) < (__state)->num_private_objs && \
|
||||
((obj) = (__state)->private_objs[__i].ptr, \
|
||||
(new_obj_state) = (__state)->private_objs[__i].new_state, 1); \
|
||||
(__i)++) \
|
||||
for_each_if (obj)
|
||||
(__i)++)
|
||||
|
||||
/**
|
||||
* drm_atomic_crtc_needs_modeset - compute combined modeset need
|
||||
|
||||
@@ -29,6 +29,8 @@ 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)
|
||||
@@ -65,6 +67,12 @@ static inline int drm_of_find_panel_or_bridge(const struct device_node *np,
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int drm_of_panel_bridge_remove(const struct device_node *np,
|
||||
int port, int endpoint)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline int drm_of_encoder_active_endpoint_id(struct device_node *node,
|
||||
|
||||
Reference in New Issue
Block a user