On 16.05.2019 06:24, Anson Huang wrote: > Add i.MX SCU SoC info driver to support i.MX8QXP SoC, introduce > driver dependency into Kconfig as CONFIG_IMX_SCU must be > selected to support i.MX SCU SoC driver, also need to use > platform driver model to make sure IMX_SCU driver is probed > before i.MX SCU SoC driver.
> +#define imx_scu_revision(soc_rev) \ > + soc_rev ? \ > + kasprintf(GFP_KERNEL, "%d.%d", (soc_rev >> 4) & 0xf, soc_rev & 0xf) : \ > + "unknown" > + id = of_match_node(imx_scu_soc_match, pdev->dev.of_node); > + data = id->data; > + if (data) { > + soc_dev_attr->soc_id = data->name; > + if (data->soc_revision) > + soc_rev = data->soc_revision(); > + } > + > + soc_dev_attr->revision = imx_scu_revision(soc_rev); > + if (!soc_dev_attr->revision) > + return -ENODEV; The imx_scu_revision macro returns either kasprintf or "unknown", never NULL. So it's not clear what this return -ENODEV does exactly. It makes more sense to return -ENODEV if get_soc_revision fails, so maybe check "soc_rev != 0" instead? If you really want to check the kasprintf result then you should return -ENOMEM for it. It would be clearer if you dropped the imx_scu_revision revision macro and open-coded instead. -- Regards, Leonard