diff options
author | Dave Airlie <airlied@redhat.com> | 2014-06-04 02:02:28 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2014-06-04 19:54:29 -0400 |
commit | 4f71d0cb76339a10fd445b0b281acc45c71b6271 (patch) | |
tree | 9badd446ee865db48ebebe77ed8f4e3b3ca089aa /include/drm/drm_dp_helper.h | |
parent | 885ae1c55ae46ee1064bc7cb99dc45ddd8bd0328 (diff) |
drm/dp: add a hw mutex around the transfer functions. (v2)
This should avoid races between connector probing and HPD
irqs in the future, currently mode_config.mutex blocks this
possibility.
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'include/drm/drm_dp_helper.h')
-rw-r--r-- | include/drm/drm_dp_helper.h | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h index 488b41635dec..a21568bf1514 100644 --- a/include/drm/drm_dp_helper.h +++ b/include/drm/drm_dp_helper.h | |||
@@ -514,6 +514,7 @@ struct drm_dp_aux_msg { | |||
514 | * @name: user-visible name of this AUX channel and the I2C-over-AUX adapter | 514 | * @name: user-visible name of this AUX channel and the I2C-over-AUX adapter |
515 | * @ddc: I2C adapter that can be used for I2C-over-AUX communication | 515 | * @ddc: I2C adapter that can be used for I2C-over-AUX communication |
516 | * @dev: pointer to struct device that is the parent for this AUX channel | 516 | * @dev: pointer to struct device that is the parent for this AUX channel |
517 | * @hw_mutex: internal mutex used for locking transfers | ||
517 | * @transfer: transfers a message representing a single AUX transaction | 518 | * @transfer: transfers a message representing a single AUX transaction |
518 | * | 519 | * |
519 | * The .dev field should be set to a pointer to the device that implements | 520 | * The .dev field should be set to a pointer to the device that implements |
@@ -546,7 +547,7 @@ struct drm_dp_aux { | |||
546 | const char *name; | 547 | const char *name; |
547 | struct i2c_adapter ddc; | 548 | struct i2c_adapter ddc; |
548 | struct device *dev; | 549 | struct device *dev; |
549 | 550 | struct mutex hw_mutex; | |
550 | ssize_t (*transfer)(struct drm_dp_aux *aux, | 551 | ssize_t (*transfer)(struct drm_dp_aux *aux, |
551 | struct drm_dp_aux_msg *msg); | 552 | struct drm_dp_aux_msg *msg); |
552 | }; | 553 | }; |
@@ -605,7 +606,7 @@ int drm_dp_link_probe(struct drm_dp_aux *aux, struct drm_dp_link *link); | |||
605 | int drm_dp_link_power_up(struct drm_dp_aux *aux, struct drm_dp_link *link); | 606 | int drm_dp_link_power_up(struct drm_dp_aux *aux, struct drm_dp_link *link); |
606 | int drm_dp_link_configure(struct drm_dp_aux *aux, struct drm_dp_link *link); | 607 | int drm_dp_link_configure(struct drm_dp_aux *aux, struct drm_dp_link *link); |
607 | 608 | ||
608 | int drm_dp_aux_register_i2c_bus(struct drm_dp_aux *aux); | 609 | int drm_dp_aux_register(struct drm_dp_aux *aux); |
609 | void drm_dp_aux_unregister_i2c_bus(struct drm_dp_aux *aux); | 610 | void drm_dp_aux_unregister(struct drm_dp_aux *aux); |
610 | 611 | ||
611 | #endif /* _DRM_DP_HELPER_H_ */ | 612 | #endif /* _DRM_DP_HELPER_H_ */ |