select DRM_PANEL
        select TEGRA_HOST1X
        select IOMMU_IOVA if IOMMU_SUPPORT
+       select CEC_CORE if CEC_NOTIFIER
        help
          Choose this option if you have an NVIDIA Tegra SoC.
 
 
 void tegra_drm_free(struct tegra_drm *tegra, size_t size, void *virt,
                    dma_addr_t iova);
 
+struct cec_notifier;
+
 struct tegra_output {
        struct device_node *of_node;
        struct device *dev;
        struct drm_panel *panel;
        struct i2c_adapter *ddc;
        const struct edid *edid;
+       struct cec_notifier *notifier;
        unsigned int hpd_irq;
        int hpd_gpio;
        enum of_gpio_flags hpd_gpio_flags;
 
 
 #include <sound/hda_verbs.h>
 
+#include <media/cec-notifier.h>
+
 #include "hdmi.h"
 #include "drm.h"
 #include "dc.h"
                return PTR_ERR(hdmi->vdd);
        }
 
+       hdmi->output.notifier = cec_notifier_get(&pdev->dev);
+       if (hdmi->output.notifier == NULL)
+               return -ENOMEM;
+
        hdmi->output.dev = &pdev->dev;
 
        err = tegra_output_probe(&hdmi->output);
 
        tegra_output_remove(&hdmi->output);
 
+       if (hdmi->output.notifier)
+               cec_notifier_put(hdmi->output.notifier);
+
        return 0;
 }
 
 
 #include <drm/drm_panel.h>
 #include "drm.h"
 
+#include <media/cec-notifier.h>
+
 int tegra_output_connector_get_modes(struct drm_connector *connector)
 {
        struct tegra_output *output = connector_to_output(connector);
        else if (output->ddc)
                edid = drm_get_edid(connector, output->ddc);
 
+       cec_notifier_set_phys_addr_from_edid(output->notifier, edid);
        drm_mode_connector_update_edid_property(connector, edid);
 
        if (edid) {
                        status = connector_status_connected;
        }
 
+       if (status != connector_status_connected)
+               cec_notifier_phys_addr_invalidate(output->notifier);
+
        return status;
 }