Lines Matching refs:intel_dp
326 struct cdv_intel_dp *intel_dp = encoder->dev_priv; in cdv_intel_dp_max_lane_count() local
329 if (intel_dp->dpcd[DP_DPCD_REV] >= 0x11) { in cdv_intel_dp_max_lane_count()
330 max_lane_count = intel_dp->dpcd[DP_MAX_LANE_COUNT] & 0x1f; in cdv_intel_dp_max_lane_count()
344 struct cdv_intel_dp *intel_dp = encoder->dev_priv; in cdv_intel_dp_max_link_bw() local
345 int max_link_bw = intel_dp->dpcd[DP_MAX_LINK_RATE]; in cdv_intel_dp_max_link_bw()
382 struct cdv_intel_dp *intel_dp = intel_encoder->dev_priv; in cdv_intel_edp_panel_vdd_on() local
385 if (intel_dp->panel_on) { in cdv_intel_edp_panel_vdd_on()
396 msleep(intel_dp->panel_power_up_delay); in cdv_intel_edp_panel_vdd_on()
417 struct cdv_intel_dp *intel_dp = intel_encoder->dev_priv; in cdv_intel_edp_panel_on() local
420 if (intel_dp->panel_on) in cdv_intel_edp_panel_on()
433 intel_dp->panel_on = false; in cdv_intel_edp_panel_on()
435 intel_dp->panel_on = true; in cdv_intel_edp_panel_on()
436 msleep(intel_dp->panel_power_up_delay); in cdv_intel_edp_panel_on()
445 struct cdv_intel_dp *intel_dp = intel_encoder->dev_priv; in cdv_intel_edp_panel_off() local
454 intel_dp->panel_on = false; in cdv_intel_edp_panel_off()
469 msleep(intel_dp->panel_power_cycle_delay); in cdv_intel_edp_panel_off()
496 struct cdv_intel_dp *intel_dp = intel_encoder->dev_priv; in cdv_intel_edp_backlight_off() local
506 msleep(intel_dp->backlight_off_delay); in cdv_intel_edp_backlight_off()
514 struct cdv_intel_dp *intel_dp = encoder->dev_priv; in cdv_intel_dp_mode_valid() local
519 if (is_edp(encoder) && intel_dp->panel_fixed_mode) { in cdv_intel_dp_mode_valid()
520 if (mode->hdisplay > intel_dp->panel_fixed_mode->hdisplay) in cdv_intel_dp_mode_valid()
522 if (mode->vdisplay > intel_dp->panel_fixed_mode->vdisplay) in cdv_intel_dp_mode_valid()
573 struct cdv_intel_dp *intel_dp = encoder->dev_priv; in cdv_intel_dp_aux_ch() local
574 uint32_t output_reg = intel_dp->output_reg; in cdv_intel_dp_aux_ch()
754 struct cdv_intel_dp *intel_dp = container_of(adapter, in cdv_intel_dp_i2c_aux_ch() local
757 struct gma_encoder *encoder = intel_dp->encoder; in cdv_intel_dp_i2c_aux_ch()
850 struct cdv_intel_dp *intel_dp = encoder->dev_priv; in cdv_intel_dp_i2c_init() local
855 intel_dp->algo.running = false; in cdv_intel_dp_i2c_init()
856 intel_dp->algo.address = 0; in cdv_intel_dp_i2c_init()
857 intel_dp->algo.aux_ch = cdv_intel_dp_i2c_aux_ch; in cdv_intel_dp_i2c_init()
859 memset(&intel_dp->adapter, '\0', sizeof (intel_dp->adapter)); in cdv_intel_dp_i2c_init()
860 intel_dp->adapter.owner = THIS_MODULE; in cdv_intel_dp_i2c_init()
861 intel_dp->adapter.class = I2C_CLASS_DDC; in cdv_intel_dp_i2c_init()
862 strncpy (intel_dp->adapter.name, name, sizeof(intel_dp->adapter.name) - 1); in cdv_intel_dp_i2c_init()
863 intel_dp->adapter.name[sizeof(intel_dp->adapter.name) - 1] = '\0'; in cdv_intel_dp_i2c_init()
864 intel_dp->adapter.algo_data = &intel_dp->algo; in cdv_intel_dp_i2c_init()
865 intel_dp->adapter.dev.parent = connector->base.kdev; in cdv_intel_dp_i2c_init()
869 ret = i2c_dp_aux_add_bus(&intel_dp->adapter); in cdv_intel_dp_i2c_init()
900 struct cdv_intel_dp *intel_dp = intel_encoder->dev_priv; in cdv_intel_dp_mode_fixup() local
908 if (is_edp(intel_encoder) && intel_dp->panel_fixed_mode) { in cdv_intel_dp_mode_fixup()
909 cdv_intel_fixed_panel_mode(intel_dp->panel_fixed_mode, adjusted_mode); in cdv_intel_dp_mode_fixup()
910 refclock = intel_dp->panel_fixed_mode->clock; in cdv_intel_dp_mode_fixup()
919 intel_dp->link_bw = bws[clock]; in cdv_intel_dp_mode_fixup()
920 intel_dp->lane_count = lane_count; in cdv_intel_dp_mode_fixup()
921 adjusted_mode->clock = cdv_intel_dp_link_clock(intel_dp->link_bw); in cdv_intel_dp_mode_fixup()
924 intel_dp->link_bw, intel_dp->lane_count, in cdv_intel_dp_mode_fixup()
932 intel_dp->lane_count = max_lane_count; in cdv_intel_dp_mode_fixup()
933 intel_dp->link_bw = bws[max_clock]; in cdv_intel_dp_mode_fixup()
934 adjusted_mode->clock = cdv_intel_dp_link_clock(intel_dp->link_bw); in cdv_intel_dp_mode_fixup()
937 intel_dp->link_bw, intel_dp->lane_count, in cdv_intel_dp_mode_fixup()
1003 struct cdv_intel_dp *intel_dp; in cdv_intel_dp_set_m_n() local
1009 intel_dp = intel_encoder->dev_priv; in cdv_intel_dp_set_m_n()
1011 lane_count = intel_dp->lane_count; in cdv_intel_dp_set_m_n()
1014 lane_count = intel_dp->lane_count; in cdv_intel_dp_set_m_n()
1045 struct cdv_intel_dp *intel_dp = intel_encoder->dev_priv; in cdv_intel_dp_mode_set() local
1048 intel_dp->DP = DP_VOLTAGE_0_4 | DP_PRE_EMPHASIS_0; in cdv_intel_dp_mode_set()
1049 intel_dp->DP |= intel_dp->color_range; in cdv_intel_dp_mode_set()
1052 intel_dp->DP |= DP_SYNC_HS_HIGH; in cdv_intel_dp_mode_set()
1054 intel_dp->DP |= DP_SYNC_VS_HIGH; in cdv_intel_dp_mode_set()
1056 intel_dp->DP |= DP_LINK_TRAIN_OFF; in cdv_intel_dp_mode_set()
1058 switch (intel_dp->lane_count) { in cdv_intel_dp_mode_set()
1060 intel_dp->DP |= DP_PORT_WIDTH_1; in cdv_intel_dp_mode_set()
1063 intel_dp->DP |= DP_PORT_WIDTH_2; in cdv_intel_dp_mode_set()
1066 intel_dp->DP |= DP_PORT_WIDTH_4; in cdv_intel_dp_mode_set()
1069 if (intel_dp->has_audio) in cdv_intel_dp_mode_set()
1070 intel_dp->DP |= DP_AUDIO_OUTPUT_ENABLE; in cdv_intel_dp_mode_set()
1072 memset(intel_dp->link_configuration, 0, DP_LINK_CONFIGURATION_SIZE); in cdv_intel_dp_mode_set()
1073 intel_dp->link_configuration[0] = intel_dp->link_bw; in cdv_intel_dp_mode_set()
1074 intel_dp->link_configuration[1] = intel_dp->lane_count; in cdv_intel_dp_mode_set()
1079 if (intel_dp->dpcd[DP_DPCD_REV] >= 0x11 && in cdv_intel_dp_mode_set()
1080 (intel_dp->dpcd[DP_MAX_LANE_COUNT] & DP_ENHANCED_FRAME_CAP)) { in cdv_intel_dp_mode_set()
1081 intel_dp->link_configuration[1] |= DP_LANE_COUNT_ENHANCED_FRAME_EN; in cdv_intel_dp_mode_set()
1082 intel_dp->DP |= DP_ENHANCED_FRAMING; in cdv_intel_dp_mode_set()
1087 intel_dp->DP |= DP_PIPEB_SELECT; in cdv_intel_dp_mode_set()
1089 REG_WRITE(intel_dp->output_reg, (intel_dp->DP | DP_PORT_EN)); in cdv_intel_dp_mode_set()
1090 DRM_DEBUG_KMS("DP expected reg is %x\n", intel_dp->DP); in cdv_intel_dp_mode_set()
1111 struct cdv_intel_dp *intel_dp = encoder->dev_priv; in cdv_intel_dp_sink_dpms() local
1115 if (intel_dp->dpcd[DP_DPCD_REV] < 0x11) in cdv_intel_dp_sink_dpms()
1173 struct cdv_intel_dp *intel_dp = intel_encoder->dev_priv; in cdv_intel_dp_dpms() local
1175 uint32_t dp_reg = REG_READ(intel_dp->output_reg); in cdv_intel_dp_dpms()
1234 struct cdv_intel_dp *intel_dp = encoder->dev_priv; in cdv_intel_dp_get_link_status() local
1237 intel_dp->link_status, in cdv_intel_dp_get_link_status()
1308 struct cdv_intel_dp *intel_dp = encoder->dev_priv; in cdv_intel_get_adjust_train() local
1313 for (lane = 0; lane < intel_dp->lane_count; lane++) { in cdv_intel_get_adjust_train()
1314 uint8_t this_v = cdv_intel_get_adjust_request_voltage(intel_dp->link_status, lane); in cdv_intel_get_adjust_train()
1315 uint8_t this_p = cdv_intel_get_adjust_request_pre_emphasis(intel_dp->link_status, lane); in cdv_intel_get_adjust_train()
1330 intel_dp->train_set[lane] = v | p; in cdv_intel_get_adjust_train()
1367 struct cdv_intel_dp *intel_dp = encoder->dev_priv; in cdv_intel_channel_eq_ok() local
1372 lane_align = cdv_intel_dp_link_status(intel_dp->link_status, in cdv_intel_channel_eq_ok()
1376 for (lane = 0; lane < intel_dp->lane_count; lane++) { in cdv_intel_channel_eq_ok()
1377 lane_status = cdv_intel_get_lane_status(intel_dp->link_status, lane); in cdv_intel_channel_eq_ok()
1392 struct cdv_intel_dp *intel_dp = encoder->dev_priv; in cdv_intel_dp_set_link_train() local
1394 REG_WRITE(intel_dp->output_reg, dp_reg_value); in cdv_intel_dp_set_link_train()
1395 REG_READ(intel_dp->output_reg); in cdv_intel_dp_set_link_train()
1417 struct cdv_intel_dp *intel_dp = encoder->dev_priv; in cdv_intel_dplink_set_level() local
1421 intel_dp->train_set, in cdv_intel_dplink_set_level()
1422 intel_dp->lane_count); in cdv_intel_dplink_set_level()
1424 if (ret != intel_dp->lane_count) { in cdv_intel_dplink_set_level()
1426 intel_dp->train_set[0], intel_dp->lane_count); in cdv_intel_dplink_set_level()
1436 struct cdv_intel_dp *intel_dp = encoder->dev_priv; in cdv_intel_dp_set_vswing_premph() local
1440 if (intel_dp->output_reg == DP_B) in cdv_intel_dp_set_vswing_premph()
1502 struct cdv_intel_dp *intel_dp = encoder->dev_priv; in cdv_intel_dp_start_link_train() local
1508 uint32_t DP = intel_dp->DP; in cdv_intel_dp_start_link_train()
1516 REG_WRITE(intel_dp->output_reg, reg); in cdv_intel_dp_start_link_train()
1517 REG_READ(intel_dp->output_reg); in cdv_intel_dp_start_link_train()
1523 intel_dp->link_configuration, in cdv_intel_dp_start_link_train()
1526 memset(intel_dp->train_set, 0, 4); in cdv_intel_dp_start_link_train()
1538 intel_dp->train_set[0], in cdv_intel_dp_start_link_train()
1539 intel_dp->link_configuration[0], in cdv_intel_dp_start_link_train()
1540 intel_dp->link_configuration[1]); in cdv_intel_dp_start_link_train()
1545 cdv_intel_dp_set_vswing_premph(encoder, intel_dp->train_set[0]); in cdv_intel_dp_start_link_train()
1555 intel_dp->link_status[0], intel_dp->link_status[1], intel_dp->link_status[2], in cdv_intel_dp_start_link_train()
1556 intel_dp->link_status[3], intel_dp->link_status[4], intel_dp->link_status[5]); in cdv_intel_dp_start_link_train()
1558 if (cdv_intel_clock_recovery_ok(intel_dp->link_status, intel_dp->lane_count)) { in cdv_intel_dp_start_link_train()
1565 for (i = 0; i < intel_dp->lane_count; i++) in cdv_intel_dp_start_link_train()
1566 if ((intel_dp->train_set[i] & DP_TRAIN_MAX_SWING_REACHED) == 0) in cdv_intel_dp_start_link_train()
1568 if (i == intel_dp->lane_count) in cdv_intel_dp_start_link_train()
1572 if ((intel_dp->train_set[0] & DP_TRAIN_VOLTAGE_SWING_MASK) == voltage) { in cdv_intel_dp_start_link_train()
1578 voltage = intel_dp->train_set[0] & DP_TRAIN_VOLTAGE_SWING_MASK; in cdv_intel_dp_start_link_train()
1586 DRM_DEBUG_KMS("failure in DP patter 1 training, train set %x\n", intel_dp->train_set[0]); in cdv_intel_dp_start_link_train()
1589 intel_dp->DP = DP; in cdv_intel_dp_start_link_train()
1596 struct cdv_intel_dp *intel_dp = encoder->dev_priv; in cdv_intel_dp_complete_link_train() local
1600 uint32_t DP = intel_dp->DP; in cdv_intel_dp_complete_link_train()
1613 intel_dp->train_set[0], in cdv_intel_dp_complete_link_train()
1614 intel_dp->link_configuration[0], in cdv_intel_dp_complete_link_train()
1615 intel_dp->link_configuration[1]); in cdv_intel_dp_complete_link_train()
1630 cdv_intel_dp_set_vswing_premph(encoder, intel_dp->train_set[0]); in cdv_intel_dp_complete_link_train()
1639 intel_dp->link_status[0], intel_dp->link_status[1], intel_dp->link_status[2], in cdv_intel_dp_complete_link_train()
1640 intel_dp->link_status[3], intel_dp->link_status[4], intel_dp->link_status[5]); in cdv_intel_dp_complete_link_train()
1643 if (!cdv_intel_clock_recovery_ok(intel_dp->link_status, intel_dp->lane_count)) { in cdv_intel_dp_complete_link_train()
1672 REG_WRITE(intel_dp->output_reg, reg); in cdv_intel_dp_complete_link_train()
1673 REG_READ(intel_dp->output_reg); in cdv_intel_dp_complete_link_train()
1682 struct cdv_intel_dp *intel_dp = encoder->dev_priv; in cdv_intel_dp_link_down() local
1683 uint32_t DP = intel_dp->DP; in cdv_intel_dp_link_down()
1685 if ((REG_READ(intel_dp->output_reg) & DP_PORT_EN) == 0) in cdv_intel_dp_link_down()
1693 REG_WRITE(intel_dp->output_reg, DP | DP_LINK_TRAIN_PAT_IDLE); in cdv_intel_dp_link_down()
1695 REG_READ(intel_dp->output_reg); in cdv_intel_dp_link_down()
1699 REG_WRITE(intel_dp->output_reg, DP & ~DP_PORT_EN); in cdv_intel_dp_link_down()
1700 REG_READ(intel_dp->output_reg); in cdv_intel_dp_link_down()
1705 struct cdv_intel_dp *intel_dp = encoder->dev_priv; in cdv_dp_detect() local
1709 if (cdv_intel_dp_aux_native_read(encoder, 0x000, intel_dp->dpcd, in cdv_dp_detect()
1710 sizeof (intel_dp->dpcd)) == sizeof (intel_dp->dpcd)) in cdv_dp_detect()
1712 if (intel_dp->dpcd[DP_DPCD_REV] != 0) in cdv_dp_detect()
1717 intel_dp->dpcd[0], intel_dp->dpcd[1], in cdv_dp_detect()
1718 intel_dp->dpcd[2], intel_dp->dpcd[3]); in cdv_dp_detect()
1732 struct cdv_intel_dp *intel_dp = encoder->dev_priv; in cdv_intel_dp_detect() local
1737 intel_dp->has_audio = false; in cdv_intel_dp_detect()
1748 if (intel_dp->force_audio) { in cdv_intel_dp_detect()
1749 intel_dp->has_audio = intel_dp->force_audio > 0; in cdv_intel_dp_detect()
1751 edid = drm_get_edid(connector, &intel_dp->adapter); in cdv_intel_dp_detect()
1753 intel_dp->has_audio = drm_detect_monitor_audio(edid); in cdv_intel_dp_detect()
1766 struct cdv_intel_dp *intel_dp = intel_encoder->dev_priv; in cdv_intel_dp_get_modes() local
1772 edid = drm_get_edid(connector, &intel_dp->adapter); in cdv_intel_dp_get_modes()
1785 if (edp && !intel_dp->panel_fixed_mode) { in cdv_intel_dp_get_modes()
1790 intel_dp->panel_fixed_mode = in cdv_intel_dp_get_modes()
1799 if (!intel_dp->panel_fixed_mode && dev_priv->lfp_lvds_vbt_mode) { in cdv_intel_dp_get_modes()
1800 intel_dp->panel_fixed_mode = in cdv_intel_dp_get_modes()
1802 if (intel_dp->panel_fixed_mode) { in cdv_intel_dp_get_modes()
1803 intel_dp->panel_fixed_mode->type |= in cdv_intel_dp_get_modes()
1807 if (intel_dp->panel_fixed_mode != NULL) { in cdv_intel_dp_get_modes()
1809 mode = drm_mode_duplicate(dev, intel_dp->panel_fixed_mode); in cdv_intel_dp_get_modes()
1822 struct cdv_intel_dp *intel_dp = encoder->dev_priv; in cdv_intel_dp_detect_audio() local
1830 edid = drm_get_edid(connector, &intel_dp->adapter); in cdv_intel_dp_detect_audio()
1848 struct cdv_intel_dp *intel_dp = encoder->dev_priv; in cdv_intel_dp_set_property() local
1859 if (i == intel_dp->force_audio) in cdv_intel_dp_set_property()
1862 intel_dp->force_audio = i; in cdv_intel_dp_set_property()
1869 if (has_audio == intel_dp->has_audio) in cdv_intel_dp_set_property()
1872 intel_dp->has_audio = has_audio; in cdv_intel_dp_set_property()
1877 if (val == !!intel_dp->color_range) in cdv_intel_dp_set_property()
1880 intel_dp->color_range = val ? DP_COLOR_RANGE_16_235 : 0; in cdv_intel_dp_set_property()
1901 struct cdv_intel_dp *intel_dp = gma_encoder->dev_priv; in cdv_intel_dp_destroy() local
1905 if (intel_dp->panel_fixed_mode) { in cdv_intel_dp_destroy()
1906 kfree(intel_dp->panel_fixed_mode); in cdv_intel_dp_destroy()
1907 intel_dp->panel_fixed_mode = NULL; in cdv_intel_dp_destroy()
1910 i2c_del_adapter(&intel_dp->adapter); in cdv_intel_dp_destroy()
2003 struct cdv_intel_dp *intel_dp; in cdv_intel_dp_init() local
2013 intel_dp = kzalloc(sizeof(struct cdv_intel_dp), GFP_KERNEL); in cdv_intel_dp_init()
2014 if (!intel_dp) in cdv_intel_dp_init()
2034 gma_encoder->dev_priv=intel_dp; in cdv_intel_dp_init()
2035 intel_dp->encoder = gma_encoder; in cdv_intel_dp_init()
2036 intel_dp->output_reg = output_reg; in cdv_intel_dp_init()
2105 intel_dp->panel_power_up_delay = cur.t1_t3 / 10; in cdv_intel_dp_init()
2106 intel_dp->backlight_on_delay = cur.t8 / 10; in cdv_intel_dp_init()
2107 intel_dp->backlight_off_delay = cur.t9 / 10; in cdv_intel_dp_init()
2108 intel_dp->panel_power_down_delay = cur.t10 / 10; in cdv_intel_dp_init()
2109 intel_dp->panel_power_cycle_delay = (cur.t11_t12 - 1) * 100; in cdv_intel_dp_init()
2112 intel_dp->panel_power_up_delay, intel_dp->panel_power_down_delay, in cdv_intel_dp_init()
2113 intel_dp->panel_power_cycle_delay); in cdv_intel_dp_init()
2116 intel_dp->backlight_on_delay, intel_dp->backlight_off_delay); in cdv_intel_dp_init()
2121 intel_dp->dpcd, in cdv_intel_dp_init()
2122 sizeof(intel_dp->dpcd)); in cdv_intel_dp_init()
2132 intel_dp->dpcd[0], intel_dp->dpcd[1], in cdv_intel_dp_init()
2133 intel_dp->dpcd[2], intel_dp->dpcd[3]); in cdv_intel_dp_init()