Lines Matching +full:a2vdd +full:- +full:supply

1 // SPDX-License-Identifier: GPL-2.0-only
38 /* -----------------------------------------------------------------------------
131 /* -----------------------------------------------------------------------------
141 regmap_update_bits(adv7511->regmap, ADV7511_REG_CSC_UPPER(1), in adv7511_set_colormap()
146 regmap_update_bits(adv7511->regmap, in adv7511_set_colormap()
149 regmap_write(adv7511->regmap, in adv7511_set_colormap()
156 regmap_update_bits(adv7511->regmap, ADV7511_REG_CSC_UPPER(0), in adv7511_set_colormap()
159 regmap_update_bits(adv7511->regmap, ADV7511_REG_CSC_UPPER(0), in adv7511_set_colormap()
162 regmap_update_bits(adv7511->regmap, ADV7511_REG_CSC_UPPER(1), in adv7511_set_colormap()
169 regmap_update_bits(adv7511->regmap, ADV7511_REG_PACKET_ENABLE0, in adv7511_packet_enable()
174 regmap_update_bits(adv7511->regmap, ADV7511_REG_PACKET_ENABLE1, in adv7511_packet_enable()
184 regmap_update_bits(adv7511->regmap, ADV7511_REG_PACKET_ENABLE0, in adv7511_packet_disable()
189 regmap_update_bits(adv7511->regmap, ADV7511_REG_PACKET_ENABLE1, in adv7511_packet_disable()
225 if ((connector->display_info.color_formats & in adv7511_set_config_csc()
266 regmap_update_bits(adv7511->regmap, ADV7511_REG_VIDEO_INPUT_CFG1, 0x81, in adv7511_set_config_csc()
269 regmap_update_bits(adv7511->regmap, ADV7511_REG_HDCP_HDMI_CFG, in adv7511_set_config_csc()
276 regmap_bulk_write(adv7511->regmap, ADV7511_REG_AVI_INFOFRAME_VERSION, in adv7511_set_config_csc()
277 infoframe + 1, sizeof(infoframe) - 1); in adv7511_set_config_csc()
287 * hardware register field values :-( in adv7511_set_link_config()
295 clock_delay = (config->clock_delay + 1200) / 400; in adv7511_set_link_config()
296 color_depth = config->input_color_depth == 8 ? 3 in adv7511_set_link_config()
297 : (config->input_color_depth == 10 ? 1 : 2); in adv7511_set_link_config()
300 if (config->input_colorspace != HDMI_COLORSPACE_YUV422) in adv7511_set_link_config()
301 input_id = config->input_clock == ADV7511_INPUT_CLOCK_DDR in adv7511_set_link_config()
303 else if (config->input_clock == ADV7511_INPUT_CLOCK_DDR) in adv7511_set_link_config()
304 input_id = config->embedded_sync ? 8 : 7; in adv7511_set_link_config()
305 else if (config->input_clock == ADV7511_INPUT_CLOCK_2X) in adv7511_set_link_config()
306 input_id = config->embedded_sync ? 4 : 3; in adv7511_set_link_config()
308 input_id = config->embedded_sync ? 2 : 1; in adv7511_set_link_config()
310 regmap_update_bits(adv7511->regmap, ADV7511_REG_I2C_FREQ_ID_CFG, 0xf, in adv7511_set_link_config()
312 regmap_update_bits(adv7511->regmap, ADV7511_REG_VIDEO_INPUT_CFG1, 0x7e, in adv7511_set_link_config()
314 (input_styles[config->input_style] << 2)); in adv7511_set_link_config()
315 regmap_write(adv7511->regmap, ADV7511_REG_VIDEO_INPUT_CFG2, in adv7511_set_link_config()
316 config->input_justification << 3); in adv7511_set_link_config()
317 regmap_write(adv7511->regmap, ADV7511_REG_TIMING_GEN_SEQ, in adv7511_set_link_config()
318 config->sync_pulse << 2); in adv7511_set_link_config()
320 regmap_write(adv7511->regmap, 0xba, clock_delay << 5); in adv7511_set_link_config()
322 adv7511->embedded_sync = config->embedded_sync; in adv7511_set_link_config()
323 adv7511->hsync_polarity = config->hsync_polarity; in adv7511_set_link_config()
324 adv7511->vsync_polarity = config->vsync_polarity; in adv7511_set_link_config()
325 adv7511->rgb = config->input_colorspace == HDMI_COLORSPACE_RGB; in adv7511_set_link_config()
330 adv7511->current_edid_segment = -1; in __adv7511_power_on()
332 regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER, in __adv7511_power_on()
334 if (adv7511->i2c_main->irq) { in __adv7511_power_on()
340 regmap_write(adv7511->regmap, ADV7511_REG_INT_ENABLE(0), in __adv7511_power_on()
342 regmap_update_bits(adv7511->regmap, in __adv7511_power_on()
357 if (adv7511->type == ADV7535) in __adv7511_power_on()
358 regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER2, in __adv7511_power_on()
362 regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER2, in __adv7511_power_on()
374 regcache_sync(adv7511->regmap); in adv7511_power_on()
376 if (adv7511->type == ADV7533 || adv7511->type == ADV7535) in adv7511_power_on()
378 adv7511->powered = true; in adv7511_power_on()
384 if (adv7511->type == ADV7535) in __adv7511_power_off()
385 regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER2, in __adv7511_power_off()
388 regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER, in __adv7511_power_off()
391 regmap_update_bits(adv7511->regmap, in __adv7511_power_off()
394 regcache_mark_dirty(adv7511->regmap); in __adv7511_power_off()
400 if (adv7511->type == ADV7533 || adv7511->type == ADV7535) in adv7511_power_off()
402 adv7511->powered = false; in adv7511_power_off()
405 /* -----------------------------------------------------------------------------
414 ret = regmap_read(adv7511->regmap, ADV7511_REG_INT(0), &irq0); in adv7511_hpd()
419 regmap_write(adv7511->regmap, ADV7511_REG_INT(0), in adv7511_hpd()
434 ret = regmap_read(adv7511->regmap, ADV7511_REG_STATUS, &val); in adv7511_hpd_work()
448 adv7511->connector.status == connector_status_disconnected && in adv7511_hpd_work()
449 adv7511->powered) { in adv7511_hpd_work()
450 regcache_mark_dirty(adv7511->regmap); in adv7511_hpd_work()
454 if (adv7511->connector.status != status) { in adv7511_hpd_work()
455 adv7511->connector.status = status; in adv7511_hpd_work()
457 if (adv7511->connector.dev) { in adv7511_hpd_work()
459 cec_phys_addr_invalidate(adv7511->cec_adap); in adv7511_hpd_work()
460 drm_kms_helper_hotplug_event(adv7511->connector.dev); in adv7511_hpd_work()
462 drm_bridge_hpd_notify(&adv7511->bridge, status); in adv7511_hpd_work()
472 ret = regmap_read(adv7511->regmap, ADV7511_REG_INT(0), &irq0); in adv7511_irq_process()
476 ret = regmap_read(adv7511->regmap, ADV7511_REG_INT(1), &irq1); in adv7511_irq_process()
480 regmap_write(adv7511->regmap, ADV7511_REG_INT(0), irq0); in adv7511_irq_process()
481 regmap_write(adv7511->regmap, ADV7511_REG_INT(1), irq1); in adv7511_irq_process()
483 if (process_hpd && irq0 & ADV7511_INT0_HPD && adv7511->bridge.encoder) in adv7511_irq_process()
484 schedule_work(&adv7511->hpd_work); in adv7511_irq_process()
487 adv7511->edid_read = true; in adv7511_irq_process()
489 if (adv7511->i2c_main->irq) in adv7511_irq_process()
490 wake_up_all(&adv7511->wq); in adv7511_irq_process()
509 /* -----------------------------------------------------------------------------
517 if (adv7511->i2c_main->irq) { in adv7511_wait_for_edid()
518 ret = wait_event_interruptible_timeout(adv7511->wq, in adv7511_wait_for_edid()
519 adv7511->edid_read, msecs_to_jiffies(timeout)); in adv7511_wait_for_edid()
521 for (; timeout > 0; timeout -= 25) { in adv7511_wait_for_edid()
526 if (adv7511->edid_read) in adv7511_wait_for_edid()
533 return adv7511->edid_read ? 0 : -EIO; in adv7511_wait_for_edid()
546 return -EINVAL; in adv7511_get_edid_block()
548 if (adv7511->current_edid_segment != block / 2) { in adv7511_get_edid_block()
551 ret = regmap_read(adv7511->regmap, ADV7511_REG_DDC_STATUS, in adv7511_get_edid_block()
557 adv7511->edid_read = false; in adv7511_get_edid_block()
558 regmap_write(adv7511->regmap, ADV7511_REG_EDID_SEGMENT, in adv7511_get_edid_block()
569 xfer[0].addr = adv7511->i2c_edid->addr; in adv7511_get_edid_block()
573 xfer[1].addr = adv7511->i2c_edid->addr; in adv7511_get_edid_block()
576 xfer[1].buf = adv7511->edid_buf; in adv7511_get_edid_block()
581 ret = i2c_transfer(adv7511->i2c_edid->adapter, xfer, in adv7511_get_edid_block()
586 return -EIO; in adv7511_get_edid_block()
592 adv7511->current_edid_segment = block / 2; in adv7511_get_edid_block()
596 memcpy(buf, adv7511->edid_buf, len); in adv7511_get_edid_block()
598 memcpy(buf, adv7511->edid_buf + 128, len); in adv7511_get_edid_block()
603 /* -----------------------------------------------------------------------------
613 if (!adv7511->powered) { in adv7511_get_edid()
615 (adv7511->i2c_edid->addr << 1); in adv7511_get_edid()
620 regmap_write(adv7511->regmap, ADV7511_REG_EDID_I2C_ADDR, in adv7511_get_edid()
626 if (!adv7511->powered) in adv7511_get_edid()
629 adv7511_set_config_csc(adv7511, connector, adv7511->rgb, in adv7511_get_edid()
632 cec_s_phys_addr_from_edid(adv7511->cec_adap, edid); in adv7511_get_edid()
661 ret = regmap_read(adv7511->regmap, ADV7511_REG_STATUS, &val); in adv7511_detect()
676 if (status == connector_status_connected && hpd && adv7511->powered) { in adv7511_detect()
677 regcache_mark_dirty(adv7511->regmap); in adv7511_detect()
681 if (adv7511->status == connector_status_connected) in adv7511_detect()
685 if (adv7511->type == ADV7535) in adv7511_detect()
686 regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER2, in adv7511_detect()
690 regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER2, in adv7511_detect()
695 adv7511->status = status; in adv7511_detect()
702 if (mode->clock > 165000) in adv7511_mode_valid()
716 if (adv7511->embedded_sync) { in adv7511_mode_set()
720 hsync_offset = adj_mode->crtc_hsync_start - in adv7511_mode_set()
721 adj_mode->crtc_hdisplay; in adv7511_mode_set()
722 vsync_offset = adj_mode->crtc_vsync_start - in adv7511_mode_set()
723 adj_mode->crtc_vdisplay; in adv7511_mode_set()
724 hsync_len = adj_mode->crtc_hsync_end - in adv7511_mode_set()
725 adj_mode->crtc_hsync_start; in adv7511_mode_set()
726 vsync_len = adj_mode->crtc_vsync_end - in adv7511_mode_set()
727 adj_mode->crtc_vsync_start; in adv7511_mode_set()
729 /* The hardware vsync generator has a off-by-one bug */ in adv7511_mode_set()
732 regmap_write(adv7511->regmap, ADV7511_REG_HSYNC_PLACEMENT_MSB, in adv7511_mode_set()
734 regmap_write(adv7511->regmap, ADV7511_REG_SYNC_DECODER(0), in adv7511_mode_set()
736 regmap_write(adv7511->regmap, ADV7511_REG_SYNC_DECODER(1), in adv7511_mode_set()
739 regmap_write(adv7511->regmap, ADV7511_REG_SYNC_DECODER(2), in adv7511_mode_set()
742 regmap_write(adv7511->regmap, ADV7511_REG_SYNC_DECODER(3), in adv7511_mode_set()
745 regmap_write(adv7511->regmap, ADV7511_REG_SYNC_DECODER(4), in adv7511_mode_set()
748 hsync_polarity = !(adj_mode->flags & DRM_MODE_FLAG_PHSYNC); in adv7511_mode_set()
749 vsync_polarity = !(adj_mode->flags & DRM_MODE_FLAG_PVSYNC); in adv7511_mode_set()
759 if (adj_mode->flags & DRM_MODE_FLAG_NHSYNC) in adv7511_mode_set()
764 if (adj_mode->flags & DRM_MODE_FLAG_NVSYNC) in adv7511_mode_set()
769 if (adv7511->hsync_polarity != mode_hsync_polarity && in adv7511_mode_set()
770 adv7511->hsync_polarity != in adv7511_mode_set()
774 if (adv7511->vsync_polarity != mode_vsync_polarity && in adv7511_mode_set()
775 adv7511->vsync_polarity != in adv7511_mode_set()
789 if (adv7511->type == ADV7511) in adv7511_mode_set()
790 regmap_update_bits(adv7511->regmap, 0xfb, in adv7511_mode_set()
793 regmap_update_bits(adv7511->regmap, 0x4a, in adv7511_mode_set()
796 regmap_update_bits(adv7511->regmap, 0x17, in adv7511_mode_set()
799 drm_mode_copy(&adv7511->curr_mode, adj_mode); in adv7511_mode_set()
806 adv7511->f_tmds = mode->clock; in adv7511_mode_set()
809 /* -----------------------------------------------------------------------------
858 struct drm_bridge *bridge = &adv->bridge; in adv7511_connector_init()
861 if (!bridge->encoder) { in adv7511_connector_init()
863 return -ENODEV; in adv7511_connector_init()
866 if (adv->i2c_main->irq) in adv7511_connector_init()
867 adv->connector.polled = DRM_CONNECTOR_POLL_HPD; in adv7511_connector_init()
869 adv->connector.polled = DRM_CONNECTOR_POLL_CONNECT | in adv7511_connector_init()
872 ret = drm_connector_init(bridge->dev, &adv->connector, in adv7511_connector_init()
879 drm_connector_helper_add(&adv->connector, in adv7511_connector_init()
881 drm_connector_attach_encoder(&adv->connector, bridge->encoder); in adv7511_connector_init()
886 /* -----------------------------------------------------------------------------
924 if (adv->type == ADV7533 || adv->type == ADV7535) in adv7511_bridge_mode_valid()
942 if (adv->i2c_main->irq) in adv7511_bridge_attach()
943 regmap_write(adv->regmap, ADV7511_REG_INT_ENABLE(0), in adv7511_bridge_attach()
970 cec_phys_addr_invalidate(adv->cec_adap); in adv7511_bridge_hpd_notify()
984 /* -----------------------------------------------------------------------------
993 "dvdd-3v",
1000 "a2vdd",
1007 struct device *dev = &adv->i2c_main->dev; in adv7511_init_regulators()
1012 if (adv->type == ADV7511) { in adv7511_init_regulators()
1014 adv->num_supplies = ARRAY_SIZE(adv7511_supply_names); in adv7511_init_regulators()
1017 adv->num_supplies = ARRAY_SIZE(adv7533_supply_names); in adv7511_init_regulators()
1020 adv->supplies = devm_kcalloc(dev, adv->num_supplies, in adv7511_init_regulators()
1021 sizeof(*adv->supplies), GFP_KERNEL); in adv7511_init_regulators()
1022 if (!adv->supplies) in adv7511_init_regulators()
1023 return -ENOMEM; in adv7511_init_regulators()
1025 for (i = 0; i < adv->num_supplies; i++) in adv7511_init_regulators()
1026 adv->supplies[i].supply = supply_names[i]; in adv7511_init_regulators()
1028 ret = devm_regulator_bulk_get(dev, adv->num_supplies, adv->supplies); in adv7511_init_regulators()
1032 return regulator_bulk_enable(adv->num_supplies, adv->supplies); in adv7511_init_regulators()
1037 regulator_bulk_disable(adv->num_supplies, adv->supplies); in adv7511_uninit_regulators()
1045 reg -= adv7511->reg_cec_offset; in adv7511_cec_register_volatile()
1079 adv->i2c_cec = i2c_new_ancillary_device(adv->i2c_main, "cec", in adv7511_init_cec_regmap()
1081 if (IS_ERR(adv->i2c_cec)) in adv7511_init_cec_regmap()
1082 return PTR_ERR(adv->i2c_cec); in adv7511_init_cec_regmap()
1084 regmap_write(adv->regmap, ADV7511_REG_CEC_I2C_ADDR, in adv7511_init_cec_regmap()
1085 adv->i2c_cec->addr << 1); in adv7511_init_cec_regmap()
1087 i2c_set_clientdata(adv->i2c_cec, adv); in adv7511_init_cec_regmap()
1089 adv->regmap_cec = devm_regmap_init_i2c(adv->i2c_cec, in adv7511_init_cec_regmap()
1091 if (IS_ERR(adv->regmap_cec)) { in adv7511_init_cec_regmap()
1092 ret = PTR_ERR(adv->regmap_cec); in adv7511_init_cec_regmap()
1096 if (adv->type == ADV7533 || adv->type == ADV7535) { in adv7511_init_cec_regmap()
1101 adv->reg_cec_offset = ADV7533_REG_CEC_OFFSET; in adv7511_init_cec_regmap()
1106 i2c_unregister_device(adv->i2c_cec); in adv7511_init_cec_regmap()
1116 of_property_read_u32(np, "adi,input-depth", &config->input_color_depth); in adv7511_parse_dt()
1117 if (config->input_color_depth != 8 && config->input_color_depth != 10 && in adv7511_parse_dt()
1118 config->input_color_depth != 12) in adv7511_parse_dt()
1119 return -EINVAL; in adv7511_parse_dt()
1121 ret = of_property_read_string(np, "adi,input-colorspace", &str); in adv7511_parse_dt()
1126 config->input_colorspace = HDMI_COLORSPACE_RGB; in adv7511_parse_dt()
1128 config->input_colorspace = HDMI_COLORSPACE_YUV422; in adv7511_parse_dt()
1130 config->input_colorspace = HDMI_COLORSPACE_YUV444; in adv7511_parse_dt()
1132 return -EINVAL; in adv7511_parse_dt()
1134 ret = of_property_read_string(np, "adi,input-clock", &str); in adv7511_parse_dt()
1139 config->input_clock = ADV7511_INPUT_CLOCK_1X; in adv7511_parse_dt()
1141 config->input_clock = ADV7511_INPUT_CLOCK_2X; in adv7511_parse_dt()
1143 config->input_clock = ADV7511_INPUT_CLOCK_DDR; in adv7511_parse_dt()
1145 return -EINVAL; in adv7511_parse_dt()
1147 if (config->input_colorspace == HDMI_COLORSPACE_YUV422 || in adv7511_parse_dt()
1148 config->input_clock != ADV7511_INPUT_CLOCK_1X) { in adv7511_parse_dt()
1149 ret = of_property_read_u32(np, "adi,input-style", in adv7511_parse_dt()
1150 &config->input_style); in adv7511_parse_dt()
1154 if (config->input_style < 1 || config->input_style > 3) in adv7511_parse_dt()
1155 return -EINVAL; in adv7511_parse_dt()
1157 ret = of_property_read_string(np, "adi,input-justification", in adv7511_parse_dt()
1163 config->input_justification = in adv7511_parse_dt()
1166 config->input_justification = in adv7511_parse_dt()
1169 config->input_justification = in adv7511_parse_dt()
1172 return -EINVAL; in adv7511_parse_dt()
1175 config->input_style = 1; in adv7511_parse_dt()
1176 config->input_justification = ADV7511_INPUT_JUSTIFICATION_LEFT; in adv7511_parse_dt()
1179 of_property_read_u32(np, "adi,clock-delay", &config->clock_delay); in adv7511_parse_dt()
1180 if (config->clock_delay < -1200 || config->clock_delay > 1600) in adv7511_parse_dt()
1181 return -EINVAL; in adv7511_parse_dt()
1183 config->embedded_sync = of_property_read_bool(np, "adi,embedded-sync"); in adv7511_parse_dt()
1186 config->sync_pulse = ADV7511_INPUT_SYNC_PULSE_NONE; in adv7511_parse_dt()
1187 config->vsync_polarity = ADV7511_SYNC_POLARITY_PASSTHROUGH; in adv7511_parse_dt()
1188 config->hsync_polarity = ADV7511_SYNC_POLARITY_PASSTHROUGH; in adv7511_parse_dt()
1198 struct device *dev = &i2c->dev; in adv7511_probe()
1202 if (!dev->of_node) in adv7511_probe()
1203 return -EINVAL; in adv7511_probe()
1207 return -ENOMEM; in adv7511_probe()
1209 adv7511->i2c_main = i2c; in adv7511_probe()
1210 adv7511->powered = false; in adv7511_probe()
1211 adv7511->status = connector_status_disconnected; in adv7511_probe()
1213 if (dev->of_node) in adv7511_probe()
1214 adv7511->type = (enum adv7511_type)of_device_get_match_data(dev); in adv7511_probe()
1216 adv7511->type = id->driver_data; in adv7511_probe()
1220 if (adv7511->type == ADV7511) in adv7511_probe()
1221 ret = adv7511_parse_dt(dev->of_node, &link_config); in adv7511_probe()
1223 ret = adv7533_parse_dt(dev->of_node, adv7511); in adv7511_probe()
1235 adv7511->gpio_pd = devm_gpiod_get_optional(dev, "pd", GPIOD_OUT_HIGH); in adv7511_probe()
1236 if (IS_ERR(adv7511->gpio_pd)) { in adv7511_probe()
1237 ret = PTR_ERR(adv7511->gpio_pd); in adv7511_probe()
1241 if (adv7511->gpio_pd) { in adv7511_probe()
1243 gpiod_set_value_cansleep(adv7511->gpio_pd, 0); in adv7511_probe()
1246 adv7511->regmap = devm_regmap_init_i2c(i2c, &adv7511_regmap_config); in adv7511_probe()
1247 if (IS_ERR(adv7511->regmap)) { in adv7511_probe()
1248 ret = PTR_ERR(adv7511->regmap); in adv7511_probe()
1252 ret = regmap_read(adv7511->regmap, ADV7511_REG_CHIP_REVISION, &val); in adv7511_probe()
1257 if (adv7511->type == ADV7511) in adv7511_probe()
1258 ret = regmap_register_patch(adv7511->regmap, in adv7511_probe()
1268 adv7511->i2c_edid = i2c_new_ancillary_device(i2c, "edid", in adv7511_probe()
1270 if (IS_ERR(adv7511->i2c_edid)) { in adv7511_probe()
1271 ret = PTR_ERR(adv7511->i2c_edid); in adv7511_probe()
1275 regmap_write(adv7511->regmap, ADV7511_REG_EDID_I2C_ADDR, in adv7511_probe()
1276 adv7511->i2c_edid->addr << 1); in adv7511_probe()
1278 adv7511->i2c_packet = i2c_new_ancillary_device(i2c, "packet", in adv7511_probe()
1280 if (IS_ERR(adv7511->i2c_packet)) { in adv7511_probe()
1281 ret = PTR_ERR(adv7511->i2c_packet); in adv7511_probe()
1285 regmap_write(adv7511->regmap, ADV7511_REG_PACKET_I2C_ADDR, in adv7511_probe()
1286 adv7511->i2c_packet->addr << 1); in adv7511_probe()
1292 INIT_WORK(&adv7511->hpd_work, adv7511_hpd_work); in adv7511_probe()
1298 if (adv7511->type == ADV7511) in adv7511_probe()
1305 adv7511->bridge.funcs = &adv7511_bridge_funcs; in adv7511_probe()
1306 adv7511->bridge.ops = DRM_BRIDGE_OP_DETECT | DRM_BRIDGE_OP_EDID; in adv7511_probe()
1307 if (adv7511->i2c_main->irq) in adv7511_probe()
1308 adv7511->bridge.ops |= DRM_BRIDGE_OP_HPD; in adv7511_probe()
1310 adv7511->bridge.of_node = dev->of_node; in adv7511_probe()
1311 adv7511->bridge.type = DRM_MODE_CONNECTOR_HDMIA; in adv7511_probe()
1313 drm_bridge_add(&adv7511->bridge); in adv7511_probe()
1317 if (i2c->irq) { in adv7511_probe()
1318 init_waitqueue_head(&adv7511->wq); in adv7511_probe()
1320 ret = devm_request_threaded_irq(dev, i2c->irq, NULL, in adv7511_probe()
1328 if (adv7511->type == ADV7533 || adv7511->type == ADV7535) { in adv7511_probe()
1338 drm_bridge_remove(&adv7511->bridge); in adv7511_probe()
1340 cec_unregister_adapter(adv7511->cec_adap); in adv7511_probe()
1341 i2c_unregister_device(adv7511->i2c_cec); in adv7511_probe()
1342 clk_disable_unprepare(adv7511->cec_clk); in adv7511_probe()
1344 i2c_unregister_device(adv7511->i2c_packet); in adv7511_probe()
1346 i2c_unregister_device(adv7511->i2c_edid); in adv7511_probe()
1359 drm_bridge_remove(&adv7511->bridge); in adv7511_remove()
1363 cec_unregister_adapter(adv7511->cec_adap); in adv7511_remove()
1364 i2c_unregister_device(adv7511->i2c_cec); in adv7511_remove()
1365 clk_disable_unprepare(adv7511->cec_clk); in adv7511_remove()
1367 i2c_unregister_device(adv7511->i2c_packet); in adv7511_remove()
1368 i2c_unregister_device(adv7511->i2c_edid); in adv7511_remove()
1434 MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");