Lines Matching refs:encoder
95 struct drm_encoder *encoder = &radeon_encoder->base;
131 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_LCD_BLOFF, 0, 0);
133 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_BL_BRIGHTNESS_CONTROL, 0, 0);
134 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_LCD_BLON, 0, 0);
163 struct radeon_encoder *radeon_encoder = pdata->encoder;
173 struct radeon_encoder *radeon_encoder = pdata->encoder;
231 pdata->encoder = radeon_encoder;
290 void radeon_atom_backlight_init(struct radeon_encoder *encoder)
294 static void radeon_atom_backlight_exit(struct radeon_encoder *encoder)
304 static bool radeon_atom_mode_fixup(struct drm_encoder *encoder,
308 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
309 struct drm_device *dev = encoder->dev;
312 /* set the active encoder to connector routing */
313 radeon_encoder_set_active_device(encoder);
327 radeon_panel_mode_fixup(encoder, adjusted_mode);
339 radeon_panel_mode_fixup(encoder, adjusted_mode);
344 (radeon_encoder_get_dp_bridge_encoder_id(encoder) != ENCODER_OBJECT_ID_NONE))) {
345 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder);
353 atombios_dac_setup(struct drm_encoder *encoder, int action)
355 struct drm_device *dev = encoder->dev;
357 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
405 atombios_tv_setup(struct drm_encoder *encoder, int action)
407 struct drm_device *dev = encoder->dev;
409 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
460 static u8 radeon_atom_get_bpc(struct drm_encoder *encoder)
464 if (encoder->crtc) {
465 struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc);
494 atombios_dvo_setup(struct drm_encoder *encoder, int action)
496 struct drm_device *dev = encoder->dev;
498 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
519 if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
531 if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
545 args.dvo_v4.ucBitPerColor = radeon_atom_get_bpc(encoder);
566 atombios_digital_setup(struct drm_encoder *encoder, int action)
568 struct drm_device *dev = encoder->dev;
570 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
580 if (atombios_get_encoder_mode(encoder) == ATOM_ENCODER_MODE_HDMI)
622 if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
661 if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
679 atombios_get_encoder_mode(struct drm_encoder *encoder)
681 struct drm_device *dev = encoder->dev;
683 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
689 if (radeon_encoder_is_digital(encoder)) {
697 if (radeon_encoder_get_dp_bridge_encoder_id(encoder) != ENCODER_OBJECT_ID_NONE)
705 connector = radeon_get_connector_for_encoder(encoder);
707 * the connectors tied to the encoder.
710 connector = radeon_get_connector_for_encoder_init(encoder);
798 * - 2 DIG encoder blocks.
805 * - 2 DIG encoder blocks.
811 * - 6 DIG encoder blocks.
823 * - 2 DIG encoder blocks.
831 * crtc -> dig encoder -> UNIPHY/LVTMA (1 or 2 links)
847 atombios_dig_encoder_setup2(struct drm_encoder *encoder, int action, int panel_mode, int enc_override)
849 struct drm_device *dev = encoder->dev;
851 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
853 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder);
871 /* no dig encoder assigned */
898 args.v1.ucEncoderMode = atombios_get_encoder_mode(encoder);
902 else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
935 args.v3.ucEncoderMode = atombios_get_encoder_mode(encoder);
939 else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
950 args.v3.ucBitPerColor = radeon_atom_get_bpc(encoder);
958 args.v4.ucEncoderMode = atombios_get_encoder_mode(encoder);
962 else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
982 args.v4.ucBitPerColor = radeon_atom_get_bpc(encoder);
1003 atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mode)
1005 atombios_dig_encoder_setup2(encoder, action, panel_mode, -1);
1017 atombios_dig_transmitter_setup2(struct drm_encoder *encoder, int action, uint8_t lane_num, uint8_t lane_set, int fe)
1019 struct drm_device *dev = encoder->dev;
1021 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
1037 connector = radeon_get_connector_for_encoder_init(encoder);
1038 /* just needed to avoid bailing in the encoder check. the encoder
1043 connector = radeon_get_connector_for_encoder(encoder);
1058 if (encoder->crtc) {
1059 struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc);
1063 /* no dig encoder assigned */
1067 if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)))
1103 else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1119 !radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock)) {
1146 if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1160 else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1188 if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1202 else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1210 else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1247 if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1261 else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1269 else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1309 if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1345 else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1350 args.v5.ucDigMode = atombios_get_encoder_mode(encoder);
1384 atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t lane_num, uint8_t lane_set)
1386 atombios_dig_transmitter_setup2(encoder, action, lane_num, lane_set, -1);
1439 atombios_external_encoder_setup(struct drm_encoder *encoder,
1443 struct drm_device *dev = encoder->dev;
1445 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
1457 connector = radeon_get_connector_for_encoder_init(encoder);
1459 connector = radeon_get_connector_for_encoder(encoder);
1487 args.v1.sDigEncoder.ucEncoderMode = atombios_get_encoder_mode(encoder);
1493 } else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1504 args.v3.sExtEncoder.ucEncoderMode = atombios_get_encoder_mode(encoder);
1512 } else if (radeon_dig_monitor_is_duallink(encoder, radeon_encoder->pixel_clock))
1527 args.v3.sExtEncoder.ucBitPerColor = radeon_atom_get_bpc(encoder);
1542 atombios_yuv_setup(struct drm_encoder *encoder, bool enable)
1544 struct drm_device *dev = encoder->dev;
1546 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
1547 struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc);
1579 radeon_atom_encoder_dpms_avivo(struct drm_encoder *encoder, int mode)
1581 struct drm_device *dev = encoder->dev;
1583 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
1666 radeon_atom_encoder_dpms_dig(struct drm_encoder *encoder, int mode)
1668 struct drm_device *dev = encoder->dev;
1670 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
1671 struct drm_encoder *ext_encoder = radeon_get_external_encoder(encoder);
1673 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder);
1694 dig->panel_mode = radeon_dp_get_panel_mode(encoder, connector);
1696 /* setup and enable the encoder */
1697 atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_SETUP, 0);
1698 atombios_dig_encoder_setup(encoder,
1703 atombios_external_encoder_setup(encoder, ext_encoder,
1707 /* setup and enable the encoder */
1708 atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_SETUP, 0);
1710 /* setup and enable the encoder and transmitter */
1711 atombios_dig_encoder_setup(encoder, ATOM_ENABLE, 0);
1712 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_SETUP, 0, 0);
1714 if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) && connector) {
1722 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE, 0, 0);
1723 if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) && connector) {
1725 radeon_dp_link_train(encoder, connector);
1727 atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_DP_VIDEO_ON, 0);
1733 atombios_dig_transmitter_setup(encoder,
1737 atombios_external_encoder_setup(encoder, ext_encoder, ATOM_ENABLE);
1748 if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) && connector)
1749 atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_DP_VIDEO_OFF, 0);
1752 atombios_external_encoder_setup(encoder, ext_encoder, ATOM_DISABLE);
1754 atombios_dig_transmitter_setup(encoder,
1757 if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) &&
1762 atombios_dig_transmitter_setup(encoder,
1765 /* disable the encoder and transmitter */
1766 atombios_dig_transmitter_setup(encoder,
1768 atombios_dig_encoder_setup(encoder, ATOM_DISABLE, 0);
1770 if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) && connector) {
1784 radeon_atom_encoder_dpms(struct drm_encoder *encoder, int mode)
1786 struct drm_device *dev = encoder->dev;
1788 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
1789 int encoder_mode = atombios_get_encoder_mode(encoder);
1791 DRM_DEBUG_KMS("encoder dpms %d to mode %d, devices %08x, active_devices %08x\n",
1798 radeon_audio_dpms(encoder, mode);
1809 radeon_atom_encoder_dpms_avivo(encoder, mode);
1816 radeon_atom_encoder_dpms_dig(encoder, mode);
1822 atombios_dvo_setup(encoder, ATOM_ENABLE);
1827 atombios_dvo_setup(encoder, ATOM_DISABLE);
1831 radeon_atom_encoder_dpms_dig(encoder, mode);
1833 radeon_atom_encoder_dpms_avivo(encoder, mode);
1840 atombios_dac_setup(encoder, ATOM_ENABLE);
1845 atombios_dac_setup(encoder, ATOM_DISABLE);
1849 radeon_atom_encoder_dpms_avivo(encoder, mode);
1855 radeon_atombios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false);
1865 atombios_set_encoder_crtc_source(struct drm_encoder *encoder)
1867 struct drm_device *dev = encoder->dev;
1869 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
1870 struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc);
1933 if (radeon_encoder_get_dp_bridge_encoder_id(encoder) != ENCODER_OBJECT_ID_NONE) {
1934 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder);
1941 args.v2.ucEncodeMode = atombios_get_encoder_mode(encoder);
1945 args.v2.ucEncodeMode = atombios_get_encoder_mode(encoder);
2009 radeon_atombios_encoder_crtc_scratch_regs(encoder, radeon_crtc->crtc_id);
2013 atombios_set_mst_encoder_crtc_source(struct drm_encoder *encoder, int fe)
2015 struct drm_device *dev = encoder->dev;
2017 struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc);
2060 atombios_apply_encoder_quirks(struct drm_encoder *encoder,
2063 struct drm_device *dev = encoder->dev;
2065 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
2066 struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc);
2114 int radeon_atom_pick_dig_encoder(struct drm_encoder *encoder, int fe_idx)
2116 struct drm_device *dev = encoder->dev;
2118 struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc);
2119 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
2193 * On DCE32 any encoder can drive any block so usually just use crtc id,
2211 if (encoder == test_encoder)
2226 DRM_ERROR("LVDS required digital encoder 2 but it was in use - stealing\n");
2235 DRM_ERROR("Got encoder index incorrect - returning 0\n");
2239 DRM_ERROR("chosen encoder in use %d\n", enc_idx);
2250 struct drm_encoder *encoder;
2252 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
2253 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
2254 struct drm_encoder *ext_encoder = radeon_get_external_encoder(encoder);
2262 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_INIT, 0, 0);
2269 atombios_external_encoder_setup(encoder, ext_encoder,
2275 radeon_atom_encoder_mode_set(struct drm_encoder *encoder,
2279 struct drm_device *dev = encoder->dev;
2281 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
2282 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder);
2288 radeon_atom_encoder_dpms(encoder, DRM_MODE_DPMS_OFF);
2292 atombios_yuv_setup(encoder, true);
2294 atombios_yuv_setup(encoder, false);
2302 atombios_digital_setup(encoder, PANEL_ENCODER_ACTION_ENABLE);
2314 atombios_dvo_setup(encoder, ATOM_ENABLE);
2320 atombios_dac_setup(encoder, ATOM_ENABLE);
2323 atombios_tv_setup(encoder, ATOM_ENABLE);
2325 atombios_tv_setup(encoder, ATOM_DISABLE);
2330 atombios_apply_encoder_quirks(encoder, adjusted_mode);
2332 encoder_mode = atombios_get_encoder_mode(encoder);
2336 radeon_audio_mode_set(encoder, adjusted_mode);
2340 atombios_dac_load_detect(struct drm_encoder *encoder, struct drm_connector *connector)
2342 struct drm_device *dev = encoder->dev;
2344 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
2389 radeon_atom_dac_detect(struct drm_encoder *encoder, struct drm_connector *connector)
2391 struct drm_device *dev = encoder->dev;
2393 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
2397 if (!atombios_dac_load_detect(encoder, connector)) {
2430 radeon_atom_dig_detect(struct drm_encoder *encoder, struct drm_connector *connector)
2432 struct drm_device *dev = encoder->dev;
2434 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
2436 struct drm_encoder *ext_encoder = radeon_get_external_encoder(encoder);
2449 atombios_external_encoder_setup(encoder, ext_encoder,
2477 radeon_atom_ext_encoder_setup_ddc(struct drm_encoder *encoder)
2479 struct drm_encoder *ext_encoder = radeon_get_external_encoder(encoder);
2483 atombios_external_encoder_setup(encoder, ext_encoder,
2488 static void radeon_atom_encoder_prepare(struct drm_encoder *encoder)
2490 struct radeon_device *rdev = encoder->dev->dev_private;
2491 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
2492 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder);
2496 (radeon_encoder_get_dp_bridge_encoder_id(encoder) !=
2502 dig->dig_encoder = radeon_atom_pick_dig_encoder(encoder, -1);
2513 radeon_atom_output_lock(encoder, true);
2529 atombios_set_encoder_crtc_source(encoder);
2532 dce8_program_fmt(encoder);
2534 dce4_program_fmt(encoder);
2536 dce3_program_fmt(encoder);
2538 avivo_program_fmt(encoder);
2541 static void radeon_atom_encoder_commit(struct drm_encoder *encoder)
2544 radeon_atom_encoder_dpms(encoder, DRM_MODE_DPMS_ON);
2545 radeon_atom_output_lock(encoder, false);
2548 static void radeon_atom_encoder_disable(struct drm_encoder *encoder)
2550 struct drm_device *dev = encoder->dev;
2552 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
2557 * the encoder if it's in use by another connector
2571 radeon_atom_encoder_dpms(encoder, DRM_MODE_DPMS_OFF);
2578 atombios_digital_setup(encoder, PANEL_ENCODER_ACTION_DISABLE);
2590 atombios_dvo_setup(encoder, ATOM_DISABLE);
2596 atombios_dac_setup(encoder, ATOM_DISABLE);
2598 atombios_tv_setup(encoder, ATOM_DISABLE);
2603 if (radeon_encoder_is_digital(encoder)) {
2604 if (atombios_get_encoder_mode(encoder) == ATOM_ENCODER_MODE_HDMI) {
2606 radeon_hdmi_enable(rdev, encoder, false);
2608 if (atombios_get_encoder_mode(encoder) != ATOM_ENCODER_MODE_DP_MST) {
2619 static void radeon_atom_ext_prepare(struct drm_encoder *encoder)
2624 static void radeon_atom_ext_commit(struct drm_encoder *encoder)
2630 radeon_atom_ext_mode_set(struct drm_encoder *encoder,
2637 static void radeon_atom_ext_disable(struct drm_encoder *encoder)
2643 radeon_atom_ext_dpms(struct drm_encoder *encoder, int mode)
2676 void radeon_enc_destroy(struct drm_encoder *encoder)
2678 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
2682 drm_encoder_cleanup(encoder);
2732 struct drm_encoder *encoder;
2736 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
2737 radeon_encoder = to_radeon_encoder(encoder);
2750 encoder = &radeon_encoder->base;
2753 encoder->possible_crtcs = 0x1;
2757 encoder->possible_crtcs = 0x3;
2760 encoder->possible_crtcs = 0xf;
2763 encoder->possible_crtcs = 0x3f;
2784 drm_encoder_init(dev, encoder, &radeon_atom_enc_funcs,
2788 drm_encoder_init(dev, encoder, &radeon_atom_enc_funcs,
2792 drm_encoder_helper_add(encoder, &radeon_atom_dig_helper_funcs);
2795 drm_encoder_init(dev, encoder, &radeon_atom_enc_funcs,
2798 drm_encoder_helper_add(encoder, &radeon_atom_dac_helper_funcs);
2803 drm_encoder_init(dev, encoder, &radeon_atom_enc_funcs,
2806 drm_encoder_helper_add(encoder, &radeon_atom_dac_helper_funcs);
2818 drm_encoder_init(dev, encoder, &radeon_atom_enc_funcs,
2822 drm_encoder_init(dev, encoder, &radeon_atom_enc_funcs,
2826 drm_encoder_init(dev, encoder, &radeon_atom_enc_funcs,
2830 drm_encoder_helper_add(encoder, &radeon_atom_dig_helper_funcs);
2844 drm_encoder_init(dev, encoder, &radeon_atom_enc_funcs,
2847 drm_encoder_init(dev, encoder, &radeon_atom_enc_funcs,
2850 drm_encoder_init(dev, encoder, &radeon_atom_enc_funcs,
2852 drm_encoder_helper_add(encoder, &radeon_atom_ext_helper_funcs);