Lines Matching refs:intel_sdvo

68 struct intel_sdvo {  struct
211 static struct intel_sdvo *to_sdvo(struct intel_encoder *encoder) in to_sdvo()
213 return container_of(encoder, struct intel_sdvo, base); in to_sdvo()
216 static struct intel_sdvo *intel_attached_sdvo(struct drm_connector *connector) in intel_attached_sdvo()
227 intel_sdvo_output_setup(struct intel_sdvo *intel_sdvo, uint16_t flags);
229 intel_sdvo_tv_create_property(struct intel_sdvo *intel_sdvo,
233 intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo,
241 static void intel_sdvo_write_sdvox(struct intel_sdvo *intel_sdvo, u32 val) in intel_sdvo_write_sdvox() argument
243 struct drm_device *dev = intel_sdvo->base.base.dev; in intel_sdvo_write_sdvox()
248 if (intel_sdvo->sdvo_reg == PCH_SDVOB) { in intel_sdvo_write_sdvox()
249 I915_WRITE(intel_sdvo->sdvo_reg, val); in intel_sdvo_write_sdvox()
250 POSTING_READ(intel_sdvo->sdvo_reg); in intel_sdvo_write_sdvox()
256 I915_WRITE(intel_sdvo->sdvo_reg, val); in intel_sdvo_write_sdvox()
257 POSTING_READ(intel_sdvo->sdvo_reg); in intel_sdvo_write_sdvox()
262 if (intel_sdvo->sdvo_reg == GEN3_SDVOB) in intel_sdvo_write_sdvox()
281 static bool intel_sdvo_read_byte(struct intel_sdvo *intel_sdvo, u8 addr, u8 *ch) in intel_sdvo_read_byte() argument
285 .addr = intel_sdvo->slave_addr, in intel_sdvo_read_byte()
291 .addr = intel_sdvo->slave_addr, in intel_sdvo_read_byte()
299 if ((ret = i2c_transfer(intel_sdvo->i2c, msgs, 2)) == 2) in intel_sdvo_read_byte()
427 static void intel_sdvo_debug_write(struct intel_sdvo *intel_sdvo, u8 cmd, in intel_sdvo_debug_write() argument
457 DRM_DEBUG_KMS("%s: W: %02X %s\n", SDVO_NAME(intel_sdvo), cmd, buffer); in intel_sdvo_debug_write()
470 static bool intel_sdvo_write_cmd(struct intel_sdvo *intel_sdvo, u8 cmd, in intel_sdvo_write_cmd() argument
488 intel_sdvo_debug_write(intel_sdvo, cmd, args, args_len); in intel_sdvo_write_cmd()
491 msgs[i].addr = intel_sdvo->slave_addr; in intel_sdvo_write_cmd()
498 msgs[i].addr = intel_sdvo->slave_addr; in intel_sdvo_write_cmd()
507 msgs[i+1].addr = intel_sdvo->slave_addr; in intel_sdvo_write_cmd()
512 msgs[i+2].addr = intel_sdvo->slave_addr; in intel_sdvo_write_cmd()
517 ret = i2c_transfer(intel_sdvo->i2c, msgs, i+3); in intel_sdvo_write_cmd()
535 static bool intel_sdvo_read_response(struct intel_sdvo *intel_sdvo, in intel_sdvo_read_response() argument
562 if (!intel_sdvo_read_byte(intel_sdvo, in intel_sdvo_read_response()
574 if (!intel_sdvo_read_byte(intel_sdvo, in intel_sdvo_read_response()
593 if (!intel_sdvo_read_byte(intel_sdvo, in intel_sdvo_read_response()
603 DRM_DEBUG_KMS("%s: R: %s\n", SDVO_NAME(intel_sdvo), buffer); in intel_sdvo_read_response()
607 DRM_DEBUG_KMS("%s: R: ... failed\n", SDVO_NAME(intel_sdvo)); in intel_sdvo_read_response()
621 static bool intel_sdvo_set_control_bus_switch(struct intel_sdvo *intel_sdvo, in intel_sdvo_set_control_bus_switch() argument
625 return intel_sdvo_write_cmd(intel_sdvo, in intel_sdvo_set_control_bus_switch()
630 static bool intel_sdvo_set_value(struct intel_sdvo *intel_sdvo, u8 cmd, const void *data, int len) in intel_sdvo_set_value() argument
632 if (!intel_sdvo_write_cmd(intel_sdvo, cmd, data, len)) in intel_sdvo_set_value()
635 return intel_sdvo_read_response(intel_sdvo, NULL, 0); in intel_sdvo_set_value()
639 intel_sdvo_get_value(struct intel_sdvo *intel_sdvo, u8 cmd, void *value, int len) in intel_sdvo_get_value() argument
641 if (!intel_sdvo_write_cmd(intel_sdvo, cmd, NULL, 0)) in intel_sdvo_get_value()
644 return intel_sdvo_read_response(intel_sdvo, value, len); in intel_sdvo_get_value()
647 static bool intel_sdvo_set_target_input(struct intel_sdvo *intel_sdvo) in intel_sdvo_set_target_input() argument
650 return intel_sdvo_set_value(intel_sdvo, in intel_sdvo_set_target_input()
661 static bool intel_sdvo_get_trained_inputs(struct intel_sdvo *intel_sdvo, bool *input_1, bool *input… in intel_sdvo_get_trained_inputs() argument
666 if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_TRAINED_INPUTS, in intel_sdvo_get_trained_inputs()
675 static bool intel_sdvo_set_active_outputs(struct intel_sdvo *intel_sdvo, in intel_sdvo_set_active_outputs() argument
678 return intel_sdvo_set_value(intel_sdvo, in intel_sdvo_set_active_outputs()
683 static bool intel_sdvo_get_active_outputs(struct intel_sdvo *intel_sdvo, in intel_sdvo_get_active_outputs() argument
686 return intel_sdvo_get_value(intel_sdvo, in intel_sdvo_get_active_outputs()
691 static bool intel_sdvo_set_encoder_power_state(struct intel_sdvo *intel_sdvo, in intel_sdvo_set_encoder_power_state() argument
711 return intel_sdvo_set_value(intel_sdvo, in intel_sdvo_set_encoder_power_state()
715 static bool intel_sdvo_get_input_pixel_clock_range(struct intel_sdvo *intel_sdvo, in intel_sdvo_get_input_pixel_clock_range() argument
722 if (!intel_sdvo_get_value(intel_sdvo, in intel_sdvo_get_input_pixel_clock_range()
733 static bool intel_sdvo_set_target_output(struct intel_sdvo *intel_sdvo, in intel_sdvo_set_target_output() argument
736 return intel_sdvo_set_value(intel_sdvo, in intel_sdvo_set_target_output()
741 static bool intel_sdvo_set_timing(struct intel_sdvo *intel_sdvo, u8 cmd, in intel_sdvo_set_timing() argument
744 return intel_sdvo_set_value(intel_sdvo, cmd, &dtd->part1, sizeof(dtd->part1)) && in intel_sdvo_set_timing()
745 intel_sdvo_set_value(intel_sdvo, cmd + 1, &dtd->part2, sizeof(dtd->part2)); in intel_sdvo_set_timing()
748 static bool intel_sdvo_get_timing(struct intel_sdvo *intel_sdvo, u8 cmd, in intel_sdvo_get_timing() argument
751 return intel_sdvo_get_value(intel_sdvo, cmd, &dtd->part1, sizeof(dtd->part1)) && in intel_sdvo_get_timing()
752 intel_sdvo_get_value(intel_sdvo, cmd + 1, &dtd->part2, sizeof(dtd->part2)); in intel_sdvo_get_timing()
755 static bool intel_sdvo_set_input_timing(struct intel_sdvo *intel_sdvo, in intel_sdvo_set_input_timing() argument
758 return intel_sdvo_set_timing(intel_sdvo, in intel_sdvo_set_input_timing()
762 static bool intel_sdvo_set_output_timing(struct intel_sdvo *intel_sdvo, in intel_sdvo_set_output_timing() argument
765 return intel_sdvo_set_timing(intel_sdvo, in intel_sdvo_set_output_timing()
769 static bool intel_sdvo_get_input_timing(struct intel_sdvo *intel_sdvo, in intel_sdvo_get_input_timing() argument
772 return intel_sdvo_get_timing(intel_sdvo, in intel_sdvo_get_input_timing()
777 intel_sdvo_create_preferred_input_timing(struct intel_sdvo *intel_sdvo, in intel_sdvo_create_preferred_input_timing() argument
790 if (intel_sdvo->is_lvds && in intel_sdvo_create_preferred_input_timing()
791 (intel_sdvo->sdvo_lvds_fixed_mode->hdisplay != width || in intel_sdvo_create_preferred_input_timing()
792 intel_sdvo->sdvo_lvds_fixed_mode->vdisplay != height)) in intel_sdvo_create_preferred_input_timing()
795 return intel_sdvo_set_value(intel_sdvo, in intel_sdvo_create_preferred_input_timing()
800 static bool intel_sdvo_get_preferred_input_timing(struct intel_sdvo *intel_sdvo, in intel_sdvo_get_preferred_input_timing() argument
805 return intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART1, in intel_sdvo_get_preferred_input_timing()
807 intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART2, in intel_sdvo_get_preferred_input_timing()
811 static bool intel_sdvo_set_clock_rate_mult(struct intel_sdvo *intel_sdvo, u8 val) in intel_sdvo_set_clock_rate_mult() argument
813 return intel_sdvo_set_value(intel_sdvo, SDVO_CMD_SET_CLOCK_RATE_MULT, &val, 1); in intel_sdvo_set_clock_rate_mult()
915 static bool intel_sdvo_check_supp_encode(struct intel_sdvo *intel_sdvo) in intel_sdvo_check_supp_encode() argument
920 return intel_sdvo_get_value(intel_sdvo, in intel_sdvo_check_supp_encode()
925 static bool intel_sdvo_set_encode(struct intel_sdvo *intel_sdvo, in intel_sdvo_set_encode() argument
928 return intel_sdvo_set_value(intel_sdvo, SDVO_CMD_SET_ENCODE, &mode, 1); in intel_sdvo_set_encode()
931 static bool intel_sdvo_set_colorimetry(struct intel_sdvo *intel_sdvo, in intel_sdvo_set_colorimetry() argument
934 return intel_sdvo_set_value(intel_sdvo, SDVO_CMD_SET_COLORIMETRY, &mode, 1); in intel_sdvo_set_colorimetry()
938 static void intel_sdvo_dump_hdmi_buf(struct intel_sdvo *intel_sdvo)
967 static bool intel_sdvo_write_infoframe(struct intel_sdvo *intel_sdvo, in intel_sdvo_write_infoframe() argument
975 if (!intel_sdvo_set_value(intel_sdvo, in intel_sdvo_write_infoframe()
980 if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_HBUF_INFO, in intel_sdvo_write_infoframe()
995 if (!intel_sdvo_set_value(intel_sdvo, in intel_sdvo_write_infoframe()
1001 return intel_sdvo_set_value(intel_sdvo, in intel_sdvo_write_infoframe()
1006 static bool intel_sdvo_set_avi_infoframe(struct intel_sdvo *intel_sdvo, in intel_sdvo_set_avi_infoframe() argument
1010 struct drm_crtc *crtc = intel_sdvo->base.base.crtc; in intel_sdvo_set_avi_infoframe()
1023 if (intel_sdvo->rgb_quant_range_selectable) { in intel_sdvo_set_avi_infoframe()
1036 return intel_sdvo_write_infoframe(intel_sdvo, SDVO_HBUF_INDEX_AVI_IF, in intel_sdvo_set_avi_infoframe()
1041 static bool intel_sdvo_set_tv_format(struct intel_sdvo *intel_sdvo) in intel_sdvo_set_tv_format() argument
1046 format_map = 1 << intel_sdvo->tv_format_index; in intel_sdvo_set_tv_format()
1051 return intel_sdvo_set_value(intel_sdvo, in intel_sdvo_set_tv_format()
1057 intel_sdvo_set_output_timings_from_mode(struct intel_sdvo *intel_sdvo, in intel_sdvo_set_output_timings_from_mode() argument
1062 if (!intel_sdvo_set_target_output(intel_sdvo, in intel_sdvo_set_output_timings_from_mode()
1063 intel_sdvo->attached_output)) in intel_sdvo_set_output_timings_from_mode()
1067 if (!intel_sdvo_set_output_timing(intel_sdvo, &output_dtd)) in intel_sdvo_set_output_timings_from_mode()
1076 intel_sdvo_get_preferred_input_mode(struct intel_sdvo *intel_sdvo, in intel_sdvo_get_preferred_input_mode() argument
1083 if (!intel_sdvo_set_target_input(intel_sdvo)) in intel_sdvo_get_preferred_input_mode()
1086 if (!intel_sdvo_create_preferred_input_timing(intel_sdvo, in intel_sdvo_get_preferred_input_mode()
1092 if (!intel_sdvo_get_preferred_input_timing(intel_sdvo, in intel_sdvo_get_preferred_input_mode()
1097 intel_sdvo->dtd_sdvo_flags = input_dtd.part2.sdvo_flags; in intel_sdvo_get_preferred_input_mode()
1131 struct intel_sdvo *intel_sdvo = to_sdvo(encoder); in intel_sdvo_compute_config() local
1146 if (intel_sdvo->is_tv) { in intel_sdvo_compute_config()
1147 if (!intel_sdvo_set_output_timings_from_mode(intel_sdvo, mode)) in intel_sdvo_compute_config()
1150 (void) intel_sdvo_get_preferred_input_mode(intel_sdvo, in intel_sdvo_compute_config()
1154 } else if (intel_sdvo->is_lvds) { in intel_sdvo_compute_config()
1155 if (!intel_sdvo_set_output_timings_from_mode(intel_sdvo, in intel_sdvo_compute_config()
1156 intel_sdvo->sdvo_lvds_fixed_mode)) in intel_sdvo_compute_config()
1159 (void) intel_sdvo_get_preferred_input_mode(intel_sdvo, in intel_sdvo_compute_config()
1170 pipe_config->has_hdmi_sink = intel_sdvo->has_hdmi_monitor; in intel_sdvo_compute_config()
1172 if (intel_sdvo->color_range_auto) { in intel_sdvo_compute_config()
1181 intel_sdvo->color_range == HDMI_COLOR_RANGE_16_235) in intel_sdvo_compute_config()
1186 if (intel_sdvo->is_tv) in intel_sdvo_compute_config()
1190 if (intel_sdvo->is_hdmi) in intel_sdvo_compute_config()
1191 adjusted_mode->picture_aspect_ratio = intel_sdvo->aspect_ratio; in intel_sdvo_compute_config()
1203 struct intel_sdvo *intel_sdvo = to_sdvo(intel_encoder); in intel_sdvo_pre_enable() local
1218 in_out.in0 = intel_sdvo->attached_output; in intel_sdvo_pre_enable()
1221 intel_sdvo_set_value(intel_sdvo, in intel_sdvo_pre_enable()
1226 if (!intel_sdvo_set_target_output(intel_sdvo, in intel_sdvo_pre_enable()
1227 intel_sdvo->attached_output)) in intel_sdvo_pre_enable()
1231 if (intel_sdvo->is_lvds) in intel_sdvo_pre_enable()
1233 intel_sdvo->sdvo_lvds_fixed_mode); in intel_sdvo_pre_enable()
1236 if (!intel_sdvo_set_output_timing(intel_sdvo, &output_dtd)) in intel_sdvo_pre_enable()
1238 SDVO_NAME(intel_sdvo)); in intel_sdvo_pre_enable()
1241 if (!intel_sdvo_set_target_input(intel_sdvo)) in intel_sdvo_pre_enable()
1245 intel_sdvo_set_encode(intel_sdvo, SDVO_ENCODE_HDMI); in intel_sdvo_pre_enable()
1246 intel_sdvo_set_colorimetry(intel_sdvo, in intel_sdvo_pre_enable()
1248 intel_sdvo_set_avi_infoframe(intel_sdvo, adjusted_mode); in intel_sdvo_pre_enable()
1250 intel_sdvo_set_encode(intel_sdvo, SDVO_ENCODE_DVI); in intel_sdvo_pre_enable()
1252 if (intel_sdvo->is_tv && in intel_sdvo_pre_enable()
1253 !intel_sdvo_set_tv_format(intel_sdvo)) in intel_sdvo_pre_enable()
1258 if (intel_sdvo->is_tv || intel_sdvo->is_lvds) in intel_sdvo_pre_enable()
1259 input_dtd.part2.sdvo_flags = intel_sdvo->dtd_sdvo_flags; in intel_sdvo_pre_enable()
1260 if (!intel_sdvo_set_input_timing(intel_sdvo, &input_dtd)) in intel_sdvo_pre_enable()
1262 SDVO_NAME(intel_sdvo)); in intel_sdvo_pre_enable()
1271 if (!intel_sdvo_set_clock_rate_mult(intel_sdvo, rate)) in intel_sdvo_pre_enable()
1284 sdvox = I915_READ(intel_sdvo->sdvo_reg); in intel_sdvo_pre_enable()
1285 switch (intel_sdvo->sdvo_reg) { in intel_sdvo_pre_enable()
1301 if (intel_sdvo->has_hdmi_audio) in intel_sdvo_pre_enable()
1316 intel_sdvo_write_sdvox(intel_sdvo, sdvox); in intel_sdvo_pre_enable()
1323 struct intel_sdvo *intel_sdvo = intel_attached_sdvo(&connector->base); in intel_sdvo_connector_get_hw_state() local
1326 intel_sdvo_get_active_outputs(intel_sdvo, &active_outputs); in intel_sdvo_connector_get_hw_state()
1339 struct intel_sdvo *intel_sdvo = to_sdvo(encoder); in intel_sdvo_get_hw_state() local
1343 tmp = I915_READ(intel_sdvo->sdvo_reg); in intel_sdvo_get_hw_state()
1344 intel_sdvo_get_active_outputs(intel_sdvo, &active_outputs); in intel_sdvo_get_hw_state()
1362 struct intel_sdvo *intel_sdvo = to_sdvo(encoder); in intel_sdvo_get_config() local
1370 sdvox = I915_READ(intel_sdvo->sdvo_reg); in intel_sdvo_get_config()
1372 ret = intel_sdvo_get_input_timing(intel_sdvo, &dtd); in intel_sdvo_get_config()
1415 if (intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_CLOCK_RATE_MULT, in intel_sdvo_get_config()
1433 if (intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_ENCODE, in intel_sdvo_get_config()
1447 struct intel_sdvo *intel_sdvo = to_sdvo(encoder); in intel_disable_sdvo() local
1451 intel_sdvo_set_active_outputs(intel_sdvo, 0); in intel_disable_sdvo()
1453 intel_sdvo_set_encoder_power_state(intel_sdvo, in intel_disable_sdvo()
1456 temp = I915_READ(intel_sdvo->sdvo_reg); in intel_disable_sdvo()
1459 intel_sdvo_write_sdvox(intel_sdvo, temp); in intel_disable_sdvo()
1469 intel_sdvo_write_sdvox(intel_sdvo, temp); in intel_disable_sdvo()
1472 intel_sdvo_write_sdvox(intel_sdvo, temp); in intel_disable_sdvo()
1489 struct intel_sdvo *intel_sdvo = to_sdvo(encoder); in intel_enable_sdvo() local
1496 temp = I915_READ(intel_sdvo->sdvo_reg); in intel_enable_sdvo()
1498 intel_sdvo_write_sdvox(intel_sdvo, temp); in intel_enable_sdvo()
1503 success = intel_sdvo_get_trained_inputs(intel_sdvo, &input1, &input2); in intel_enable_sdvo()
1510 "sync\n", SDVO_NAME(intel_sdvo)); in intel_enable_sdvo()
1514 intel_sdvo_set_encoder_power_state(intel_sdvo, in intel_enable_sdvo()
1516 intel_sdvo_set_active_outputs(intel_sdvo, intel_sdvo->attached_output); in intel_enable_sdvo()
1523 struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); in intel_sdvo_mode_valid() local
1528 if (intel_sdvo->pixel_clock_min > mode->clock) in intel_sdvo_mode_valid()
1531 if (intel_sdvo->pixel_clock_max < mode->clock) in intel_sdvo_mode_valid()
1534 if (intel_sdvo->is_lvds) { in intel_sdvo_mode_valid()
1535 if (mode->hdisplay > intel_sdvo->sdvo_lvds_fixed_mode->hdisplay) in intel_sdvo_mode_valid()
1538 if (mode->vdisplay > intel_sdvo->sdvo_lvds_fixed_mode->vdisplay) in intel_sdvo_mode_valid()
1545 static bool intel_sdvo_get_capabilities(struct intel_sdvo *intel_sdvo, struct intel_sdvo_caps *caps) in intel_sdvo_get_capabilities() argument
1548 if (!intel_sdvo_get_value(intel_sdvo, in intel_sdvo_get_capabilities()
1582 static uint16_t intel_sdvo_get_hotplug_support(struct intel_sdvo *intel_sdvo) in intel_sdvo_get_hotplug_support() argument
1584 struct drm_device *dev = intel_sdvo->base.base.dev; in intel_sdvo_get_hotplug_support()
1595 if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_HOT_PLUG_SUPPORT, in intel_sdvo_get_hotplug_support()
1604 struct intel_sdvo *intel_sdvo = to_sdvo(encoder); in intel_sdvo_enable_hotplug() local
1606 intel_sdvo_write_cmd(intel_sdvo, SDVO_CMD_SET_ACTIVE_HOT_PLUG, in intel_sdvo_enable_hotplug()
1607 &intel_sdvo->hotplug_active, 2); in intel_sdvo_enable_hotplug()
1611 intel_sdvo_multifunc_encoder(struct intel_sdvo *intel_sdvo) in intel_sdvo_multifunc_encoder() argument
1614 return hweight16(intel_sdvo->caps.output_flags) > 1; in intel_sdvo_multifunc_encoder()
1620 struct intel_sdvo *sdvo = intel_attached_sdvo(connector); in intel_sdvo_get_edid()
1638 struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); in intel_sdvo_tmds_sink_detect() local
1644 if (edid == NULL && intel_sdvo_multifunc_encoder(intel_sdvo)) { in intel_sdvo_tmds_sink_detect()
1645 u8 ddc, saved_ddc = intel_sdvo->ddc_bus; in intel_sdvo_tmds_sink_detect()
1651 for (ddc = intel_sdvo->ddc_bus >> 1; ddc > 1; ddc >>= 1) { in intel_sdvo_tmds_sink_detect()
1652 intel_sdvo->ddc_bus = ddc; in intel_sdvo_tmds_sink_detect()
1662 intel_sdvo->ddc_bus = saved_ddc; in intel_sdvo_tmds_sink_detect()
1677 if (intel_sdvo->is_hdmi) { in intel_sdvo_tmds_sink_detect()
1678 intel_sdvo->has_hdmi_monitor = drm_detect_hdmi_monitor(edid); in intel_sdvo_tmds_sink_detect()
1679 intel_sdvo->has_hdmi_audio = drm_detect_monitor_audio(edid); in intel_sdvo_tmds_sink_detect()
1680 intel_sdvo->rgb_quant_range_selectable = in intel_sdvo_tmds_sink_detect()
1691 intel_sdvo->has_hdmi_audio = (intel_sdvo_connector->force_audio == HDMI_AUDIO_ON); in intel_sdvo_tmds_sink_detect()
1713 struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); in intel_sdvo_detect() local
1720 if (!intel_sdvo_get_value(intel_sdvo, in intel_sdvo_detect()
1732 intel_sdvo->attached_output = response; in intel_sdvo_detect()
1734 intel_sdvo->has_hdmi_monitor = false; in intel_sdvo_detect()
1735 intel_sdvo->has_hdmi_audio = false; in intel_sdvo_detect()
1736 intel_sdvo->rgb_quant_range_selectable = false; in intel_sdvo_detect()
1763 intel_sdvo->is_tv = false; in intel_sdvo_detect()
1764 intel_sdvo->is_lvds = false; in intel_sdvo_detect()
1767 intel_sdvo->is_tv = true; in intel_sdvo_detect()
1769 intel_sdvo->is_lvds = intel_sdvo->sdvo_lvds_fixed_mode != NULL; in intel_sdvo_detect()
1872 struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); in intel_sdvo_get_tv_modes() local
1883 format_map = 1 << intel_sdvo->tv_format_index; in intel_sdvo_get_tv_modes()
1887 if (!intel_sdvo_set_target_output(intel_sdvo, intel_sdvo->attached_output)) in intel_sdvo_get_tv_modes()
1891 if (!intel_sdvo_write_cmd(intel_sdvo, in intel_sdvo_get_tv_modes()
1895 if (!intel_sdvo_read_response(intel_sdvo, &reply, 3)) in intel_sdvo_get_tv_modes()
1910 struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); in intel_sdvo_get_lvds_modes() local
1937 intel_ddc_get_modes(connector, &intel_sdvo->ddc); in intel_sdvo_get_lvds_modes()
1941 intel_sdvo->sdvo_lvds_fixed_mode = in intel_sdvo_get_lvds_modes()
1944 intel_sdvo->is_lvds = true; in intel_sdvo_get_lvds_modes()
1974 struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); in intel_sdvo_detect_hdmi_audio() local
1978 if (!intel_sdvo->is_hdmi) in intel_sdvo_detect_hdmi_audio()
1994 struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); in intel_sdvo_set_property() local
2019 if (has_audio == intel_sdvo->has_hdmi_audio) in intel_sdvo_set_property()
2022 intel_sdvo->has_hdmi_audio = has_audio; in intel_sdvo_set_property()
2027 bool old_auto = intel_sdvo->color_range_auto; in intel_sdvo_set_property()
2028 uint32_t old_range = intel_sdvo->color_range; in intel_sdvo_set_property()
2032 intel_sdvo->color_range_auto = true; in intel_sdvo_set_property()
2035 intel_sdvo->color_range_auto = false; in intel_sdvo_set_property()
2036 intel_sdvo->color_range = 0; in intel_sdvo_set_property()
2039 intel_sdvo->color_range_auto = false; in intel_sdvo_set_property()
2042 intel_sdvo->color_range = HDMI_COLOR_RANGE_16_235; in intel_sdvo_set_property()
2048 if (old_auto == intel_sdvo->color_range_auto && in intel_sdvo_set_property()
2049 old_range == intel_sdvo->color_range) in intel_sdvo_set_property()
2058 intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_NONE; in intel_sdvo_set_property()
2061 intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_4_3; in intel_sdvo_set_property()
2064 intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_16_9; in intel_sdvo_set_property()
2085 if (intel_sdvo->tv_format_index == in intel_sdvo_set_property()
2089 intel_sdvo->tv_format_index = intel_sdvo_connector->tv_format_supported[val]; in intel_sdvo_set_property()
2160 if (!intel_sdvo_set_value(intel_sdvo, cmd, &temp_value, 2)) in intel_sdvo_set_property()
2165 if (intel_sdvo->base.base.crtc) in intel_sdvo_set_property()
2166 intel_crtc_restore_mode(intel_sdvo->base.base.crtc); in intel_sdvo_set_property()
2191 struct intel_sdvo *intel_sdvo = to_sdvo(to_intel_encoder(encoder)); in intel_sdvo_enc_destroy() local
2193 if (intel_sdvo->sdvo_lvds_fixed_mode != NULL) in intel_sdvo_enc_destroy()
2195 intel_sdvo->sdvo_lvds_fixed_mode); in intel_sdvo_enc_destroy()
2197 i2c_del_adapter(&intel_sdvo->ddc); in intel_sdvo_enc_destroy()
2206 intel_sdvo_guess_ddc_bus(struct intel_sdvo *sdvo) in intel_sdvo_guess_ddc_bus()
2250 struct intel_sdvo *sdvo) in intel_sdvo_select_ddc_bus()
2267 struct intel_sdvo *sdvo) in intel_sdvo_select_i2c_bus()
2293 intel_sdvo_unselect_i2c_bus(struct intel_sdvo *sdvo) in intel_sdvo_unselect_i2c_bus()
2299 intel_sdvo_is_hdmi_connector(struct intel_sdvo *intel_sdvo, int device) in intel_sdvo_is_hdmi_connector() argument
2301 return intel_sdvo_check_supp_encode(intel_sdvo); in intel_sdvo_is_hdmi_connector()
2305 intel_sdvo_get_slave_addr(struct drm_device *dev, struct intel_sdvo *sdvo) in intel_sdvo_get_slave_addr()
2345 struct intel_sdvo *sdvo_encoder; in intel_sdvo_connector_unregister()
2357 struct intel_sdvo *encoder) in intel_sdvo_connector_init()
2401 intel_sdvo_add_hdmi_properties(struct intel_sdvo *intel_sdvo, in intel_sdvo_add_hdmi_properties() argument
2409 intel_sdvo->color_range_auto = true; in intel_sdvo_add_hdmi_properties()
2412 intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_NONE; in intel_sdvo_add_hdmi_properties()
2432 intel_sdvo_dvi_init(struct intel_sdvo *intel_sdvo, int device) in intel_sdvo_dvi_init() argument
2434 struct drm_encoder *encoder = &intel_sdvo->base.base; in intel_sdvo_dvi_init()
2447 intel_sdvo->controlled_output |= SDVO_OUTPUT_TMDS0; in intel_sdvo_dvi_init()
2450 intel_sdvo->controlled_output |= SDVO_OUTPUT_TMDS1; in intel_sdvo_dvi_init()
2456 if (intel_sdvo_get_hotplug_support(intel_sdvo) & in intel_sdvo_dvi_init()
2458 intel_sdvo->hotplug_active |= intel_sdvo_connector->output_flag; in intel_sdvo_dvi_init()
2470 if (intel_sdvo_is_hdmi_connector(intel_sdvo, device)) { in intel_sdvo_dvi_init()
2472 intel_sdvo->is_hdmi = true; in intel_sdvo_dvi_init()
2475 if (intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo) < 0) { in intel_sdvo_dvi_init()
2480 if (intel_sdvo->is_hdmi) in intel_sdvo_dvi_init()
2481 intel_sdvo_add_hdmi_properties(intel_sdvo, intel_sdvo_connector); in intel_sdvo_dvi_init()
2487 intel_sdvo_tv_init(struct intel_sdvo *intel_sdvo, int type) in intel_sdvo_tv_init() argument
2489 struct drm_encoder *encoder = &intel_sdvo->base.base; in intel_sdvo_tv_init()
2505 intel_sdvo->controlled_output |= type; in intel_sdvo_tv_init()
2508 intel_sdvo->is_tv = true; in intel_sdvo_tv_init()
2510 if (intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo) < 0) { in intel_sdvo_tv_init()
2515 if (!intel_sdvo_tv_create_property(intel_sdvo, intel_sdvo_connector, type)) in intel_sdvo_tv_init()
2518 if (!intel_sdvo_create_enhance_property(intel_sdvo, intel_sdvo_connector)) in intel_sdvo_tv_init()
2530 intel_sdvo_analog_init(struct intel_sdvo *intel_sdvo, int device) in intel_sdvo_analog_init() argument
2532 struct drm_encoder *encoder = &intel_sdvo->base.base; in intel_sdvo_analog_init()
2550 intel_sdvo->controlled_output |= SDVO_OUTPUT_RGB0; in intel_sdvo_analog_init()
2553 intel_sdvo->controlled_output |= SDVO_OUTPUT_RGB1; in intel_sdvo_analog_init()
2557 if (intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo) < 0) { in intel_sdvo_analog_init()
2566 intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo, int device) in intel_sdvo_lvds_init() argument
2568 struct drm_encoder *encoder = &intel_sdvo->base.base; in intel_sdvo_lvds_init()
2585 intel_sdvo->controlled_output |= SDVO_OUTPUT_LVDS0; in intel_sdvo_lvds_init()
2588 intel_sdvo->controlled_output |= SDVO_OUTPUT_LVDS1; in intel_sdvo_lvds_init()
2592 if (intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo) < 0) { in intel_sdvo_lvds_init()
2597 if (!intel_sdvo_create_enhance_property(intel_sdvo, intel_sdvo_connector)) in intel_sdvo_lvds_init()
2609 intel_sdvo_output_setup(struct intel_sdvo *intel_sdvo, uint16_t flags) in intel_sdvo_output_setup() argument
2611 intel_sdvo->is_tv = false; in intel_sdvo_output_setup()
2612 intel_sdvo->is_lvds = false; in intel_sdvo_output_setup()
2617 if (!intel_sdvo_dvi_init(intel_sdvo, 0)) in intel_sdvo_output_setup()
2621 if (!intel_sdvo_dvi_init(intel_sdvo, 1)) in intel_sdvo_output_setup()
2626 if (!intel_sdvo_tv_init(intel_sdvo, SDVO_OUTPUT_SVID0)) in intel_sdvo_output_setup()
2630 if (!intel_sdvo_tv_init(intel_sdvo, SDVO_OUTPUT_CVBS0)) in intel_sdvo_output_setup()
2634 if (!intel_sdvo_tv_init(intel_sdvo, SDVO_OUTPUT_YPRPB0)) in intel_sdvo_output_setup()
2638 if (!intel_sdvo_analog_init(intel_sdvo, 0)) in intel_sdvo_output_setup()
2642 if (!intel_sdvo_analog_init(intel_sdvo, 1)) in intel_sdvo_output_setup()
2646 if (!intel_sdvo_lvds_init(intel_sdvo, 0)) in intel_sdvo_output_setup()
2650 if (!intel_sdvo_lvds_init(intel_sdvo, 1)) in intel_sdvo_output_setup()
2656 intel_sdvo->controlled_output = 0; in intel_sdvo_output_setup()
2657 memcpy(bytes, &intel_sdvo->caps.output_flags, 2); in intel_sdvo_output_setup()
2659 SDVO_NAME(intel_sdvo), in intel_sdvo_output_setup()
2663 intel_sdvo->base.crtc_mask = (1 << 0) | (1 << 1) | (1 << 2); in intel_sdvo_output_setup()
2668 static void intel_sdvo_output_cleanup(struct intel_sdvo *intel_sdvo) in intel_sdvo_output_cleanup() argument
2670 struct drm_device *dev = intel_sdvo->base.base.dev; in intel_sdvo_output_cleanup()
2675 if (intel_attached_encoder(connector) == &intel_sdvo->base) { in intel_sdvo_output_cleanup()
2682 static bool intel_sdvo_tv_create_property(struct intel_sdvo *intel_sdvo, in intel_sdvo_tv_create_property() argument
2686 struct drm_device *dev = intel_sdvo->base.base.dev; in intel_sdvo_tv_create_property()
2690 if (!intel_sdvo_set_target_output(intel_sdvo, type)) in intel_sdvo_tv_create_property()
2694 if (!intel_sdvo_get_value(intel_sdvo, in intel_sdvo_tv_create_property()
2721 intel_sdvo->tv_format_index = intel_sdvo_connector->tv_format_supported[0]; in intel_sdvo_tv_create_property()
2730 if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_MAX_##NAME, &data_value, 4) || \
2731 !intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_##NAME, &response, 2)) \
2747 intel_sdvo_create_enhance_property_tv(struct intel_sdvo *intel_sdvo, in intel_sdvo_create_enhance_property_tv() argument
2751 struct drm_device *dev = intel_sdvo->base.base.dev; in intel_sdvo_create_enhance_property_tv()
2757 if (!intel_sdvo_get_value(intel_sdvo, in intel_sdvo_create_enhance_property_tv()
2762 if (!intel_sdvo_get_value(intel_sdvo, in intel_sdvo_create_enhance_property_tv()
2793 if (!intel_sdvo_get_value(intel_sdvo, in intel_sdvo_create_enhance_property_tv()
2798 if (!intel_sdvo_get_value(intel_sdvo, in intel_sdvo_create_enhance_property_tv()
2844 if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_DOT_CRAWL, &response, 2)) in intel_sdvo_create_enhance_property_tv()
2864 intel_sdvo_create_enhance_property_lvds(struct intel_sdvo *intel_sdvo, in intel_sdvo_create_enhance_property_lvds() argument
2868 struct drm_device *dev = intel_sdvo->base.base.dev; in intel_sdvo_create_enhance_property_lvds()
2878 static bool intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo, in intel_sdvo_create_enhance_property() argument
2889 intel_sdvo_get_value(intel_sdvo, in intel_sdvo_create_enhance_property()
2898 …return intel_sdvo_create_enhance_property_tv(intel_sdvo, intel_sdvo_connector, enhancements.reply); in intel_sdvo_create_enhance_property()
2900 …return intel_sdvo_create_enhance_property_lvds(intel_sdvo, intel_sdvo_connector, enhancements.repl… in intel_sdvo_create_enhance_property()
2909 struct intel_sdvo *sdvo = adapter->algo_data; in intel_sdvo_ddc_proxy_xfer()
2919 struct intel_sdvo *sdvo = adapter->algo_data; in intel_sdvo_ddc_proxy_func()
2929 intel_sdvo_init_ddc_proxy(struct intel_sdvo *sdvo, in intel_sdvo_init_ddc_proxy()
2946 struct intel_sdvo *intel_sdvo; in intel_sdvo_init() local
2948 intel_sdvo = kzalloc(sizeof(*intel_sdvo), GFP_KERNEL); in intel_sdvo_init()
2949 if (!intel_sdvo) in intel_sdvo_init()
2952 intel_sdvo->sdvo_reg = sdvo_reg; in intel_sdvo_init()
2953 intel_sdvo->is_sdvob = is_sdvob; in intel_sdvo_init()
2954 intel_sdvo->slave_addr = intel_sdvo_get_slave_addr(dev, intel_sdvo) >> 1; in intel_sdvo_init()
2955 intel_sdvo_select_i2c_bus(dev_priv, intel_sdvo); in intel_sdvo_init()
2956 if (!intel_sdvo_init_ddc_proxy(intel_sdvo, dev)) in intel_sdvo_init()
2960 intel_encoder = &intel_sdvo->base; in intel_sdvo_init()
2968 if (!intel_sdvo_read_byte(intel_sdvo, i, &byte)) { in intel_sdvo_init()
2970 SDVO_NAME(intel_sdvo)); in intel_sdvo_init()
2988 if (!intel_sdvo_get_capabilities(intel_sdvo, &intel_sdvo->caps)) in intel_sdvo_init()
2991 if (intel_sdvo_output_setup(intel_sdvo, in intel_sdvo_init()
2992 intel_sdvo->caps.output_flags) != true) { in intel_sdvo_init()
2994 SDVO_NAME(intel_sdvo)); in intel_sdvo_init()
3002 if (intel_sdvo->hotplug_active) { in intel_sdvo_init()
3004 intel_sdvo->is_sdvob ? HPD_SDVO_B : HPD_SDVO_C; in intel_sdvo_init()
3015 intel_sdvo->base.cloneable = 0; in intel_sdvo_init()
3017 intel_sdvo_select_ddc_bus(dev_priv, intel_sdvo); in intel_sdvo_init()
3020 if (!intel_sdvo_set_target_input(intel_sdvo)) in intel_sdvo_init()
3023 if (!intel_sdvo_get_input_pixel_clock_range(intel_sdvo, in intel_sdvo_init()
3024 &intel_sdvo->pixel_clock_min, in intel_sdvo_init()
3025 &intel_sdvo->pixel_clock_max)) in intel_sdvo_init()
3032 SDVO_NAME(intel_sdvo), in intel_sdvo_init()
3033 intel_sdvo->caps.vendor_id, intel_sdvo->caps.device_id, in intel_sdvo_init()
3034 intel_sdvo->caps.device_rev_id, in intel_sdvo_init()
3035 intel_sdvo->pixel_clock_min / 1000, in intel_sdvo_init()
3036 intel_sdvo->pixel_clock_max / 1000, in intel_sdvo_init()
3037 (intel_sdvo->caps.sdvo_inputs_mask & 0x1) ? 'Y' : 'N', in intel_sdvo_init()
3038 (intel_sdvo->caps.sdvo_inputs_mask & 0x2) ? 'Y' : 'N', in intel_sdvo_init()
3040 intel_sdvo->caps.output_flags & in intel_sdvo_init()
3042 intel_sdvo->caps.output_flags & in intel_sdvo_init()
3047 intel_sdvo_output_cleanup(intel_sdvo); in intel_sdvo_init()
3051 i2c_del_adapter(&intel_sdvo->ddc); in intel_sdvo_init()
3053 intel_sdvo_unselect_i2c_bus(intel_sdvo); in intel_sdvo_init()
3054 kfree(intel_sdvo); in intel_sdvo_init()