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

1 // SPDX-License-Identifier: GPL-2.0-only
39 /* -----------------------------------------------------------------------------
132 /* -----------------------------------------------------------------------------
142 regmap_update_bits(adv7511->regmap, ADV7511_REG_CSC_UPPER(1), in adv7511_set_colormap()
147 regmap_update_bits(adv7511->regmap, in adv7511_set_colormap()
150 regmap_write(adv7511->regmap, in adv7511_set_colormap()
157 regmap_update_bits(adv7511->regmap, ADV7511_REG_CSC_UPPER(0), in adv7511_set_colormap()
160 regmap_update_bits(adv7511->regmap, ADV7511_REG_CSC_UPPER(0), in adv7511_set_colormap()
163 regmap_update_bits(adv7511->regmap, ADV7511_REG_CSC_UPPER(1), in adv7511_set_colormap()
170 regmap_update_bits(adv7511->regmap, ADV7511_REG_PACKET_ENABLE0, in adv7511_packet_enable()
175 regmap_update_bits(adv7511->regmap, ADV7511_REG_PACKET_ENABLE1, in adv7511_packet_enable()
185 regmap_update_bits(adv7511->regmap, ADV7511_REG_PACKET_ENABLE0, in adv7511_packet_disable()
190 regmap_update_bits(adv7511->regmap, ADV7511_REG_PACKET_ENABLE1, in adv7511_packet_disable()
226 if ((connector->display_info.color_formats & in adv7511_set_config_csc()
267 regmap_update_bits(adv7511->regmap, ADV7511_REG_VIDEO_INPUT_CFG1, 0x81, in adv7511_set_config_csc()
270 regmap_update_bits(adv7511->regmap, ADV7511_REG_HDCP_HDMI_CFG, in adv7511_set_config_csc()
277 regmap_bulk_write(adv7511->regmap, ADV7511_REG_AVI_INFOFRAME_VERSION, in adv7511_set_config_csc()
278 infoframe + 1, sizeof(infoframe) - 1); in adv7511_set_config_csc()
288 * hardware register field values :-( in adv7511_set_link_config()
296 clock_delay = (config->clock_delay + 1200) / 400; in adv7511_set_link_config()
297 color_depth = config->input_color_depth == 8 ? 3 in adv7511_set_link_config()
298 : (config->input_color_depth == 10 ? 1 : 2); in adv7511_set_link_config()
301 if (config->input_colorspace != HDMI_COLORSPACE_YUV422) in adv7511_set_link_config()
302 input_id = config->input_clock == ADV7511_INPUT_CLOCK_DDR in adv7511_set_link_config()
304 else if (config->input_clock == ADV7511_INPUT_CLOCK_DDR) in adv7511_set_link_config()
305 input_id = config->embedded_sync ? 8 : 7; in adv7511_set_link_config()
306 else if (config->input_clock == ADV7511_INPUT_CLOCK_2X) in adv7511_set_link_config()
307 input_id = config->embedded_sync ? 4 : 3; in adv7511_set_link_config()
309 input_id = config->embedded_sync ? 2 : 1; in adv7511_set_link_config()
311 regmap_update_bits(adv7511->regmap, ADV7511_REG_I2C_FREQ_ID_CFG, 0xf, in adv7511_set_link_config()
313 regmap_update_bits(adv7511->regmap, ADV7511_REG_VIDEO_INPUT_CFG1, 0x7e, in adv7511_set_link_config()
315 (input_styles[config->input_style] << 2)); in adv7511_set_link_config()
316 regmap_write(adv7511->regmap, ADV7511_REG_VIDEO_INPUT_CFG2, in adv7511_set_link_config()
317 config->input_justification << 3); in adv7511_set_link_config()
318 regmap_write(adv7511->regmap, ADV7511_REG_TIMING_GEN_SEQ, in adv7511_set_link_config()
319 config->sync_pulse << 2); in adv7511_set_link_config()
321 regmap_write(adv7511->regmap, 0xba, clock_delay << 5); in adv7511_set_link_config()
323 adv7511->embedded_sync = config->embedded_sync; in adv7511_set_link_config()
324 adv7511->hsync_polarity = config->hsync_polarity; in adv7511_set_link_config()
325 adv7511->vsync_polarity = config->vsync_polarity; in adv7511_set_link_config()
326 adv7511->rgb = config->input_colorspace == HDMI_COLORSPACE_RGB; in adv7511_set_link_config()
331 adv7511->current_edid_segment = -1; in __adv7511_power_on()
333 regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER, in __adv7511_power_on()
335 if (adv7511->i2c_main->irq) { in __adv7511_power_on()
341 regmap_write(adv7511->regmap, ADV7511_REG_INT_ENABLE(0), in __adv7511_power_on()
343 regmap_update_bits(adv7511->regmap, in __adv7511_power_on()
358 if (adv7511->info->hpd_override_enable) in __adv7511_power_on()
359 regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER2, in __adv7511_power_on()
363 regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER2, in __adv7511_power_on()
375 regcache_sync(adv7511->regmap); in adv7511_power_on()
377 if (adv7511->info->has_dsi) in adv7511_power_on()
379 adv7511->powered = true; in adv7511_power_on()
385 if (adv7511->info->hpd_override_enable) in __adv7511_power_off()
386 regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER2, in __adv7511_power_off()
389 regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER, in __adv7511_power_off()
392 regmap_update_bits(adv7511->regmap, in __adv7511_power_off()
395 regcache_mark_dirty(adv7511->regmap); in __adv7511_power_off()
401 if (adv7511->info->has_dsi) in adv7511_power_off()
403 adv7511->powered = false; in adv7511_power_off()
406 /* -----------------------------------------------------------------------------
415 ret = regmap_read(adv7511->regmap, ADV7511_REG_INT(0), &irq0); in adv7511_hpd()
420 regmap_write(adv7511->regmap, ADV7511_REG_INT(0), in adv7511_hpd()
435 ret = regmap_read(adv7511->regmap, ADV7511_REG_STATUS, &val); in adv7511_hpd_work()
449 adv7511->connector.status == connector_status_disconnected && in adv7511_hpd_work()
450 adv7511->powered) { in adv7511_hpd_work()
451 regcache_mark_dirty(adv7511->regmap); in adv7511_hpd_work()
455 if (adv7511->connector.status != status) { in adv7511_hpd_work()
456 adv7511->connector.status = status; in adv7511_hpd_work()
458 if (adv7511->connector.dev) { in adv7511_hpd_work()
460 cec_phys_addr_invalidate(adv7511->cec_adap); in adv7511_hpd_work()
461 drm_kms_helper_hotplug_event(adv7511->connector.dev); in adv7511_hpd_work()
463 drm_bridge_hpd_notify(&adv7511->bridge, status); in adv7511_hpd_work()
475 ret = regmap_read(adv7511->regmap, ADV7511_REG_INT(0), &irq0); in adv7511_irq_process()
479 ret = regmap_read(adv7511->regmap, ADV7511_REG_INT(1), &irq1); in adv7511_irq_process()
483 regmap_write(adv7511->regmap, ADV7511_REG_INT(0), irq0); in adv7511_irq_process()
484 regmap_write(adv7511->regmap, ADV7511_REG_INT(1), irq1); in adv7511_irq_process()
486 if (process_hpd && irq0 & ADV7511_INT0_HPD && adv7511->bridge.encoder) { in adv7511_irq_process()
487 schedule_work(&adv7511->hpd_work); in adv7511_irq_process()
492 adv7511->edid_read = true; in adv7511_irq_process()
494 if (adv7511->i2c_main->irq) in adv7511_irq_process()
495 wake_up_all(&adv7511->wq); in adv7511_irq_process()
519 /* -----------------------------------------------------------------------------
527 if (adv7511->i2c_main->irq) { in adv7511_wait_for_edid()
528 ret = wait_event_interruptible_timeout(adv7511->wq, in adv7511_wait_for_edid()
529 adv7511->edid_read, msecs_to_jiffies(timeout)); in adv7511_wait_for_edid()
531 for (; timeout > 0; timeout -= 25) { in adv7511_wait_for_edid()
536 if (adv7511->edid_read) in adv7511_wait_for_edid()
543 return adv7511->edid_read ? 0 : -EIO; in adv7511_wait_for_edid()
556 return -EINVAL; in adv7511_get_edid_block()
558 if (adv7511->current_edid_segment != block / 2) { in adv7511_get_edid_block()
561 ret = regmap_read(adv7511->regmap, ADV7511_REG_DDC_STATUS, in adv7511_get_edid_block()
567 adv7511->edid_read = false; in adv7511_get_edid_block()
568 regmap_write(adv7511->regmap, ADV7511_REG_EDID_SEGMENT, in adv7511_get_edid_block()
579 xfer[0].addr = adv7511->i2c_edid->addr; in adv7511_get_edid_block()
583 xfer[1].addr = adv7511->i2c_edid->addr; in adv7511_get_edid_block()
586 xfer[1].buf = adv7511->edid_buf; in adv7511_get_edid_block()
591 ret = i2c_transfer(adv7511->i2c_edid->adapter, xfer, in adv7511_get_edid_block()
596 return -EIO; in adv7511_get_edid_block()
602 adv7511->current_edid_segment = block / 2; in adv7511_get_edid_block()
606 memcpy(buf, adv7511->edid_buf, len); in adv7511_get_edid_block()
608 memcpy(buf, adv7511->edid_buf + 128, len); in adv7511_get_edid_block()
613 /* -----------------------------------------------------------------------------
623 if (!adv7511->powered) { in adv7511_edid_read()
625 (adv7511->i2c_edid->addr << 1); in adv7511_edid_read()
630 regmap_write(adv7511->regmap, ADV7511_REG_EDID_I2C_ADDR, in adv7511_edid_read()
636 if (!adv7511->powered) in adv7511_edid_read()
643 * connector->display_info.source_physical_address, false) from in adv7511_edid_read()
649 adv7511_set_config_csc(adv7511, connector, adv7511->rgb, in adv7511_edid_read()
652 cec_s_phys_addr_from_edid(adv7511->cec_adap, edid); in adv7511_edid_read()
654 cec_s_phys_addr_from_edid(adv7511->cec_adap, NULL); in adv7511_edid_read()
684 ret = regmap_read(adv7511->regmap, ADV7511_REG_STATUS, &val); in adv7511_detect()
699 if (status == connector_status_connected && hpd && adv7511->powered) { in adv7511_detect()
700 regcache_mark_dirty(adv7511->regmap); in adv7511_detect()
704 if (adv7511->status == connector_status_connected) in adv7511_detect()
708 if (adv7511->info->hpd_override_enable) in adv7511_detect()
709 regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER2, in adv7511_detect()
713 regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER2, in adv7511_detect()
718 adv7511->status = status; in adv7511_detect()
725 if (mode->clock > 165000) in adv7511_mode_valid()
739 if (adv7511->embedded_sync) { in adv7511_mode_set()
743 hsync_offset = adj_mode->crtc_hsync_start - in adv7511_mode_set()
744 adj_mode->crtc_hdisplay; in adv7511_mode_set()
745 vsync_offset = adj_mode->crtc_vsync_start - in adv7511_mode_set()
746 adj_mode->crtc_vdisplay; in adv7511_mode_set()
747 hsync_len = adj_mode->crtc_hsync_end - in adv7511_mode_set()
748 adj_mode->crtc_hsync_start; in adv7511_mode_set()
749 vsync_len = adj_mode->crtc_vsync_end - in adv7511_mode_set()
750 adj_mode->crtc_vsync_start; in adv7511_mode_set()
752 /* The hardware vsync generator has a off-by-one bug */ in adv7511_mode_set()
755 regmap_write(adv7511->regmap, ADV7511_REG_HSYNC_PLACEMENT_MSB, in adv7511_mode_set()
757 regmap_write(adv7511->regmap, ADV7511_REG_SYNC_DECODER(0), in adv7511_mode_set()
759 regmap_write(adv7511->regmap, ADV7511_REG_SYNC_DECODER(1), in adv7511_mode_set()
762 regmap_write(adv7511->regmap, ADV7511_REG_SYNC_DECODER(2), in adv7511_mode_set()
765 regmap_write(adv7511->regmap, ADV7511_REG_SYNC_DECODER(3), in adv7511_mode_set()
768 regmap_write(adv7511->regmap, ADV7511_REG_SYNC_DECODER(4), in adv7511_mode_set()
771 hsync_polarity = !(adj_mode->flags & DRM_MODE_FLAG_PHSYNC); in adv7511_mode_set()
772 vsync_polarity = !(adj_mode->flags & DRM_MODE_FLAG_PVSYNC); in adv7511_mode_set()
782 if (adj_mode->flags & DRM_MODE_FLAG_NHSYNC) in adv7511_mode_set()
787 if (adj_mode->flags & DRM_MODE_FLAG_NVSYNC) in adv7511_mode_set()
792 if (adv7511->hsync_polarity != mode_hsync_polarity && in adv7511_mode_set()
793 adv7511->hsync_polarity != in adv7511_mode_set()
797 if (adv7511->vsync_polarity != mode_vsync_polarity && in adv7511_mode_set()
798 adv7511->vsync_polarity != in adv7511_mode_set()
812 if (adv7511->info->type == ADV7511) in adv7511_mode_set()
813 regmap_update_bits(adv7511->regmap, 0xfb, in adv7511_mode_set()
816 regmap_update_bits(adv7511->regmap, 0x4a, in adv7511_mode_set()
819 regmap_update_bits(adv7511->regmap, 0x17, in adv7511_mode_set()
822 drm_mode_copy(&adv7511->curr_mode, adj_mode); in adv7511_mode_set()
829 adv7511->f_tmds = mode->clock; in adv7511_mode_set()
832 /* -----------------------------------------------------------------------------
881 struct drm_bridge *bridge = &adv->bridge; in adv7511_connector_init()
884 if (adv->i2c_main->irq) in adv7511_connector_init()
885 adv->connector.polled = DRM_CONNECTOR_POLL_HPD; in adv7511_connector_init()
887 adv->connector.polled = DRM_CONNECTOR_POLL_CONNECT | in adv7511_connector_init()
890 ret = drm_connector_init(bridge->dev, &adv->connector, in adv7511_connector_init()
897 drm_connector_helper_add(&adv->connector, in adv7511_connector_init()
899 drm_connector_attach_encoder(&adv->connector, bridge->encoder); in adv7511_connector_init()
904 /* -----------------------------------------------------------------------------
942 if (adv->info->has_dsi) in adv7511_bridge_mode_valid()
954 if (adv->next_bridge) { in adv7511_bridge_attach()
955 ret = drm_bridge_attach(bridge->encoder, adv->next_bridge, bridge, in adv7511_bridge_attach()
967 if (adv->i2c_main->irq) in adv7511_bridge_attach()
968 regmap_write(adv->regmap, ADV7511_REG_INT_ENABLE(0), in adv7511_bridge_attach()
995 cec_phys_addr_invalidate(adv->cec_adap); in adv7511_bridge_hpd_notify()
1009 /* -----------------------------------------------------------------------------
1018 "dvdd-3v",
1025 "a2vdd",
1032 const char * const *supply_names = adv->info->supply_names; in adv7511_init_regulators()
1033 unsigned int num_supplies = adv->info->num_supplies; in adv7511_init_regulators()
1034 struct device *dev = &adv->i2c_main->dev; in adv7511_init_regulators()
1038 adv->supplies = devm_kcalloc(dev, num_supplies, in adv7511_init_regulators()
1039 sizeof(*adv->supplies), GFP_KERNEL); in adv7511_init_regulators()
1040 if (!adv->supplies) in adv7511_init_regulators()
1041 return -ENOMEM; in adv7511_init_regulators()
1044 adv->supplies[i].supply = supply_names[i]; in adv7511_init_regulators()
1046 ret = devm_regulator_bulk_get(dev, num_supplies, adv->supplies); in adv7511_init_regulators()
1050 return regulator_bulk_enable(num_supplies, adv->supplies); in adv7511_init_regulators()
1055 regulator_bulk_disable(adv->info->num_supplies, adv->supplies); in adv7511_uninit_regulators()
1063 reg -= adv7511->info->reg_cec_offset; in adv7511_cec_register_volatile()
1097 adv->i2c_cec = i2c_new_ancillary_device(adv->i2c_main, "cec", in adv7511_init_cec_regmap()
1099 if (IS_ERR(adv->i2c_cec)) in adv7511_init_cec_regmap()
1100 return PTR_ERR(adv->i2c_cec); in adv7511_init_cec_regmap()
1102 regmap_write(adv->regmap, ADV7511_REG_CEC_I2C_ADDR, in adv7511_init_cec_regmap()
1103 adv->i2c_cec->addr << 1); in adv7511_init_cec_regmap()
1105 i2c_set_clientdata(adv->i2c_cec, adv); in adv7511_init_cec_regmap()
1107 adv->regmap_cec = devm_regmap_init_i2c(adv->i2c_cec, in adv7511_init_cec_regmap()
1109 if (IS_ERR(adv->regmap_cec)) { in adv7511_init_cec_regmap()
1110 ret = PTR_ERR(adv->regmap_cec); in adv7511_init_cec_regmap()
1114 if (adv->info->reg_cec_offset == ADV7533_REG_CEC_OFFSET) { in adv7511_init_cec_regmap()
1122 i2c_unregister_device(adv->i2c_cec); in adv7511_init_cec_regmap()
1132 of_property_read_u32(np, "adi,input-depth", &config->input_color_depth); in adv7511_parse_dt()
1133 if (config->input_color_depth != 8 && config->input_color_depth != 10 && in adv7511_parse_dt()
1134 config->input_color_depth != 12) in adv7511_parse_dt()
1135 return -EINVAL; in adv7511_parse_dt()
1137 ret = of_property_read_string(np, "adi,input-colorspace", &str); in adv7511_parse_dt()
1142 config->input_colorspace = HDMI_COLORSPACE_RGB; in adv7511_parse_dt()
1144 config->input_colorspace = HDMI_COLORSPACE_YUV422; in adv7511_parse_dt()
1146 config->input_colorspace = HDMI_COLORSPACE_YUV444; in adv7511_parse_dt()
1148 return -EINVAL; in adv7511_parse_dt()
1150 ret = of_property_read_string(np, "adi,input-clock", &str); in adv7511_parse_dt()
1155 config->input_clock = ADV7511_INPUT_CLOCK_1X; in adv7511_parse_dt()
1157 config->input_clock = ADV7511_INPUT_CLOCK_2X; in adv7511_parse_dt()
1159 config->input_clock = ADV7511_INPUT_CLOCK_DDR; in adv7511_parse_dt()
1161 return -EINVAL; in adv7511_parse_dt()
1163 if (config->input_colorspace == HDMI_COLORSPACE_YUV422 || in adv7511_parse_dt()
1164 config->input_clock != ADV7511_INPUT_CLOCK_1X) { in adv7511_parse_dt()
1165 ret = of_property_read_u32(np, "adi,input-style", in adv7511_parse_dt()
1166 &config->input_style); in adv7511_parse_dt()
1170 if (config->input_style < 1 || config->input_style > 3) in adv7511_parse_dt()
1171 return -EINVAL; in adv7511_parse_dt()
1173 ret = of_property_read_string(np, "adi,input-justification", in adv7511_parse_dt()
1179 config->input_justification = in adv7511_parse_dt()
1182 config->input_justification = in adv7511_parse_dt()
1185 config->input_justification = in adv7511_parse_dt()
1188 return -EINVAL; in adv7511_parse_dt()
1191 config->input_style = 1; in adv7511_parse_dt()
1192 config->input_justification = ADV7511_INPUT_JUSTIFICATION_LEFT; in adv7511_parse_dt()
1195 of_property_read_u32(np, "adi,clock-delay", &config->clock_delay); in adv7511_parse_dt()
1196 if (config->clock_delay < -1200 || config->clock_delay > 1600) in adv7511_parse_dt()
1197 return -EINVAL; in adv7511_parse_dt()
1199 config->embedded_sync = of_property_read_bool(np, "adi,embedded-sync"); in adv7511_parse_dt()
1202 config->sync_pulse = ADV7511_INPUT_SYNC_PULSE_NONE; in adv7511_parse_dt()
1203 config->vsync_polarity = ADV7511_SYNC_POLARITY_PASSTHROUGH; in adv7511_parse_dt()
1204 config->hsync_polarity = ADV7511_SYNC_POLARITY_PASSTHROUGH; in adv7511_parse_dt()
1213 struct device *dev = &i2c->dev; in adv7511_probe()
1217 if (!dev->of_node) in adv7511_probe()
1218 return -EINVAL; in adv7511_probe()
1222 return -ENOMEM; in adv7511_probe()
1224 adv7511->i2c_main = i2c; in adv7511_probe()
1225 adv7511->powered = false; in adv7511_probe()
1226 adv7511->status = connector_status_disconnected; in adv7511_probe()
1227 adv7511->info = i2c_get_match_data(i2c); in adv7511_probe()
1231 ret = drm_of_find_panel_or_bridge(dev->of_node, 1, -1, NULL, in adv7511_probe()
1232 &adv7511->next_bridge); in adv7511_probe()
1233 if (ret && ret != -ENODEV) in adv7511_probe()
1236 if (adv7511->info->link_config) in adv7511_probe()
1237 ret = adv7511_parse_dt(dev->of_node, &link_config); in adv7511_probe()
1239 ret = adv7533_parse_dt(dev->of_node, adv7511); in adv7511_probe()
1251 adv7511->gpio_pd = devm_gpiod_get_optional(dev, "pd", GPIOD_OUT_HIGH); in adv7511_probe()
1252 if (IS_ERR(adv7511->gpio_pd)) { in adv7511_probe()
1253 ret = PTR_ERR(adv7511->gpio_pd); in adv7511_probe()
1257 if (adv7511->gpio_pd) { in adv7511_probe()
1259 gpiod_set_value_cansleep(adv7511->gpio_pd, 0); in adv7511_probe()
1262 adv7511->regmap = devm_regmap_init_i2c(i2c, &adv7511_regmap_config); in adv7511_probe()
1263 if (IS_ERR(adv7511->regmap)) { in adv7511_probe()
1264 ret = PTR_ERR(adv7511->regmap); in adv7511_probe()
1268 ret = regmap_read(adv7511->regmap, ADV7511_REG_CHIP_REVISION, &val); in adv7511_probe()
1273 if (adv7511->info->type == ADV7511) in adv7511_probe()
1274 ret = regmap_register_patch(adv7511->regmap, in adv7511_probe()
1284 adv7511->i2c_edid = i2c_new_ancillary_device(i2c, "edid", in adv7511_probe()
1286 if (IS_ERR(adv7511->i2c_edid)) { in adv7511_probe()
1287 ret = PTR_ERR(adv7511->i2c_edid); in adv7511_probe()
1291 regmap_write(adv7511->regmap, ADV7511_REG_EDID_I2C_ADDR, in adv7511_probe()
1292 adv7511->i2c_edid->addr << 1); in adv7511_probe()
1294 adv7511->i2c_packet = i2c_new_ancillary_device(i2c, "packet", in adv7511_probe()
1296 if (IS_ERR(adv7511->i2c_packet)) { in adv7511_probe()
1297 ret = PTR_ERR(adv7511->i2c_packet); in adv7511_probe()
1301 regmap_write(adv7511->regmap, ADV7511_REG_PACKET_I2C_ADDR, in adv7511_probe()
1302 adv7511->i2c_packet->addr << 1); in adv7511_probe()
1308 INIT_WORK(&adv7511->hpd_work, adv7511_hpd_work); in adv7511_probe()
1314 if (adv7511->info->link_config) in adv7511_probe()
1321 adv7511->bridge.funcs = &adv7511_bridge_funcs; in adv7511_probe()
1322 adv7511->bridge.ops = DRM_BRIDGE_OP_DETECT | DRM_BRIDGE_OP_EDID; in adv7511_probe()
1323 if (adv7511->i2c_main->irq) in adv7511_probe()
1324 adv7511->bridge.ops |= DRM_BRIDGE_OP_HPD; in adv7511_probe()
1326 adv7511->bridge.of_node = dev->of_node; in adv7511_probe()
1327 adv7511->bridge.type = DRM_MODE_CONNECTOR_HDMIA; in adv7511_probe()
1329 drm_bridge_add(&adv7511->bridge); in adv7511_probe()
1333 if (i2c->irq) { in adv7511_probe()
1334 init_waitqueue_head(&adv7511->wq); in adv7511_probe()
1336 ret = devm_request_threaded_irq(dev, i2c->irq, NULL, in adv7511_probe()
1345 if (adv7511->info->has_dsi) { in adv7511_probe()
1355 drm_bridge_remove(&adv7511->bridge); in adv7511_probe()
1357 cec_unregister_adapter(adv7511->cec_adap); in adv7511_probe()
1358 i2c_unregister_device(adv7511->i2c_cec); in adv7511_probe()
1359 clk_disable_unprepare(adv7511->cec_clk); in adv7511_probe()
1361 i2c_unregister_device(adv7511->i2c_packet); in adv7511_probe()
1363 i2c_unregister_device(adv7511->i2c_edid); in adv7511_probe()
1376 drm_bridge_remove(&adv7511->bridge); in adv7511_remove()
1380 cec_unregister_adapter(adv7511->cec_adap); in adv7511_remove()
1381 i2c_unregister_device(adv7511->i2c_cec); in adv7511_remove()
1382 clk_disable_unprepare(adv7511->cec_clk); in adv7511_remove()
1384 i2c_unregister_device(adv7511->i2c_packet); in adv7511_remove()
1385 i2c_unregister_device(adv7511->i2c_edid); in adv7511_remove()
1479 MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");