Rev 4104 | Rev 5139 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4104 | Rev 4560 | ||
---|---|---|---|
Line 128... | Line 128... | ||
128 | } |
128 | } |
129 | } |
129 | } |
Line 130... | Line 130... | ||
130 | 130 | ||
131 | static void g4x_write_infoframe(struct drm_encoder *encoder, |
131 | static void g4x_write_infoframe(struct drm_encoder *encoder, |
132 | enum hdmi_infoframe_type type, |
132 | enum hdmi_infoframe_type type, |
133 | const uint8_t *frame, ssize_t len) |
133 | const void *frame, ssize_t len) |
134 | { |
134 | { |
135 | uint32_t *data = (uint32_t *)frame; |
135 | const uint32_t *data = frame; |
136 | struct drm_device *dev = encoder->dev; |
136 | struct drm_device *dev = encoder->dev; |
137 | struct drm_i915_private *dev_priv = dev->dev_private; |
137 | struct drm_i915_private *dev_priv = dev->dev_private; |
138 | u32 val = I915_READ(VIDEO_DIP_CTL); |
138 | u32 val = I915_READ(VIDEO_DIP_CTL); |
Line 165... | Line 165... | ||
165 | POSTING_READ(VIDEO_DIP_CTL); |
165 | POSTING_READ(VIDEO_DIP_CTL); |
166 | } |
166 | } |
Line 167... | Line 167... | ||
167 | 167 | ||
168 | static void ibx_write_infoframe(struct drm_encoder *encoder, |
168 | static void ibx_write_infoframe(struct drm_encoder *encoder, |
169 | enum hdmi_infoframe_type type, |
169 | enum hdmi_infoframe_type type, |
170 | const uint8_t *frame, ssize_t len) |
170 | const void *frame, ssize_t len) |
171 | { |
171 | { |
172 | uint32_t *data = (uint32_t *)frame; |
172 | const uint32_t *data = frame; |
173 | struct drm_device *dev = encoder->dev; |
173 | struct drm_device *dev = encoder->dev; |
174 | struct drm_i915_private *dev_priv = dev->dev_private; |
174 | struct drm_i915_private *dev_priv = dev->dev_private; |
175 | struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); |
175 | struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); |
176 | int i, reg = TVIDEO_DIP_CTL(intel_crtc->pipe); |
176 | int i, reg = TVIDEO_DIP_CTL(intel_crtc->pipe); |
Line 203... | Line 203... | ||
203 | POSTING_READ(reg); |
203 | POSTING_READ(reg); |
204 | } |
204 | } |
Line 205... | Line 205... | ||
205 | 205 | ||
206 | static void cpt_write_infoframe(struct drm_encoder *encoder, |
206 | static void cpt_write_infoframe(struct drm_encoder *encoder, |
207 | enum hdmi_infoframe_type type, |
207 | enum hdmi_infoframe_type type, |
208 | const uint8_t *frame, ssize_t len) |
208 | const void *frame, ssize_t len) |
209 | { |
209 | { |
210 | uint32_t *data = (uint32_t *)frame; |
210 | const uint32_t *data = frame; |
211 | struct drm_device *dev = encoder->dev; |
211 | struct drm_device *dev = encoder->dev; |
212 | struct drm_i915_private *dev_priv = dev->dev_private; |
212 | struct drm_i915_private *dev_priv = dev->dev_private; |
213 | struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); |
213 | struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); |
214 | int i, reg = TVIDEO_DIP_CTL(intel_crtc->pipe); |
214 | int i, reg = TVIDEO_DIP_CTL(intel_crtc->pipe); |
Line 244... | Line 244... | ||
244 | POSTING_READ(reg); |
244 | POSTING_READ(reg); |
245 | } |
245 | } |
Line 246... | Line 246... | ||
246 | 246 | ||
247 | static void vlv_write_infoframe(struct drm_encoder *encoder, |
247 | static void vlv_write_infoframe(struct drm_encoder *encoder, |
248 | enum hdmi_infoframe_type type, |
248 | enum hdmi_infoframe_type type, |
249 | const uint8_t *frame, ssize_t len) |
249 | const void *frame, ssize_t len) |
250 | { |
250 | { |
251 | uint32_t *data = (uint32_t *)frame; |
251 | const uint32_t *data = frame; |
252 | struct drm_device *dev = encoder->dev; |
252 | struct drm_device *dev = encoder->dev; |
253 | struct drm_i915_private *dev_priv = dev->dev_private; |
253 | struct drm_i915_private *dev_priv = dev->dev_private; |
254 | struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); |
254 | struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); |
255 | int i, reg = VLV_TVIDEO_DIP_CTL(intel_crtc->pipe); |
255 | int i, reg = VLV_TVIDEO_DIP_CTL(intel_crtc->pipe); |
Line 282... | Line 282... | ||
282 | POSTING_READ(reg); |
282 | POSTING_READ(reg); |
283 | } |
283 | } |
Line 284... | Line 284... | ||
284 | 284 | ||
285 | static void hsw_write_infoframe(struct drm_encoder *encoder, |
285 | static void hsw_write_infoframe(struct drm_encoder *encoder, |
286 | enum hdmi_infoframe_type type, |
286 | enum hdmi_infoframe_type type, |
287 | const uint8_t *frame, ssize_t len) |
287 | const void *frame, ssize_t len) |
288 | { |
288 | { |
289 | uint32_t *data = (uint32_t *)frame; |
289 | const uint32_t *data = frame; |
290 | struct drm_device *dev = encoder->dev; |
290 | struct drm_device *dev = encoder->dev; |
291 | struct drm_i915_private *dev_priv = dev->dev_private; |
291 | struct drm_i915_private *dev_priv = dev->dev_private; |
292 | struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); |
292 | struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); |
293 | u32 ctl_reg = HSW_TVIDEO_DIP_CTL(intel_crtc->config.cpu_transcoder); |
293 | u32 ctl_reg = HSW_TVIDEO_DIP_CTL(intel_crtc->config.cpu_transcoder); |
Line 711... | Line 711... | ||
711 | struct intel_crtc_config *pipe_config) |
711 | struct intel_crtc_config *pipe_config) |
712 | { |
712 | { |
713 | struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base); |
713 | struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base); |
714 | struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; |
714 | struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; |
715 | u32 tmp, flags = 0; |
715 | u32 tmp, flags = 0; |
- | 716 | int dotclock; |
|
Line 716... | Line 717... | ||
716 | 717 | ||
Line 717... | Line 718... | ||
717 | tmp = I915_READ(intel_hdmi->hdmi_reg); |
718 | tmp = I915_READ(intel_hdmi->hdmi_reg); |
718 | 719 | ||
Line 725... | Line 726... | ||
725 | flags |= DRM_MODE_FLAG_PVSYNC; |
726 | flags |= DRM_MODE_FLAG_PVSYNC; |
726 | else |
727 | else |
727 | flags |= DRM_MODE_FLAG_NVSYNC; |
728 | flags |= DRM_MODE_FLAG_NVSYNC; |
Line 728... | Line 729... | ||
728 | 729 | ||
- | 730 | pipe_config->adjusted_mode.flags |= flags; |
|
- | 731 | ||
- | 732 | if ((tmp & SDVO_COLOR_FORMAT_MASK) == HDMI_COLOR_FORMAT_12bpc) |
|
- | 733 | dotclock = pipe_config->port_clock * 2 / 3; |
|
- | 734 | else |
|
- | 735 | dotclock = pipe_config->port_clock; |
|
- | 736 | ||
- | 737 | if (HAS_PCH_SPLIT(dev_priv->dev)) |
|
- | 738 | ironlake_check_encoder_dotclock(pipe_config, dotclock); |
|
- | 739 | ||
729 | pipe_config->adjusted_mode.flags |= flags; |
740 | pipe_config->adjusted_mode.crtc_clock = dotclock; |
Line 730... | Line 741... | ||
730 | } |
741 | } |
731 | 742 | ||
732 | static void intel_enable_hdmi(struct intel_encoder *encoder) |
743 | static void intel_enable_hdmi(struct intel_encoder *encoder) |
Line 834... | Line 845... | ||
834 | { |
845 | { |
835 | struct drm_device *dev = intel_hdmi_to_dev(hdmi); |
846 | struct drm_device *dev = intel_hdmi_to_dev(hdmi); |
Line 836... | Line 847... | ||
836 | 847 | ||
837 | if (IS_G4X(dev)) |
848 | if (IS_G4X(dev)) |
838 | return 165000; |
849 | return 165000; |
839 | else if (IS_HASWELL(dev)) |
850 | else if (IS_HASWELL(dev) || INTEL_INFO(dev)->gen >= 8) |
840 | return 300000; |
851 | return 300000; |
841 | else |
852 | else |
842 | return 225000; |
853 | return 225000; |
Line -... | Line 854... | ||
- | 854 | } |
|
843 | } |
855 | |
844 | 856 | static enum drm_mode_status |
|
845 | static int intel_hdmi_mode_valid(struct drm_connector *connector, |
857 | intel_hdmi_mode_valid(struct drm_connector *connector, |
846 | struct drm_display_mode *mode) |
858 | struct drm_display_mode *mode) |
847 | { |
859 | { |
848 | if (mode->clock > hdmi_portclock_limit(intel_attached_hdmi(connector))) |
860 | if (mode->clock > hdmi_portclock_limit(intel_attached_hdmi(connector))) |
Line 860... | Line 872... | ||
860 | struct intel_crtc_config *pipe_config) |
872 | struct intel_crtc_config *pipe_config) |
861 | { |
873 | { |
862 | struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base); |
874 | struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base); |
863 | struct drm_device *dev = encoder->base.dev; |
875 | struct drm_device *dev = encoder->base.dev; |
864 | struct drm_display_mode *adjusted_mode = &pipe_config->adjusted_mode; |
876 | struct drm_display_mode *adjusted_mode = &pipe_config->adjusted_mode; |
865 | int clock_12bpc = pipe_config->requested_mode.clock * 3 / 2; |
877 | int clock_12bpc = pipe_config->adjusted_mode.crtc_clock * 3 / 2; |
866 | int portclock_limit = hdmi_portclock_limit(intel_hdmi); |
878 | int portclock_limit = hdmi_portclock_limit(intel_hdmi); |
867 | int desired_bpp; |
879 | int desired_bpp; |
Line 868... | Line 880... | ||
868 | 880 | ||
869 | if (intel_hdmi->color_range_auto) { |
881 | if (intel_hdmi->color_range_auto) { |
Line 902... | Line 914... | ||
902 | if (!pipe_config->bw_constrained) { |
914 | if (!pipe_config->bw_constrained) { |
903 | DRM_DEBUG_KMS("forcing pipe bpc to %i for HDMI\n", desired_bpp); |
915 | DRM_DEBUG_KMS("forcing pipe bpc to %i for HDMI\n", desired_bpp); |
904 | pipe_config->pipe_bpp = desired_bpp; |
916 | pipe_config->pipe_bpp = desired_bpp; |
905 | } |
917 | } |
Line 906... | Line 918... | ||
906 | 918 | ||
907 | if (adjusted_mode->clock > portclock_limit) { |
919 | if (adjusted_mode->crtc_clock > portclock_limit) { |
908 | DRM_DEBUG_KMS("too high HDMI clock, rejecting mode\n"); |
920 | DRM_DEBUG_KMS("too high HDMI clock, rejecting mode\n"); |
909 | return false; |
921 | return false; |
Line 910... | Line 922... | ||
910 | } |
922 | } |
Line 1061... | Line 1073... | ||
1061 | intel_crtc_restore_mode(intel_dig_port->base.base.crtc); |
1073 | intel_crtc_restore_mode(intel_dig_port->base.base.crtc); |
Line 1062... | Line 1074... | ||
1062 | 1074 | ||
1063 | return 0; |
1075 | return 0; |
Line 1064... | Line 1076... | ||
1064 | } |
1076 | } |
1065 | 1077 | ||
1066 | static void intel_hdmi_pre_enable(struct intel_encoder *encoder) |
1078 | static void vlv_hdmi_pre_enable(struct intel_encoder *encoder) |
1067 | { |
1079 | { |
1068 | struct intel_digital_port *dport = enc_to_dig_port(&encoder->base); |
1080 | struct intel_digital_port *dport = enc_to_dig_port(&encoder->base); |
1069 | struct drm_device *dev = encoder->base.dev; |
1081 | struct drm_device *dev = encoder->base.dev; |
1070 | struct drm_i915_private *dev_priv = dev->dev_private; |
1082 | struct drm_i915_private *dev_priv = dev->dev_private; |
1071 | struct intel_crtc *intel_crtc = |
1083 | struct intel_crtc *intel_crtc = |
1072 | to_intel_crtc(encoder->base.crtc); |
1084 | to_intel_crtc(encoder->base.crtc); |
1073 | int port = vlv_dport_to_channel(dport); |
1085 | enum dpio_channel port = vlv_dport_to_channel(dport); |
Line 1074... | Line 1086... | ||
1074 | int pipe = intel_crtc->pipe; |
1086 | int pipe = intel_crtc->pipe; |
1075 | u32 val; |
1087 | u32 val; |
Line 1076... | Line 1088... | ||
1076 | 1088 | ||
1077 | if (!IS_VALLEYVIEW(dev)) |
1089 | if (!IS_VALLEYVIEW(dev)) |
1078 | return; |
1090 | return; |
1079 | 1091 | ||
1080 | /* Enable clock channels for this port */ |
1092 | /* Enable clock channels for this port */ |
1081 | mutex_lock(&dev_priv->dpio_lock); |
1093 | mutex_lock(&dev_priv->dpio_lock); |
1082 | val = vlv_dpio_read(dev_priv, DPIO_DATA_LANE_A(port)); |
1094 | val = vlv_dpio_read(dev_priv, pipe, VLV_PCS01_DW8(port)); |
1083 | val = 0; |
1095 | val = 0; |
1084 | if (pipe) |
1096 | if (pipe) |
1085 | val |= (1<<21); |
1097 | val |= (1<<21); |
Line 1086... | Line 1098... | ||
1086 | else |
1098 | else |
1087 | val &= ~(1<<21); |
1099 | val &= ~(1<<21); |
1088 | val |= 0x001000c4; |
1100 | val |= 0x001000c4; |
1089 | vlv_dpio_write(dev_priv, DPIO_DATA_CHANNEL(port), val); |
- | |
1090 | 1101 | vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW8(port), val); |
|
1091 | /* HDMI 1.0V-2dB */ |
- | |
1092 | vlv_dpio_write(dev_priv, DPIO_TX_OCALINIT(port), 0); |
1102 | |
1093 | vlv_dpio_write(dev_priv, DPIO_TX_SWING_CTL4(port), |
- | |
1094 | 0x2b245f5f); |
1103 | /* HDMI 1.0V-2dB */ |
1095 | vlv_dpio_write(dev_priv, DPIO_TX_SWING_CTL2(port), |
- | |
1096 | 0x5578b83a); |
1104 | vlv_dpio_write(dev_priv, pipe, VLV_TX_DW5(port), 0); |
1097 | vlv_dpio_write(dev_priv, DPIO_TX_SWING_CTL3(port), |
1105 | vlv_dpio_write(dev_priv, pipe, VLV_TX_DW4(port), 0x2b245f5f); |
1098 | 0x0c782040); |
- | |
1099 | vlv_dpio_write(dev_priv, DPIO_TX3_SWING_CTL4(port), |
1106 | vlv_dpio_write(dev_priv, pipe, VLV_TX_DW2(port), 0x5578b83a); |
1100 | 0x2b247878); |
- | |
Line 1101... | Line 1107... | ||
1101 | vlv_dpio_write(dev_priv, DPIO_PCS_STAGGER0(port), 0x00030000); |
1107 | vlv_dpio_write(dev_priv, pipe, VLV_TX_DW3(port), 0x0c782040); |
1102 | vlv_dpio_write(dev_priv, DPIO_PCS_CTL_OVER1(port), |
1108 | vlv_dpio_write(dev_priv, pipe, VLV_TX3_DW4(port), 0x2b247878); |
1103 | 0x00002000); |
- | |
1104 | vlv_dpio_write(dev_priv, DPIO_TX_OCALINIT(port), |
1109 | vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW11(port), 0x00030000); |
1105 | DPIO_TX_OCALINIT_EN); |
- | |
1106 | 1110 | vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW9(port), 0x00002000); |
|
Line 1107... | Line 1111... | ||
1107 | /* Program lane clock */ |
1111 | vlv_dpio_write(dev_priv, pipe, VLV_TX_DW5(port), DPIO_TX_OCALINIT_EN); |
Line 1108... | Line 1112... | ||
1108 | vlv_dpio_write(dev_priv, DPIO_PCS_CLOCKBUF0(port), |
1112 | |
1109 | 0x00760018); |
1113 | /* Program lane clock */ |
Line 1110... | Line 1114... | ||
1110 | vlv_dpio_write(dev_priv, DPIO_PCS_CLOCKBUF8(port), |
1114 | vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW14(port), 0x00760018); |
1111 | 0x00400888); |
1115 | vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW23(port), 0x00400888); |
1112 | mutex_unlock(&dev_priv->dpio_lock); |
1116 | mutex_unlock(&dev_priv->dpio_lock); |
1113 | 1117 | ||
1114 | intel_enable_hdmi(encoder); |
1118 | intel_enable_hdmi(encoder); |
- | 1119 | ||
- | 1120 | vlv_wait_port_ready(dev_priv, dport); |
|
1115 | 1121 | } |
|
- | 1122 | ||
Line 1116... | Line 1123... | ||
1116 | vlv_wait_port_ready(dev_priv, port); |
1123 | static void vlv_hdmi_pre_pll_enable(struct intel_encoder *encoder) |
1117 | } |
1124 | { |
Line 1118... | Line 1125... | ||
1118 | 1125 | struct intel_digital_port *dport = enc_to_dig_port(&encoder->base); |
|
1119 | static void intel_hdmi_pre_pll_enable(struct intel_encoder *encoder) |
1126 | struct drm_device *dev = encoder->base.dev; |
1120 | { |
1127 | struct drm_i915_private *dev_priv = dev->dev_private; |
1121 | struct intel_digital_port *dport = enc_to_dig_port(&encoder->base); |
1128 | struct intel_crtc *intel_crtc = |
1122 | struct drm_device *dev = encoder->base.dev; |
1129 | to_intel_crtc(encoder->base.crtc); |
1123 | struct drm_i915_private *dev_priv = dev->dev_private; |
1130 | enum dpio_channel port = vlv_dport_to_channel(dport); |
1124 | int port = vlv_dport_to_channel(dport); |
1131 | int pipe = intel_crtc->pipe; |
1125 | 1132 | ||
1126 | if (!IS_VALLEYVIEW(dev)) |
1133 | if (!IS_VALLEYVIEW(dev)) |
1127 | return; |
1134 | return; |
Line 1128... | Line 1135... | ||
1128 | 1135 | ||
1129 | /* Program Tx lane resets to default */ |
1136 | /* Program Tx lane resets to default */ |
1130 | mutex_lock(&dev_priv->dpio_lock); |
1137 | mutex_lock(&dev_priv->dpio_lock); |
1131 | vlv_dpio_write(dev_priv, DPIO_PCS_TX(port), |
1138 | vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW0(port), |
1132 | DPIO_PCS_TX_LANE2_RESET | |
1139 | DPIO_PCS_TX_LANE2_RESET | |
1133 | DPIO_PCS_TX_LANE1_RESET); |
1140 | DPIO_PCS_TX_LANE1_RESET); |
1134 | vlv_dpio_write(dev_priv, DPIO_PCS_CLK(port), |
- | |
1135 | DPIO_PCS_CLK_CRI_RXEB_EIOS_EN | |
1141 | vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW1(port), |
1136 | DPIO_PCS_CLK_CRI_RXDIGFILTSG_EN | |
- | |
1137 | (1< |
1142 | DPIO_PCS_CLK_CRI_RXEB_EIOS_EN | |
1138 | DPIO_PCS_CLK_SOFT_RESET); |
1143 | DPIO_PCS_CLK_CRI_RXDIGFILTSG_EN | |
Line 1139... | Line 1144... | ||
1139 | 1144 | (1< |
|
1140 | /* Fix up inter-pair skew failure */ |
1145 | DPIO_PCS_CLK_SOFT_RESET); |
1141 | vlv_dpio_write(dev_priv, DPIO_PCS_STAGGER1(port), 0x00750f00); |
1146 | |
1142 | vlv_dpio_write(dev_priv, DPIO_TX_CTL(port), 0x00001500); |
1147 | /* Fix up inter-pair skew failure */ |
- | 1148 | vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW12(port), 0x00750f00); |
|
- | 1149 | vlv_dpio_write(dev_priv, pipe, VLV_TX_DW11(port), 0x00001500); |
|
1143 | vlv_dpio_write(dev_priv, DPIO_TX_LANE(port), 0x40400000); |
1150 | vlv_dpio_write(dev_priv, pipe, VLV_TX_DW14(port), 0x40400000); |
- | 1151 | ||
Line 1144... | Line 1152... | ||
1144 | 1152 | vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW9(port), 0x00002000); |
|
1145 | vlv_dpio_write(dev_priv, DPIO_PCS_CTL_OVER1(port), |
1153 | vlv_dpio_write(dev_priv, pipe, VLV_TX_DW5(port), DPIO_TX_OCALINIT_EN); |
1146 | 0x00002000); |
1154 | mutex_unlock(&dev_priv->dpio_lock); |
1147 | vlv_dpio_write(dev_priv, DPIO_TX_OCALINIT(port), |
1155 | } |
1148 | DPIO_TX_OCALINIT_EN); |
1156 | |
1149 | mutex_unlock(&dev_priv->dpio_lock); |
1157 | static void vlv_hdmi_post_disable(struct intel_encoder *encoder) |
Line 1150... | Line 1158... | ||
1150 | } |
1158 | { |
1151 | 1159 | struct intel_digital_port *dport = enc_to_dig_port(&encoder->base); |
|
1152 | static void intel_hdmi_post_disable(struct intel_encoder *encoder) |
- | |
1153 | { |
1160 | struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; |
1154 | struct intel_digital_port *dport = enc_to_dig_port(&encoder->base); |
1161 | struct intel_crtc *intel_crtc = |
1155 | struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; |
1162 | to_intel_crtc(encoder->base.crtc); |
Line 1156... | Line 1163... | ||
1156 | int port = vlv_dport_to_channel(dport); |
1163 | enum dpio_channel port = vlv_dport_to_channel(dport); |
Line 1209... | Line 1216... | ||
1209 | DRM_MODE_CONNECTOR_HDMIA); |
1216 | DRM_MODE_CONNECTOR_HDMIA); |
1210 | drm_connector_helper_add(connector, &intel_hdmi_connector_helper_funcs); |
1217 | drm_connector_helper_add(connector, &intel_hdmi_connector_helper_funcs); |
Line 1211... | Line 1218... | ||
1211 | 1218 | ||
1212 | connector->interlace_allowed = 1; |
1219 | connector->interlace_allowed = 1; |
- | 1220 | connector->doublescan_allowed = 0; |
|
Line 1213... | Line 1221... | ||
1213 | connector->doublescan_allowed = 0; |
1221 | connector->stereo_allowed = 1; |
1214 | 1222 | ||
1215 | switch (port) { |
1223 | switch (port) { |
1216 | case PORT_B: |
1224 | case PORT_B: |
Line 1273... | Line 1281... | ||
1273 | { |
1281 | { |
1274 | struct intel_digital_port *intel_dig_port; |
1282 | struct intel_digital_port *intel_dig_port; |
1275 | struct intel_encoder *intel_encoder; |
1283 | struct intel_encoder *intel_encoder; |
1276 | struct intel_connector *intel_connector; |
1284 | struct intel_connector *intel_connector; |
Line 1277... | Line 1285... | ||
1277 | 1285 | ||
1278 | intel_dig_port = kzalloc(sizeof(struct intel_digital_port), GFP_KERNEL); |
1286 | intel_dig_port = kzalloc(sizeof(*intel_dig_port), GFP_KERNEL); |
1279 | if (!intel_dig_port) |
1287 | if (!intel_dig_port) |
Line 1280... | Line 1288... | ||
1280 | return; |
1288 | return; |
1281 | 1289 | ||
1282 | intel_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL); |
1290 | intel_connector = kzalloc(sizeof(*intel_connector), GFP_KERNEL); |
1283 | if (!intel_connector) { |
1291 | if (!intel_connector) { |
1284 | kfree(intel_dig_port); |
1292 | kfree(intel_dig_port); |
Line 1294... | Line 1302... | ||
1294 | intel_encoder->mode_set = intel_hdmi_mode_set; |
1302 | intel_encoder->mode_set = intel_hdmi_mode_set; |
1295 | intel_encoder->disable = intel_disable_hdmi; |
1303 | intel_encoder->disable = intel_disable_hdmi; |
1296 | intel_encoder->get_hw_state = intel_hdmi_get_hw_state; |
1304 | intel_encoder->get_hw_state = intel_hdmi_get_hw_state; |
1297 | intel_encoder->get_config = intel_hdmi_get_config; |
1305 | intel_encoder->get_config = intel_hdmi_get_config; |
1298 | if (IS_VALLEYVIEW(dev)) { |
1306 | if (IS_VALLEYVIEW(dev)) { |
1299 | intel_encoder->pre_pll_enable = intel_hdmi_pre_pll_enable; |
1307 | intel_encoder->pre_pll_enable = vlv_hdmi_pre_pll_enable; |
1300 | intel_encoder->pre_enable = intel_hdmi_pre_enable; |
1308 | intel_encoder->pre_enable = vlv_hdmi_pre_enable; |
1301 | intel_encoder->enable = vlv_enable_hdmi; |
1309 | intel_encoder->enable = vlv_enable_hdmi; |
1302 | intel_encoder->post_disable = intel_hdmi_post_disable; |
1310 | intel_encoder->post_disable = vlv_hdmi_post_disable; |
1303 | } else { |
1311 | } else { |
1304 | intel_encoder->enable = intel_enable_hdmi; |
1312 | intel_encoder->enable = intel_enable_hdmi; |
1305 | } |
1313 | } |
Line 1306... | Line 1314... | ||
1306 | 1314 |