Since there is no virtual devicetree node representing the interconnect we need to probe the icc device externally. Probing this from the SOC driver allows the interconnect device to be built as a module. This is very similar to imx-cpufreq-dt. Signed-off-by: Leonard Crestez <leonard.crestez@xxxxxxx> --- drivers/soc/imx/soc-imx8.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/soc/imx/soc-imx8.c b/drivers/soc/imx/soc-imx8.c index b9831576dd25..24d515a9fdb2 100644 --- a/drivers/soc/imx/soc-imx8.c +++ b/drivers/soc/imx/soc-imx8.c @@ -22,10 +22,11 @@ /* Same as ANADIG_DIGPROG_IMX7D */ #define ANADIG_DIGPROG_IMX8MM 0x800 struct imx8_soc_data { char *name; + char *icc_driver; u32 (*soc_revision)(void); }; static u64 soc_uid; @@ -115,10 +116,11 @@ static const struct imx8_soc_data imx8mq_soc_data = { }; static const struct imx8_soc_data imx8mm_soc_data = { .name = "i.MX8MM", .soc_revision = imx8mm_soc_revision, + .icc_driver = "imx8mm-interconnect", }; static const struct imx8_soc_data imx8mn_soc_data = { .name = "i.MX8MN", .soc_revision = imx8mm_soc_revision, @@ -185,10 +187,12 @@ static int __init imx8_soc_init(void) if (ret) goto free_rev; if (IS_ENABLED(CONFIG_ARM_IMX_CPUFREQ_DT)) platform_device_register_simple("imx-cpufreq-dt", -1, NULL, 0); + if (IS_ENABLED(CONFIG_INTERCONNECT_IMX)) + platform_device_register_simple(data->icc_driver, -1, NULL, 0); return 0; free_rev: if (strcmp(soc_dev_attr->revision, "unknown")) -- 2.17.1