Lines Matching refs:intel_sdvo

68 struct intel_sdvo {  struct
188 static struct intel_sdvo *to_sdvo(struct intel_encoder *encoder) in to_sdvo()
190 return container_of(encoder, struct intel_sdvo, base); in to_sdvo()
193 static struct intel_sdvo *intel_attached_sdvo(struct drm_connector *connector) in intel_attached_sdvo()
208 intel_sdvo_output_setup(struct intel_sdvo *intel_sdvo, uint16_t flags);
210 intel_sdvo_tv_create_property(struct intel_sdvo *intel_sdvo,
214 intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo,
222 static void intel_sdvo_write_sdvox(struct intel_sdvo *intel_sdvo, u32 val) in intel_sdvo_write_sdvox() argument
224 struct drm_device *dev = intel_sdvo->base.base.dev; in intel_sdvo_write_sdvox()
230 I915_WRITE(intel_sdvo->sdvo_reg, val); in intel_sdvo_write_sdvox()
231 POSTING_READ(intel_sdvo->sdvo_reg); in intel_sdvo_write_sdvox()
237 I915_WRITE(intel_sdvo->sdvo_reg, val); in intel_sdvo_write_sdvox()
238 POSTING_READ(intel_sdvo->sdvo_reg); in intel_sdvo_write_sdvox()
243 if (intel_sdvo->port == PORT_B) in intel_sdvo_write_sdvox()
262 static bool intel_sdvo_read_byte(struct intel_sdvo *intel_sdvo, u8 addr, u8 *ch) in intel_sdvo_read_byte() argument
266 .addr = intel_sdvo->slave_addr, in intel_sdvo_read_byte()
272 .addr = intel_sdvo->slave_addr, in intel_sdvo_read_byte()
280 if ((ret = i2c_transfer(intel_sdvo->i2c, msgs, 2)) == 2) in intel_sdvo_read_byte()
408 static void intel_sdvo_debug_write(struct intel_sdvo *intel_sdvo, u8 cmd, in intel_sdvo_debug_write() argument
438 DRM_DEBUG_KMS("%s: W: %02X %s\n", SDVO_NAME(intel_sdvo), cmd, buffer); in intel_sdvo_debug_write()
451 static bool __intel_sdvo_write_cmd(struct intel_sdvo *intel_sdvo, u8 cmd, in __intel_sdvo_write_cmd() argument
470 intel_sdvo_debug_write(intel_sdvo, cmd, args, args_len); in __intel_sdvo_write_cmd()
473 msgs[i].addr = intel_sdvo->slave_addr; in __intel_sdvo_write_cmd()
480 msgs[i].addr = intel_sdvo->slave_addr; in __intel_sdvo_write_cmd()
489 msgs[i+1].addr = intel_sdvo->slave_addr; in __intel_sdvo_write_cmd()
494 msgs[i+2].addr = intel_sdvo->slave_addr; in __intel_sdvo_write_cmd()
500 ret = i2c_transfer(intel_sdvo->i2c, msgs, i+3); in __intel_sdvo_write_cmd()
502 ret = __i2c_transfer(intel_sdvo->i2c, msgs, i+3); in __intel_sdvo_write_cmd()
520 static bool intel_sdvo_write_cmd(struct intel_sdvo *intel_sdvo, u8 cmd, in intel_sdvo_write_cmd() argument
523 return __intel_sdvo_write_cmd(intel_sdvo, cmd, args, args_len, true); in intel_sdvo_write_cmd()
526 static bool intel_sdvo_read_response(struct intel_sdvo *intel_sdvo, in intel_sdvo_read_response() argument
553 if (!intel_sdvo_read_byte(intel_sdvo, in intel_sdvo_read_response()
565 if (!intel_sdvo_read_byte(intel_sdvo, in intel_sdvo_read_response()
584 if (!intel_sdvo_read_byte(intel_sdvo, in intel_sdvo_read_response()
594 DRM_DEBUG_KMS("%s: R: %s\n", SDVO_NAME(intel_sdvo), buffer); in intel_sdvo_read_response()
598 DRM_DEBUG_KMS("%s: R: ... failed\n", SDVO_NAME(intel_sdvo)); in intel_sdvo_read_response()
612 static bool __intel_sdvo_set_control_bus_switch(struct intel_sdvo *intel_sdvo, in __intel_sdvo_set_control_bus_switch() argument
616 return __intel_sdvo_write_cmd(intel_sdvo, in __intel_sdvo_set_control_bus_switch()
621 static bool intel_sdvo_set_value(struct intel_sdvo *intel_sdvo, u8 cmd, const void *data, int len) in intel_sdvo_set_value() argument
623 if (!intel_sdvo_write_cmd(intel_sdvo, cmd, data, len)) in intel_sdvo_set_value()
626 return intel_sdvo_read_response(intel_sdvo, NULL, 0); in intel_sdvo_set_value()
630 intel_sdvo_get_value(struct intel_sdvo *intel_sdvo, u8 cmd, void *value, int len) in intel_sdvo_get_value() argument
632 if (!intel_sdvo_write_cmd(intel_sdvo, cmd, NULL, 0)) in intel_sdvo_get_value()
635 return intel_sdvo_read_response(intel_sdvo, value, len); in intel_sdvo_get_value()
638 static bool intel_sdvo_set_target_input(struct intel_sdvo *intel_sdvo) in intel_sdvo_set_target_input() argument
641 return intel_sdvo_set_value(intel_sdvo, in intel_sdvo_set_target_input()
652 static bool intel_sdvo_get_trained_inputs(struct intel_sdvo *intel_sdvo, bool *input_1, bool *input… in intel_sdvo_get_trained_inputs() argument
657 if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_TRAINED_INPUTS, in intel_sdvo_get_trained_inputs()
666 static bool intel_sdvo_set_active_outputs(struct intel_sdvo *intel_sdvo, in intel_sdvo_set_active_outputs() argument
669 return intel_sdvo_set_value(intel_sdvo, in intel_sdvo_set_active_outputs()
674 static bool intel_sdvo_get_active_outputs(struct intel_sdvo *intel_sdvo, in intel_sdvo_get_active_outputs() argument
677 return intel_sdvo_get_value(intel_sdvo, in intel_sdvo_get_active_outputs()
682 static bool intel_sdvo_set_encoder_power_state(struct intel_sdvo *intel_sdvo, in intel_sdvo_set_encoder_power_state() argument
702 return intel_sdvo_set_value(intel_sdvo, in intel_sdvo_set_encoder_power_state()
706 static bool intel_sdvo_get_input_pixel_clock_range(struct intel_sdvo *intel_sdvo, in intel_sdvo_get_input_pixel_clock_range() argument
713 if (!intel_sdvo_get_value(intel_sdvo, in intel_sdvo_get_input_pixel_clock_range()
724 static bool intel_sdvo_set_target_output(struct intel_sdvo *intel_sdvo, in intel_sdvo_set_target_output() argument
727 return intel_sdvo_set_value(intel_sdvo, in intel_sdvo_set_target_output()
732 static bool intel_sdvo_set_timing(struct intel_sdvo *intel_sdvo, u8 cmd, in intel_sdvo_set_timing() argument
735 return intel_sdvo_set_value(intel_sdvo, cmd, &dtd->part1, sizeof(dtd->part1)) && in intel_sdvo_set_timing()
736 intel_sdvo_set_value(intel_sdvo, cmd + 1, &dtd->part2, sizeof(dtd->part2)); in intel_sdvo_set_timing()
739 static bool intel_sdvo_get_timing(struct intel_sdvo *intel_sdvo, u8 cmd, in intel_sdvo_get_timing() argument
742 return intel_sdvo_get_value(intel_sdvo, cmd, &dtd->part1, sizeof(dtd->part1)) && in intel_sdvo_get_timing()
743 intel_sdvo_get_value(intel_sdvo, cmd + 1, &dtd->part2, sizeof(dtd->part2)); in intel_sdvo_get_timing()
746 static bool intel_sdvo_set_input_timing(struct intel_sdvo *intel_sdvo, in intel_sdvo_set_input_timing() argument
749 return intel_sdvo_set_timing(intel_sdvo, in intel_sdvo_set_input_timing()
753 static bool intel_sdvo_set_output_timing(struct intel_sdvo *intel_sdvo, in intel_sdvo_set_output_timing() argument
756 return intel_sdvo_set_timing(intel_sdvo, in intel_sdvo_set_output_timing()
760 static bool intel_sdvo_get_input_timing(struct intel_sdvo *intel_sdvo, in intel_sdvo_get_input_timing() argument
763 return intel_sdvo_get_timing(intel_sdvo, in intel_sdvo_get_input_timing()
768 intel_sdvo_create_preferred_input_timing(struct intel_sdvo *intel_sdvo, in intel_sdvo_create_preferred_input_timing() argument
781 if (intel_sdvo->is_lvds && in intel_sdvo_create_preferred_input_timing()
782 (intel_sdvo->sdvo_lvds_fixed_mode->hdisplay != width || in intel_sdvo_create_preferred_input_timing()
783 intel_sdvo->sdvo_lvds_fixed_mode->vdisplay != height)) in intel_sdvo_create_preferred_input_timing()
786 return intel_sdvo_set_value(intel_sdvo, in intel_sdvo_create_preferred_input_timing()
791 static bool intel_sdvo_get_preferred_input_timing(struct intel_sdvo *intel_sdvo, in intel_sdvo_get_preferred_input_timing() argument
796 return intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART1, in intel_sdvo_get_preferred_input_timing()
798 intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART2, in intel_sdvo_get_preferred_input_timing()
802 static bool intel_sdvo_set_clock_rate_mult(struct intel_sdvo *intel_sdvo, u8 val) in intel_sdvo_set_clock_rate_mult() argument
804 return intel_sdvo_set_value(intel_sdvo, SDVO_CMD_SET_CLOCK_RATE_MULT, &val, 1); in intel_sdvo_set_clock_rate_mult()
906 static bool intel_sdvo_check_supp_encode(struct intel_sdvo *intel_sdvo) in intel_sdvo_check_supp_encode() argument
911 return intel_sdvo_get_value(intel_sdvo, in intel_sdvo_check_supp_encode()
916 static bool intel_sdvo_set_encode(struct intel_sdvo *intel_sdvo, in intel_sdvo_set_encode() argument
919 return intel_sdvo_set_value(intel_sdvo, SDVO_CMD_SET_ENCODE, &mode, 1); in intel_sdvo_set_encode()
922 static bool intel_sdvo_set_colorimetry(struct intel_sdvo *intel_sdvo, in intel_sdvo_set_colorimetry() argument
925 return intel_sdvo_set_value(intel_sdvo, SDVO_CMD_SET_COLORIMETRY, &mode, 1); in intel_sdvo_set_colorimetry()
929 static void intel_sdvo_dump_hdmi_buf(struct intel_sdvo *intel_sdvo)
958 static bool intel_sdvo_write_infoframe(struct intel_sdvo *intel_sdvo, in intel_sdvo_write_infoframe() argument
966 if (!intel_sdvo_set_value(intel_sdvo, in intel_sdvo_write_infoframe()
971 if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_HBUF_INFO, in intel_sdvo_write_infoframe()
986 if (!intel_sdvo_set_value(intel_sdvo, in intel_sdvo_write_infoframe()
992 return intel_sdvo_set_value(intel_sdvo, in intel_sdvo_write_infoframe()
997 static bool intel_sdvo_set_avi_infoframe(struct intel_sdvo *intel_sdvo, in intel_sdvo_set_avi_infoframe() argument
1013 if (intel_sdvo->rgb_quant_range_selectable) { in intel_sdvo_set_avi_infoframe()
1026 return intel_sdvo_write_infoframe(intel_sdvo, SDVO_HBUF_INDEX_AVI_IF, in intel_sdvo_set_avi_infoframe()
1031 static bool intel_sdvo_set_tv_format(struct intel_sdvo *intel_sdvo, in intel_sdvo_set_tv_format() argument
1042 return intel_sdvo_set_value(intel_sdvo, in intel_sdvo_set_tv_format()
1048 intel_sdvo_set_output_timings_from_mode(struct intel_sdvo *intel_sdvo, in intel_sdvo_set_output_timings_from_mode() argument
1053 if (!intel_sdvo_set_target_output(intel_sdvo, in intel_sdvo_set_output_timings_from_mode()
1054 intel_sdvo->attached_output)) in intel_sdvo_set_output_timings_from_mode()
1058 if (!intel_sdvo_set_output_timing(intel_sdvo, &output_dtd)) in intel_sdvo_set_output_timings_from_mode()
1069 intel_sdvo_get_preferred_input_mode(struct intel_sdvo *intel_sdvo, in intel_sdvo_get_preferred_input_mode() argument
1076 if (!intel_sdvo_set_target_input(intel_sdvo)) in intel_sdvo_get_preferred_input_mode()
1079 if (!intel_sdvo_create_preferred_input_timing(intel_sdvo, in intel_sdvo_get_preferred_input_mode()
1085 if (!intel_sdvo_get_preferred_input_timing(intel_sdvo, in intel_sdvo_get_preferred_input_mode()
1090 intel_sdvo->dtd_sdvo_flags = input_dtd.part2.sdvo_flags; in intel_sdvo_get_preferred_input_mode()
1127 struct intel_sdvo *intel_sdvo = to_sdvo(encoder); in intel_sdvo_compute_config() local
1145 if (intel_sdvo->is_tv) { in intel_sdvo_compute_config()
1146 if (!intel_sdvo_set_output_timings_from_mode(intel_sdvo, mode)) in intel_sdvo_compute_config()
1149 (void) intel_sdvo_get_preferred_input_mode(intel_sdvo, in intel_sdvo_compute_config()
1153 } else if (intel_sdvo->is_lvds) { in intel_sdvo_compute_config()
1154 if (!intel_sdvo_set_output_timings_from_mode(intel_sdvo, in intel_sdvo_compute_config()
1155 intel_sdvo->sdvo_lvds_fixed_mode)) in intel_sdvo_compute_config()
1158 (void) intel_sdvo_get_preferred_input_mode(intel_sdvo, in intel_sdvo_compute_config()
1174 pipe_config->has_hdmi_sink = intel_sdvo->has_hdmi_monitor; in intel_sdvo_compute_config()
1177 (intel_sdvo_state->base.force_audio == HDMI_AUDIO_AUTO && intel_sdvo->has_hdmi_audio)) in intel_sdvo_compute_config()
1197 if (intel_sdvo->is_tv) in intel_sdvo_compute_config()
1201 if (intel_sdvo->is_hdmi) in intel_sdvo_compute_config()
1210 intel_sdvo_set_value(intel_sdvo, SDVO_CMD_SET_##NAME, &val, sizeof(val)); \
1213 static void intel_sdvo_update_props(struct intel_sdvo *intel_sdvo, in intel_sdvo_update_props() argument
1279 struct intel_sdvo *intel_sdvo = to_sdvo(intel_encoder); in intel_sdvo_pre_enable() local
1285 intel_sdvo_update_props(intel_sdvo, sdvo_state); in intel_sdvo_pre_enable()
1294 in_out.in0 = intel_sdvo->attached_output; in intel_sdvo_pre_enable()
1297 intel_sdvo_set_value(intel_sdvo, in intel_sdvo_pre_enable()
1302 if (!intel_sdvo_set_target_output(intel_sdvo, in intel_sdvo_pre_enable()
1303 intel_sdvo->attached_output)) in intel_sdvo_pre_enable()
1307 if (intel_sdvo->is_lvds) in intel_sdvo_pre_enable()
1309 intel_sdvo->sdvo_lvds_fixed_mode); in intel_sdvo_pre_enable()
1312 if (!intel_sdvo_set_output_timing(intel_sdvo, &output_dtd)) in intel_sdvo_pre_enable()
1314 SDVO_NAME(intel_sdvo)); in intel_sdvo_pre_enable()
1317 if (!intel_sdvo_set_target_input(intel_sdvo)) in intel_sdvo_pre_enable()
1321 intel_sdvo_set_encode(intel_sdvo, SDVO_ENCODE_HDMI); in intel_sdvo_pre_enable()
1322 intel_sdvo_set_colorimetry(intel_sdvo, in intel_sdvo_pre_enable()
1324 intel_sdvo_set_avi_infoframe(intel_sdvo, crtc_state); in intel_sdvo_pre_enable()
1326 intel_sdvo_set_encode(intel_sdvo, SDVO_ENCODE_DVI); in intel_sdvo_pre_enable()
1328 if (intel_sdvo->is_tv && in intel_sdvo_pre_enable()
1329 !intel_sdvo_set_tv_format(intel_sdvo, conn_state)) in intel_sdvo_pre_enable()
1334 if (intel_sdvo->is_tv || intel_sdvo->is_lvds) in intel_sdvo_pre_enable()
1335 input_dtd.part2.sdvo_flags = intel_sdvo->dtd_sdvo_flags; in intel_sdvo_pre_enable()
1336 if (!intel_sdvo_set_input_timing(intel_sdvo, &input_dtd)) in intel_sdvo_pre_enable()
1338 SDVO_NAME(intel_sdvo)); in intel_sdvo_pre_enable()
1348 if (!intel_sdvo_set_clock_rate_mult(intel_sdvo, rate)) in intel_sdvo_pre_enable()
1361 sdvox = I915_READ(intel_sdvo->sdvo_reg); in intel_sdvo_pre_enable()
1362 if (intel_sdvo->port == PORT_B) in intel_sdvo_pre_enable()
1392 intel_sdvo_write_sdvox(intel_sdvo, sdvox); in intel_sdvo_pre_enable()
1399 struct intel_sdvo *intel_sdvo = intel_attached_sdvo(&connector->base); in intel_sdvo_connector_get_hw_state() local
1402 intel_sdvo_get_active_outputs(intel_sdvo, &active_outputs); in intel_sdvo_connector_get_hw_state()
1429 struct intel_sdvo *intel_sdvo = to_sdvo(encoder); in intel_sdvo_get_hw_state() local
1433 intel_sdvo_get_active_outputs(intel_sdvo, &active_outputs); in intel_sdvo_get_hw_state()
1435 ret = intel_sdvo_port_enabled(dev_priv, intel_sdvo->sdvo_reg, pipe); in intel_sdvo_get_hw_state()
1445 struct intel_sdvo *intel_sdvo = to_sdvo(encoder); in intel_sdvo_get_config() local
1455 sdvox = I915_READ(intel_sdvo->sdvo_reg); in intel_sdvo_get_config()
1457 ret = intel_sdvo_get_input_timing(intel_sdvo, &dtd); in intel_sdvo_get_config()
1500 if (intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_CLOCK_RATE_MULT, in intel_sdvo_get_config()
1521 if (intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_ENCODE, in intel_sdvo_get_config()
1537 struct intel_sdvo *intel_sdvo = to_sdvo(encoder); in intel_disable_sdvo() local
1541 intel_sdvo_set_active_outputs(intel_sdvo, 0); in intel_disable_sdvo()
1543 intel_sdvo_set_encoder_power_state(intel_sdvo, in intel_disable_sdvo()
1546 temp = I915_READ(intel_sdvo->sdvo_reg); in intel_disable_sdvo()
1549 intel_sdvo_write_sdvox(intel_sdvo, temp); in intel_disable_sdvo()
1566 intel_sdvo_write_sdvox(intel_sdvo, temp); in intel_disable_sdvo()
1569 intel_sdvo_write_sdvox(intel_sdvo, temp); in intel_disable_sdvo()
1596 struct intel_sdvo *intel_sdvo = to_sdvo(encoder); in intel_enable_sdvo() local
1603 temp = I915_READ(intel_sdvo->sdvo_reg); in intel_enable_sdvo()
1605 intel_sdvo_write_sdvox(intel_sdvo, temp); in intel_enable_sdvo()
1610 success = intel_sdvo_get_trained_inputs(intel_sdvo, &input1, &input2); in intel_enable_sdvo()
1619 "sync\n", SDVO_NAME(intel_sdvo)); in intel_enable_sdvo()
1623 intel_sdvo_set_encoder_power_state(intel_sdvo, in intel_enable_sdvo()
1625 intel_sdvo_set_active_outputs(intel_sdvo, intel_sdvo->attached_output); in intel_enable_sdvo()
1632 struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); in intel_sdvo_mode_valid() local
1638 if (intel_sdvo->pixel_clock_min > mode->clock) in intel_sdvo_mode_valid()
1641 if (intel_sdvo->pixel_clock_max < mode->clock) in intel_sdvo_mode_valid()
1647 if (intel_sdvo->is_lvds) { in intel_sdvo_mode_valid()
1648 if (mode->hdisplay > intel_sdvo->sdvo_lvds_fixed_mode->hdisplay) in intel_sdvo_mode_valid()
1651 if (mode->vdisplay > intel_sdvo->sdvo_lvds_fixed_mode->vdisplay) in intel_sdvo_mode_valid()
1658 static bool intel_sdvo_get_capabilities(struct intel_sdvo *intel_sdvo, struct intel_sdvo_caps *caps) in intel_sdvo_get_capabilities() argument
1661 if (!intel_sdvo_get_value(intel_sdvo, in intel_sdvo_get_capabilities()
1695 static uint16_t intel_sdvo_get_hotplug_support(struct intel_sdvo *intel_sdvo) in intel_sdvo_get_hotplug_support() argument
1697 struct drm_i915_private *dev_priv = to_i915(intel_sdvo->base.base.dev); in intel_sdvo_get_hotplug_support()
1710 if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_HOT_PLUG_SUPPORT, in intel_sdvo_get_hotplug_support()
1719 struct intel_sdvo *intel_sdvo = to_sdvo(encoder); in intel_sdvo_enable_hotplug() local
1721 intel_sdvo_write_cmd(intel_sdvo, SDVO_CMD_SET_ACTIVE_HOT_PLUG, in intel_sdvo_enable_hotplug()
1722 &intel_sdvo->hotplug_active, 2); in intel_sdvo_enable_hotplug()
1734 intel_sdvo_multifunc_encoder(struct intel_sdvo *intel_sdvo) in intel_sdvo_multifunc_encoder() argument
1737 return hweight16(intel_sdvo->caps.output_flags) > 1; in intel_sdvo_multifunc_encoder()
1743 struct intel_sdvo *sdvo = intel_attached_sdvo(connector); in intel_sdvo_get_edid()
1761 struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); in intel_sdvo_tmds_sink_detect() local
1767 if (edid == NULL && intel_sdvo_multifunc_encoder(intel_sdvo)) { in intel_sdvo_tmds_sink_detect()
1768 u8 ddc, saved_ddc = intel_sdvo->ddc_bus; in intel_sdvo_tmds_sink_detect()
1774 for (ddc = intel_sdvo->ddc_bus >> 1; ddc > 1; ddc >>= 1) { in intel_sdvo_tmds_sink_detect()
1775 intel_sdvo->ddc_bus = ddc; in intel_sdvo_tmds_sink_detect()
1785 intel_sdvo->ddc_bus = saved_ddc; in intel_sdvo_tmds_sink_detect()
1800 if (intel_sdvo->is_hdmi) { in intel_sdvo_tmds_sink_detect()
1801 intel_sdvo->has_hdmi_monitor = drm_detect_hdmi_monitor(edid); in intel_sdvo_tmds_sink_detect()
1802 intel_sdvo->has_hdmi_audio = drm_detect_monitor_audio(edid); in intel_sdvo_tmds_sink_detect()
1803 intel_sdvo->rgb_quant_range_selectable = in intel_sdvo_tmds_sink_detect()
1830 struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); in intel_sdvo_detect() local
1837 if (!intel_sdvo_get_value(intel_sdvo, in intel_sdvo_detect()
1849 intel_sdvo->attached_output = response; in intel_sdvo_detect()
1851 intel_sdvo->has_hdmi_monitor = false; in intel_sdvo_detect()
1852 intel_sdvo->has_hdmi_audio = false; in intel_sdvo_detect()
1853 intel_sdvo->rgb_quant_range_selectable = false; in intel_sdvo_detect()
1880 intel_sdvo->is_tv = false; in intel_sdvo_detect()
1881 intel_sdvo->is_lvds = false; in intel_sdvo_detect()
1884 intel_sdvo->is_tv = true; in intel_sdvo_detect()
1886 intel_sdvo->is_lvds = intel_sdvo->sdvo_lvds_fixed_mode != NULL; in intel_sdvo_detect()
1989 struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); in intel_sdvo_get_tv_modes() local
2006 if (!intel_sdvo_set_target_output(intel_sdvo, intel_sdvo->attached_output)) in intel_sdvo_get_tv_modes()
2010 if (!intel_sdvo_write_cmd(intel_sdvo, in intel_sdvo_get_tv_modes()
2014 if (!intel_sdvo_read_response(intel_sdvo, &reply, 3)) in intel_sdvo_get_tv_modes()
2029 struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); in intel_sdvo_get_lvds_modes() local
2056 intel_ddc_get_modes(connector, &intel_sdvo->ddc); in intel_sdvo_get_lvds_modes()
2060 intel_sdvo->sdvo_lvds_fixed_mode = in intel_sdvo_get_lvds_modes()
2063 intel_sdvo->is_lvds = true; in intel_sdvo_get_lvds_modes()
2211 struct intel_sdvo *sdvo = intel_attached_sdvo(connector); in intel_sdvo_connector_register()
2226 struct intel_sdvo *sdvo = intel_attached_sdvo(connector); in intel_sdvo_connector_unregister()
2290 struct intel_sdvo *intel_sdvo = to_sdvo(to_intel_encoder(encoder)); in intel_sdvo_enc_destroy() local
2292 if (intel_sdvo->sdvo_lvds_fixed_mode != NULL) in intel_sdvo_enc_destroy()
2294 intel_sdvo->sdvo_lvds_fixed_mode); in intel_sdvo_enc_destroy()
2296 i2c_del_adapter(&intel_sdvo->ddc); in intel_sdvo_enc_destroy()
2305 intel_sdvo_guess_ddc_bus(struct intel_sdvo *sdvo) in intel_sdvo_guess_ddc_bus()
2355 struct intel_sdvo *sdvo) in intel_sdvo_select_ddc_bus()
2372 struct intel_sdvo *sdvo) in intel_sdvo_select_i2c_bus()
2400 intel_sdvo_unselect_i2c_bus(struct intel_sdvo *sdvo) in intel_sdvo_unselect_i2c_bus()
2406 intel_sdvo_is_hdmi_connector(struct intel_sdvo *intel_sdvo, int device) in intel_sdvo_is_hdmi_connector() argument
2408 return intel_sdvo_check_supp_encode(intel_sdvo); in intel_sdvo_is_hdmi_connector()
2413 struct intel_sdvo *sdvo) in intel_sdvo_get_slave_addr()
2452 struct intel_sdvo *encoder) in intel_sdvo_connector_init()
2479 intel_sdvo_add_hdmi_properties(struct intel_sdvo *intel_sdvo, in intel_sdvo_add_hdmi_properties() argument
2514 intel_sdvo_dvi_init(struct intel_sdvo *intel_sdvo, int device) in intel_sdvo_dvi_init() argument
2516 struct drm_encoder *encoder = &intel_sdvo->base.base; in intel_sdvo_dvi_init()
2530 intel_sdvo->controlled_output |= SDVO_OUTPUT_TMDS0; in intel_sdvo_dvi_init()
2533 intel_sdvo->controlled_output |= SDVO_OUTPUT_TMDS1; in intel_sdvo_dvi_init()
2539 if (intel_sdvo_get_hotplug_support(intel_sdvo) & in intel_sdvo_dvi_init()
2541 intel_sdvo->hotplug_active |= intel_sdvo_connector->output_flag; in intel_sdvo_dvi_init()
2556 intel_sdvo_is_hdmi_connector(intel_sdvo, device)) { in intel_sdvo_dvi_init()
2558 intel_sdvo->is_hdmi = true; in intel_sdvo_dvi_init()
2561 if (intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo) < 0) { in intel_sdvo_dvi_init()
2566 if (intel_sdvo->is_hdmi) in intel_sdvo_dvi_init()
2567 intel_sdvo_add_hdmi_properties(intel_sdvo, intel_sdvo_connector); in intel_sdvo_dvi_init()
2573 intel_sdvo_tv_init(struct intel_sdvo *intel_sdvo, int type) in intel_sdvo_tv_init() argument
2575 struct drm_encoder *encoder = &intel_sdvo->base.base; in intel_sdvo_tv_init()
2591 intel_sdvo->controlled_output |= type; in intel_sdvo_tv_init()
2594 intel_sdvo->is_tv = true; in intel_sdvo_tv_init()
2596 if (intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo) < 0) { in intel_sdvo_tv_init()
2601 if (!intel_sdvo_tv_create_property(intel_sdvo, intel_sdvo_connector, type)) in intel_sdvo_tv_init()
2604 if (!intel_sdvo_create_enhance_property(intel_sdvo, intel_sdvo_connector)) in intel_sdvo_tv_init()
2615 intel_sdvo_analog_init(struct intel_sdvo *intel_sdvo, int device) in intel_sdvo_analog_init() argument
2617 struct drm_encoder *encoder = &intel_sdvo->base.base; in intel_sdvo_analog_init()
2635 intel_sdvo->controlled_output |= SDVO_OUTPUT_RGB0; in intel_sdvo_analog_init()
2638 intel_sdvo->controlled_output |= SDVO_OUTPUT_RGB1; in intel_sdvo_analog_init()
2642 if (intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo) < 0) { in intel_sdvo_analog_init()
2651 intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo, int device) in intel_sdvo_lvds_init() argument
2653 struct drm_encoder *encoder = &intel_sdvo->base.base; in intel_sdvo_lvds_init()
2670 intel_sdvo->controlled_output |= SDVO_OUTPUT_LVDS0; in intel_sdvo_lvds_init()
2673 intel_sdvo->controlled_output |= SDVO_OUTPUT_LVDS1; in intel_sdvo_lvds_init()
2677 if (intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo) < 0) { in intel_sdvo_lvds_init()
2682 if (!intel_sdvo_create_enhance_property(intel_sdvo, intel_sdvo_connector)) in intel_sdvo_lvds_init()
2693 intel_sdvo_output_setup(struct intel_sdvo *intel_sdvo, uint16_t flags) in intel_sdvo_output_setup() argument
2695 intel_sdvo->is_tv = false; in intel_sdvo_output_setup()
2696 intel_sdvo->is_lvds = false; in intel_sdvo_output_setup()
2701 if (!intel_sdvo_dvi_init(intel_sdvo, 0)) in intel_sdvo_output_setup()
2705 if (!intel_sdvo_dvi_init(intel_sdvo, 1)) in intel_sdvo_output_setup()
2710 if (!intel_sdvo_tv_init(intel_sdvo, SDVO_OUTPUT_SVID0)) in intel_sdvo_output_setup()
2714 if (!intel_sdvo_tv_init(intel_sdvo, SDVO_OUTPUT_CVBS0)) in intel_sdvo_output_setup()
2718 if (!intel_sdvo_tv_init(intel_sdvo, SDVO_OUTPUT_YPRPB0)) in intel_sdvo_output_setup()
2722 if (!intel_sdvo_analog_init(intel_sdvo, 0)) in intel_sdvo_output_setup()
2726 if (!intel_sdvo_analog_init(intel_sdvo, 1)) in intel_sdvo_output_setup()
2730 if (!intel_sdvo_lvds_init(intel_sdvo, 0)) in intel_sdvo_output_setup()
2734 if (!intel_sdvo_lvds_init(intel_sdvo, 1)) in intel_sdvo_output_setup()
2740 intel_sdvo->controlled_output = 0; in intel_sdvo_output_setup()
2741 memcpy(bytes, &intel_sdvo->caps.output_flags, 2); in intel_sdvo_output_setup()
2743 SDVO_NAME(intel_sdvo), in intel_sdvo_output_setup()
2747 intel_sdvo->base.crtc_mask = (1 << 0) | (1 << 1) | (1 << 2); in intel_sdvo_output_setup()
2752 static void intel_sdvo_output_cleanup(struct intel_sdvo *intel_sdvo) in intel_sdvo_output_cleanup() argument
2754 struct drm_device *dev = intel_sdvo->base.base.dev; in intel_sdvo_output_cleanup()
2759 if (intel_attached_encoder(connector) == &intel_sdvo->base) { in intel_sdvo_output_cleanup()
2766 static bool intel_sdvo_tv_create_property(struct intel_sdvo *intel_sdvo, in intel_sdvo_tv_create_property() argument
2770 struct drm_device *dev = intel_sdvo->base.base.dev; in intel_sdvo_tv_create_property()
2774 if (!intel_sdvo_set_target_output(intel_sdvo, type)) in intel_sdvo_tv_create_property()
2778 if (!intel_sdvo_get_value(intel_sdvo, in intel_sdvo_tv_create_property()
2813 if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_MAX_##NAME, &data_value, 4) || \
2814 !intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_##NAME, &response, 2)) \
2830 intel_sdvo_create_enhance_property_tv(struct intel_sdvo *intel_sdvo, in intel_sdvo_create_enhance_property_tv() argument
2834 struct drm_device *dev = intel_sdvo->base.base.dev; in intel_sdvo_create_enhance_property_tv()
2843 if (!intel_sdvo_get_value(intel_sdvo, in intel_sdvo_create_enhance_property_tv()
2848 if (!intel_sdvo_get_value(intel_sdvo, in intel_sdvo_create_enhance_property_tv()
2877 if (!intel_sdvo_get_value(intel_sdvo, in intel_sdvo_create_enhance_property_tv()
2882 if (!intel_sdvo_get_value(intel_sdvo, in intel_sdvo_create_enhance_property_tv()
2926 if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_DOT_CRAWL, &response, 2)) in intel_sdvo_create_enhance_property_tv()
2944 intel_sdvo_create_enhance_property_lvds(struct intel_sdvo *intel_sdvo, in intel_sdvo_create_enhance_property_lvds() argument
2948 struct drm_device *dev = intel_sdvo->base.base.dev; in intel_sdvo_create_enhance_property_lvds()
2959 static bool intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo, in intel_sdvo_create_enhance_property() argument
2969 if (!intel_sdvo_get_value(intel_sdvo, in intel_sdvo_create_enhance_property()
2978 …return intel_sdvo_create_enhance_property_tv(intel_sdvo, intel_sdvo_connector, enhancements.reply); in intel_sdvo_create_enhance_property()
2980 …return intel_sdvo_create_enhance_property_lvds(intel_sdvo, intel_sdvo_connector, enhancements.repl… in intel_sdvo_create_enhance_property()
2989 struct intel_sdvo *sdvo = adapter->algo_data; in intel_sdvo_ddc_proxy_xfer()
2999 struct intel_sdvo *sdvo = adapter->algo_data; in intel_sdvo_ddc_proxy_func()
3011 struct intel_sdvo *sdvo = adapter->algo_data; in proxy_lock_bus()
3018 struct intel_sdvo *sdvo = adapter->algo_data; in proxy_trylock_bus()
3025 struct intel_sdvo *sdvo = adapter->algo_data; in proxy_unlock_bus()
3036 intel_sdvo_init_ddc_proxy(struct intel_sdvo *sdvo, in intel_sdvo_init_ddc_proxy()
3065 struct intel_sdvo *intel_sdvo; in intel_sdvo_init() local
3070 intel_sdvo = kzalloc(sizeof(*intel_sdvo), GFP_KERNEL); in intel_sdvo_init()
3071 if (!intel_sdvo) in intel_sdvo_init()
3074 intel_sdvo->sdvo_reg = sdvo_reg; in intel_sdvo_init()
3075 intel_sdvo->port = port; in intel_sdvo_init()
3076 intel_sdvo->slave_addr = in intel_sdvo_init()
3077 intel_sdvo_get_slave_addr(dev_priv, intel_sdvo) >> 1; in intel_sdvo_init()
3078 intel_sdvo_select_i2c_bus(dev_priv, intel_sdvo); in intel_sdvo_init()
3079 if (!intel_sdvo_init_ddc_proxy(intel_sdvo, dev_priv)) in intel_sdvo_init()
3083 intel_encoder = &intel_sdvo->base; in intel_sdvo_init()
3095 if (!intel_sdvo_read_byte(intel_sdvo, i, &byte)) { in intel_sdvo_init()
3097 SDVO_NAME(intel_sdvo)); in intel_sdvo_init()
3115 if (!intel_sdvo_get_capabilities(intel_sdvo, &intel_sdvo->caps)) in intel_sdvo_init()
3118 if (intel_sdvo_output_setup(intel_sdvo, in intel_sdvo_init()
3119 intel_sdvo->caps.output_flags) != true) { in intel_sdvo_init()
3121 SDVO_NAME(intel_sdvo)); in intel_sdvo_init()
3130 if (intel_sdvo->hotplug_active) { in intel_sdvo_init()
3131 if (intel_sdvo->port == PORT_B) in intel_sdvo_init()
3145 intel_sdvo->base.cloneable = 0; in intel_sdvo_init()
3147 intel_sdvo_select_ddc_bus(dev_priv, intel_sdvo); in intel_sdvo_init()
3150 if (!intel_sdvo_set_target_input(intel_sdvo)) in intel_sdvo_init()
3153 if (!intel_sdvo_get_input_pixel_clock_range(intel_sdvo, in intel_sdvo_init()
3154 &intel_sdvo->pixel_clock_min, in intel_sdvo_init()
3155 &intel_sdvo->pixel_clock_max)) in intel_sdvo_init()
3162 SDVO_NAME(intel_sdvo), in intel_sdvo_init()
3163 intel_sdvo->caps.vendor_id, intel_sdvo->caps.device_id, in intel_sdvo_init()
3164 intel_sdvo->caps.device_rev_id, in intel_sdvo_init()
3165 intel_sdvo->pixel_clock_min / 1000, in intel_sdvo_init()
3166 intel_sdvo->pixel_clock_max / 1000, in intel_sdvo_init()
3167 (intel_sdvo->caps.sdvo_inputs_mask & 0x1) ? 'Y' : 'N', in intel_sdvo_init()
3168 (intel_sdvo->caps.sdvo_inputs_mask & 0x2) ? 'Y' : 'N', in intel_sdvo_init()
3170 intel_sdvo->caps.output_flags & in intel_sdvo_init()
3172 intel_sdvo->caps.output_flags & in intel_sdvo_init()
3177 intel_sdvo_output_cleanup(intel_sdvo); in intel_sdvo_init()
3181 i2c_del_adapter(&intel_sdvo->ddc); in intel_sdvo_init()
3183 intel_sdvo_unselect_i2c_bus(intel_sdvo); in intel_sdvo_init()
3184 kfree(intel_sdvo); in intel_sdvo_init()