@@ -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"))
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@nxp.com> --- drivers/soc/imx/soc-imx8.c | 4 ++++ 1 file changed, 4 insertions(+)