config VIDEO_TI_CSC
        tristate
 
+menuconfig V4L_CEC_DRIVERS
+       bool "Platform HDMI CEC drivers"
+       depends on MEDIA_CEC_SUPPORT
+
+if V4L_CEC_DRIVERS
+
+config VIDEO_STI_HDMI_CEC
+       tristate "STMicroelectronics STiH4xx HDMI CEC driver"
+       depends on VIDEO_DEV && MEDIA_CEC_SUPPORT && (ARCH_STI || COMPILE_TEST)
+       select MEDIA_CEC_NOTIFIER
+       ---help---
+         This is a driver for STIH4xx HDMI CEC interface. It uses the
+         generic CEC framework interface.
+         CEC bus is present in the HDMI connector and enables communication
+         between compatible devices.
+
+endif #V4L_CEC_DRIVERS
+
 menuconfig V4L_TEST_DRIVERS
        bool "Media test drivers"
        depends on MEDIA_CAMERA_SUPPORT
 
 obj-$(CONFIG_VIDEO_STI_BDISP)          += sti/bdisp/
 obj-$(CONFIG_VIDEO_STI_HVA)            += sti/hva/
 obj-$(CONFIG_DVB_C8SECTPFE)            += sti/c8sectpfe/
+obj-$(CONFIG_VIDEO_STI_HDMI_CEC)       += sti/cec/
 
 obj-$(CONFIG_VIDEO_STI_DELTA)          += sti/delta/
 
 
 /*
- * drivers/staging/media/st-cec/stih-cec.c
- *
  * STIH4xx CEC driver
  * Copyright (C) STMicroelectronic SA 2016
  *
 #include <linux/mfd/syscon.h>
 #include <linux/module.h>
 #include <linux/of.h>
+#include <linux/of_platform.h>
 #include <linux/platform_device.h>
 
 #include <media/cec.h>
+#include <media/cec-notifier.h>
 
 #define CEC_NAME       "stih-cec"
 
        void __iomem            *regs;
        int                     irq;
        u32                     irq_status;
+       struct cec_notifier     *notifier;
 };
 
 static int stih_cec_adap_enable(struct cec_adapter *adap, bool enable)
        struct device *dev = &pdev->dev;
        struct resource *res;
        struct stih_cec *cec;
+       struct device_node *np;
+       struct platform_device *hdmi_dev;
        int ret;
 
        cec = devm_kzalloc(dev, sizeof(*cec), GFP_KERNEL);
        if (!cec)
                return -ENOMEM;
 
+       np = of_parse_phandle(pdev->dev.of_node, "hdmi-phandle", 0);
+
+       if (!np) {
+               dev_err(&pdev->dev, "Failed to find hdmi node in device tree\n");
+               return -ENODEV;
+       }
+
+       hdmi_dev = of_find_device_by_node(np);
+       if (!hdmi_dev)
+               return -EPROBE_DEFER;
+
+       cec->notifier = cec_notifier_get(&hdmi_dev->dev);
+       if (!cec->notifier)
+               return -ENOMEM;
+
        cec->dev = dev;
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        cec->adap = cec_allocate_adapter(&sti_cec_adap_ops, cec,
                        CEC_NAME,
                        CEC_CAP_LOG_ADDRS | CEC_CAP_PASSTHROUGH |
-                       CEC_CAP_PHYS_ADDR | CEC_CAP_TRANSMIT, 1);
+                       CEC_CAP_TRANSMIT, 1);
        ret = PTR_ERR_OR_ZERO(cec->adap);
        if (ret)
                return ret;
                return ret;
        }
 
+       cec_register_cec_notifier(cec->adap, cec->notifier);
+
        platform_set_drvdata(pdev, cec);
        return 0;
 }
 
 static int stih_cec_remove(struct platform_device *pdev)
 {
+       struct stih_cec *cec = platform_get_drvdata(pdev);
+
+       cec_unregister_adapter(cec->adap);
+       cec_notifier_put(cec->notifier);
+
        return 0;
 }
 
 
 # Keep LIRC at the end, as it has sub-menus
 source "drivers/staging/media/lirc/Kconfig"
 
-source "drivers/staging/media/st-cec/Kconfig"
-
 endif
 
 obj-$(CONFIG_VIDEO_BCM2835)    += platform/bcm2835/
 obj-$(CONFIG_VIDEO_DM365_VPFE) += davinci_vpfe/
 obj-$(CONFIG_VIDEO_OMAP4)      += omap4iss/
-obj-$(CONFIG_VIDEO_STI_HDMI_CEC) += st-cec/
 
+++ /dev/null
-config VIDEO_STI_HDMI_CEC
-       tristate "STMicroelectronics STiH4xx HDMI CEC driver"
-       depends on VIDEO_DEV && MEDIA_CEC_SUPPORT && (ARCH_STI || COMPILE_TEST)
-       ---help---
-         This is a driver for STIH4xx HDMI CEC interface. It uses the
-         generic CEC framework interface.
-         CEC bus is present in the HDMI connector and enables communication
-         between compatible devices.
 
+++ /dev/null
-This driver requires that userspace sets the physical address.
-However, this should be passed on from the corresponding
-ST HDMI driver.
-
-We have to wait until the HDMI notifier framework has been merged
-in order to handle this gracefully, until that time this driver
-has to remain in staging.