Lines Matching refs:encoder

99 	struct drm_encoder *encoder = &radeon_encoder->base;
135 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_LCD_BLOFF, 0, 0);
137 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_BL_BRIGHTNESS_CONTROL, 0, 0);
138 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_LCD_BLON, 0, 0);
165 struct radeon_encoder *radeon_encoder = pdata->encoder;
175 struct radeon_encoder *radeon_encoder = pdata->encoder;
238 pdata->encoder = radeon_encoder;
295 static bool radeon_atom_mode_fixup(struct drm_encoder *encoder,
299 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
300 struct drm_device *dev = encoder->dev;
303 /* set the active encoder to connector routing */
304 radeon_encoder_set_active_device(encoder);
318 radeon_panel_mode_fixup(encoder, adjusted_mode);
330 radeon_panel_mode_fixup(encoder, adjusted_mode);
335 (radeon_encoder_get_dp_bridge_encoder_id(encoder) != ENCODER_OBJECT_ID_NONE))) {
336 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder);
344 atombios_dac_setup(struct drm_encoder *encoder, int action)
346 struct drm_device *dev = encoder->dev;
348 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
396 atombios_tv_setup(struct drm_encoder *encoder, int action)
398 struct drm_device *dev = encoder->dev;
400 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
451 static u8 radeon_atom_get_bpc(struct drm_encoder *encoder)
455 if (encoder->crtc) {
456 struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc);
485 atombios_dvo_setup(struct drm_encoder *encoder, int action)
487 struct drm_device *dev = encoder->dev;
489 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
510 if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
522 if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
536 args.dvo_v4.ucBitPerColor = radeon_atom_get_bpc(encoder);
557 atombios_digital_setup(struct drm_encoder *encoder, int action)
559 struct drm_device *dev = encoder->dev;
561 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
571 if (atombios_get_encoder_mode(encoder) == ATOM_ENCODER_MODE_HDMI)
613 if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
652 if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
670 atombios_get_encoder_mode(struct drm_encoder *encoder)
672 struct drm_device *dev = encoder->dev;
674 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
680 if (radeon_encoder_get_dp_bridge_encoder_id(encoder) != ENCODER_OBJECT_ID_NONE)
688 connector = radeon_get_connector_for_encoder(encoder);
690 * the connectors tied to the encoder.
693 connector = radeon_get_connector_for_encoder_init(encoder);
781 * - 2 DIG encoder blocks.
788 * - 2 DIG encoder blocks.
794 * - 6 DIG encoder blocks.
806 * - 2 DIG encoder blocks.
814 * crtc -> dig encoder -> UNIPHY/LVTMA (1 or 2 links)
830 atombios_dig_encoder_setup2(struct drm_encoder *encoder, int action, int panel_mode, int enc_override)
832 struct drm_device *dev = encoder->dev;
834 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
836 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder);
854 /* no dig encoder assigned */
881 args.v1.ucEncoderMode = atombios_get_encoder_mode(encoder);
885 else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
918 args.v3.ucEncoderMode = atombios_get_encoder_mode(encoder);
922 else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
933 args.v3.ucBitPerColor = radeon_atom_get_bpc(encoder);
941 args.v4.ucEncoderMode = atombios_get_encoder_mode(encoder);
945 else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
965 args.v4.ucBitPerColor = radeon_atom_get_bpc(encoder);
986 atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mode)
988 atombios_dig_encoder_setup2(encoder, action, panel_mode, -1);
1000 atombios_dig_transmitter_setup2(struct drm_encoder *encoder, int action, uint8_t lane_num, uint8_t lane_set, int fe)
1002 struct drm_device *dev = encoder->dev;
1004 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
1020 connector = radeon_get_connector_for_encoder_init(encoder);
1021 /* just needed to avoid bailing in the encoder check. the encoder
1026 connector = radeon_get_connector_for_encoder(encoder);
1041 if (encoder->crtc) {
1042 struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc);
1046 /* no dig encoder assigned */
1050 if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)))
1086 else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1102 !radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock)) {
1129 if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1143 else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1171 if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1185 else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1193 else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1230 if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1244 else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1252 else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1292 if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1328 else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1333 args.v5.ucDigMode = atombios_get_encoder_mode(encoder);
1367 atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t lane_num, uint8_t lane_set)
1369 atombios_dig_transmitter_setup2(encoder, action, lane_num, lane_set, -1);
1422 atombios_external_encoder_setup(struct drm_encoder *encoder,
1426 struct drm_device *dev = encoder->dev;
1428 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
1440 connector = radeon_get_connector_for_encoder_init(encoder);
1442 connector = radeon_get_connector_for_encoder(encoder);
1470 args.v1.sDigEncoder.ucEncoderMode = atombios_get_encoder_mode(encoder);
1476 } else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1487 args.v3.sExtEncoder.ucEncoderMode = atombios_get_encoder_mode(encoder);
1495 } else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1510 args.v3.sExtEncoder.ucBitPerColor = radeon_atom_get_bpc(encoder);
1525 atombios_yuv_setup(struct drm_encoder *encoder, bool enable)
1527 struct drm_device *dev = encoder->dev;
1529 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
1530 struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc);
1562 radeon_atom_encoder_dpms_avivo(struct drm_encoder *encoder, int mode)
1564 struct drm_device *dev = encoder->dev;
1566 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
1649 radeon_atom_encoder_dpms_dig(struct drm_encoder *encoder, int mode)
1651 struct drm_device *dev = encoder->dev;
1653 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
1654 struct drm_encoder *ext_encoder = radeon_get_external_encoder(encoder);
1656 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder);
1677 dig->panel_mode = radeon_dp_get_panel_mode(encoder, connector);
1679 /* setup and enable the encoder */
1680 atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_SETUP, 0);
1681 atombios_dig_encoder_setup(encoder,
1686 atombios_external_encoder_setup(encoder, ext_encoder,
1690 /* setup and enable the encoder */
1691 atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_SETUP, 0);
1693 /* setup and enable the encoder and transmitter */
1694 atombios_dig_encoder_setup(encoder, ATOM_ENABLE, 0);
1695 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_SETUP, 0, 0);
1697 if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) && connector) {
1705 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE, 0, 0);
1706 if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) && connector) {
1708 radeon_dp_link_train(encoder, connector);
1710 atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_DP_VIDEO_ON, 0);
1716 atombios_dig_transmitter_setup(encoder,
1720 atombios_external_encoder_setup(encoder, ext_encoder, ATOM_ENABLE);
1727 if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) && connector)
1728 atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_DP_VIDEO_OFF, 0);
1731 atombios_external_encoder_setup(encoder, ext_encoder, ATOM_DISABLE);
1733 atombios_dig_transmitter_setup(encoder,
1736 if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) &&
1741 atombios_dig_transmitter_setup(encoder,
1744 /* disable the encoder and transmitter */
1745 atombios_dig_transmitter_setup(encoder,
1747 atombios_dig_encoder_setup(encoder, ATOM_DISABLE, 0);
1749 if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) && connector) {
1763 radeon_atom_encoder_dpms(struct drm_encoder *encoder, int mode)
1765 struct drm_device *dev = encoder->dev;
1767 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
1768 int encoder_mode = atombios_get_encoder_mode(encoder);
1770 DRM_DEBUG_KMS("encoder dpms %d to mode %d, devices %08x, active_devices %08x\n",
1777 radeon_audio_dpms(encoder, mode);
1788 radeon_atom_encoder_dpms_avivo(encoder, mode);
1795 radeon_atom_encoder_dpms_dig(encoder, mode);
1801 atombios_dvo_setup(encoder, ATOM_ENABLE);
1806 atombios_dvo_setup(encoder, ATOM_DISABLE);
1810 radeon_atom_encoder_dpms_dig(encoder, mode);
1812 radeon_atom_encoder_dpms_avivo(encoder, mode);
1819 atombios_dac_setup(encoder, ATOM_ENABLE);
1824 atombios_dac_setup(encoder, ATOM_DISABLE);
1828 radeon_atom_encoder_dpms_avivo(encoder, mode);
1834 radeon_atombios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false);
1844 atombios_set_encoder_crtc_source(struct drm_encoder *encoder)
1846 struct drm_device *dev = encoder->dev;
1848 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
1849 struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc);
1912 if (radeon_encoder_get_dp_bridge_encoder_id(encoder) != ENCODER_OBJECT_ID_NONE) {
1913 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder);
1920 args.v2.ucEncodeMode = atombios_get_encoder_mode(encoder);
1924 args.v2.ucEncodeMode = atombios_get_encoder_mode(encoder);
1988 radeon_atombios_encoder_crtc_scratch_regs(encoder, radeon_crtc->crtc_id);
1992 atombios_apply_encoder_quirks(struct drm_encoder *encoder,
1995 struct drm_device *dev = encoder->dev;
1997 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
1998 struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc);
2046 int radeon_atom_pick_dig_encoder(struct drm_encoder *encoder, int fe_idx)
2048 struct drm_device *dev = encoder->dev;
2050 struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc);
2051 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
2125 * On DCE32 any encoder can drive any block so usually just use crtc id,
2143 if (encoder == test_encoder)
2158 DRM_ERROR("LVDS required digital encoder 2 but it was in use - stealing\n");
2167 DRM_ERROR("Got encoder index incorrect - returning 0\n");
2171 DRM_ERROR("chosen encoder in use %d\n", enc_idx);
2182 struct drm_encoder *encoder;
2184 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
2185 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
2186 struct drm_encoder *ext_encoder = radeon_get_external_encoder(encoder);
2194 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_INIT, 0, 0);
2201 atombios_external_encoder_setup(encoder, ext_encoder,
2207 radeon_atom_encoder_mode_set(struct drm_encoder *encoder,
2211 struct drm_device *dev = encoder->dev;
2213 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
2214 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder);
2220 radeon_atom_encoder_dpms(encoder, DRM_MODE_DPMS_OFF);
2224 atombios_yuv_setup(encoder, true);
2226 atombios_yuv_setup(encoder, false);
2234 atombios_digital_setup(encoder, PANEL_ENCODER_ACTION_ENABLE);
2246 atombios_dvo_setup(encoder, ATOM_ENABLE);
2252 atombios_dac_setup(encoder, ATOM_ENABLE);
2255 atombios_tv_setup(encoder, ATOM_ENABLE);
2257 atombios_tv_setup(encoder, ATOM_DISABLE);
2262 atombios_apply_encoder_quirks(encoder, adjusted_mode);
2264 encoder_mode = atombios_get_encoder_mode(encoder);
2268 radeon_audio_mode_set(encoder, adjusted_mode);
2272 atombios_dac_load_detect(struct drm_encoder *encoder, struct drm_connector *connector)
2274 struct drm_device *dev = encoder->dev;
2276 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
2321 radeon_atom_dac_detect(struct drm_encoder *encoder, struct drm_connector *connector)
2323 struct drm_device *dev = encoder->dev;
2325 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
2329 if (!atombios_dac_load_detect(encoder, connector)) {
2362 radeon_atom_dig_detect(struct drm_encoder *encoder, struct drm_connector *connector)
2364 struct drm_device *dev = encoder->dev;
2366 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
2368 struct drm_encoder *ext_encoder = radeon_get_external_encoder(encoder);
2381 atombios_external_encoder_setup(encoder, ext_encoder,
2409 radeon_atom_ext_encoder_setup_ddc(struct drm_encoder *encoder)
2411 struct drm_encoder *ext_encoder = radeon_get_external_encoder(encoder);
2415 atombios_external_encoder_setup(encoder, ext_encoder,
2420 static void radeon_atom_encoder_prepare(struct drm_encoder *encoder)
2422 struct radeon_device *rdev = encoder->dev->dev_private;
2423 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
2424 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder);
2428 (radeon_encoder_get_dp_bridge_encoder_id(encoder) !=
2434 dig->dig_encoder = radeon_atom_pick_dig_encoder(encoder, -1);
2445 radeon_atom_output_lock(encoder, true);
2461 atombios_set_encoder_crtc_source(encoder);
2464 dce8_program_fmt(encoder);
2466 dce4_program_fmt(encoder);
2468 dce3_program_fmt(encoder);
2470 avivo_program_fmt(encoder);
2473 static void radeon_atom_encoder_commit(struct drm_encoder *encoder)
2476 radeon_atom_encoder_dpms(encoder, DRM_MODE_DPMS_ON);
2477 radeon_atom_output_lock(encoder, false);
2480 static void radeon_atom_encoder_disable(struct drm_encoder *encoder)
2482 struct drm_device *dev = encoder->dev;
2484 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
2489 * the encoder if it's in use by another connector
2503 radeon_atom_encoder_dpms(encoder, DRM_MODE_DPMS_OFF);
2510 atombios_digital_setup(encoder, PANEL_ENCODER_ACTION_DISABLE);
2522 atombios_dvo_setup(encoder, ATOM_DISABLE);
2528 atombios_dac_setup(encoder, ATOM_DISABLE);
2530 atombios_tv_setup(encoder, ATOM_DISABLE);
2535 if (radeon_encoder_is_digital(encoder)) {
2536 if (atombios_get_encoder_mode(encoder) == ATOM_ENCODER_MODE_HDMI) {
2538 radeon_hdmi_enable(rdev, encoder, false);
2540 if (atombios_get_encoder_mode(encoder) != ATOM_ENCODER_MODE_DP_MST) {
2551 static void radeon_atom_ext_prepare(struct drm_encoder *encoder)
2556 static void radeon_atom_ext_commit(struct drm_encoder *encoder)
2562 radeon_atom_ext_mode_set(struct drm_encoder *encoder,
2569 static void radeon_atom_ext_disable(struct drm_encoder *encoder)
2575 radeon_atom_ext_dpms(struct drm_encoder *encoder, int mode)
2608 void radeon_enc_destroy(struct drm_encoder *encoder)
2610 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
2614 drm_encoder_cleanup(encoder);
2664 struct drm_encoder *encoder;
2668 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
2669 radeon_encoder = to_radeon_encoder(encoder);
2682 encoder = &radeon_encoder->base;
2685 encoder->possible_crtcs = 0x1;
2689 encoder->possible_crtcs = 0x3;
2692 encoder->possible_crtcs = 0xf;
2695 encoder->possible_crtcs = 0x3f;
2716 drm_encoder_init(dev, encoder, &radeon_atom_enc_funcs,
2720 drm_encoder_init(dev, encoder, &radeon_atom_enc_funcs,
2724 drm_encoder_helper_add(encoder, &radeon_atom_dig_helper_funcs);
2727 drm_encoder_init(dev, encoder, &radeon_atom_enc_funcs,
2730 drm_encoder_helper_add(encoder, &radeon_atom_dac_helper_funcs);
2735 drm_encoder_init(dev, encoder, &radeon_atom_enc_funcs,
2738 drm_encoder_helper_add(encoder, &radeon_atom_dac_helper_funcs);
2750 drm_encoder_init(dev, encoder, &radeon_atom_enc_funcs,
2754 drm_encoder_init(dev, encoder, &radeon_atom_enc_funcs,
2758 drm_encoder_init(dev, encoder, &radeon_atom_enc_funcs,
2762 drm_encoder_helper_add(encoder, &radeon_atom_dig_helper_funcs);
2776 drm_encoder_init(dev, encoder, &radeon_atom_enc_funcs,
2779 drm_encoder_init(dev, encoder, &radeon_atom_enc_funcs,
2782 drm_encoder_init(dev, encoder, &radeon_atom_enc_funcs,
2784 drm_encoder_helper_add(encoder, &radeon_atom_ext_helper_funcs);