On Fri, Nov 01, 2024 at 10:06:08AM +0200, Andrei Stefanescu wrote: > +static int nxp_siul2_probe(struct platform_device *pdev) > +{ > + struct nxp_siul2_mfd *priv; > + int ret; > + > + priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); > + if (!priv) > + return -ENOMEM; > + > + priv->num_siul2 = S32G_NUM_SIUL2; > + priv->siul2 = devm_kcalloc(&pdev->dev, priv->num_siul2, > + sizeof(*priv->siul2), GFP_KERNEL); > + if (!priv->siul2) > + return -ENOMEM; > + > + platform_set_drvdata(pdev, priv); > + ret = nxp_siul2_parse_dtb(pdev); > + if (ret) > + return ret; > + > + return devm_mfd_add_devices(&pdev->dev, PLATFORM_DEVID_AUTO, > + nxp_siul2_devs, ARRAY_SIZE(nxp_siul2_devs), > + NULL, 0, NULL); > +} > + > +static const struct of_device_id nxp_siul2_dt_ids[] = { > + { .compatible = "nxp,s32g2-siul2" }, > + { .compatible = "nxp,s32g3-siul2" }, So devices are comaptible? Why doesn't your binding express it? > + { }, > +}; > +MODULE_DEVICE_TABLE(of, nxp_siul2_dt_ids); > + > +static struct platform_driver nxp_siul2_mfd_driver = { > + .driver = { > + .name = "nxp-siul2-mfd", > + .of_match_table = nxp_siul2_dt_ids, > + }, > + .probe = nxp_siul2_probe, > +}; Best regards, Krzysztof