Say y here to support the Qualcomm Peripherial Image Loader for the
          Hexagon V5 based remote processors.
 
-config QCOM_WCNSS_IRIS
-       tristate
-       depends on OF && ARCH_QCOM
-
 config QCOM_WCNSS_PIL
        tristate "Qualcomm WCNSS Peripheral Image Loader"
        depends on OF && ARCH_QCOM
        depends on QCOM_SMEM
        select QCOM_MDT_LOADER
        select QCOM_SCM
-       select QCOM_WCNSS_IRIS
        select REMOTEPROC
        help
          Say y here to support the Peripheral Image Loader for the Qualcomm
 
 obj-$(CONFIG_DA8XX_REMOTEPROC)         += da8xx_remoteproc.o
 obj-$(CONFIG_QCOM_MDT_LOADER)          += qcom_mdt_loader.o
 obj-$(CONFIG_QCOM_Q6V5_PIL)            += qcom_q6v5_pil.o
-obj-$(CONFIG_QCOM_WCNSS_IRIS)          += qcom_wcnss_iris.o
-obj-$(CONFIG_QCOM_WCNSS_PIL)           += qcom_wcnss.o
+obj-$(CONFIG_QCOM_WCNSS_PIL)           += qcom_wcnss_pil.o
+qcom_wcnss_pil-y                       += qcom_wcnss.o
+qcom_wcnss_pil-y                       += qcom_wcnss_iris.o
 obj-$(CONFIG_ST_REMOTEPROC)            += st_remoteproc.o
 
 
        mutex_unlock(&wcnss->iris_lock);
 }
-EXPORT_SYMBOL_GPL(qcom_wcnss_assign_iris);
 
 static int wcnss_load(struct rproc *rproc, const struct firmware *fw)
 {
        },
 };
 
-module_platform_driver(wcnss_driver);
+static int __init wcnss_init(void)
+{
+       int ret;
+
+       ret = platform_driver_register(&wcnss_driver);
+       if (ret)
+               return ret;
+
+       ret = platform_driver_register(&qcom_iris_driver);
+       if (ret)
+               platform_driver_unregister(&wcnss_driver);
+
+       return ret;
+}
+module_init(wcnss_init);
+
+static void __exit wcnss_exit(void)
+{
+       platform_driver_unregister(&qcom_iris_driver);
+       platform_driver_unregister(&wcnss_driver);
+}
+module_exit(wcnss_exit);
+
 MODULE_DESCRIPTION("Qualcomm Peripherial Image Loader for Wireless Subsystem");
 MODULE_LICENSE("GPL v2");
 
 struct qcom_iris;
 struct qcom_wcnss;
 
+extern struct platform_driver qcom_iris_driver;
+
 struct wcnss_vreg_info {
        const char * const name;
        int min_voltage;
 
 
        return ret;
 }
-EXPORT_SYMBOL_GPL(qcom_iris_enable);
 
 void qcom_iris_disable(struct qcom_iris *iris)
 {
        clk_disable_unprepare(iris->xo_clk);
        regulator_bulk_disable(iris->num_vregs, iris->vregs);
 }
-EXPORT_SYMBOL_GPL(qcom_iris_disable);
 
 static int qcom_iris_probe(struct platform_device *pdev)
 {
 };
 MODULE_DEVICE_TABLE(of, iris_of_match);
 
-static struct platform_driver wcnss_driver = {
+struct platform_driver qcom_iris_driver = {
        .probe = qcom_iris_probe,
        .remove = qcom_iris_remove,
        .driver = {
                .of_match_table = iris_of_match,
        },
 };
-
-module_platform_driver(wcnss_driver);
-MODULE_DESCRIPTION("Qualcomm Wireless Subsystem Iris driver");
-MODULE_LICENSE("GPL v2");