diff options
author | jilai wang <jilaiw@codeaurora.org> | 2015-04-02 17:49:01 -0400 |
---|---|---|
committer | Rob Clark <robdclark@gmail.com> | 2015-08-15 18:27:10 -0400 |
commit | c6a57a50ad562a2e6fc6ac3218b710caea73a58b (patch) | |
tree | c630cd3e4c5328655ebbd8ed1ce59b36ce753c30 /drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | |
parent | 2d3584eb871da2a6fa72e3d50781f33b0312589a (diff) |
drm/msm/hdmi: add hdmi hdcp support (V3)
Add HDMI HDCP support including HDCP PartI/II/III authentication.
V1: Initial Change
V2: Address Bjorn&Rob's comments
Refactor the authentication process to use single work instead
of multiple work for different authentication stages.
V3: Update to align with qcom SCM api.
Signed-off-by: Jilai Wang <jilaiw@codeaurora.org>
Signed-off-by: Rob Clark <robdclark@gmail.com>
Diffstat (limited to 'drivers/gpu/drm/msm/hdmi/hdmi_bridge.c')
-rw-r--r-- | drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c index a7a1d8267cf0..1dd093e3451c 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | |||
@@ -102,6 +102,9 @@ static void hdmi_bridge_pre_enable(struct drm_bridge *bridge) | |||
102 | 102 | ||
103 | phy->funcs->powerup(phy, hdmi->pixclock); | 103 | phy->funcs->powerup(phy, hdmi->pixclock); |
104 | hdmi_set_mode(hdmi, true); | 104 | hdmi_set_mode(hdmi, true); |
105 | |||
106 | if (hdmi->hdcp_ctrl) | ||
107 | hdmi_hdcp_on(hdmi->hdcp_ctrl); | ||
105 | } | 108 | } |
106 | 109 | ||
107 | static void hdmi_bridge_enable(struct drm_bridge *bridge) | 110 | static void hdmi_bridge_enable(struct drm_bridge *bridge) |
@@ -118,6 +121,9 @@ static void hdmi_bridge_post_disable(struct drm_bridge *bridge) | |||
118 | struct hdmi *hdmi = hdmi_bridge->hdmi; | 121 | struct hdmi *hdmi = hdmi_bridge->hdmi; |
119 | struct hdmi_phy *phy = hdmi->phy; | 122 | struct hdmi_phy *phy = hdmi->phy; |
120 | 123 | ||
124 | if (hdmi->hdcp_ctrl) | ||
125 | hdmi_hdcp_off(hdmi->hdcp_ctrl); | ||
126 | |||
121 | DBG("power down"); | 127 | DBG("power down"); |
122 | hdmi_set_mode(hdmi, false); | 128 | hdmi_set_mode(hdmi, false); |
123 | phy->funcs->powerdown(phy); | 129 | phy->funcs->powerdown(phy); |
@@ -142,8 +148,6 @@ static void hdmi_bridge_mode_set(struct drm_bridge *bridge, | |||
142 | 148 | ||
143 | hdmi->pixclock = mode->clock * 1000; | 149 | hdmi->pixclock = mode->clock * 1000; |
144 | 150 | ||
145 | hdmi->hdmi_mode = drm_match_cea_mode(mode) > 1; | ||
146 | |||
147 | hstart = mode->htotal - mode->hsync_start; | 151 | hstart = mode->htotal - mode->hsync_start; |
148 | hend = mode->htotal - mode->hsync_start + mode->hdisplay; | 152 | hend = mode->htotal - mode->hsync_start + mode->hdisplay; |
149 | 153 | ||