Lines Matching refs:anx78xx
69 struct anx78xx { struct
92 static inline struct anx78xx *connector_to_anx78xx(struct drm_connector *c) in connector_to_anx78xx() argument
94 return container_of(c, struct anx78xx, connector); in connector_to_anx78xx()
97 static inline struct anx78xx *bridge_to_anx78xx(struct drm_bridge *bridge) in bridge_to_anx78xx()
99 return container_of(bridge, struct anx78xx, bridge); in bridge_to_anx78xx()
112 static bool anx78xx_aux_op_finished(struct anx78xx *anx78xx) in anx78xx_aux_op_finished() argument
117 err = regmap_read(anx78xx->map[I2C_IDX_TX_P0], SP_DP_AUX_CH_CTRL2_REG, in anx78xx_aux_op_finished()
125 static int anx78xx_aux_wait(struct anx78xx *anx78xx) in anx78xx_aux_wait() argument
133 while (!anx78xx_aux_op_finished(anx78xx)) { in anx78xx_aux_wait()
135 if (!anx78xx_aux_op_finished(anx78xx)) { in anx78xx_aux_wait()
147 err = regmap_read(anx78xx->map[I2C_IDX_TX_P0], SP_AUX_CH_STATUS_REG, in anx78xx_aux_wait()
163 static int anx78xx_aux_address(struct anx78xx *anx78xx, unsigned int addr) in anx78xx_aux_address() argument
167 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], SP_AUX_ADDR_7_0_REG, in anx78xx_aux_address()
172 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], SP_AUX_ADDR_15_8_REG, in anx78xx_aux_address()
182 err = regmap_update_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_aux_address()
196 struct anx78xx *anx78xx = container_of(aux, struct anx78xx, aux); in anx78xx_aux_transfer() local
214 err = regmap_bulk_write(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_aux_transfer()
222 err = anx78xx_aux_address(anx78xx, msg->address); in anx78xx_aux_transfer()
226 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], SP_DP_AUX_CH_CTRL1_REG, in anx78xx_aux_transfer()
232 err = regmap_update_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_aux_transfer()
238 err = anx78xx_aux_wait(anx78xx); in anx78xx_aux_transfer()
246 err = regmap_bulk_read(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_aux_transfer()
253 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_aux_transfer()
261 static int anx78xx_set_hpd(struct anx78xx *anx78xx) in anx78xx_set_hpd() argument
265 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_set_hpd()
270 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P2], SP_VID_CTRL3_REG, in anx78xx_set_hpd()
278 static int anx78xx_clear_hpd(struct anx78xx *anx78xx) in anx78xx_clear_hpd() argument
282 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_TX_P2], SP_VID_CTRL3_REG, in anx78xx_clear_hpd()
287 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_clear_hpd()
305 static int anx78xx_rx_initialization(struct anx78xx *anx78xx) in anx78xx_rx_initialization() argument
309 err = regmap_write(anx78xx->map[I2C_IDX_RX_P0], SP_HDMI_MUTE_CTRL_REG, in anx78xx_rx_initialization()
314 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_RX_P0], SP_CHIP_CTRL_REG, in anx78xx_rx_initialization()
320 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_rx_initialization()
326 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_rx_initialization()
333 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_rx_initialization()
339 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_rx_initialization()
345 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_RX_P0], SP_AUDVID_CTRL_REG, in anx78xx_rx_initialization()
350 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_rx_initialization()
355 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_rx_initialization()
361 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_rx_initialization()
367 err = regmap_multi_reg_write(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_rx_initialization()
373 err = anx78xx_clear_hpd(anx78xx); in anx78xx_rx_initialization()
386 static int anx78xx_link_phy_initialization(struct anx78xx *anx78xx) in anx78xx_link_phy_initialization() argument
394 err = regmap_write(anx78xx->map[I2C_IDX_TX_P2], SP_ANALOG_CTRL0_REG, in anx78xx_link_phy_initialization()
402 err = regmap_bulk_write(anx78xx->map[I2C_IDX_TX_P1], in anx78xx_link_phy_initialization()
413 static int anx78xx_xtal_clk_sel(struct anx78xx *anx78xx) in anx78xx_xtal_clk_sel() argument
418 err = regmap_update_bits(anx78xx->map[I2C_IDX_TX_P2], in anx78xx_xtal_clk_sel()
425 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], SP_DP_AUX_CH_CTRL3_REG, in anx78xx_xtal_clk_sel()
430 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], SP_DP_AUX_CH_CTRL4_REG, in anx78xx_xtal_clk_sel()
435 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_xtal_clk_sel()
440 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_xtal_clk_sel()
446 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], SP_AUX_MISC_CTRL_REG, in anx78xx_xtal_clk_sel()
451 err = regmap_read(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_xtal_clk_sel()
457 err = regmap_write(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_xtal_clk_sel()
473 static int anx78xx_tx_initialization(struct anx78xx *anx78xx) in anx78xx_tx_initialization() argument
478 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], SP_DP_AUX_CH_CTRL2_REG, in anx78xx_tx_initialization()
484 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_tx_initialization()
489 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_tx_initialization()
495 err = regmap_multi_reg_write(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_tx_initialization()
501 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_tx_initialization()
506 err = regmap_write(anx78xx->map[I2C_IDX_TX_P2], SP_VID_CTRL8_REG, in anx78xx_tx_initialization()
515 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], SP_HDCP_AUTO_TIMER_REG, in anx78xx_tx_initialization()
520 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_tx_initialization()
525 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_tx_initialization()
530 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P2], in anx78xx_tx_initialization()
535 err = anx78xx_xtal_clk_sel(anx78xx); in anx78xx_tx_initialization()
539 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], SP_AUX_DEFER_CTRL_REG, in anx78xx_tx_initialization()
544 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_tx_initialization()
554 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_tx_initialization()
559 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_tx_initialization()
565 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_tx_initialization()
570 err = anx78xx_link_phy_initialization(anx78xx); in anx78xx_tx_initialization()
575 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_tx_initialization()
583 static int anx78xx_enable_interrupts(struct anx78xx *anx78xx) in anx78xx_enable_interrupts() argument
591 err = regmap_write(anx78xx->map[I2C_IDX_TX_P2], SP_INT_CTRL_REG, 0x01); in anx78xx_enable_interrupts()
595 err = regmap_write(anx78xx->map[I2C_IDX_TX_P2], in anx78xx_enable_interrupts()
600 err = regmap_write(anx78xx->map[I2C_IDX_TX_P2], SP_DP_INT_MASK1_REG, in anx78xx_enable_interrupts()
605 err = regmap_write(anx78xx->map[I2C_IDX_RX_P0], SP_INT_MASK1_REG, in anx78xx_enable_interrupts()
613 static void anx78xx_poweron(struct anx78xx *anx78xx) in anx78xx_poweron() argument
615 struct anx78xx_platform_data *pdata = &anx78xx->pdata; in anx78xx_poweron()
618 if (WARN_ON(anx78xx->powered)) in anx78xx_poweron()
641 anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P2], SP_POWERDOWN_CTRL_REG, in anx78xx_poweron()
643 anx78xx_clear_bits(anx78xx->map[I2C_IDX_TX_P2], SP_POWERDOWN_CTRL_REG, in anx78xx_poweron()
646 anx78xx->powered = true; in anx78xx_poweron()
649 static void anx78xx_poweroff(struct anx78xx *anx78xx) in anx78xx_poweroff() argument
651 struct anx78xx_platform_data *pdata = &anx78xx->pdata; in anx78xx_poweroff()
654 if (WARN_ON(!anx78xx->powered)) in anx78xx_poweroff()
674 anx78xx->powered = false; in anx78xx_poweroff()
677 static int anx78xx_start(struct anx78xx *anx78xx) in anx78xx_start() argument
682 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_TX_P2], in anx78xx_start()
687 err = anx78xx_enable_interrupts(anx78xx); in anx78xx_start()
693 err = anx78xx_rx_initialization(anx78xx); in anx78xx_start()
699 err = anx78xx_tx_initialization(anx78xx); in anx78xx_start()
715 anx78xx_poweroff(anx78xx); in anx78xx_start()
720 static int anx78xx_init_pdata(struct anx78xx *anx78xx) in anx78xx_init_pdata() argument
722 struct anx78xx_platform_data *pdata = &anx78xx->pdata; in anx78xx_init_pdata()
723 struct device *dev = &anx78xx->client->dev; in anx78xx_init_pdata()
748 static int anx78xx_dp_link_training(struct anx78xx *anx78xx) in anx78xx_dp_link_training() argument
753 err = regmap_write(anx78xx->map[I2C_IDX_RX_P0], SP_HDMI_MUTE_CTRL_REG, in anx78xx_dp_link_training()
758 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_TX_P2], in anx78xx_dp_link_training()
764 err = drm_dp_dpcd_readb(&anx78xx->aux, DP_MAX_LINK_RATE, &dp_bw); in anx78xx_dp_link_training()
779 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P2], SP_VID_CTRL1_REG, in anx78xx_dp_link_training()
784 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_TX_P2], in anx78xx_dp_link_training()
790 err = drm_dp_dpcd_read(&anx78xx->aux, DP_DPCD_REV, in anx78xx_dp_link_training()
791 &anx78xx->dpcd, DP_RECEIVER_CAP_SIZE); in anx78xx_dp_link_training()
798 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_dp_link_training()
804 err = drm_dp_link_probe(&anx78xx->aux, &anx78xx->link); in anx78xx_dp_link_training()
811 err = drm_dp_link_power_up(&anx78xx->aux, &anx78xx->link); in anx78xx_dp_link_training()
818 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_dp_link_training()
823 if (anx78xx->dpcd[DP_MAX_DOWNSPREAD] & DP_MAX_DOWNSPREAD_0_5) { in anx78xx_dp_link_training()
826 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_dp_link_training()
831 err = drm_dp_dpcd_writeb(&anx78xx->aux, DP_DOWNSPREAD_CTRL, in anx78xx_dp_link_training()
836 err = drm_dp_dpcd_writeb(&anx78xx->aux, DP_DOWNSPREAD_CTRL, 0); in anx78xx_dp_link_training()
842 if (drm_dp_enhanced_frame_cap(anx78xx->dpcd)) in anx78xx_dp_link_training()
843 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_dp_link_training()
847 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_dp_link_training()
853 value = drm_dp_link_rate_to_bw_code(anx78xx->link.rate); in anx78xx_dp_link_training()
854 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_dp_link_training()
859 err = drm_dp_link_configure(&anx78xx->aux, &anx78xx->link); in anx78xx_dp_link_training()
866 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], SP_DP_LT_CTRL_REG, in anx78xx_dp_link_training()
874 static int anx78xx_config_dp_output(struct anx78xx *anx78xx) in anx78xx_config_dp_output() argument
878 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_TX_P2], SP_VID_CTRL1_REG, in anx78xx_config_dp_output()
884 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P2], SP_VID_CTRL1_REG, in anx78xx_config_dp_output()
892 static int anx78xx_send_video_infoframe(struct anx78xx *anx78xx, in anx78xx_send_video_infoframe() argument
904 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_send_video_infoframe()
909 err = regmap_bulk_write(anx78xx->map[I2C_IDX_TX_P2], in anx78xx_send_video_infoframe()
915 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_send_video_infoframe()
920 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_send_video_infoframe()
928 static int anx78xx_get_downstream_info(struct anx78xx *anx78xx) in anx78xx_get_downstream_info() argument
933 err = drm_dp_dpcd_readb(&anx78xx->aux, DP_SINK_COUNT, &value); in anx78xx_get_downstream_info()
949 struct anx78xx *anx78xx = connector_to_anx78xx(connector); in anx78xx_get_modes() local
952 if (WARN_ON(!anx78xx->powered)) in anx78xx_get_modes()
955 if (anx78xx->edid) in anx78xx_get_modes()
956 return drm_add_edid_modes(connector, anx78xx->edid); in anx78xx_get_modes()
958 mutex_lock(&anx78xx->lock); in anx78xx_get_modes()
960 err = anx78xx_get_downstream_info(anx78xx); in anx78xx_get_modes()
966 anx78xx->edid = drm_get_edid(connector, &anx78xx->aux.ddc); in anx78xx_get_modes()
967 if (!anx78xx->edid) { in anx78xx_get_modes()
973 anx78xx->edid); in anx78xx_get_modes()
979 num_modes = drm_add_edid_modes(connector, anx78xx->edid); in anx78xx_get_modes()
982 mutex_unlock(&anx78xx->lock); in anx78xx_get_modes()
994 struct anx78xx *anx78xx = connector_to_anx78xx(connector); in anx78xx_detect() local
996 if (!gpiod_get_value(anx78xx->pdata.gpiod_hpd)) in anx78xx_detect()
1013 struct anx78xx *anx78xx = bridge_to_anx78xx(bridge); in anx78xx_bridge_attach() local
1022 anx78xx->aux.name = "DP-AUX"; in anx78xx_bridge_attach()
1023 anx78xx->aux.dev = &anx78xx->client->dev; in anx78xx_bridge_attach()
1024 anx78xx->aux.transfer = anx78xx_aux_transfer; in anx78xx_bridge_attach()
1026 err = drm_dp_aux_register(&anx78xx->aux); in anx78xx_bridge_attach()
1032 err = drm_connector_init(bridge->dev, &anx78xx->connector, in anx78xx_bridge_attach()
1040 drm_connector_helper_add(&anx78xx->connector, in anx78xx_bridge_attach()
1043 err = drm_connector_register(&anx78xx->connector); in anx78xx_bridge_attach()
1049 anx78xx->connector.polled = DRM_CONNECTOR_POLL_HPD; in anx78xx_bridge_attach()
1051 err = drm_connector_attach_encoder(&anx78xx->connector, in anx78xx_bridge_attach()
1077 struct anx78xx *anx78xx = bridge_to_anx78xx(bridge); in anx78xx_bridge_disable() local
1080 anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P2], SP_POWERDOWN_CTRL_REG, in anx78xx_bridge_disable()
1088 struct anx78xx *anx78xx = bridge_to_anx78xx(bridge); in anx78xx_bridge_mode_set() local
1092 if (WARN_ON(!anx78xx->powered)) in anx78xx_bridge_mode_set()
1095 mutex_lock(&anx78xx->lock); in anx78xx_bridge_mode_set()
1104 err = anx78xx_send_video_infoframe(anx78xx, &frame); in anx78xx_bridge_mode_set()
1109 mutex_unlock(&anx78xx->lock); in anx78xx_bridge_mode_set()
1114 struct anx78xx *anx78xx = bridge_to_anx78xx(bridge); in anx78xx_bridge_enable() local
1117 err = anx78xx_start(anx78xx); in anx78xx_bridge_enable()
1123 err = anx78xx_set_hpd(anx78xx); in anx78xx_bridge_enable()
1138 struct anx78xx *anx78xx = data; in anx78xx_hpd_threaded_handler() local
1141 if (anx78xx->powered) in anx78xx_hpd_threaded_handler()
1144 mutex_lock(&anx78xx->lock); in anx78xx_hpd_threaded_handler()
1147 anx78xx_poweron(anx78xx); in anx78xx_hpd_threaded_handler()
1149 err = anx78xx_enable_interrupts(anx78xx); in anx78xx_hpd_threaded_handler()
1153 mutex_unlock(&anx78xx->lock); in anx78xx_hpd_threaded_handler()
1158 static int anx78xx_handle_dp_int_1(struct anx78xx *anx78xx, u8 irq) in anx78xx_handle_dp_int_1() argument
1164 err = regmap_write(anx78xx->map[I2C_IDX_TX_P2], SP_DP_INT_STATUS1_REG, in anx78xx_handle_dp_int_1()
1171 err = anx78xx_config_dp_output(anx78xx); in anx78xx_handle_dp_int_1()
1177 static bool anx78xx_handle_common_int_4(struct anx78xx *anx78xx, u8 irq) in anx78xx_handle_common_int_4() argument
1184 err = regmap_write(anx78xx->map[I2C_IDX_TX_P2], in anx78xx_handle_common_int_4()
1194 anx78xx_poweroff(anx78xx); in anx78xx_handle_common_int_4()
1196 kfree(anx78xx->edid); in anx78xx_handle_common_int_4()
1197 anx78xx->edid = NULL; in anx78xx_handle_common_int_4()
1206 static void anx78xx_handle_hdmi_int_1(struct anx78xx *anx78xx, u8 irq) in anx78xx_handle_hdmi_int_1() argument
1213 err = regmap_write(anx78xx->map[I2C_IDX_RX_P0], SP_INT_STATUS1_REG, in anx78xx_handle_hdmi_int_1()
1223 err = regmap_read(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_handle_hdmi_int_1()
1240 err = anx78xx_dp_link_training(anx78xx); in anx78xx_handle_hdmi_int_1()
1248 struct anx78xx *anx78xx = data; in anx78xx_intp_threaded_handler() local
1253 mutex_lock(&anx78xx->lock); in anx78xx_intp_threaded_handler()
1255 err = regmap_read(anx78xx->map[I2C_IDX_TX_P2], SP_DP_INT_STATUS1_REG, in anx78xx_intp_threaded_handler()
1263 anx78xx_handle_dp_int_1(anx78xx, irq); in anx78xx_intp_threaded_handler()
1265 err = regmap_read(anx78xx->map[I2C_IDX_TX_P2], in anx78xx_intp_threaded_handler()
1274 event = anx78xx_handle_common_int_4(anx78xx, irq); in anx78xx_intp_threaded_handler()
1277 if (!anx78xx->powered) in anx78xx_intp_threaded_handler()
1280 err = regmap_read(anx78xx->map[I2C_IDX_RX_P0], SP_INT_STATUS1_REG, in anx78xx_intp_threaded_handler()
1288 anx78xx_handle_hdmi_int_1(anx78xx, irq); in anx78xx_intp_threaded_handler()
1291 mutex_unlock(&anx78xx->lock); in anx78xx_intp_threaded_handler()
1294 drm_helper_hpd_irq_event(anx78xx->connector.dev); in anx78xx_intp_threaded_handler()
1299 static void unregister_i2c_dummy_clients(struct anx78xx *anx78xx) in unregister_i2c_dummy_clients() argument
1303 for (i = 0; i < ARRAY_SIZE(anx78xx->i2c_dummy); i++) in unregister_i2c_dummy_clients()
1304 i2c_unregister_device(anx78xx->i2c_dummy[i]); in unregister_i2c_dummy_clients()
1321 struct anx78xx *anx78xx; in anx78xx_i2c_probe() local
1327 anx78xx = devm_kzalloc(&client->dev, sizeof(*anx78xx), GFP_KERNEL); in anx78xx_i2c_probe()
1328 if (!anx78xx) in anx78xx_i2c_probe()
1331 pdata = &anx78xx->pdata; in anx78xx_i2c_probe()
1333 mutex_init(&anx78xx->lock); in anx78xx_i2c_probe()
1336 anx78xx->bridge.of_node = client->dev.of_node; in anx78xx_i2c_probe()
1339 anx78xx->client = client; in anx78xx_i2c_probe()
1340 i2c_set_clientdata(client, anx78xx); in anx78xx_i2c_probe()
1342 err = anx78xx_init_pdata(anx78xx); in anx78xx_i2c_probe()
1362 anx78xx->i2c_dummy[i] = i2c_new_dummy(client->adapter, in anx78xx_i2c_probe()
1364 if (!anx78xx->i2c_dummy[i]) { in anx78xx_i2c_probe()
1371 anx78xx->map[i] = devm_regmap_init_i2c(anx78xx->i2c_dummy[i], in anx78xx_i2c_probe()
1373 if (IS_ERR(anx78xx->map[i])) { in anx78xx_i2c_probe()
1374 err = PTR_ERR(anx78xx->map[i]); in anx78xx_i2c_probe()
1382 anx78xx_poweron(anx78xx); in anx78xx_i2c_probe()
1384 err = regmap_read(anx78xx->map[I2C_IDX_TX_P2], SP_DEVICE_IDL_REG, in anx78xx_i2c_probe()
1389 err = regmap_read(anx78xx->map[I2C_IDX_TX_P2], SP_DEVICE_IDH_REG, in anx78xx_i2c_probe()
1394 anx78xx->chipid = (u8)idl | ((u8)idh << 8); in anx78xx_i2c_probe()
1396 err = regmap_read(anx78xx->map[I2C_IDX_TX_P2], SP_DEVICE_VERSION_REG, in anx78xx_i2c_probe()
1402 if (anx78xx->chipid == anx78xx_chipid_list[i]) { in anx78xx_i2c_probe()
1404 anx78xx->chipid, version); in anx78xx_i2c_probe()
1412 anx78xx->chipid, version); in anx78xx_i2c_probe()
1420 "anx78xx-hpd", anx78xx); in anx78xx_i2c_probe()
1430 "anx78xx-intp", anx78xx); in anx78xx_i2c_probe()
1436 anx78xx->bridge.funcs = &anx78xx_bridge_funcs; in anx78xx_i2c_probe()
1438 drm_bridge_add(&anx78xx->bridge); in anx78xx_i2c_probe()
1441 if (!gpiod_get_value(anx78xx->pdata.gpiod_hpd)) in anx78xx_i2c_probe()
1442 anx78xx_poweroff(anx78xx); in anx78xx_i2c_probe()
1447 anx78xx_poweroff(anx78xx); in anx78xx_i2c_probe()
1450 unregister_i2c_dummy_clients(anx78xx); in anx78xx_i2c_probe()
1456 struct anx78xx *anx78xx = i2c_get_clientdata(client); in anx78xx_i2c_remove() local
1458 drm_bridge_remove(&anx78xx->bridge); in anx78xx_i2c_remove()
1460 unregister_i2c_dummy_clients(anx78xx); in anx78xx_i2c_remove()
1462 kfree(anx78xx->edid); in anx78xx_i2c_remove()