Lines Matching +full:v1 +full:- +full:v6

2  * Copyright 2007-11 Advanced Micro Devices, Inc.
74 struct drm_device *dev = amdgpu_encoder->base.dev; in amdgpu_atombios_encoder_get_backlight_level()
77 if (!(adev->mode_info.firmware_flags & ATOM_BIOS_INFO_BL_CONTROLLED_BY_GPU)) in amdgpu_atombios_encoder_get_backlight_level()
87 struct drm_encoder *encoder = &amdgpu_encoder->base; in amdgpu_atombios_encoder_set_backlight_level()
88 struct drm_device *dev = amdgpu_encoder->base.dev; in amdgpu_atombios_encoder_set_backlight_level()
92 if (!(adev->mode_info.firmware_flags & ATOM_BIOS_INFO_BL_CONTROLLED_BY_GPU)) in amdgpu_atombios_encoder_set_backlight_level()
95 if ((amdgpu_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) && in amdgpu_atombios_encoder_set_backlight_level()
96 amdgpu_encoder->enc_priv) { in amdgpu_atombios_encoder_set_backlight_level()
97 dig = amdgpu_encoder->enc_priv; in amdgpu_atombios_encoder_set_backlight_level()
98 dig->backlight_level = level; in amdgpu_atombios_encoder_set_backlight_level()
99 amdgpu_atombios_encoder_set_backlight_level_to_reg(adev, dig->backlight_level); in amdgpu_atombios_encoder_set_backlight_level()
101 switch (amdgpu_encoder->encoder_id) { in amdgpu_atombios_encoder_set_backlight_level()
107 if (dig->backlight_level == 0) in amdgpu_atombios_encoder_set_backlight_level()
128 if (bd->props.brightness < 0) in amdgpu_atombios_encoder_backlight_level()
130 else if (bd->props.brightness > AMDGPU_MAX_BL_LEVEL) in amdgpu_atombios_encoder_backlight_level()
133 level = bd->props.brightness; in amdgpu_atombios_encoder_backlight_level()
141 struct amdgpu_encoder *amdgpu_encoder = pdata->encoder; in amdgpu_atombios_encoder_update_backlight_status()
153 struct amdgpu_encoder *amdgpu_encoder = pdata->encoder; in amdgpu_atombios_encoder_get_backlight_brightness()
154 struct drm_device *dev = amdgpu_encoder->base.dev; in amdgpu_atombios_encoder_get_backlight_brightness()
168 struct drm_device *dev = amdgpu_encoder->base.dev; in amdgpu_atombios_encoder_init_backlight()
179 if ((adev->pdev->subsystem_vendor == PCI_VENDOR_ID_APPLE) && in amdgpu_atombios_encoder_init_backlight()
180 (adev->pdev->device == 0x6741)) in amdgpu_atombios_encoder_init_backlight()
183 if (!amdgpu_encoder->enc_priv) in amdgpu_atombios_encoder_init_backlight()
186 if (!(adev->mode_info.firmware_flags & ATOM_BIOS_INFO_BL_CONTROLLED_BY_GPU)) in amdgpu_atombios_encoder_init_backlight()
204 "amdgpu_bl%d", dev->primary->index); in amdgpu_atombios_encoder_init_backlight()
205 bd = backlight_device_register(bl_name, drm_connector->kdev, in amdgpu_atombios_encoder_init_backlight()
212 pdata->encoder = amdgpu_encoder; in amdgpu_atombios_encoder_init_backlight()
214 dig = amdgpu_encoder->enc_priv; in amdgpu_atombios_encoder_init_backlight()
215 dig->bl_dev = bd; in amdgpu_atombios_encoder_init_backlight()
217 bd->props.brightness = amdgpu_atombios_encoder_get_backlight_brightness(bd); in amdgpu_atombios_encoder_init_backlight()
218 bd->props.power = FB_BLANK_UNBLANK; in amdgpu_atombios_encoder_init_backlight()
238 struct drm_device *dev = amdgpu_encoder->base.dev; in amdgpu_atombios_encoder_fini_backlight()
243 if (!amdgpu_encoder->enc_priv) in amdgpu_atombios_encoder_fini_backlight()
246 if (!(adev->mode_info.firmware_flags & ATOM_BIOS_INFO_BL_CONTROLLED_BY_GPU)) in amdgpu_atombios_encoder_fini_backlight()
249 dig = amdgpu_encoder->enc_priv; in amdgpu_atombios_encoder_fini_backlight()
250 bd = dig->bl_dev; in amdgpu_atombios_encoder_fini_backlight()
251 dig->bl_dev = NULL; in amdgpu_atombios_encoder_fini_backlight()
267 switch (amdgpu_encoder->encoder_id) { in amdgpu_atombios_encoder_is_digital()
290 if ((mode->flags & DRM_MODE_FLAG_INTERLACE) in amdgpu_atombios_encoder_mode_fixup()
291 && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2))) in amdgpu_atombios_encoder_mode_fixup()
292 adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2; in amdgpu_atombios_encoder_mode_fixup()
295 if (mode->crtc_vsync_start == mode->crtc_vdisplay) in amdgpu_atombios_encoder_mode_fixup()
296 adjusted_mode->crtc_vsync_start++; in amdgpu_atombios_encoder_mode_fixup()
299 if (amdgpu_encoder->active_device & (ATOM_DEVICE_LCD_SUPPORT)) in amdgpu_atombios_encoder_mode_fixup()
301 else if (amdgpu_encoder->rmx_type != RMX_OFF) in amdgpu_atombios_encoder_mode_fixup()
304 if ((amdgpu_encoder->active_device & (ATOM_DEVICE_DFP_SUPPORT | ATOM_DEVICE_LCD_SUPPORT)) || in amdgpu_atombios_encoder_mode_fixup()
316 struct drm_device *dev = encoder->dev; in amdgpu_atombios_encoder_setup_dac()
324 switch (amdgpu_encoder->encoder_id) { in amdgpu_atombios_encoder_setup_dac()
337 args.usPixelClock = cpu_to_le16(amdgpu_encoder->pixel_clock / 10); in amdgpu_atombios_encoder_setup_dac()
339 amdgpu_atom_execute_table(adev->mode_info.atom_context, index, (uint32_t *)&args); in amdgpu_atombios_encoder_setup_dac()
347 if (encoder->crtc) { in amdgpu_atombios_encoder_get_bpc()
348 struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(encoder->crtc); in amdgpu_atombios_encoder_get_bpc()
349 bpc = amdgpu_crtc->bpc; in amdgpu_atombios_encoder_get_bpc()
379 struct drm_device *dev = encoder->dev; in amdgpu_atombios_encoder_setup_dvo()
388 if (!amdgpu_atom_parse_cmd_header(adev->mode_info.atom_context, index, &frev, &crev)) in amdgpu_atombios_encoder_setup_dvo()
398 if (amdgpu_dig_monitor_is_duallink(encoder, amdgpu_encoder->pixel_clock)) in amdgpu_atombios_encoder_setup_dvo()
406 args.dvo.sDVOEncoder.usPixelClock = cpu_to_le16(amdgpu_encoder->pixel_clock / 10); in amdgpu_atombios_encoder_setup_dvo()
410 if (amdgpu_dig_monitor_is_duallink(encoder, amdgpu_encoder->pixel_clock)) in amdgpu_atombios_encoder_setup_dvo()
416 args.dvo_v3.usPixelClock = cpu_to_le16(amdgpu_encoder->pixel_clock / 10); in amdgpu_atombios_encoder_setup_dvo()
422 args.dvo_v4.usPixelClock = cpu_to_le16(amdgpu_encoder->pixel_clock / 10); in amdgpu_atombios_encoder_setup_dvo()
436 amdgpu_atom_execute_table(adev->mode_info.atom_context, index, (uint32_t *)&args); in amdgpu_atombios_encoder_setup_dvo()
451 if ((amdgpu_encoder->encoder_id == ENCODER_OBJECT_ID_INTERNAL_DVO1) || in amdgpu_atombios_encoder_get_encoder_mode()
452 (amdgpu_encoder->encoder_id == ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1)) in amdgpu_atombios_encoder_get_encoder_mode()
463 switch (connector->connector_type) { in amdgpu_atombios_encoder_get_encoder_mode()
465 case DRM_MODE_CONNECTOR_HDMIB: /* HDMI-B is basically DL-DVI; analog works fine */ in amdgpu_atombios_encoder_get_encoder_mode()
467 if (amdgpu_connector->use_digital && in amdgpu_atombios_encoder_get_encoder_mode()
468 (amdgpu_connector->audio == AMDGPU_AUDIO_ENABLE)) in amdgpu_atombios_encoder_get_encoder_mode()
470 else if (connector->display_info.is_hdmi && in amdgpu_atombios_encoder_get_encoder_mode()
471 (amdgpu_connector->audio == AMDGPU_AUDIO_AUTO)) in amdgpu_atombios_encoder_get_encoder_mode()
473 else if (amdgpu_connector->use_digital) in amdgpu_atombios_encoder_get_encoder_mode()
477 } else if (amdgpu_connector->use_digital) { in amdgpu_atombios_encoder_get_encoder_mode()
487 if (amdgpu_connector->audio == AMDGPU_AUDIO_ENABLE) in amdgpu_atombios_encoder_get_encoder_mode()
489 else if (connector->display_info.is_hdmi && in amdgpu_atombios_encoder_get_encoder_mode()
490 (amdgpu_connector->audio == AMDGPU_AUDIO_AUTO)) in amdgpu_atombios_encoder_get_encoder_mode()
500 dig_connector = amdgpu_connector->con_priv; in amdgpu_atombios_encoder_get_encoder_mode()
501 if ((dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) || in amdgpu_atombios_encoder_get_encoder_mode()
502 (dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP)) { in amdgpu_atombios_encoder_get_encoder_mode()
505 if (amdgpu_connector->audio == AMDGPU_AUDIO_ENABLE) in amdgpu_atombios_encoder_get_encoder_mode()
507 else if (connector->display_info.is_hdmi && in amdgpu_atombios_encoder_get_encoder_mode()
508 (amdgpu_connector->audio == AMDGPU_AUDIO_AUTO)) in amdgpu_atombios_encoder_get_encoder_mode()
532 * - 3 DIG transmitter blocks UNIPHY0/1/2 (links A and B).
534 * - 6 DIG encoder blocks.
535 * - DIG to PHY mapping is hardcoded
544 * crtc -> dig encoder -> UNIPHY/LVTMA (1 or 2 links)
546 * crtc0 -> dig2 -> LVTMA links A+B -> TMDS/HDMI
547 * crtc1 -> dig1 -> UNIPHY0 link B -> DP
548 * crtc0 -> dig1 -> UNIPHY2 link A -> LVDS
549 * crtc1 -> dig2 -> UNIPHY1 link B+A -> TMDS/HDMI
553 DIG_ENCODER_CONTROL_PS_ALLOCATION v1; member
564 struct drm_device *dev = encoder->dev; in amdgpu_atombios_encoder_setup_dig_encoder()
567 struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv; in amdgpu_atombios_encoder_setup_dig_encoder()
579 amdgpu_connector->con_priv; in amdgpu_atombios_encoder_setup_dig_encoder()
581 dp_clock = dig_connector->dp_clock; in amdgpu_atombios_encoder_setup_dig_encoder()
582 dp_lane_count = dig_connector->dp_lane_count; in amdgpu_atombios_encoder_setup_dig_encoder()
583 hpd_id = amdgpu_connector->hpd.hpd; in amdgpu_atombios_encoder_setup_dig_encoder()
587 if (dig->dig_encoder == -1) in amdgpu_atombios_encoder_setup_dig_encoder()
592 if (!amdgpu_atom_parse_cmd_header(adev->mode_info.atom_context, index, &frev, &crev)) in amdgpu_atombios_encoder_setup_dig_encoder()
599 args.v1.ucAction = action; in amdgpu_atombios_encoder_setup_dig_encoder()
600 args.v1.usPixelClock = cpu_to_le16(amdgpu_encoder->pixel_clock / 10); in amdgpu_atombios_encoder_setup_dig_encoder()
604 args.v1.ucEncoderMode = amdgpu_atombios_encoder_get_encoder_mode(encoder); in amdgpu_atombios_encoder_setup_dig_encoder()
606 if (ENCODER_MODE_IS_DP(args.v1.ucEncoderMode)) in amdgpu_atombios_encoder_setup_dig_encoder()
607 args.v1.ucLaneNum = dp_lane_count; in amdgpu_atombios_encoder_setup_dig_encoder()
608 else if (amdgpu_dig_monitor_is_duallink(encoder, amdgpu_encoder->pixel_clock)) in amdgpu_atombios_encoder_setup_dig_encoder()
609 args.v1.ucLaneNum = 8; in amdgpu_atombios_encoder_setup_dig_encoder()
611 args.v1.ucLaneNum = 4; in amdgpu_atombios_encoder_setup_dig_encoder()
613 if (ENCODER_MODE_IS_DP(args.v1.ucEncoderMode) && (dp_clock == 270000)) in amdgpu_atombios_encoder_setup_dig_encoder()
614 args.v1.ucConfig |= ATOM_ENCODER_CONFIG_DPLINKRATE_2_70GHZ; in amdgpu_atombios_encoder_setup_dig_encoder()
615 switch (amdgpu_encoder->encoder_id) { in amdgpu_atombios_encoder_setup_dig_encoder()
617 args.v1.ucConfig = ATOM_ENCODER_CONFIG_V2_TRANSMITTER1; in amdgpu_atombios_encoder_setup_dig_encoder()
621 args.v1.ucConfig = ATOM_ENCODER_CONFIG_V2_TRANSMITTER2; in amdgpu_atombios_encoder_setup_dig_encoder()
624 args.v1.ucConfig = ATOM_ENCODER_CONFIG_V2_TRANSMITTER3; in amdgpu_atombios_encoder_setup_dig_encoder()
627 if (dig->linkb) in amdgpu_atombios_encoder_setup_dig_encoder()
628 args.v1.ucConfig |= ATOM_ENCODER_CONFIG_LINKB; in amdgpu_atombios_encoder_setup_dig_encoder()
630 args.v1.ucConfig |= ATOM_ENCODER_CONFIG_LINKA; in amdgpu_atombios_encoder_setup_dig_encoder()
635 args.v3.usPixelClock = cpu_to_le16(amdgpu_encoder->pixel_clock / 10); in amdgpu_atombios_encoder_setup_dig_encoder()
643 else if (amdgpu_dig_monitor_is_duallink(encoder, amdgpu_encoder->pixel_clock)) in amdgpu_atombios_encoder_setup_dig_encoder()
649 args.v1.ucConfig |= ATOM_ENCODER_CONFIG_V3_DPLINKRATE_2_70GHZ; in amdgpu_atombios_encoder_setup_dig_encoder()
650 args.v3.acConfig.ucDigSel = dig->dig_encoder; in amdgpu_atombios_encoder_setup_dig_encoder()
655 args.v4.usPixelClock = cpu_to_le16(amdgpu_encoder->pixel_clock / 10); in amdgpu_atombios_encoder_setup_dig_encoder()
663 else if (amdgpu_dig_monitor_is_duallink(encoder, amdgpu_encoder->pixel_clock)) in amdgpu_atombios_encoder_setup_dig_encoder()
670 args.v1.ucConfig |= ATOM_ENCODER_CONFIG_V4_DPLINKRATE_5_40GHZ; in amdgpu_atombios_encoder_setup_dig_encoder()
672 args.v1.ucConfig |= ATOM_ENCODER_CONFIG_V4_DPLINKRATE_3_24GHZ; in amdgpu_atombios_encoder_setup_dig_encoder()
674 args.v1.ucConfig |= ATOM_ENCODER_CONFIG_V4_DPLINKRATE_2_70GHZ; in amdgpu_atombios_encoder_setup_dig_encoder()
676 args.v1.ucConfig |= ATOM_ENCODER_CONFIG_V4_DPLINKRATE_1_62GHZ; in amdgpu_atombios_encoder_setup_dig_encoder()
678 args.v4.acConfig.ucDigSel = dig->dig_encoder; in amdgpu_atombios_encoder_setup_dig_encoder()
690 args.v5.asDPPanelModeParam.ucDigId = dig->dig_encoder; in amdgpu_atombios_encoder_setup_dig_encoder()
694 args.v5.asStreamParam.ucDigId = dig->dig_encoder; in amdgpu_atombios_encoder_setup_dig_encoder()
700 amdgpu_encoder->pixel_clock)) in amdgpu_atombios_encoder_setup_dig_encoder()
705 cpu_to_le32(amdgpu_encoder->pixel_clock / 10); in amdgpu_atombios_encoder_setup_dig_encoder()
719 args.v5.asCmdParam.ucDigId = dig->dig_encoder; in amdgpu_atombios_encoder_setup_dig_encoder()
736 amdgpu_atom_execute_table(adev->mode_info.atom_context, index, (uint32_t *)&args); in amdgpu_atombios_encoder_setup_dig_encoder()
741 DIG_TRANSMITTER_CONTROL_PS_ALLOCATION v1; member
746 DIG_TRANSMITTER_CONTROL_PARAMETERS_V1_6 v6; member
753 struct drm_device *dev = encoder->dev; in amdgpu_atombios_encoder_setup_dig_transmitter()
756 struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv; in amdgpu_atombios_encoder_setup_dig_transmitter()
766 int dig_encoder = dig->dig_encoder; in amdgpu_atombios_encoder_setup_dig_transmitter()
781 amdgpu_connector->con_priv; in amdgpu_atombios_encoder_setup_dig_transmitter()
783 hpd_id = amdgpu_connector->hpd.hpd; in amdgpu_atombios_encoder_setup_dig_transmitter()
784 dp_clock = dig_connector->dp_clock; in amdgpu_atombios_encoder_setup_dig_transmitter()
785 dp_lane_count = dig_connector->dp_lane_count; in amdgpu_atombios_encoder_setup_dig_transmitter()
787 (amdgpu_connector->connector_object_id & OBJECT_ID_MASK) >> OBJECT_ID_SHIFT; in amdgpu_atombios_encoder_setup_dig_transmitter()
790 if (encoder->crtc) { in amdgpu_atombios_encoder_setup_dig_transmitter()
791 struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(encoder->crtc); in amdgpu_atombios_encoder_setup_dig_transmitter()
792 pll_id = amdgpu_crtc->pll_id; in amdgpu_atombios_encoder_setup_dig_transmitter()
796 if (dig_encoder == -1) in amdgpu_atombios_encoder_setup_dig_transmitter()
804 switch (amdgpu_encoder->encoder_id) { in amdgpu_atombios_encoder_setup_dig_transmitter()
819 if (!amdgpu_atom_parse_cmd_header(adev->mode_info.atom_context, index, &frev, &crev)) in amdgpu_atombios_encoder_setup_dig_transmitter()
826 args.v1.ucAction = action; in amdgpu_atombios_encoder_setup_dig_transmitter()
828 args.v1.usInitInfo = cpu_to_le16(connector_object_id); in amdgpu_atombios_encoder_setup_dig_transmitter()
830 args.v1.asMode.ucLaneSel = lane_num; in amdgpu_atombios_encoder_setup_dig_transmitter()
831 args.v1.asMode.ucLaneSet = lane_set; in amdgpu_atombios_encoder_setup_dig_transmitter()
834 args.v1.usPixelClock = cpu_to_le16(dp_clock / 10); in amdgpu_atombios_encoder_setup_dig_transmitter()
835 else if (amdgpu_dig_monitor_is_duallink(encoder, amdgpu_encoder->pixel_clock)) in amdgpu_atombios_encoder_setup_dig_transmitter()
836 args.v1.usPixelClock = cpu_to_le16((amdgpu_encoder->pixel_clock / 2) / 10); in amdgpu_atombios_encoder_setup_dig_transmitter()
838 args.v1.usPixelClock = cpu_to_le16(amdgpu_encoder->pixel_clock / 10); in amdgpu_atombios_encoder_setup_dig_transmitter()
841 args.v1.ucConfig = ATOM_TRANSMITTER_CONFIG_CLKSRC_PPLL; in amdgpu_atombios_encoder_setup_dig_transmitter()
844 args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_DIG2_ENCODER; in amdgpu_atombios_encoder_setup_dig_transmitter()
846 args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_DIG1_ENCODER; in amdgpu_atombios_encoder_setup_dig_transmitter()
848 if (dig->linkb) in amdgpu_atombios_encoder_setup_dig_transmitter()
849 args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_LINKB; in amdgpu_atombios_encoder_setup_dig_transmitter()
851 args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_LINKA; in amdgpu_atombios_encoder_setup_dig_transmitter()
854 args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_COHERENT; in amdgpu_atombios_encoder_setup_dig_transmitter()
855 else if (amdgpu_encoder->devices & (ATOM_DEVICE_DFP_SUPPORT)) { in amdgpu_atombios_encoder_setup_dig_transmitter()
856 if (dig->coherent_mode) in amdgpu_atombios_encoder_setup_dig_transmitter()
857 args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_COHERENT; in amdgpu_atombios_encoder_setup_dig_transmitter()
858 if (amdgpu_dig_monitor_is_duallink(encoder, amdgpu_encoder->pixel_clock)) in amdgpu_atombios_encoder_setup_dig_transmitter()
859 args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_8LANE_LINK; in amdgpu_atombios_encoder_setup_dig_transmitter()
872 else if (amdgpu_dig_monitor_is_duallink(encoder, amdgpu_encoder->pixel_clock)) in amdgpu_atombios_encoder_setup_dig_transmitter()
873 args.v2.usPixelClock = cpu_to_le16((amdgpu_encoder->pixel_clock / 2) / 10); in amdgpu_atombios_encoder_setup_dig_transmitter()
875 args.v2.usPixelClock = cpu_to_le16(amdgpu_encoder->pixel_clock / 10); in amdgpu_atombios_encoder_setup_dig_transmitter()
879 if (dig->linkb) in amdgpu_atombios_encoder_setup_dig_transmitter()
882 switch (amdgpu_encoder->encoder_id) { in amdgpu_atombios_encoder_setup_dig_transmitter()
897 } else if (amdgpu_encoder->devices & (ATOM_DEVICE_DFP_SUPPORT)) { in amdgpu_atombios_encoder_setup_dig_transmitter()
898 if (dig->coherent_mode) in amdgpu_atombios_encoder_setup_dig_transmitter()
900 if (amdgpu_dig_monitor_is_duallink(encoder, amdgpu_encoder->pixel_clock)) in amdgpu_atombios_encoder_setup_dig_transmitter()
914 else if (amdgpu_dig_monitor_is_duallink(encoder, amdgpu_encoder->pixel_clock)) in amdgpu_atombios_encoder_setup_dig_transmitter()
915 args.v3.usPixelClock = cpu_to_le16((amdgpu_encoder->pixel_clock / 2) / 10); in amdgpu_atombios_encoder_setup_dig_transmitter()
917 args.v3.usPixelClock = cpu_to_le16(amdgpu_encoder->pixel_clock / 10); in amdgpu_atombios_encoder_setup_dig_transmitter()
922 else if (amdgpu_dig_monitor_is_duallink(encoder, amdgpu_encoder->pixel_clock)) in amdgpu_atombios_encoder_setup_dig_transmitter()
927 if (dig->linkb) in amdgpu_atombios_encoder_setup_dig_transmitter()
937 if (is_dp && adev->clock.dp_extclk) in amdgpu_atombios_encoder_setup_dig_transmitter()
942 switch (amdgpu_encoder->encoder_id) { in amdgpu_atombios_encoder_setup_dig_transmitter()
956 else if (amdgpu_encoder->devices & (ATOM_DEVICE_DFP_SUPPORT)) { in amdgpu_atombios_encoder_setup_dig_transmitter()
957 if (dig->coherent_mode) in amdgpu_atombios_encoder_setup_dig_transmitter()
959 if (amdgpu_dig_monitor_is_duallink(encoder, amdgpu_encoder->pixel_clock)) in amdgpu_atombios_encoder_setup_dig_transmitter()
973 else if (amdgpu_dig_monitor_is_duallink(encoder, amdgpu_encoder->pixel_clock)) in amdgpu_atombios_encoder_setup_dig_transmitter()
974 args.v4.usPixelClock = cpu_to_le16((amdgpu_encoder->pixel_clock / 2) / 10); in amdgpu_atombios_encoder_setup_dig_transmitter()
976 args.v4.usPixelClock = cpu_to_le16(amdgpu_encoder->pixel_clock / 10); in amdgpu_atombios_encoder_setup_dig_transmitter()
981 else if (amdgpu_dig_monitor_is_duallink(encoder, amdgpu_encoder->pixel_clock)) in amdgpu_atombios_encoder_setup_dig_transmitter()
986 if (dig->linkb) in amdgpu_atombios_encoder_setup_dig_transmitter()
997 if (adev->clock.dp_extclk) in amdgpu_atombios_encoder_setup_dig_transmitter()
1004 switch (amdgpu_encoder->encoder_id) { in amdgpu_atombios_encoder_setup_dig_transmitter()
1018 else if (amdgpu_encoder->devices & (ATOM_DEVICE_DFP_SUPPORT)) { in amdgpu_atombios_encoder_setup_dig_transmitter()
1019 if (dig->coherent_mode) in amdgpu_atombios_encoder_setup_dig_transmitter()
1021 if (amdgpu_dig_monitor_is_duallink(encoder, amdgpu_encoder->pixel_clock)) in amdgpu_atombios_encoder_setup_dig_transmitter()
1030 args.v5.usSymClock = cpu_to_le16(amdgpu_encoder->pixel_clock / 10); in amdgpu_atombios_encoder_setup_dig_transmitter()
1032 switch (amdgpu_encoder->encoder_id) { in amdgpu_atombios_encoder_setup_dig_transmitter()
1034 if (dig->linkb) in amdgpu_atombios_encoder_setup_dig_transmitter()
1040 if (dig->linkb) in amdgpu_atombios_encoder_setup_dig_transmitter()
1046 if (dig->linkb) in amdgpu_atombios_encoder_setup_dig_transmitter()
1057 else if (amdgpu_dig_monitor_is_duallink(encoder, amdgpu_encoder->pixel_clock)) in amdgpu_atombios_encoder_setup_dig_transmitter()
1064 if (is_dp && adev->clock.dp_extclk) in amdgpu_atombios_encoder_setup_dig_transmitter()
1071 else if (amdgpu_encoder->devices & (ATOM_DEVICE_DFP_SUPPORT)) { in amdgpu_atombios_encoder_setup_dig_transmitter()
1072 if (dig->coherent_mode) in amdgpu_atombios_encoder_setup_dig_transmitter()
1083 args.v6.ucAction = action; in amdgpu_atombios_encoder_setup_dig_transmitter()
1085 args.v6.ulSymClock = cpu_to_le32(dp_clock / 10); in amdgpu_atombios_encoder_setup_dig_transmitter()
1087 args.v6.ulSymClock = cpu_to_le32(amdgpu_encoder->pixel_clock / 10); in amdgpu_atombios_encoder_setup_dig_transmitter()
1089 switch (amdgpu_encoder->encoder_id) { in amdgpu_atombios_encoder_setup_dig_transmitter()
1091 if (dig->linkb) in amdgpu_atombios_encoder_setup_dig_transmitter()
1092 args.v6.ucPhyId = ATOM_PHY_ID_UNIPHYB; in amdgpu_atombios_encoder_setup_dig_transmitter()
1094 args.v6.ucPhyId = ATOM_PHY_ID_UNIPHYA; in amdgpu_atombios_encoder_setup_dig_transmitter()
1097 if (dig->linkb) in amdgpu_atombios_encoder_setup_dig_transmitter()
1098 args.v6.ucPhyId = ATOM_PHY_ID_UNIPHYD; in amdgpu_atombios_encoder_setup_dig_transmitter()
1100 args.v6.ucPhyId = ATOM_PHY_ID_UNIPHYC; in amdgpu_atombios_encoder_setup_dig_transmitter()
1103 if (dig->linkb) in amdgpu_atombios_encoder_setup_dig_transmitter()
1104 args.v6.ucPhyId = ATOM_PHY_ID_UNIPHYF; in amdgpu_atombios_encoder_setup_dig_transmitter()
1106 args.v6.ucPhyId = ATOM_PHY_ID_UNIPHYE; in amdgpu_atombios_encoder_setup_dig_transmitter()
1109 args.v6.ucPhyId = ATOM_PHY_ID_UNIPHYG; in amdgpu_atombios_encoder_setup_dig_transmitter()
1113 args.v6.ucLaneNum = dp_lane_count; in amdgpu_atombios_encoder_setup_dig_transmitter()
1114 else if (amdgpu_dig_monitor_is_duallink(encoder, amdgpu_encoder->pixel_clock)) in amdgpu_atombios_encoder_setup_dig_transmitter()
1115 args.v6.ucLaneNum = 8; in amdgpu_atombios_encoder_setup_dig_transmitter()
1117 args.v6.ucLaneNum = 4; in amdgpu_atombios_encoder_setup_dig_transmitter()
1118 args.v6.ucConnObjId = connector_object_id; in amdgpu_atombios_encoder_setup_dig_transmitter()
1120 args.v6.ucDPLaneSet = lane_set; in amdgpu_atombios_encoder_setup_dig_transmitter()
1122 args.v6.ucDigMode = amdgpu_atombios_encoder_get_encoder_mode(encoder); in amdgpu_atombios_encoder_setup_dig_transmitter()
1125 args.v6.ucHPDSel = 0; in amdgpu_atombios_encoder_setup_dig_transmitter()
1127 args.v6.ucHPDSel = hpd_id + 1; in amdgpu_atombios_encoder_setup_dig_transmitter()
1128 args.v6.ucDigEncoderSel = 1 << dig_encoder; in amdgpu_atombios_encoder_setup_dig_transmitter()
1140 amdgpu_atom_execute_table(adev->mode_info.atom_context, index, (uint32_t *)&args); in amdgpu_atombios_encoder_setup_dig_transmitter()
1148 struct drm_device *dev = amdgpu_connector->base.dev; in amdgpu_atombios_encoder_set_edp_panel_power()
1154 if (connector->connector_type != DRM_MODE_CONNECTOR_eDP) in amdgpu_atombios_encoder_set_edp_panel_power()
1161 if (!amdgpu_atom_parse_cmd_header(adev->mode_info.atom_context, index, &frev, &crev)) in amdgpu_atombios_encoder_set_edp_panel_power()
1166 args.v1.ucAction = action; in amdgpu_atombios_encoder_set_edp_panel_power()
1168 amdgpu_atom_execute_table(adev->mode_info.atom_context, index, (uint32_t *)&args); in amdgpu_atombios_encoder_set_edp_panel_power()
1175 if (amdgpu_display_hpd_sense(adev, amdgpu_connector->hpd.hpd)) in amdgpu_atombios_encoder_set_edp_panel_power()
1186 EXTERNAL_ENCODER_CONTROL_PS_ALLOCATION v1; member
1195 struct drm_device *dev = encoder->dev; in amdgpu_atombios_encoder_setup_external_encoder()
1206 u32 ext_enum = (ext_amdgpu_encoder->encoder_enum & ENUM_ID_MASK) >> ENUM_ID_SHIFT; in amdgpu_atombios_encoder_setup_external_encoder()
1216 amdgpu_connector->con_priv; in amdgpu_atombios_encoder_setup_external_encoder()
1218 dp_clock = dig_connector->dp_clock; in amdgpu_atombios_encoder_setup_external_encoder()
1219 dp_lane_count = dig_connector->dp_lane_count; in amdgpu_atombios_encoder_setup_external_encoder()
1221 (amdgpu_connector->connector_object_id & OBJECT_ID_MASK) >> OBJECT_ID_SHIFT; in amdgpu_atombios_encoder_setup_external_encoder()
1226 if (!amdgpu_atom_parse_cmd_header(adev->mode_info.atom_context, index, &frev, &crev)) in amdgpu_atombios_encoder_setup_external_encoder()
1237 args.v1.sDigEncoder.ucAction = action; in amdgpu_atombios_encoder_setup_external_encoder()
1238 args.v1.sDigEncoder.usPixelClock = cpu_to_le16(amdgpu_encoder->pixel_clock / 10); in amdgpu_atombios_encoder_setup_external_encoder()
1239 args.v1.sDigEncoder.ucEncoderMode = in amdgpu_atombios_encoder_setup_external_encoder()
1242 if (ENCODER_MODE_IS_DP(args.v1.sDigEncoder.ucEncoderMode)) { in amdgpu_atombios_encoder_setup_external_encoder()
1244 args.v1.sDigEncoder.ucConfig |= ATOM_ENCODER_CONFIG_DPLINKRATE_2_70GHZ; in amdgpu_atombios_encoder_setup_external_encoder()
1245 args.v1.sDigEncoder.ucLaneNum = dp_lane_count; in amdgpu_atombios_encoder_setup_external_encoder()
1246 } else if (amdgpu_dig_monitor_is_duallink(encoder, amdgpu_encoder->pixel_clock)) in amdgpu_atombios_encoder_setup_external_encoder()
1247 args.v1.sDigEncoder.ucLaneNum = 8; in amdgpu_atombios_encoder_setup_external_encoder()
1249 args.v1.sDigEncoder.ucLaneNum = 4; in amdgpu_atombios_encoder_setup_external_encoder()
1256 args.v3.sExtEncoder.usPixelClock = cpu_to_le16(amdgpu_encoder->pixel_clock / 10); in amdgpu_atombios_encoder_setup_external_encoder()
1266 } else if (amdgpu_dig_monitor_is_duallink(encoder, amdgpu_encoder->pixel_clock)) in amdgpu_atombios_encoder_setup_external_encoder()
1292 amdgpu_atom_execute_table(adev->mode_info.atom_context, index, (uint32_t *)&args); in amdgpu_atombios_encoder_setup_external_encoder()
1300 struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv; in amdgpu_atombios_encoder_setup_dig()
1307 amdgpu_dig_connector = amdgpu_connector->con_priv; in amdgpu_atombios_encoder_setup_dig()
1312 dig->panel_mode = DP_PANEL_MODE_EXTERNAL_DP_MODE; in amdgpu_atombios_encoder_setup_dig()
1314 dig->panel_mode = amdgpu_atombios_dp_get_panel_mode(encoder, connector); in amdgpu_atombios_encoder_setup_dig()
1320 dig->panel_mode); in amdgpu_atombios_encoder_setup_dig()
1326 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { in amdgpu_atombios_encoder_setup_dig()
1329 amdgpu_dig_connector->edp_on = true; in amdgpu_atombios_encoder_setup_dig()
1342 if (amdgpu_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) in amdgpu_atombios_encoder_setup_dig()
1343 amdgpu_atombios_encoder_set_backlight_level(amdgpu_encoder, dig->backlight_level); in amdgpu_atombios_encoder_setup_dig()
1353 if (amdgpu_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) in amdgpu_atombios_encoder_setup_dig()
1365 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { in amdgpu_atombios_encoder_setup_dig()
1368 amdgpu_dig_connector->edp_on = false; in amdgpu_atombios_encoder_setup_dig()
1380 amdgpu_encoder->encoder_id, mode, amdgpu_encoder->devices, in amdgpu_atombios_encoder_dpms()
1381 amdgpu_encoder->active_device); in amdgpu_atombios_encoder_dpms()
1382 switch (amdgpu_encoder->encoder_id) { in amdgpu_atombios_encoder_dpms()
1428 SELECT_CRTC_SOURCE_PS_ALLOCATION v1; member
1436 struct drm_device *dev = encoder->dev; in amdgpu_atombios_encoder_set_crtc_source()
1439 struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(encoder->crtc); in amdgpu_atombios_encoder_set_crtc_source()
1447 if (!amdgpu_atom_parse_cmd_header(adev->mode_info.atom_context, index, &frev, &crev)) in amdgpu_atombios_encoder_set_crtc_source()
1455 args.v1.ucCRTC = amdgpu_crtc->crtc_id; in amdgpu_atombios_encoder_set_crtc_source()
1456 switch (amdgpu_encoder->encoder_id) { in amdgpu_atombios_encoder_set_crtc_source()
1459 args.v1.ucDevice = ATOM_DEVICE_DFP1_INDEX; in amdgpu_atombios_encoder_set_crtc_source()
1463 if (amdgpu_encoder->devices & ATOM_DEVICE_LCD1_SUPPORT) in amdgpu_atombios_encoder_set_crtc_source()
1464 args.v1.ucDevice = ATOM_DEVICE_LCD1_INDEX; in amdgpu_atombios_encoder_set_crtc_source()
1466 args.v1.ucDevice = ATOM_DEVICE_DFP3_INDEX; in amdgpu_atombios_encoder_set_crtc_source()
1471 args.v1.ucDevice = ATOM_DEVICE_DFP2_INDEX; in amdgpu_atombios_encoder_set_crtc_source()
1475 if (amdgpu_encoder->active_device & (ATOM_DEVICE_TV_SUPPORT)) in amdgpu_atombios_encoder_set_crtc_source()
1476 args.v1.ucDevice = ATOM_DEVICE_TV1_INDEX; in amdgpu_atombios_encoder_set_crtc_source()
1477 else if (amdgpu_encoder->active_device & (ATOM_DEVICE_CV_SUPPORT)) in amdgpu_atombios_encoder_set_crtc_source()
1478 args.v1.ucDevice = ATOM_DEVICE_CV_INDEX; in amdgpu_atombios_encoder_set_crtc_source()
1480 args.v1.ucDevice = ATOM_DEVICE_CRT1_INDEX; in amdgpu_atombios_encoder_set_crtc_source()
1484 if (amdgpu_encoder->active_device & (ATOM_DEVICE_TV_SUPPORT)) in amdgpu_atombios_encoder_set_crtc_source()
1485 args.v1.ucDevice = ATOM_DEVICE_TV1_INDEX; in amdgpu_atombios_encoder_set_crtc_source()
1486 else if (amdgpu_encoder->active_device & (ATOM_DEVICE_CV_SUPPORT)) in amdgpu_atombios_encoder_set_crtc_source()
1487 args.v1.ucDevice = ATOM_DEVICE_CV_INDEX; in amdgpu_atombios_encoder_set_crtc_source()
1489 args.v1.ucDevice = ATOM_DEVICE_CRT2_INDEX; in amdgpu_atombios_encoder_set_crtc_source()
1494 args.v2.ucCRTC = amdgpu_crtc->crtc_id; in amdgpu_atombios_encoder_set_crtc_source()
1498 if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS) in amdgpu_atombios_encoder_set_crtc_source()
1500 else if (connector->connector_type == DRM_MODE_CONNECTOR_VGA) in amdgpu_atombios_encoder_set_crtc_source()
1504 } else if (amdgpu_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { in amdgpu_atombios_encoder_set_crtc_source()
1509 switch (amdgpu_encoder->encoder_id) { in amdgpu_atombios_encoder_set_crtc_source()
1515 dig = amdgpu_encoder->enc_priv; in amdgpu_atombios_encoder_set_crtc_source()
1516 switch (dig->dig_encoder) { in amdgpu_atombios_encoder_set_crtc_source()
1544 if (amdgpu_encoder->active_device & (ATOM_DEVICE_TV_SUPPORT)) in amdgpu_atombios_encoder_set_crtc_source()
1546 else if (amdgpu_encoder->active_device & (ATOM_DEVICE_CV_SUPPORT)) in amdgpu_atombios_encoder_set_crtc_source()
1552 if (amdgpu_encoder->active_device & (ATOM_DEVICE_TV_SUPPORT)) in amdgpu_atombios_encoder_set_crtc_source()
1554 else if (amdgpu_encoder->active_device & (ATOM_DEVICE_CV_SUPPORT)) in amdgpu_atombios_encoder_set_crtc_source()
1562 args.v3.ucCRTC = amdgpu_crtc->crtc_id; in amdgpu_atombios_encoder_set_crtc_source()
1566 if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS) in amdgpu_atombios_encoder_set_crtc_source()
1568 else if (connector->connector_type == DRM_MODE_CONNECTOR_VGA) in amdgpu_atombios_encoder_set_crtc_source()
1572 } else if (amdgpu_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { in amdgpu_atombios_encoder_set_crtc_source()
1578 switch (amdgpu_encoder->encoder_id) { in amdgpu_atombios_encoder_set_crtc_source()
1584 dig = amdgpu_encoder->enc_priv; in amdgpu_atombios_encoder_set_crtc_source()
1585 switch (dig->dig_encoder) { in amdgpu_atombios_encoder_set_crtc_source()
1613 if (amdgpu_encoder->active_device & (ATOM_DEVICE_TV_SUPPORT)) in amdgpu_atombios_encoder_set_crtc_source()
1615 else if (amdgpu_encoder->active_device & (ATOM_DEVICE_CV_SUPPORT)) in amdgpu_atombios_encoder_set_crtc_source()
1621 if (amdgpu_encoder->active_device & (ATOM_DEVICE_TV_SUPPORT)) in amdgpu_atombios_encoder_set_crtc_source()
1623 else if (amdgpu_encoder->active_device & (ATOM_DEVICE_CV_SUPPORT)) in amdgpu_atombios_encoder_set_crtc_source()
1637 amdgpu_atom_execute_table(adev->mode_info.atom_context, index, (uint32_t *)&args); in amdgpu_atombios_encoder_set_crtc_source()
1647 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { in amdgpu_atombios_encoder_init_dig()
1651 switch (amdgpu_encoder->encoder_id) { in amdgpu_atombios_encoder_init_dig()
1671 struct drm_device *dev = encoder->dev; in amdgpu_atombios_encoder_dac_load_detect()
1676 if (amdgpu_encoder->devices & (ATOM_DEVICE_TV_SUPPORT | in amdgpu_atombios_encoder_dac_load_detect()
1685 if (!amdgpu_atom_parse_cmd_header(adev->mode_info.atom_context, index, &frev, &crev)) in amdgpu_atombios_encoder_dac_load_detect()
1690 if ((amdgpu_encoder->encoder_id == ENCODER_OBJECT_ID_INTERNAL_DAC1) || in amdgpu_atombios_encoder_dac_load_detect()
1691 (amdgpu_encoder->encoder_id == ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1)) in amdgpu_atombios_encoder_dac_load_detect()
1696 if (amdgpu_connector->devices & ATOM_DEVICE_CRT1_SUPPORT) in amdgpu_atombios_encoder_dac_load_detect()
1698 else if (amdgpu_connector->devices & ATOM_DEVICE_CRT2_SUPPORT) in amdgpu_atombios_encoder_dac_load_detect()
1700 else if (amdgpu_connector->devices & ATOM_DEVICE_CV_SUPPORT) { in amdgpu_atombios_encoder_dac_load_detect()
1704 } else if (amdgpu_connector->devices & ATOM_DEVICE_TV1_SUPPORT) { in amdgpu_atombios_encoder_dac_load_detect()
1710 amdgpu_atom_execute_table(adev->mode_info.atom_context, index, (uint32_t *)&args); in amdgpu_atombios_encoder_dac_load_detect()
1721 struct drm_device *dev = encoder->dev; in amdgpu_atombios_encoder_dac_detect()
1734 DRM_DEBUG_KMS("Bios 0 scratch %x %08x\n", bios_0_scratch, amdgpu_encoder->devices); in amdgpu_atombios_encoder_dac_detect()
1735 if (amdgpu_connector->devices & ATOM_DEVICE_CRT1_SUPPORT) { in amdgpu_atombios_encoder_dac_detect()
1739 if (amdgpu_connector->devices & ATOM_DEVICE_CRT2_SUPPORT) { in amdgpu_atombios_encoder_dac_detect()
1743 if (amdgpu_connector->devices & ATOM_DEVICE_CV_SUPPORT) { in amdgpu_atombios_encoder_dac_detect()
1747 if (amdgpu_connector->devices & ATOM_DEVICE_TV1_SUPPORT) { in amdgpu_atombios_encoder_dac_detect()
1760 struct drm_device *dev = encoder->dev; in amdgpu_atombios_encoder_dig_detect()
1770 if ((amdgpu_connector->devices & ATOM_DEVICE_CRT_SUPPORT) == 0) in amdgpu_atombios_encoder_dig_detect()
1779 DRM_DEBUG_KMS("Bios 0 scratch %x %08x\n", bios_0_scratch, amdgpu_encoder->devices); in amdgpu_atombios_encoder_dig_detect()
1780 if (amdgpu_connector->devices & ATOM_DEVICE_CRT1_SUPPORT) { in amdgpu_atombios_encoder_dig_detect()
1784 if (amdgpu_connector->devices & ATOM_DEVICE_CRT2_SUPPORT) { in amdgpu_atombios_encoder_dig_detect()
1788 if (amdgpu_connector->devices & ATOM_DEVICE_CV_SUPPORT) { in amdgpu_atombios_encoder_dig_detect()
1792 if (amdgpu_connector->devices & ATOM_DEVICE_TV1_SUPPORT) { in amdgpu_atombios_encoder_dig_detect()
1818 struct drm_device *dev = connector->dev; in amdgpu_atombios_encoder_set_bios_scratch_regs()
1829 if ((amdgpu_encoder->devices & ATOM_DEVICE_LCD1_SUPPORT) && in amdgpu_atombios_encoder_set_bios_scratch_regs()
1830 (amdgpu_connector->devices & ATOM_DEVICE_LCD1_SUPPORT)) { in amdgpu_atombios_encoder_set_bios_scratch_regs()
1843 if ((amdgpu_encoder->devices & ATOM_DEVICE_CRT1_SUPPORT) && in amdgpu_atombios_encoder_set_bios_scratch_regs()
1844 (amdgpu_connector->devices & ATOM_DEVICE_CRT1_SUPPORT)) { in amdgpu_atombios_encoder_set_bios_scratch_regs()
1857 if ((amdgpu_encoder->devices & ATOM_DEVICE_CRT2_SUPPORT) && in amdgpu_atombios_encoder_set_bios_scratch_regs()
1858 (amdgpu_connector->devices & ATOM_DEVICE_CRT2_SUPPORT)) { in amdgpu_atombios_encoder_set_bios_scratch_regs()
1871 if ((amdgpu_encoder->devices & ATOM_DEVICE_DFP1_SUPPORT) && in amdgpu_atombios_encoder_set_bios_scratch_regs()
1872 (amdgpu_connector->devices & ATOM_DEVICE_DFP1_SUPPORT)) { in amdgpu_atombios_encoder_set_bios_scratch_regs()
1885 if ((amdgpu_encoder->devices & ATOM_DEVICE_DFP2_SUPPORT) && in amdgpu_atombios_encoder_set_bios_scratch_regs()
1886 (amdgpu_connector->devices & ATOM_DEVICE_DFP2_SUPPORT)) { in amdgpu_atombios_encoder_set_bios_scratch_regs()
1899 if ((amdgpu_encoder->devices & ATOM_DEVICE_DFP3_SUPPORT) && in amdgpu_atombios_encoder_set_bios_scratch_regs()
1900 (amdgpu_connector->devices & ATOM_DEVICE_DFP3_SUPPORT)) { in amdgpu_atombios_encoder_set_bios_scratch_regs()
1913 if ((amdgpu_encoder->devices & ATOM_DEVICE_DFP4_SUPPORT) && in amdgpu_atombios_encoder_set_bios_scratch_regs()
1914 (amdgpu_connector->devices & ATOM_DEVICE_DFP4_SUPPORT)) { in amdgpu_atombios_encoder_set_bios_scratch_regs()
1927 if ((amdgpu_encoder->devices & ATOM_DEVICE_DFP5_SUPPORT) && in amdgpu_atombios_encoder_set_bios_scratch_regs()
1928 (amdgpu_connector->devices & ATOM_DEVICE_DFP5_SUPPORT)) { in amdgpu_atombios_encoder_set_bios_scratch_regs()
1941 if ((amdgpu_encoder->devices & ATOM_DEVICE_DFP6_SUPPORT) && in amdgpu_atombios_encoder_set_bios_scratch_regs()
1942 (amdgpu_connector->devices & ATOM_DEVICE_DFP6_SUPPORT)) { in amdgpu_atombios_encoder_set_bios_scratch_regs()
1969 struct drm_device *dev = encoder->base.dev; in amdgpu_atombios_encoder_get_lcd_info()
1971 struct amdgpu_mode_info *mode_info = &adev->mode_info; in amdgpu_atombios_encoder_get_lcd_info()
1977 int encoder_enum = (encoder->encoder_enum & ENUM_ID_MASK) >> ENUM_ID_SHIFT; in amdgpu_atombios_encoder_get_lcd_info()
1979 if (amdgpu_atom_parse_data_header(mode_info->atom_context, index, NULL, in amdgpu_atombios_encoder_get_lcd_info()
1982 (union lvds_info *)(mode_info->atom_context->bios + data_offset); in amdgpu_atombios_encoder_get_lcd_info()
1989 lvds->native_mode.clock = in amdgpu_atombios_encoder_get_lcd_info()
1990 le16_to_cpu(lvds_info->info.sLCDTiming.usPixClk) * 10; in amdgpu_atombios_encoder_get_lcd_info()
1991 lvds->native_mode.hdisplay = in amdgpu_atombios_encoder_get_lcd_info()
1992 le16_to_cpu(lvds_info->info.sLCDTiming.usHActive); in amdgpu_atombios_encoder_get_lcd_info()
1993 lvds->native_mode.vdisplay = in amdgpu_atombios_encoder_get_lcd_info()
1994 le16_to_cpu(lvds_info->info.sLCDTiming.usVActive); in amdgpu_atombios_encoder_get_lcd_info()
1995 lvds->native_mode.htotal = lvds->native_mode.hdisplay + in amdgpu_atombios_encoder_get_lcd_info()
1996 le16_to_cpu(lvds_info->info.sLCDTiming.usHBlanking_Time); in amdgpu_atombios_encoder_get_lcd_info()
1997 lvds->native_mode.hsync_start = lvds->native_mode.hdisplay + in amdgpu_atombios_encoder_get_lcd_info()
1998 le16_to_cpu(lvds_info->info.sLCDTiming.usHSyncOffset); in amdgpu_atombios_encoder_get_lcd_info()
1999 lvds->native_mode.hsync_end = lvds->native_mode.hsync_start + in amdgpu_atombios_encoder_get_lcd_info()
2000 le16_to_cpu(lvds_info->info.sLCDTiming.usHSyncWidth); in amdgpu_atombios_encoder_get_lcd_info()
2001 lvds->native_mode.vtotal = lvds->native_mode.vdisplay + in amdgpu_atombios_encoder_get_lcd_info()
2002 le16_to_cpu(lvds_info->info.sLCDTiming.usVBlanking_Time); in amdgpu_atombios_encoder_get_lcd_info()
2003 lvds->native_mode.vsync_start = lvds->native_mode.vdisplay + in amdgpu_atombios_encoder_get_lcd_info()
2004 le16_to_cpu(lvds_info->info.sLCDTiming.usVSyncOffset); in amdgpu_atombios_encoder_get_lcd_info()
2005 lvds->native_mode.vsync_end = lvds->native_mode.vsync_start + in amdgpu_atombios_encoder_get_lcd_info()
2006 le16_to_cpu(lvds_info->info.sLCDTiming.usVSyncWidth); in amdgpu_atombios_encoder_get_lcd_info()
2007 lvds->panel_pwr_delay = in amdgpu_atombios_encoder_get_lcd_info()
2008 le16_to_cpu(lvds_info->info.usOffDelayInMs); in amdgpu_atombios_encoder_get_lcd_info()
2009 lvds->lcd_misc = lvds_info->info.ucLVDS_Misc; in amdgpu_atombios_encoder_get_lcd_info()
2011 misc = le16_to_cpu(lvds_info->info.sLCDTiming.susModeMiscInfo.usAccess); in amdgpu_atombios_encoder_get_lcd_info()
2013 lvds->native_mode.flags |= DRM_MODE_FLAG_NVSYNC; in amdgpu_atombios_encoder_get_lcd_info()
2015 lvds->native_mode.flags |= DRM_MODE_FLAG_NHSYNC; in amdgpu_atombios_encoder_get_lcd_info()
2017 lvds->native_mode.flags |= DRM_MODE_FLAG_CSYNC; in amdgpu_atombios_encoder_get_lcd_info()
2019 lvds->native_mode.flags |= DRM_MODE_FLAG_INTERLACE; in amdgpu_atombios_encoder_get_lcd_info()
2021 lvds->native_mode.flags |= DRM_MODE_FLAG_DBLSCAN; in amdgpu_atombios_encoder_get_lcd_info()
2023 lvds->native_mode.width_mm = le16_to_cpu(lvds_info->info.sLCDTiming.usImageHSize); in amdgpu_atombios_encoder_get_lcd_info()
2024 lvds->native_mode.height_mm = le16_to_cpu(lvds_info->info.sLCDTiming.usImageVSize); in amdgpu_atombios_encoder_get_lcd_info()
2027 drm_mode_set_crtcinfo(&lvds->native_mode, CRTC_INTERLACE_HALVE_V); in amdgpu_atombios_encoder_get_lcd_info()
2029 lvds->lcd_ss_id = lvds_info->info.ucSS_Id; in amdgpu_atombios_encoder_get_lcd_info()
2031 encoder->native_mode = lvds->native_mode; in amdgpu_atombios_encoder_get_lcd_info()
2034 lvds->linkb = true; in amdgpu_atombios_encoder_get_lcd_info()
2036 lvds->linkb = false; in amdgpu_atombios_encoder_get_lcd_info()
2039 if (le16_to_cpu(lvds_info->info.usModePatchTableOffset)) { in amdgpu_atombios_encoder_get_lcd_info()
2047 record = (u8 *)(mode_info->atom_context->bios + in amdgpu_atombios_encoder_get_lcd_info()
2048 le16_to_cpu(lvds_info->info.usModePatchTableOffset)); in amdgpu_atombios_encoder_get_lcd_info()
2051 record = (u8 *)(mode_info->atom_context->bios + in amdgpu_atombios_encoder_get_lcd_info()
2053 le16_to_cpu(lvds_info->info.usModePatchTableOffset)); in amdgpu_atombios_encoder_get_lcd_info()
2067 if (fake_edid_record->ucFakeEDIDLength) { in amdgpu_atombios_encoder_get_lcd_info()
2070 max((int)EDID_LENGTH, (int)fake_edid_record->ucFakeEDIDLength); in amdgpu_atombios_encoder_get_lcd_info()
2073 memcpy((u8 *)edid, (u8 *)&fake_edid_record->ucFakeEDIDString[0], in amdgpu_atombios_encoder_get_lcd_info()
2074 fake_edid_record->ucFakeEDIDLength); in amdgpu_atombios_encoder_get_lcd_info()
2077 adev->mode_info.bios_hardcoded_edid = edid; in amdgpu_atombios_encoder_get_lcd_info()
2078 adev->mode_info.bios_hardcoded_edid_size = edid_size; in amdgpu_atombios_encoder_get_lcd_info()
2083 record += fake_edid_record->ucFakeEDIDLength ? in amdgpu_atombios_encoder_get_lcd_info()
2084 fake_edid_record->ucFakeEDIDLength + 2 : in amdgpu_atombios_encoder_get_lcd_info()
2089 lvds->native_mode.width_mm = panel_res_record->usHSize; in amdgpu_atombios_encoder_get_lcd_info()
2090 lvds->native_mode.height_mm = panel_res_record->usVSize; in amdgpu_atombios_encoder_get_lcd_info()
2109 int encoder_enum = (amdgpu_encoder->encoder_enum & ENUM_ID_MASK) >> ENUM_ID_SHIFT; in amdgpu_atombios_encoder_get_dig_info()
2116 dig->coherent_mode = true; in amdgpu_atombios_encoder_get_dig_info()
2117 dig->dig_encoder = -1; in amdgpu_atombios_encoder_get_dig_info()
2120 dig->linkb = true; in amdgpu_atombios_encoder_get_dig_info()
2122 dig->linkb = false; in amdgpu_atombios_encoder_get_dig_info()