Lines Matching refs:anx78xx

66 struct anx78xx {  struct
88 static inline struct anx78xx *connector_to_anx78xx(struct drm_connector *c) in connector_to_anx78xx() argument
90 return container_of(c, struct anx78xx, connector); in connector_to_anx78xx()
93 static inline struct anx78xx *bridge_to_anx78xx(struct drm_bridge *bridge) in bridge_to_anx78xx()
95 return container_of(bridge, struct anx78xx, bridge); in bridge_to_anx78xx()
111 struct anx78xx *anx78xx = container_of(aux, struct anx78xx, aux); in anx78xx_aux_transfer() local
112 return anx_dp_aux_transfer(anx78xx->map[I2C_IDX_TX_P0], msg); in anx78xx_aux_transfer()
115 static int anx78xx_set_hpd(struct anx78xx *anx78xx) in anx78xx_set_hpd() argument
119 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_set_hpd()
124 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P2], SP_VID_CTRL3_REG, in anx78xx_set_hpd()
132 static int anx78xx_clear_hpd(struct anx78xx *anx78xx) in anx78xx_clear_hpd() argument
136 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_TX_P2], SP_VID_CTRL3_REG, in anx78xx_clear_hpd()
141 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_clear_hpd()
159 static int anx78xx_rx_initialization(struct anx78xx *anx78xx) in anx78xx_rx_initialization() argument
163 err = regmap_write(anx78xx->map[I2C_IDX_RX_P0], SP_HDMI_MUTE_CTRL_REG, in anx78xx_rx_initialization()
168 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_RX_P0], SP_CHIP_CTRL_REG, in anx78xx_rx_initialization()
174 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_rx_initialization()
180 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_rx_initialization()
187 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_rx_initialization()
193 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_rx_initialization()
199 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_RX_P0], SP_AUDVID_CTRL_REG, in anx78xx_rx_initialization()
204 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_rx_initialization()
209 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_rx_initialization()
215 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_rx_initialization()
221 err = regmap_multi_reg_write(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_rx_initialization()
227 err = anx78xx_clear_hpd(anx78xx); in anx78xx_rx_initialization()
240 static int anx78xx_link_phy_initialization(struct anx78xx *anx78xx) in anx78xx_link_phy_initialization() argument
248 err = regmap_write(anx78xx->map[I2C_IDX_TX_P2], SP_ANALOG_CTRL0_REG, in anx78xx_link_phy_initialization()
256 err = regmap_bulk_write(anx78xx->map[I2C_IDX_TX_P1], in anx78xx_link_phy_initialization()
267 static int anx78xx_xtal_clk_sel(struct anx78xx *anx78xx) in anx78xx_xtal_clk_sel() argument
272 err = regmap_update_bits(anx78xx->map[I2C_IDX_TX_P2], in anx78xx_xtal_clk_sel()
279 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], SP_DP_AUX_CH_CTRL3_REG, in anx78xx_xtal_clk_sel()
284 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], SP_DP_AUX_CH_CTRL4_REG, in anx78xx_xtal_clk_sel()
289 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_xtal_clk_sel()
294 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_xtal_clk_sel()
300 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], SP_AUX_MISC_CTRL_REG, in anx78xx_xtal_clk_sel()
305 err = regmap_read(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_xtal_clk_sel()
311 err = regmap_write(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_xtal_clk_sel()
327 static int anx78xx_tx_initialization(struct anx78xx *anx78xx) in anx78xx_tx_initialization() argument
332 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], SP_DP_AUX_CH_CTRL2_REG, in anx78xx_tx_initialization()
338 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_tx_initialization()
343 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_tx_initialization()
349 err = regmap_multi_reg_write(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_tx_initialization()
355 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_tx_initialization()
360 err = regmap_write(anx78xx->map[I2C_IDX_TX_P2], SP_VID_CTRL8_REG, in anx78xx_tx_initialization()
369 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], SP_HDCP_AUTO_TIMER_REG, in anx78xx_tx_initialization()
374 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_tx_initialization()
379 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_tx_initialization()
384 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P2], in anx78xx_tx_initialization()
389 err = anx78xx_xtal_clk_sel(anx78xx); in anx78xx_tx_initialization()
393 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], SP_AUX_DEFER_CTRL_REG, in anx78xx_tx_initialization()
398 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_tx_initialization()
408 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_tx_initialization()
413 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_tx_initialization()
419 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_tx_initialization()
424 err = anx78xx_link_phy_initialization(anx78xx); in anx78xx_tx_initialization()
429 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_tx_initialization()
437 static int anx78xx_enable_interrupts(struct anx78xx *anx78xx) in anx78xx_enable_interrupts() argument
445 err = regmap_write(anx78xx->map[I2C_IDX_TX_P2], SP_INT_CTRL_REG, 0x01); in anx78xx_enable_interrupts()
449 err = regmap_write(anx78xx->map[I2C_IDX_TX_P2], in anx78xx_enable_interrupts()
454 err = regmap_write(anx78xx->map[I2C_IDX_TX_P2], SP_DP_INT_MASK1_REG, in anx78xx_enable_interrupts()
459 err = regmap_write(anx78xx->map[I2C_IDX_RX_P0], SP_INT_MASK1_REG, in anx78xx_enable_interrupts()
467 static void anx78xx_poweron(struct anx78xx *anx78xx) in anx78xx_poweron() argument
469 struct anx78xx_platform_data *pdata = &anx78xx->pdata; in anx78xx_poweron()
472 if (WARN_ON(anx78xx->powered)) in anx78xx_poweron()
495 anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P2], SP_POWERDOWN_CTRL_REG, in anx78xx_poweron()
497 anx78xx_clear_bits(anx78xx->map[I2C_IDX_TX_P2], SP_POWERDOWN_CTRL_REG, in anx78xx_poweron()
500 anx78xx->powered = true; in anx78xx_poweron()
503 static void anx78xx_poweroff(struct anx78xx *anx78xx) in anx78xx_poweroff() argument
505 struct anx78xx_platform_data *pdata = &anx78xx->pdata; in anx78xx_poweroff()
508 if (WARN_ON(!anx78xx->powered)) in anx78xx_poweroff()
528 anx78xx->powered = false; in anx78xx_poweroff()
531 static int anx78xx_start(struct anx78xx *anx78xx) in anx78xx_start() argument
536 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_TX_P2], in anx78xx_start()
541 err = anx78xx_enable_interrupts(anx78xx); in anx78xx_start()
547 err = anx78xx_rx_initialization(anx78xx); in anx78xx_start()
553 err = anx78xx_tx_initialization(anx78xx); in anx78xx_start()
569 anx78xx_poweroff(anx78xx); in anx78xx_start()
574 static int anx78xx_init_pdata(struct anx78xx *anx78xx) in anx78xx_init_pdata() argument
576 struct anx78xx_platform_data *pdata = &anx78xx->pdata; in anx78xx_init_pdata()
577 struct device *dev = &anx78xx->client->dev; in anx78xx_init_pdata()
604 static int anx78xx_dp_link_training(struct anx78xx *anx78xx) in anx78xx_dp_link_training() argument
609 err = regmap_write(anx78xx->map[I2C_IDX_RX_P0], SP_HDMI_MUTE_CTRL_REG, in anx78xx_dp_link_training()
614 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_TX_P2], in anx78xx_dp_link_training()
620 err = drm_dp_dpcd_readb(&anx78xx->aux, DP_MAX_LINK_RATE, &dp_bw); in anx78xx_dp_link_training()
635 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P2], SP_VID_CTRL1_REG, in anx78xx_dp_link_training()
640 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_TX_P2], in anx78xx_dp_link_training()
646 err = drm_dp_dpcd_read(&anx78xx->aux, DP_DPCD_REV, in anx78xx_dp_link_training()
647 &anx78xx->dpcd, DP_RECEIVER_CAP_SIZE); in anx78xx_dp_link_training()
654 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_dp_link_training()
663 if (anx78xx->dpcd[DP_DPCD_REV] >= 0x11) { in anx78xx_dp_link_training()
664 err = drm_dp_dpcd_readb(&anx78xx->aux, DP_SET_POWER, &dpcd[0]); in anx78xx_dp_link_training()
674 err = drm_dp_dpcd_writeb(&anx78xx->aux, DP_SET_POWER, dpcd[0]); in anx78xx_dp_link_training()
690 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_dp_link_training()
695 if (anx78xx->dpcd[DP_MAX_DOWNSPREAD] & DP_MAX_DOWNSPREAD_0_5) { in anx78xx_dp_link_training()
698 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_dp_link_training()
703 err = drm_dp_dpcd_writeb(&anx78xx->aux, DP_DOWNSPREAD_CTRL, in anx78xx_dp_link_training()
708 err = drm_dp_dpcd_writeb(&anx78xx->aux, DP_DOWNSPREAD_CTRL, 0); in anx78xx_dp_link_training()
714 if (drm_dp_enhanced_frame_cap(anx78xx->dpcd)) in anx78xx_dp_link_training()
715 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_dp_link_training()
719 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_dp_link_training()
725 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_dp_link_training()
727 anx78xx->dpcd[DP_MAX_LINK_RATE]); in anx78xx_dp_link_training()
731 dpcd[1] = drm_dp_max_lane_count(anx78xx->dpcd); in anx78xx_dp_link_training()
733 if (drm_dp_enhanced_frame_cap(anx78xx->dpcd)) in anx78xx_dp_link_training()
736 err = drm_dp_dpcd_write(&anx78xx->aux, DP_LINK_BW_SET, dpcd, in anx78xx_dp_link_training()
744 err = regmap_write(anx78xx->map[I2C_IDX_TX_P0], SP_DP_LT_CTRL_REG, in anx78xx_dp_link_training()
752 static int anx78xx_config_dp_output(struct anx78xx *anx78xx) in anx78xx_config_dp_output() argument
756 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_TX_P2], SP_VID_CTRL1_REG, in anx78xx_config_dp_output()
762 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P2], SP_VID_CTRL1_REG, in anx78xx_config_dp_output()
770 static int anx78xx_send_video_infoframe(struct anx78xx *anx78xx, in anx78xx_send_video_infoframe() argument
782 err = anx78xx_clear_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_send_video_infoframe()
787 err = regmap_bulk_write(anx78xx->map[I2C_IDX_TX_P2], in anx78xx_send_video_infoframe()
793 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_send_video_infoframe()
798 err = anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P0], in anx78xx_send_video_infoframe()
806 static int anx78xx_get_downstream_info(struct anx78xx *anx78xx) in anx78xx_get_downstream_info() argument
811 err = drm_dp_dpcd_readb(&anx78xx->aux, DP_SINK_COUNT, &value); in anx78xx_get_downstream_info()
827 struct anx78xx *anx78xx = connector_to_anx78xx(connector); in anx78xx_get_modes() local
830 if (WARN_ON(!anx78xx->powered)) in anx78xx_get_modes()
833 if (anx78xx->drm_edid) in anx78xx_get_modes()
836 mutex_lock(&anx78xx->lock); in anx78xx_get_modes()
838 err = anx78xx_get_downstream_info(anx78xx); in anx78xx_get_modes()
844 anx78xx->drm_edid = drm_edid_read_ddc(connector, &anx78xx->aux.ddc); in anx78xx_get_modes()
846 err = drm_edid_connector_update(connector, anx78xx->drm_edid); in anx78xx_get_modes()
848 if (!anx78xx->drm_edid) { in anx78xx_get_modes()
861 mutex_unlock(&anx78xx->lock); in anx78xx_get_modes()
873 struct anx78xx *anx78xx = connector_to_anx78xx(connector); in anx78xx_detect() local
875 if (!gpiod_get_value(anx78xx->pdata.gpiod_hpd)) in anx78xx_detect()
893 struct anx78xx *anx78xx = bridge_to_anx78xx(bridge); in anx78xx_bridge_attach() local
902 anx78xx->aux.name = "DP-AUX"; in anx78xx_bridge_attach()
903 anx78xx->aux.dev = &anx78xx->client->dev; in anx78xx_bridge_attach()
904 anx78xx->aux.drm_dev = bridge->dev; in anx78xx_bridge_attach()
905 anx78xx->aux.transfer = anx78xx_aux_transfer; in anx78xx_bridge_attach()
907 err = drm_dp_aux_register(&anx78xx->aux); in anx78xx_bridge_attach()
913 err = drm_connector_init(bridge->dev, &anx78xx->connector, in anx78xx_bridge_attach()
921 drm_connector_helper_add(&anx78xx->connector, in anx78xx_bridge_attach()
924 anx78xx->connector.polled = DRM_CONNECTOR_POLL_HPD; in anx78xx_bridge_attach()
926 err = drm_connector_attach_encoder(&anx78xx->connector, in anx78xx_bridge_attach()
933 err = drm_connector_register(&anx78xx->connector); in anx78xx_bridge_attach()
941 drm_connector_cleanup(&anx78xx->connector); in anx78xx_bridge_attach()
943 drm_dp_aux_unregister(&anx78xx->aux); in anx78xx_bridge_attach()
969 struct anx78xx *anx78xx = bridge_to_anx78xx(bridge); in anx78xx_bridge_disable() local
972 anx78xx_set_bits(anx78xx->map[I2C_IDX_TX_P2], SP_POWERDOWN_CTRL_REG, in anx78xx_bridge_disable()
980 struct anx78xx *anx78xx = bridge_to_anx78xx(bridge); in anx78xx_bridge_mode_set() local
984 if (WARN_ON(!anx78xx->powered)) in anx78xx_bridge_mode_set()
987 mutex_lock(&anx78xx->lock); in anx78xx_bridge_mode_set()
990 &anx78xx->connector, in anx78xx_bridge_mode_set()
997 err = anx78xx_send_video_infoframe(anx78xx, &frame); in anx78xx_bridge_mode_set()
1002 mutex_unlock(&anx78xx->lock); in anx78xx_bridge_mode_set()
1007 struct anx78xx *anx78xx = bridge_to_anx78xx(bridge); in anx78xx_bridge_enable() local
1010 err = anx78xx_start(anx78xx); in anx78xx_bridge_enable()
1016 err = anx78xx_set_hpd(anx78xx); in anx78xx_bridge_enable()
1032 struct anx78xx *anx78xx = data; in anx78xx_hpd_threaded_handler() local
1035 if (anx78xx->powered) in anx78xx_hpd_threaded_handler()
1038 mutex_lock(&anx78xx->lock); in anx78xx_hpd_threaded_handler()
1041 anx78xx_poweron(anx78xx); in anx78xx_hpd_threaded_handler()
1043 err = anx78xx_enable_interrupts(anx78xx); in anx78xx_hpd_threaded_handler()
1047 mutex_unlock(&anx78xx->lock); in anx78xx_hpd_threaded_handler()
1052 static int anx78xx_handle_dp_int_1(struct anx78xx *anx78xx, u8 irq) in anx78xx_handle_dp_int_1() argument
1058 err = regmap_write(anx78xx->map[I2C_IDX_TX_P2], SP_DP_INT_STATUS1_REG, in anx78xx_handle_dp_int_1()
1065 err = anx78xx_config_dp_output(anx78xx); in anx78xx_handle_dp_int_1()
1071 static bool anx78xx_handle_common_int_4(struct anx78xx *anx78xx, u8 irq) in anx78xx_handle_common_int_4() argument
1078 err = regmap_write(anx78xx->map[I2C_IDX_TX_P2], in anx78xx_handle_common_int_4()
1088 anx78xx_poweroff(anx78xx); in anx78xx_handle_common_int_4()
1090 drm_edid_free(anx78xx->drm_edid); in anx78xx_handle_common_int_4()
1091 anx78xx->drm_edid = NULL; in anx78xx_handle_common_int_4()
1100 static void anx78xx_handle_hdmi_int_1(struct anx78xx *anx78xx, u8 irq) in anx78xx_handle_hdmi_int_1() argument
1107 err = regmap_write(anx78xx->map[I2C_IDX_RX_P0], SP_INT_STATUS1_REG, in anx78xx_handle_hdmi_int_1()
1117 err = regmap_read(anx78xx->map[I2C_IDX_RX_P0], in anx78xx_handle_hdmi_int_1()
1134 err = anx78xx_dp_link_training(anx78xx); in anx78xx_handle_hdmi_int_1()
1142 struct anx78xx *anx78xx = data; in anx78xx_intp_threaded_handler() local
1147 mutex_lock(&anx78xx->lock); in anx78xx_intp_threaded_handler()
1149 err = regmap_read(anx78xx->map[I2C_IDX_TX_P2], SP_DP_INT_STATUS1_REG, in anx78xx_intp_threaded_handler()
1157 anx78xx_handle_dp_int_1(anx78xx, irq); in anx78xx_intp_threaded_handler()
1159 err = regmap_read(anx78xx->map[I2C_IDX_TX_P2], in anx78xx_intp_threaded_handler()
1168 event = anx78xx_handle_common_int_4(anx78xx, irq); in anx78xx_intp_threaded_handler()
1171 if (!anx78xx->powered) in anx78xx_intp_threaded_handler()
1174 err = regmap_read(anx78xx->map[I2C_IDX_RX_P0], SP_INT_STATUS1_REG, in anx78xx_intp_threaded_handler()
1182 anx78xx_handle_hdmi_int_1(anx78xx, irq); in anx78xx_intp_threaded_handler()
1185 mutex_unlock(&anx78xx->lock); in anx78xx_intp_threaded_handler()
1188 drm_helper_hpd_irq_event(anx78xx->connector.dev); in anx78xx_intp_threaded_handler()
1193 static void unregister_i2c_dummy_clients(struct anx78xx *anx78xx) in unregister_i2c_dummy_clients() argument
1197 for (i = 0; i < ARRAY_SIZE(anx78xx->i2c_dummy); i++) in unregister_i2c_dummy_clients()
1198 i2c_unregister_device(anx78xx->i2c_dummy[i]); in unregister_i2c_dummy_clients()
1216 struct anx78xx *anx78xx; in anx78xx_i2c_probe() local
1223 anx78xx = devm_kzalloc(&client->dev, sizeof(*anx78xx), GFP_KERNEL); in anx78xx_i2c_probe()
1224 if (!anx78xx) in anx78xx_i2c_probe()
1227 pdata = &anx78xx->pdata; in anx78xx_i2c_probe()
1229 mutex_init(&anx78xx->lock); in anx78xx_i2c_probe()
1231 anx78xx->bridge.of_node = client->dev.of_node; in anx78xx_i2c_probe()
1233 anx78xx->client = client; in anx78xx_i2c_probe()
1234 i2c_set_clientdata(client, anx78xx); in anx78xx_i2c_probe()
1236 err = anx78xx_init_pdata(anx78xx); in anx78xx_i2c_probe()
1270 anx78xx->i2c_dummy[i] = i2c_dummy; in anx78xx_i2c_probe()
1271 anx78xx->map[i] = devm_regmap_init_i2c(anx78xx->i2c_dummy[i], in anx78xx_i2c_probe()
1273 if (IS_ERR(anx78xx->map[i])) { in anx78xx_i2c_probe()
1274 err = PTR_ERR(anx78xx->map[i]); in anx78xx_i2c_probe()
1282 anx78xx_poweron(anx78xx); in anx78xx_i2c_probe()
1284 err = regmap_read(anx78xx->map[I2C_IDX_TX_P2], SP_DEVICE_IDL_REG, in anx78xx_i2c_probe()
1289 err = regmap_read(anx78xx->map[I2C_IDX_TX_P2], SP_DEVICE_IDH_REG, in anx78xx_i2c_probe()
1294 anx78xx->chipid = (u8)idl | ((u8)idh << 8); in anx78xx_i2c_probe()
1296 err = regmap_read(anx78xx->map[I2C_IDX_TX_P2], SP_DEVICE_VERSION_REG, in anx78xx_i2c_probe()
1302 if (anx78xx->chipid == anx78xx_chipid_list[i]) { in anx78xx_i2c_probe()
1304 anx78xx->chipid, version); in anx78xx_i2c_probe()
1312 anx78xx->chipid, version); in anx78xx_i2c_probe()
1320 "anx78xx-hpd", anx78xx); in anx78xx_i2c_probe()
1330 "anx78xx-intp", anx78xx); in anx78xx_i2c_probe()
1336 anx78xx->bridge.funcs = &anx78xx_bridge_funcs; in anx78xx_i2c_probe()
1338 drm_bridge_add(&anx78xx->bridge); in anx78xx_i2c_probe()
1341 if (!gpiod_get_value(anx78xx->pdata.gpiod_hpd)) in anx78xx_i2c_probe()
1342 anx78xx_poweroff(anx78xx); in anx78xx_i2c_probe()
1347 anx78xx_poweroff(anx78xx); in anx78xx_i2c_probe()
1350 unregister_i2c_dummy_clients(anx78xx); in anx78xx_i2c_probe()
1356 struct anx78xx *anx78xx = i2c_get_clientdata(client); in anx78xx_i2c_remove() local
1358 drm_bridge_remove(&anx78xx->bridge); in anx78xx_i2c_remove()
1360 unregister_i2c_dummy_clients(anx78xx); in anx78xx_i2c_remove()
1362 drm_edid_free(anx78xx->drm_edid); in anx78xx_i2c_remove()