mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/
synced 2026-04-17 22:23:45 -04:00
The DisplayPort controller's internal HPD interrupt handling is used for cases where the HPD signal is connected to a GPIO which is pinmuxed into the DisplayPort controller. In other configurations the HPD notification might be delivered by the DRM framework from an associated bridge. This difference is not appropriately represented by the "is_edp" boolean, but is properly represented by the frameworks invocation of the hpd_enable() and hpd_disable() callbacks. Switch the current condition to rely on these callbacks instead. This ensures appropriate handling of the three cases; no bridge connected, a bridge without DRM_BRIDGE_OP_HPD and a bridge with DRM_BRIDGE_OP_HPD. Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org> Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Reviewed-by: Kuogee Hsieh <quic_khsieh@quicinc.com> Patchwork: https://patchwork.freedesktop.org/patch/514414/ Link: https://lore.kernel.org/r/20221207220012.16529-9-quic_bjorande@quicinc.com Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
39 lines
1.2 KiB
C
39 lines
1.2 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
|
|
*/
|
|
|
|
#ifndef _DP_DRM_H_
|
|
#define _DP_DRM_H_
|
|
|
|
#include <linux/types.h>
|
|
#include <drm/drm_bridge.h>
|
|
|
|
#include "msm_drv.h"
|
|
#include "dp_display.h"
|
|
|
|
struct msm_dp_bridge {
|
|
struct drm_bridge bridge;
|
|
struct msm_dp *dp_display;
|
|
};
|
|
|
|
#define to_dp_bridge(x) container_of((x), struct msm_dp_bridge, bridge)
|
|
|
|
struct drm_connector *dp_drm_connector_init(struct msm_dp *dp_display, struct drm_encoder *encoder);
|
|
struct drm_bridge *dp_bridge_init(struct msm_dp *dp_display, struct drm_device *dev,
|
|
struct drm_encoder *encoder);
|
|
|
|
void dp_bridge_enable(struct drm_bridge *drm_bridge);
|
|
void dp_bridge_disable(struct drm_bridge *drm_bridge);
|
|
void dp_bridge_post_disable(struct drm_bridge *drm_bridge);
|
|
enum drm_mode_status dp_bridge_mode_valid(struct drm_bridge *bridge,
|
|
const struct drm_display_info *info,
|
|
const struct drm_display_mode *mode);
|
|
void dp_bridge_mode_set(struct drm_bridge *drm_bridge,
|
|
const struct drm_display_mode *mode,
|
|
const struct drm_display_mode *adjusted_mode);
|
|
void dp_bridge_hpd_enable(struct drm_bridge *bridge);
|
|
void dp_bridge_hpd_disable(struct drm_bridge *bridge);
|
|
|
|
#endif /* _DP_DRM_H_ */
|