Lines Matching +full:self +full:- +full:powered

1 // SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
35 #include <sound/hdmi-codec.h>
53 #define BIT_OFFSET(x) (((x) - INT_STATUS_01) * BITS_PER_BYTE)
305 #define DEBUGFS_DIR_NAME "it6505-debugfs"
461 bool powered; member
554 struct device *dev = it6505->dev; in it6505_read()
556 if (!it6505->powered) in it6505_read()
557 return -ENODEV; in it6505_read()
559 err = regmap_read(it6505->regmap, reg_addr, &value); in it6505_read()
572 struct device *dev = it6505->dev; in it6505_write()
574 if (!it6505->powered) in it6505_write()
575 return -ENODEV; in it6505_write()
577 err = regmap_write(it6505->regmap, reg_addr, reg_val); in it6505_write()
592 struct device *dev = it6505->dev; in it6505_set_bits()
594 if (!it6505->powered) in it6505_set_bits()
595 return -ENODEV; in it6505_set_bits()
597 err = regmap_update_bits(it6505->regmap, reg, mask, value); in it6505_set_bits()
610 struct device *dev = it6505->dev; in it6505_debug_print()
629 struct device *dev = it6505->dev; in it6505_dpcd_read()
631 ret = drm_dp_dpcd_readb(&it6505->aux, offset, &value); in it6505_dpcd_read()
643 struct device *dev = it6505->dev; in it6505_dpcd_write()
645 ret = drm_dp_dpcd_writeb(&it6505->aux, offset, datain); in it6505_dpcd_write()
656 struct device *dev = it6505->dev; in it6505_get_dpcd()
658 ret = drm_dp_dpcd_read(&it6505->aux, offset, dpcd, num); in it6505_get_dpcd()
673 struct device *dev = it6505->dev; in it6505_dump()
712 struct device *dev = it6505->dev; in it6505_calc_video_info()
760 it6505->video_info.clock = pclk; in it6505_calc_video_info()
761 it6505->video_info.hdisplay = hdew; in it6505_calc_video_info()
762 it6505->video_info.hsync_start = hdew + hfph; in it6505_calc_video_info()
763 it6505->video_info.hsync_end = hdew + hfph + hsyncw; in it6505_calc_video_info()
764 it6505->video_info.htotal = htotal; in it6505_calc_video_info()
765 it6505->video_info.vdisplay = vdew; in it6505_calc_video_info()
766 it6505->video_info.vsync_start = vdew + vfph; in it6505_calc_video_info()
767 it6505->video_info.vsync_end = vdew + vfph + vsyncw; in it6505_calc_video_info()
768 it6505->video_info.vtotal = vtotal; in it6505_calc_video_info()
771 DRM_MODE_ARG(&it6505->video_info)); in it6505_calc_video_info()
782 if (link->revision < DPCD_V_1_1) in it6505_drm_dp_link_set_power()
800 * Table 5-52, "Sink Control Field" (register 0x600). in it6505_drm_dp_link_set_power()
845 if (it6505->lane_swap) { in it6505_lane_termination_on()
846 switch (it6505->lane_count) { in it6505_lane_termination_on()
858 switch (it6505->lane_count) { in it6505_lane_termination_on()
889 (it6505->lane_swap ? in it6505_lane_power_on()
890 GENMASK(7, 8 - it6505->lane_count) : in it6505_lane_power_on()
891 GENMASK(3 + it6505->lane_count, 4)) | in it6505_lane_power_on()
938 regmap_write(it6505->regmap, REG_RESET_CTRL, ALL_LOGIC_RESET); in it6505_reset_logic()
956 struct device *dev = it6505->dev; in it6505_aux_wait()
963 return -ETIMEDOUT; in it6505_aux_wait()
986 return -EIO; in it6505_aux_operation()
1017 ((address >> 16) & 0x0F) | ((size - 1) << 4)); in it6505_aux_operation()
1020 regmap_bulk_write(it6505->regmap, REG_AUX_OUT_DATA0, buffer, in it6505_aux_operation()
1040 ret = -EAGAIN; in it6505_aux_operation()
1044 ret = -EIO; in it6505_aux_operation()
1047 ret = -ETIMEDOUT; in it6505_aux_operation()
1071 if (aux_write_check && buffer[size - 1 - i] != ret) { in it6505_aux_operation()
1072 ret = -EINVAL; in it6505_aux_operation()
1076 buffer[size - 1 - i] = ret; in it6505_aux_operation()
1107 mutex_lock(&it6505->aux_lock); in it6505_aux_do_transfer()
1110 request_size = min_t(int, (int)size - i, fifo_max_size); in it6505_aux_do_transfer()
1125 mutex_unlock(&it6505->aux_lock); in it6505_aux_do_transfer()
1147 struct device *dev = it6505->dev; in it6505_aux_i2c_wait()
1157 err = -ETIMEDOUT; in it6505_aux_i2c_wait()
1169 err = -EBUSY; in it6505_aux_i2c_wait()
1171 err = -ENXIO; in it6505_aux_i2c_wait()
1224 u8 *buffer = msg->buffer; in it6505_aux_i2c_operation()
1239 it6505_write(it6505, REG_AUX_ADR_8_15, msg->address << 1); in it6505_aux_i2c_operation()
1241 if (msg->size == 0) { in it6505_aux_i2c_operation()
1243 it6505_write(it6505, REG_AUX_ADR_16_19, msg->request); in it6505_aux_i2c_operation()
1245 ret = it6505_aux_i2c_wait(it6505, &msg->reply); in it6505_aux_i2c_operation()
1252 request_size = min_t(ssize_t, msg->size - data_cnt, AUX_I2C_MAX_SIZE); in it6505_aux_i2c_operation()
1254 msg->request | ((request_size - 1) << 4)); in it6505_aux_i2c_operation()
1255 if ((msg->request & DP_AUX_I2C_READ) == DP_AUX_I2C_READ) in it6505_aux_i2c_operation()
1257 request_size, &msg->reply); in it6505_aux_i2c_operation()
1260 request_size, &msg->reply); in it6505_aux_i2c_operation()
1266 } while (data_cnt < msg->size); in it6505_aux_i2c_operation()
1280 guard(mutex)(&it6505->aux_lock); in it6505_aux_i2c_transfer()
1289 bool is_i2c = !(msg->request & DP_AUX_NATIVE_WRITE); in it6505_aux_transfer()
1296 switch (msg->request) { in it6505_aux_transfer()
1304 return -EINVAL; in it6505_aux_transfer()
1307 ret = it6505_aux_do_transfer(it6505, cmd, msg->address, msg->buffer, in it6505_aux_transfer()
1308 msg->size, &reply); in it6505_aux_transfer()
1314 msg->reply = DP_AUX_NATIVE_REPLY_ACK; in it6505_aux_transfer()
1317 msg->reply = DP_AUX_NATIVE_REPLY_NACK; in it6505_aux_transfer()
1320 msg->reply = DP_AUX_NATIVE_REPLY_DEFER; in it6505_aux_transfer()
1331 struct device *dev = it6505->dev; in it6505_get_edid_block()
1343 if (ret < 0 && ret != -EAGAIN) in it6505_get_edid_block()
1354 return -EIO; in it6505_get_edid_block()
1357 if (!(--aux_retry)) in it6505_get_edid_block()
1358 return -EIO; in it6505_get_edid_block()
1367 struct device *dev = it6505->dev; in it6505_get_ksvlist()
1373 request_size = min_t(int, (int)len - i, 15); in it6505_get_ksvlist()
1398 it6505->link_rate_bw_code = HBR; in it6505_variable_config()
1399 it6505->lane_count = MAX_LANE_COUNT; in it6505_variable_config()
1400 it6505->link_state = LINK_IDLE; in it6505_variable_config()
1401 it6505->hdcp_desired = HDCP_DESIRED; in it6505_variable_config()
1402 it6505->auto_train_retry = AUTO_TRAIN_RETRY; in it6505_variable_config()
1403 it6505->audio.select = AUDIO_SELECT; in it6505_variable_config()
1404 it6505->audio.sample_rate = AUDIO_SAMPLE_RATE; in it6505_variable_config()
1405 it6505->audio.channel_count = AUDIO_CHANNEL_COUNT; in it6505_variable_config()
1406 it6505->audio.type = AUDIO_TYPE; in it6505_variable_config()
1407 it6505->audio.i2s_input_format = I2S_INPUT_FORMAT; in it6505_variable_config()
1408 it6505->audio.i2s_justified = I2S_JUSTIFIED; in it6505_variable_config()
1409 it6505->audio.i2s_data_delay = I2S_DATA_DELAY; in it6505_variable_config()
1410 it6505->audio.i2s_ws_channel = I2S_WS_CHANNEL; in it6505_variable_config()
1411 it6505->audio.i2s_data_sequence = I2S_DATA_SEQUENCE; in it6505_variable_config()
1412 it6505->audio.word_length = AUDIO_WORD_LENGTH; in it6505_variable_config()
1413 memset(it6505->sha1_input, 0, sizeof(it6505->sha1_input)); in it6505_variable_config()
1414 memset(it6505->bksvs, 0, sizeof(it6505->bksvs)); in it6505_variable_config()
1422 struct device *dev = it6505->dev; in it6505_send_video_infoframe()
1434 err = regmap_bulk_write(it6505->regmap, REG_AVI_INFO_DB1, in it6505_send_video_infoframe()
1436 frame->length); in it6505_send_video_infoframe()
1452 struct device *dev = it6505->dev; in it6505_get_extcon_property()
1454 if (it6505->extcon && !it6505->lane_swap_disabled) { in it6505_get_extcon_property()
1455 err = extcon_get_property(it6505->extcon, EXTCON_DISP_DP, in it6505_get_extcon_property()
1462 it6505->lane_swap = property.intval; in it6505_get_extcon_property()
1469 int clock = mode->clock; in it6505_clk_phase_adjustment()
1505 afe_setting_table[it6505->afe_setting][0]); in it6505_init()
1507 afe_setting_table[it6505->afe_setting][1]); in it6505_init()
1509 afe_setting_table[it6505->afe_setting][2]); in it6505_init()
1561 enum it6505_audio_sample_rate sample_rate = it6505->audio.sample_rate; in it6505_setup_audio_channel_status()
1565 it6505_write(it6505, REG_IEC958_STS0, it6505->audio.type << 1); in it6505_setup_audio_channel_status()
1570 audio_word_length_map[it6505->audio.word_length]); in it6505_setup_audio_channel_status()
1577 (it6505->audio.word_length << 5) | in it6505_setup_audio_format()
1578 (it6505->audio.i2s_data_sequence << 4) | in it6505_setup_audio_format()
1579 (it6505->audio.i2s_ws_channel << 3) | in it6505_setup_audio_format()
1580 (it6505->audio.i2s_data_delay << 2) | in it6505_setup_audio_format()
1581 (it6505->audio.i2s_justified << 1) | in it6505_setup_audio_format()
1582 it6505->audio.i2s_input_format); in it6505_setup_audio_format()
1583 if (it6505->audio.select == SPDIF) { in it6505_setup_audio_format()
1599 audio_source_count = BIT(DIV_ROUND_UP(it6505->audio.channel_count, 2)) in it6505_enable_audio_source()
1600 - 1; in it6505_enable_audio_source()
1602 audio_source_count |= it6505->audio.select << 4; in it6505_enable_audio_source()
1609 struct device *dev = it6505->dev; in it6505_enable_audio_infoframe()
1613 audio_info_ca[it6505->audio.channel_count - 1]); in it6505_enable_audio_infoframe()
1615 it6505_write(it6505, REG_AUD_INFOFRAM_DB1, it6505->audio.channel_count in it6505_enable_audio_infoframe()
1616 - 1); in it6505_enable_audio_infoframe()
1619 audio_info_ca[it6505->audio.channel_count - 1]); in it6505_enable_audio_infoframe()
1638 struct device *dev = it6505->dev; in it6505_enable_audio()
1665 if (it6505->link.revision >= 0x12) in it6505_use_step_train_check()
1666 return it6505->dpcd[DP_TRAINING_AUX_RD_INTERVAL] >= 0x01; in it6505_use_step_train_check()
1673 struct device *dev = it6505->dev; in it6505_parse_link_capabilities()
1674 struct it6505_drm_dp_link *link = &it6505->link; in it6505_parse_link_capabilities()
1677 if (it6505->dpcd[0] == 0) { in it6505_parse_link_capabilities()
1684 link->revision = it6505->dpcd[0]; in it6505_parse_link_capabilities()
1685 link->rate = drm_dp_bw_code_to_link_rate(it6505->dpcd[1]); in it6505_parse_link_capabilities()
1686 link->num_lanes = it6505->dpcd[2] & DP_MAX_LANE_COUNT_MASK; in it6505_parse_link_capabilities()
1688 if (it6505->dpcd[2] & DP_ENHANCED_FRAME_CAP) in it6505_parse_link_capabilities()
1689 link->capabilities = DP_ENHANCED_FRAME_CAP; in it6505_parse_link_capabilities()
1692 link->revision >> 4, link->revision & 0x0F); in it6505_parse_link_capabilities()
1695 link->rate / 100000, link->rate / 1000 % 100); in it6505_parse_link_capabilities()
1697 it6505->link_rate_bw_code = drm_dp_link_rate_to_bw_code(link->rate); in it6505_parse_link_capabilities()
1699 it6505->link_rate_bw_code); in it6505_parse_link_capabilities()
1700 it6505->link_rate_bw_code = min_t(int, it6505->link_rate_bw_code, in it6505_parse_link_capabilities()
1703 it6505->lane_count = link->num_lanes; in it6505_parse_link_capabilities()
1705 it6505->lane_count); in it6505_parse_link_capabilities()
1706 it6505->lane_count = min_t(int, it6505->lane_count, in it6505_parse_link_capabilities()
1707 it6505->max_lane_count); in it6505_parse_link_capabilities()
1709 it6505->branch_device = drm_dp_is_branch(it6505->dpcd); in it6505_parse_link_capabilities()
1711 it6505->branch_device ? "" : "Not "); in it6505_parse_link_capabilities()
1713 it6505->enable_enhanced_frame = link->capabilities; in it6505_parse_link_capabilities()
1715 it6505->enable_enhanced_frame ? "" : "Not "); in it6505_parse_link_capabilities()
1717 it6505->enable_ssc = (it6505->dpcd[DP_MAX_DOWNSPREAD] & in it6505_parse_link_capabilities()
1719 DRM_DEV_DEBUG_DRIVER(dev, "Maximum Down-Spread: %s, %ssupport SSC!", in it6505_parse_link_capabilities()
1720 it6505->enable_ssc ? "0.5" : "0", in it6505_parse_link_capabilities()
1721 it6505->enable_ssc ? "" : "Not "); in it6505_parse_link_capabilities()
1723 it6505->step_train = it6505_use_step_train_check(it6505); in it6505_parse_link_capabilities()
1724 if (it6505->step_train) in it6505_parse_link_capabilities()
1730 it6505->is_repeater = (bcaps & DP_BCAPS_REPEATER_PRESENT); in it6505_parse_link_capabilities()
1732 it6505->is_repeater ? "repeater" : in it6505_parse_link_capabilities()
1736 it6505->hdcp_desired = false; in it6505_parse_link_capabilities()
1739 it6505->hdcp_desired ? "desired" : "undesired"); in it6505_parse_link_capabilities()
1745 it6505->enable_ssc ? SPREAD_AMP_5 : 0x00); in it6505_setup_ssc()
1746 if (it6505->enable_ssc) { in it6505_setup_ssc()
1768 (it6505->link_rate_bw_code == RBR) ? FORCE_LBR : 0x00); in it6505_link_rate_setup()
1770 (it6505->link_rate_bw_code == RBR) ? 0x00 : DRV_HS); in it6505_link_rate_setup()
1777 it6505->lane_swap ? LANE_SWAP : 0x00); in it6505_lane_count_setup()
1779 (it6505->lane_count - 1) << 1); in it6505_lane_count_setup()
1784 struct device *dev = it6505->dev; in it6505_link_training_setup()
1786 if (it6505->enable_enhanced_frame) in it6505_link_training_setup()
1795 it6505->link_rate_bw_code != RBR ? "HBR" : "RBR", in it6505_link_training_setup()
1796 it6505->lane_count, in it6505_link_training_setup()
1797 it6505->enable_ssc ? "en" : "dis", in it6505_link_training_setup()
1798 it6505->enable_enhanced_frame ? "en" : "dis"); in it6505_link_training_setup()
1806 mutex_lock(&it6505->aux_lock); in it6505_link_start_auto_train()
1822 timeout--; in it6505_link_start_auto_train()
1825 mutex_unlock(&it6505->aux_lock); in it6505_link_start_auto_train()
1834 struct drm_dp_aux *aux = &it6505->aux; in it6505_drm_dp_link_configure()
1836 values[0] = it6505->link_rate_bw_code; in it6505_drm_dp_link_configure()
1837 values[1] = it6505->lane_count; in it6505_drm_dp_link_configure()
1839 if (it6505->enable_enhanced_frame) in it6505_drm_dp_link_configure()
1878 u8 *voltage_swing = lane_voltage_pre_emphasis->voltage_swing; in step_train_lane_voltage_para_set()
1879 u8 *pre_emphasis = lane_voltage_pre_emphasis->pre_emphasis; in step_train_lane_voltage_para_set()
1882 for (i = 0; i < it6505->lane_count; i++) { in step_train_lane_voltage_para_set()
1913 int pre_emphasis_adjust = -1, voltage_swing_adjust = -1; in it6505_step_cr_train()
1914 const struct drm_dp_aux *aux = &it6505->aux; in it6505_step_cr_train()
1917 it6505->enable_ssc ? DP_SPREAD_AMP_0_5 : 0x00); in it6505_step_cr_train()
1927 drm_dp_link_train_clock_recovery_delay(aux, it6505->dpcd); in it6505_step_cr_train()
1928 drm_dp_dpcd_read_link_status(&it6505->aux, link_status); in it6505_step_cr_train()
1930 if (drm_dp_clock_recovery_ok(link_status, it6505->lane_count)) { in it6505_step_cr_train()
1935 DRM_DEV_DEBUG_DRIVER(it6505->dev, "cr not done"); in it6505_step_cr_train()
1938 it6505->lane_count)) in it6505_step_cr_train()
1941 for (j = 0; j < it6505->lane_count; j++) { in it6505_step_cr_train()
1942 lane_voltage_pre_emphasis->voltage_swing[j] = in it6505_step_cr_train()
1946 lane_voltage_pre_emphasis->pre_emphasis[j] = in it6505_step_cr_train()
1951 lane_voltage_pre_emphasis->voltage_swing[j] && in it6505_step_cr_train()
1953 lane_voltage_pre_emphasis->pre_emphasis[j]) { in it6505_step_cr_train()
1959 lane_voltage_pre_emphasis->voltage_swing[j]; in it6505_step_cr_train()
1961 lane_voltage_pre_emphasis->pre_emphasis[j]; in it6505_step_cr_train()
1966 lane_voltage_pre_emphasis->voltage_swing[j] = in it6505_step_cr_train()
1967 MAX_EQ_LEVEL - in it6505_step_cr_train()
1969 ->pre_emphasis[j]; in it6505_step_cr_train()
1986 const struct drm_dp_aux *aux = &it6505->aux; in it6505_step_eq_train()
1999 drm_dp_link_train_channel_eq_delay(aux, it6505->dpcd); in it6505_step_eq_train()
2000 drm_dp_dpcd_read_link_status(&it6505->aux, link_status); in it6505_step_eq_train()
2002 if (!drm_dp_clock_recovery_ok(link_status, it6505->lane_count)) in it6505_step_eq_train()
2005 if (drm_dp_channel_eq_ok(link_status, it6505->lane_count)) { in it6505_step_eq_train()
2012 DRM_DEV_DEBUG_DRIVER(it6505->dev, "eq not done"); in it6505_step_eq_train()
2014 for (i = 0; i < it6505->lane_count; i++) { in it6505_step_eq_train()
2015 lane_voltage_pre_emphasis->voltage_swing[i] = in it6505_step_eq_train()
2019 lane_voltage_pre_emphasis->pre_emphasis[i] = in it6505_step_eq_train()
2024 if (lane_voltage_pre_emphasis->voltage_swing[i] + in it6505_step_eq_train()
2025 lane_voltage_pre_emphasis->pre_emphasis[i] > in it6505_step_eq_train()
2027 lane_voltage_pre_emphasis->voltage_swing[i] = in it6505_step_eq_train()
2028 0x03 - lane_voltage_pre_emphasis in it6505_step_eq_train()
2029 ->pre_emphasis[i]; in it6505_step_eq_train()
2047 DRM_DEV_DEBUG_DRIVER(it6505->dev, "start"); in it6505_link_start_step_train()
2073 it6505->hdcp_status = HDCP_AUTH_IDLE; in it6505_reset_hdcp()
2081 struct device *dev = it6505->dev; in it6505_start_hdcp()
2085 queue_delayed_work(system_wq, &it6505->hdcp_work, in it6505_start_hdcp()
2092 cancel_delayed_work(&it6505->hdcp_work); in it6505_stop_hdcp()
2109 struct device *dev = it6505->dev; in it6505_hdcp_part1_auth()
2141 it6505->hdcp_status = HDCP_AUTH_GOING; in it6505_hdcp_part1_auth()
2150 struct device *dev = it6505->dev; in it6505_sha1_digest()
2160 return -ENOMEM; in it6505_sha1_digest()
2163 desc->tfm = tfm; in it6505_sha1_digest()
2175 struct device *dev = it6505->dev; in it6505_setup_sha1_input()
2208 it6505->hdcp_down_stream_count = down_stream_count; in it6505_setup_sha1_input()
2215 err = regmap_bulk_read(it6505->regmap, REG_M0_0_7, in it6505_setup_sha1_input()
2232 struct device *dev = it6505->dev; in it6505_hdcp_part2_ksvlist_check()
2236 i = it6505_setup_sha1_input(it6505, it6505->sha1_input); in it6505_hdcp_part2_ksvlist_check()
2238 dev_err(dev, "SHA-1 Input length error %d", i); in it6505_hdcp_part2_ksvlist_check()
2242 it6505_sha1_digest(it6505, it6505->sha1_input, i, (u8 *)av); in it6505_hdcp_part2_ksvlist_check()
2243 /*1B-05 V' must retry 3 times */ in it6505_hdcp_part2_ksvlist_check()
2271 struct device *dev = it6505->dev; in it6505_hdcp_wait_ksv_list()
2274 /* 1B-04 wait ksv list for 5s */ in it6505_hdcp_wait_ksv_list()
2310 struct device *dev = it6505->dev; in it6505_hdcp_work()
2319 ret = drm_dp_dpcd_read_link_status(&it6505->aux, link_status); in it6505_hdcp_work()
2323 if (ret < 0 || !drm_dp_channel_eq_ok(link_status, it6505->lane_count) || in it6505_hdcp_work()
2329 ret = it6505_get_dpcd(it6505, DP_AUX_HDCP_BKSV, it6505->bksvs, in it6505_hdcp_work()
2330 ARRAY_SIZE(it6505->bksvs)); in it6505_hdcp_work()
2338 (int)ARRAY_SIZE(it6505->bksvs), it6505->bksvs); in it6505_hdcp_work()
2340 if (!it6505_hdcp_is_ksv_valid(it6505->bksvs)) { in it6505_hdcp_work()
2351 struct device *dev = it6505->dev; in it6505_show_hdcp_info()
2353 u8 *sha1 = it6505->sha1_input; in it6505_show_hdcp_info()
2356 it6505->hdcp_status, it6505->is_repeater); in it6505_show_hdcp_info()
2358 (int)ARRAY_SIZE(it6505->bksvs), it6505->bksvs); in it6505_show_hdcp_info()
2360 if (it6505->is_repeater) { in it6505_show_hdcp_info()
2362 it6505->hdcp_down_stream_count); in it6505_show_hdcp_info()
2364 (int)ARRAY_SIZE(it6505->sha1_input), in it6505_show_hdcp_info()
2365 it6505->sha1_input); in it6505_show_hdcp_info()
2366 for (i = 0; i < it6505->hdcp_down_stream_count; i++) { in it6505_show_hdcp_info()
2378 it6505->link_state = LINK_IDLE; in it6505_stop_link_train()
2379 cancel_work_sync(&it6505->link_works); in it6505_stop_link_train()
2385 struct device *dev = it6505->dev; in it6505_link_train_ok()
2387 it6505->link_state = LINK_OK; in it6505_link_train_ok()
2398 if (it6505->hdcp_desired) in it6505_link_train_ok()
2404 struct device *dev = it6505->dev; in it6505_link_step_train_process()
2409 if (it6505->sink_count == 0) { in it6505_link_step_train_process()
2410 DRM_DEV_DEBUG_DRIVER(dev, "it6505->sink_count:%d, force eq", in it6505_link_step_train_process()
2411 it6505->sink_count); in it6505_link_step_train_process()
2417 if (!it6505->step_train) { in it6505_link_step_train_process()
2435 it6505->link_state = LINK_IDLE; in it6505_link_step_train_process()
2442 struct device *dev = it6505->dev; in it6505_link_training_work()
2445 DRM_DEV_DEBUG_DRIVER(dev, "it6505->sink_count: %d", in it6505_link_training_work()
2446 it6505->sink_count); in it6505_link_training_work()
2455 if (it6505->auto_train_retry < 1) { in it6505_link_training_work()
2462 ret ? "pass" : "failed", it6505->auto_train_retry); in it6505_link_training_work()
2465 it6505->auto_train_retry = AUTO_TRAIN_RETRY; in it6505_link_training_work()
2468 it6505->auto_train_retry--; in it6505_link_training_work()
2476 enum drm_connector_status status = it6505->connector_status; in it6505_plugged_status_to_codec()
2478 if (it6505->plugged_cb && it6505->codec_dev) in it6505_plugged_status_to_codec()
2479 it6505->plugged_cb(it6505->codec_dev, in it6505_plugged_status_to_codec()
2485 drm_edid_free(it6505->cached_edid); in it6505_remove_edid()
2486 it6505->cached_edid = NULL; in it6505_remove_edid()
2491 struct device *dev = it6505->dev; in it6505_process_hpd_irq()
2497 it6505->sink_count = 0; in it6505_process_hpd_irq()
2506 DRM_DEV_DEBUG_DRIVER(dev, "dpcd_sink_count: %d it6505->sink_count:%d", in it6505_process_hpd_irq()
2507 dpcd_sink_count, it6505->sink_count); in it6505_process_hpd_irq()
2509 if (it6505->branch_device && dpcd_sink_count != it6505->sink_count) { in it6505_process_hpd_irq()
2510 memset(it6505->dpcd, 0, sizeof(it6505->dpcd)); in it6505_process_hpd_irq()
2511 it6505->sink_count = dpcd_sink_count; in it6505_process_hpd_irq()
2534 it6505->hdcp_status == HDCP_AUTH_GOING) in it6505_process_hpd_irq()
2538 it6505->hdcp_status == HDCP_AUTH_DONE) in it6505_process_hpd_irq()
2542 ret = drm_dp_dpcd_read_link_status(&it6505->aux, link_status); in it6505_process_hpd_irq()
2551 if (!drm_dp_channel_eq_ok(link_status, it6505->lane_count)) { in it6505_process_hpd_irq()
2552 it6505->auto_train_retry = AUTO_TRAIN_RETRY; in it6505_process_hpd_irq()
2561 struct device *dev = it6505->dev; in it6505_irq_hpd()
2564 it6505->hpd_state = it6505_get_sink_hpd_status(it6505); in it6505_irq_hpd()
2566 it6505->hpd_state ? "high" : "low"); in it6505_irq_hpd()
2568 if (it6505->hpd_state) { in it6505_irq_hpd()
2569 wait_for_completion_timeout(&it6505->extcon_completion, in it6505_irq_hpd()
2572 if (it6505->dpcd[0] == 0) { in it6505_irq_hpd()
2573 it6505_get_dpcd(it6505, DP_DPCD_REV, it6505->dpcd, in it6505_irq_hpd()
2574 ARRAY_SIZE(it6505->dpcd)); in it6505_irq_hpd()
2578 it6505->auto_train_retry = AUTO_TRAIN_RETRY; in it6505_irq_hpd()
2580 it6505_drm_dp_link_set_power(&it6505->aux, &it6505->link, in it6505_irq_hpd()
2583 it6505->sink_count = DP_GET_SINK_COUNT(dp_sink_count); in it6505_irq_hpd()
2585 DRM_DEV_DEBUG_DRIVER(dev, "it6505->sink_count: %d", in it6505_irq_hpd()
2586 it6505->sink_count); in it6505_irq_hpd()
2593 * when sink count change from 0->1 in it6505_irq_hpd()
2598 if (it6505->branch_device && it6505->sink_count == 0) in it6505_irq_hpd()
2599 schedule_work(&it6505->link_works); in it6505_irq_hpd()
2604 memset(it6505->dpcd, 0, sizeof(it6505->dpcd)); in it6505_irq_hpd()
2607 if (it6505->hdcp_desired) in it6505_irq_hpd()
2617 if (it6505->bridge.dev) in it6505_irq_hpd()
2618 drm_helper_hpd_irq_event(it6505->bridge.dev); in it6505_irq_hpd()
2623 struct device *dev = it6505->dev; in it6505_irq_hpd_irq()
2633 struct device *dev = it6505->dev; in it6505_irq_scdt()
2643 schedule_work(&it6505->link_works); in it6505_irq_scdt()
2648 struct device *dev = it6505->dev; in it6505_irq_hdcp_done()
2651 it6505->hdcp_status = HDCP_AUTH_DONE; in it6505_irq_hdcp_done()
2657 struct device *dev = it6505->dev; in it6505_irq_hdcp_fail()
2660 it6505->hdcp_status = HDCP_AUTH_IDLE; in it6505_irq_hdcp_fail()
2667 struct device *dev = it6505->dev; in it6505_irq_aux_cmd_fail()
2674 struct device *dev = it6505->dev; in it6505_irq_hdcp_ksv_check()
2681 schedule_work(&it6505->hdcp_wait_ksv_list); in it6505_irq_hdcp_ksv_check()
2686 struct device *dev = it6505->dev; in it6505_irq_audio_fifo_error()
2696 struct device *dev = it6505->dev; in it6505_irq_link_train_fail()
2699 schedule_work(&it6505->link_works); in it6505_irq_link_train_fail()
2709 struct device *dev = it6505->dev; in it6505_irq_video_handler()
2723 it6505->auto_train_retry = AUTO_TRAIN_RETRY; in it6505_irq_video_handler()
2724 flush_work(&it6505->link_works); in it6505_irq_video_handler()
2731 * Clear FIFO error IRQ to prevent fifo error -> reset loop in it6505_irq_video_handler()
2754 struct device *dev = it6505->dev; in it6505_int_threaded_handler()
2770 if (it6505->enable_drv_hold || !it6505->powered) in it6505_int_threaded_handler()
2791 if (it6505->hpd_state) { in it6505_int_threaded_handler()
2806 struct device *dev = it6505->dev; in it6505_poweron()
2807 struct it6505_platform_data *pdata = &it6505->pdata; in it6505_poweron()
2810 DRM_DEV_DEBUG_DRIVER(dev, "it6505 start powered on"); in it6505_poweron()
2812 if (it6505->powered) { in it6505_poweron()
2813 DRM_DEV_DEBUG_DRIVER(dev, "it6505 already powered on"); in it6505_poweron()
2817 if (pdata->pwr18) { in it6505_poweron()
2818 err = regulator_enable(pdata->pwr18); in it6505_poweron()
2826 if (pdata->ovdd) { in it6505_poweron()
2829 err = regulator_enable(pdata->ovdd); in it6505_poweron()
2831 regulator_disable(pdata->pwr18); in it6505_poweron()
2836 if (pdata->gpiod_reset) { in it6505_poweron()
2838 gpiod_set_value_cansleep(pdata->gpiod_reset, 1); in it6505_poweron()
2840 gpiod_set_value_cansleep(pdata->gpiod_reset, 0); in it6505_poweron()
2844 it6505->powered = true; in it6505_poweron()
2850 enable_irq(it6505->irq); in it6505_poweron()
2857 struct device *dev = it6505->dev; in it6505_poweroff()
2858 struct it6505_platform_data *pdata = &it6505->pdata; in it6505_poweroff()
2863 if (!it6505->powered) { in it6505_poweroff()
2868 disable_irq_nosync(it6505->irq); in it6505_poweroff()
2870 if (pdata->gpiod_reset) in it6505_poweroff()
2871 gpiod_set_value_cansleep(pdata->gpiod_reset, 1); in it6505_poweroff()
2873 if (pdata->pwr18) { in it6505_poweroff()
2874 err = regulator_disable(pdata->pwr18); in it6505_poweroff()
2879 if (pdata->ovdd) { in it6505_poweroff()
2880 err = regulator_disable(pdata->ovdd); in it6505_poweroff()
2885 it6505->powered = false; in it6505_poweroff()
2886 it6505->sink_count = 0; in it6505_poweroff()
2893 struct device *dev = it6505->dev; in it6505_detect()
2897 DRM_DEV_DEBUG_DRIVER(dev, "it6505->sink_count:%d powered:%d", in it6505_detect()
2898 it6505->sink_count, it6505->powered); in it6505_detect()
2900 mutex_lock(&it6505->mode_lock); in it6505_detect()
2902 if (!it6505->powered) in it6505_detect()
2905 if (it6505->enable_drv_hold) { in it6505_detect()
2906 status = it6505->hpd_state ? connector_status_connected : in it6505_detect()
2911 if (it6505->hpd_state) { in it6505_detect()
2912 it6505_drm_dp_link_set_power(&it6505->aux, &it6505->link, in it6505_detect()
2915 it6505->sink_count = DP_GET_SINK_COUNT(dp_sink_count); in it6505_detect()
2916 DRM_DEV_DEBUG_DRIVER(dev, "it6505->sink_count:%d branch:%d", in it6505_detect()
2917 it6505->sink_count, it6505->branch_device); in it6505_detect()
2919 if (it6505->branch_device) { in it6505_detect()
2920 status = (it6505->sink_count != 0) ? in it6505_detect()
2927 it6505->sink_count = 0; in it6505_detect()
2928 memset(it6505->dpcd, 0, sizeof(it6505->dpcd)); in it6505_detect()
2932 if (it6505->connector_status != status) { in it6505_detect()
2933 it6505->connector_status = status; in it6505_detect()
2937 mutex_unlock(&it6505->mode_lock); in it6505_detect()
2942 static int it6505_extcon_notifier(struct notifier_block *self, in it6505_extcon_notifier() argument
2945 struct it6505 *it6505 = container_of(self, struct it6505, event_nb); in it6505_extcon_notifier()
2947 schedule_work(&it6505->extcon_wq); in it6505_extcon_notifier()
2954 struct device *dev = it6505->dev; in it6505_extcon_work()
2957 if (it6505->enable_drv_hold) in it6505_extcon_work()
2960 mutex_lock(&it6505->extcon_lock); in it6505_extcon_work()
2962 state = extcon_get_state(it6505->extcon, EXTCON_DISP_DP); in it6505_extcon_work()
2965 if (state == it6505->extcon_state || unlikely(state < 0)) in it6505_extcon_work()
2967 it6505->extcon_state = state; in it6505_extcon_work()
2975 * pm_runtime_force_resume re-enables runtime power management. in it6505_extcon_work()
2976 * Handling the error here to make sure the bridge is powered on. in it6505_extcon_work()
2981 complete_all(&it6505->extcon_completion); in it6505_extcon_work()
2985 reinit_completion(&it6505->extcon_completion); in it6505_extcon_work()
2987 drm_helper_hpd_irq_event(it6505->bridge.dev); in it6505_extcon_work()
2988 memset(it6505->dpcd, 0, sizeof(it6505->dpcd)); in it6505_extcon_work()
2993 mutex_unlock(&it6505->extcon_lock); in it6505_extcon_work()
2999 struct device *dev = it6505->dev; in it6505_use_notifier_module()
3001 it6505->event_nb.notifier_call = it6505_extcon_notifier; in it6505_use_notifier_module()
3002 INIT_WORK(&it6505->extcon_wq, it6505_extcon_work); in it6505_use_notifier_module()
3003 ret = devm_extcon_register_notifier(it6505->dev, in it6505_use_notifier_module()
3004 it6505->extcon, EXTCON_DISP_DP, in it6505_use_notifier_module()
3005 &it6505->event_nb); in it6505_use_notifier_module()
3011 schedule_work(&it6505->extcon_wq); in it6505_use_notifier_module()
3018 if (it6505->extcon) { in it6505_remove_notifier_module()
3019 devm_extcon_unregister_notifier(it6505->dev, in it6505_remove_notifier_module()
3020 it6505->extcon, EXTCON_DISP_DP, in it6505_remove_notifier_module()
3021 &it6505->event_nb); in it6505_remove_notifier_module()
3023 flush_work(&it6505->extcon_wq); in it6505_remove_notifier_module()
3032 DRM_DEV_DEBUG_DRIVER(it6505->dev, "start"); in it6505_delayed_audio()
3034 if (!it6505->powered) in it6505_delayed_audio()
3037 if (!it6505->enable_drv_hold) in it6505_delayed_audio()
3045 struct device *dev = it6505->dev; in it6505_audio_setup_hw_params()
3049 params->sample_rate, params->sample_width, in it6505_audio_setup_hw_params()
3050 params->cea.channels); in it6505_audio_setup_hw_params()
3052 if (!it6505->bridge.encoder) in it6505_audio_setup_hw_params()
3053 return -ENODEV; in it6505_audio_setup_hw_params()
3055 if (params->cea.channels <= 1 || params->cea.channels > 8) { in it6505_audio_setup_hw_params()
3057 it6505->audio.channel_count); in it6505_audio_setup_hw_params()
3058 return -EINVAL; in it6505_audio_setup_hw_params()
3061 it6505->audio.channel_count = params->cea.channels; in it6505_audio_setup_hw_params()
3064 params->sample_rate != in it6505_audio_setup_hw_params()
3070 params->sample_rate); in it6505_audio_setup_hw_params()
3071 return -EINVAL; in it6505_audio_setup_hw_params()
3073 it6505->audio.sample_rate = audio_sample_rate_map[i].rate; in it6505_audio_setup_hw_params()
3075 switch (params->sample_width) { in it6505_audio_setup_hw_params()
3077 it6505->audio.word_length = WORD_LENGTH_16BIT; in it6505_audio_setup_hw_params()
3080 it6505->audio.word_length = WORD_LENGTH_18BIT; in it6505_audio_setup_hw_params()
3083 it6505->audio.word_length = WORD_LENGTH_20BIT; in it6505_audio_setup_hw_params()
3087 it6505->audio.word_length = WORD_LENGTH_24BIT; in it6505_audio_setup_hw_params()
3091 params->sample_width); in it6505_audio_setup_hw_params()
3092 return -EINVAL; in it6505_audio_setup_hw_params()
3102 if (it6505->powered) in it6505_audio_shutdown()
3113 it6505->plugged_cb = fn; in it6505_audio_hook_plugged_cb()
3114 it6505->codec_dev = codec_dev; in it6505_audio_hook_plugged_cb()
3129 struct device *dev = it6505->dev; in it6505_bridge_attach()
3134 return -EINVAL; in it6505_bridge_attach()
3138 it6505->aux.drm_dev = bridge->dev; in it6505_bridge_attach()
3140 ret = drm_dp_aux_register(&it6505->aux); in it6505_bridge_attach()
3147 if (it6505->extcon) { in it6505_bridge_attach()
3162 flush_work(&it6505->link_works); in it6505_bridge_detach()
3173 if (mode->flags & DRM_MODE_FLAG_INTERLACE) in it6505_bridge_mode_valid()
3176 if (mode->clock > it6505->max_dpi_pixel_clock) in it6505_bridge_mode_valid()
3179 it6505->video_info.clock = mode->clock; in it6505_bridge_mode_valid()
3188 struct device *dev = it6505->dev; in it6505_bridge_atomic_enable()
3189 struct drm_atomic_state *state = old_state->base.state; in it6505_bridge_atomic_enable()
3200 bridge->encoder); in it6505_bridge_atomic_enable()
3210 crtc_state = drm_atomic_get_new_crtc_state(state, conn_state->crtc); in it6505_bridge_atomic_enable()
3215 mode = &crtc_state->adjusted_mode; in it6505_bridge_atomic_enable()
3236 it6505_drm_dp_link_set_power(&it6505->aux, &it6505->link, in it6505_bridge_atomic_enable()
3244 struct device *dev = it6505->dev; in it6505_bridge_atomic_disable()
3248 if (it6505->powered) { in it6505_bridge_atomic_disable()
3249 it6505_drm_dp_link_set_power(&it6505->aux, &it6505->link, in it6505_bridge_atomic_disable()
3259 struct device *dev = it6505->dev; in it6505_bridge_atomic_pre_enable()
3270 struct device *dev = it6505->dev; in it6505_bridge_atomic_post_disable()
3289 struct device *dev = it6505->dev; in it6505_bridge_edid_read()
3291 if (!it6505->cached_edid) { in it6505_bridge_edid_read()
3292 it6505->cached_edid = drm_edid_read_custom(connector, in it6505_bridge_edid_read()
3296 if (!it6505->cached_edid) { in it6505_bridge_edid_read()
3302 return drm_edid_dup(it6505->cached_edid); in it6505_bridge_edid_read()
3343 struct it6505_platform_data *pdata = &it6505->pdata; in it6505_init_pdata()
3344 struct device *dev = it6505->dev; in it6505_init_pdata()
3347 pdata->pwr18 = devm_regulator_get(dev, "pwr18"); in it6505_init_pdata()
3348 if (IS_ERR(pdata->pwr18)) { in it6505_init_pdata()
3350 return PTR_ERR(pdata->pwr18); in it6505_init_pdata()
3353 pdata->ovdd = devm_regulator_get(dev, "ovdd"); in it6505_init_pdata()
3354 if (IS_ERR(pdata->ovdd)) { in it6505_init_pdata()
3356 return PTR_ERR(pdata->ovdd); in it6505_init_pdata()
3359 pdata->gpiod_reset = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); in it6505_init_pdata()
3360 if (IS_ERR(pdata->gpiod_reset)) { in it6505_init_pdata()
3362 return PTR_ERR(pdata->gpiod_reset); in it6505_init_pdata()
3374 ret = of_property_count_u32_elems(endpoint, "data-lanes"); in it6505_get_data_lanes_count()
3379 return -EINVAL; in it6505_get_data_lanes_count()
3386 struct device *dev = it6505->dev; in it6505_parse_dt()
3387 struct device_node *np = dev->of_node, *ep = NULL; in it6505_parse_dt()
3391 u32 *afe_setting = &it6505->afe_setting; in it6505_parse_dt()
3392 u32 *max_lane_count = &it6505->max_lane_count; in it6505_parse_dt()
3393 u32 *max_dpi_pixel_clock = &it6505->max_dpi_pixel_clock; in it6505_parse_dt()
3395 it6505->lane_swap_disabled = in it6505_parse_dt()
3396 device_property_read_bool(dev, "no-laneswap"); in it6505_parse_dt()
3398 if (it6505->lane_swap_disabled) in it6505_parse_dt()
3399 it6505->lane_swap = false; in it6505_parse_dt()
3401 if (device_property_read_u32(dev, "afe-setting", afe_setting) == 0) { in it6505_parse_dt()
3417 of_property_read_u32_array(ep, "data-lanes", in it6505_parse_dt()
3422 dev_err(dev, "error data-lanes, use default"); in it6505_parse_dt()
3434 "link-frequencies", in it6505_parse_dt()
3456 it6505->afe_setting, it6505->max_lane_count); in it6505_parse_dt()
3458 it6505->max_dpi_pixel_clock); in it6505_parse_dt()
3464 struct it6505 *it6505 = file->private_data; in receive_timing_debugfs_show()
3471 return -ENODEV; in receive_timing_debugfs_show()
3474 vid = &it6505->video_info; in receive_timing_debugfs_show()
3475 str += scnprintf(str, end - str, "---video timing---\n"); in receive_timing_debugfs_show()
3476 str += scnprintf(str, end - str, "PCLK:%d.%03dMHz\n", in receive_timing_debugfs_show()
3477 vid->clock / 1000, vid->clock % 1000); in receive_timing_debugfs_show()
3478 str += scnprintf(str, end - str, "HTotal:%d\n", vid->htotal); in receive_timing_debugfs_show()
3479 str += scnprintf(str, end - str, "HActive:%d\n", vid->hdisplay); in receive_timing_debugfs_show()
3480 str += scnprintf(str, end - str, "HFrontPorch:%d\n", in receive_timing_debugfs_show()
3481 vid->hsync_start - vid->hdisplay); in receive_timing_debugfs_show()
3482 str += scnprintf(str, end - str, "HSyncWidth:%d\n", in receive_timing_debugfs_show()
3483 vid->hsync_end - vid->hsync_start); in receive_timing_debugfs_show()
3484 str += scnprintf(str, end - str, "HBackPorch:%d\n", in receive_timing_debugfs_show()
3485 vid->htotal - vid->hsync_end); in receive_timing_debugfs_show()
3486 str += scnprintf(str, end - str, "VTotal:%d\n", vid->vtotal); in receive_timing_debugfs_show()
3487 str += scnprintf(str, end - str, "VActive:%d\n", vid->vdisplay); in receive_timing_debugfs_show()
3488 str += scnprintf(str, end - str, "VFrontPorch:%d\n", in receive_timing_debugfs_show()
3489 vid->vsync_start - vid->vdisplay); in receive_timing_debugfs_show()
3490 str += scnprintf(str, end - str, "VSyncWidth:%d\n", in receive_timing_debugfs_show()
3491 vid->vsync_end - vid->vsync_start); in receive_timing_debugfs_show()
3492 str += scnprintf(str, end - str, "VBackPorch:%d\n", in receive_timing_debugfs_show()
3493 vid->vtotal - vid->vsync_end); in receive_timing_debugfs_show()
3495 count = str - read_buf; in receive_timing_debugfs_show()
3506 return -ENODEV; in force_power_on_off_debugfs_write()
3521 return -ENODEV; in enable_drv_hold_debugfs_show()
3523 *buf = it6505->enable_drv_hold; in enable_drv_hold_debugfs_show()
3533 return -ENODEV; in enable_drv_hold_debugfs_write()
3535 it6505->enable_drv_hold = drv_hold; in enable_drv_hold_debugfs_write()
3537 if (it6505->enable_drv_hold) { in enable_drv_hold_debugfs_write()
3543 if (it6505->powered) { in enable_drv_hold_debugfs_write()
3544 it6505->connector_status = in enable_drv_hold_debugfs_write()
3549 it6505->connector_status = in enable_drv_hold_debugfs_write()
3583 it6505->debugfs, it6505, in debugfs_create_files()
3591 struct device *dev = it6505->dev; in debugfs_init()
3593 it6505->debugfs = debugfs_create_dir(DEBUGFS_DIR_NAME, NULL); in debugfs_init()
3595 if (IS_ERR(it6505->debugfs)) { in debugfs_init()
3605 debugfs_remove_recursive(it6505->debugfs); in it6505_debugfs_remove()
3610 struct it6505 *it6505 = dev_get_drvdata(&client->dev); in it6505_shutdown()
3612 if (it6505->powered) in it6505_shutdown()
3619 struct device *dev = &client->dev; in it6505_i2c_probe()
3623 it6505 = devm_kzalloc(&client->dev, sizeof(*it6505), GFP_KERNEL); in it6505_i2c_probe()
3625 return -ENOMEM; in it6505_i2c_probe()
3627 mutex_init(&it6505->extcon_lock); in it6505_i2c_probe()
3628 mutex_init(&it6505->mode_lock); in it6505_i2c_probe()
3629 mutex_init(&it6505->aux_lock); in it6505_i2c_probe()
3631 it6505->bridge.of_node = client->dev.of_node; in it6505_i2c_probe()
3632 it6505->connector_status = connector_status_disconnected; in it6505_i2c_probe()
3633 it6505->dev = &client->dev; in it6505_i2c_probe()
3638 if (PTR_ERR(extcon) == -EPROBE_DEFER) in it6505_i2c_probe()
3639 return -EPROBE_DEFER; in it6505_i2c_probe()
3645 it6505->extcon = extcon; in it6505_i2c_probe()
3647 it6505->regmap = devm_regmap_init_i2c(client, &it6505_regmap_config); in it6505_i2c_probe()
3648 if (IS_ERR(it6505->regmap)) { in it6505_i2c_probe()
3650 err = PTR_ERR(it6505->regmap); in it6505_i2c_probe()
3662 it6505->irq = client->irq; in it6505_i2c_probe()
3664 if (!it6505->irq) { in it6505_i2c_probe()
3666 err = -ENODEV; in it6505_i2c_probe()
3670 err = devm_request_threaded_irq(&client->dev, it6505->irq, NULL, in it6505_i2c_probe()
3674 "it6505-intp", it6505); in it6505_i2c_probe()
3680 INIT_WORK(&it6505->link_works, it6505_link_training_work); in it6505_i2c_probe()
3681 INIT_WORK(&it6505->hdcp_wait_ksv_list, it6505_hdcp_wait_ksv_list); in it6505_i2c_probe()
3682 INIT_DELAYED_WORK(&it6505->hdcp_work, it6505_hdcp_work); in it6505_i2c_probe()
3683 init_completion(&it6505->extcon_completion); in it6505_i2c_probe()
3684 memset(it6505->dpcd, 0, sizeof(it6505->dpcd)); in it6505_i2c_probe()
3685 it6505->powered = false; in it6505_i2c_probe()
3686 it6505->enable_drv_hold = DEFAULT_DRV_HOLD; in it6505_i2c_probe()
3695 it6505->aux.name = "DP-AUX"; in it6505_i2c_probe()
3696 it6505->aux.dev = dev; in it6505_i2c_probe()
3697 it6505->aux.transfer = it6505_aux_transfer; in it6505_i2c_probe()
3698 drm_dp_aux_init(&it6505->aux); in it6505_i2c_probe()
3700 it6505->bridge.funcs = &it6505_bridge_funcs; in it6505_i2c_probe()
3701 it6505->bridge.type = DRM_MODE_CONNECTOR_DisplayPort; in it6505_i2c_probe()
3702 it6505->bridge.ops = DRM_BRIDGE_OP_DETECT | DRM_BRIDGE_OP_EDID | in it6505_i2c_probe()
3704 drm_bridge_add(&it6505->bridge); in it6505_i2c_probe()
3713 drm_bridge_remove(&it6505->bridge); in it6505_i2c_remove()
3714 drm_dp_aux_unregister(&it6505->aux); in it6505_i2c_remove()