On 09/01/2023 21:23, Hawkins, Nick wrote: >>> + GFP_KERNEL); >>> + if (!drvdata) >>> + return -ENOMEM; >>> + >>> + platform_set_drvdata(pdev, drvdata); >>> + drvdata->dev = &pdev->dev; >>> + init_completion(&drvdata->completion); >>> + >>> + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); >>> + drvdata->base = devm_ioremap_resource(&pdev->dev, res); > >> It's one call, not two. Use the respective helper. > > Greetings Krzysztof, > > Thank you for the feedback. I am in the process of applying your recommended > changes but do have a question on this comment. > > I can replace these two lines with: > drvdata->base = devm_platform_ioremap_resource(pdev, 0); > > However, I still have a need for the resource "res" here to determine the physical > address of the device here: > >>> + if (IS_ERR(drvdata->base)) >>> + return PTR_ERR(drvdata->base); >>> + >>> + drvdata->engine = (res->start & 0xf00) >> 8; >>> + pr_info("%s: i2c engine%d\n", __func__, drvdata->engine); Entire pr_info must be gone, so you do not need res anymore. You should not print any addresses. Unless drvdata->engine is used further? In such case you have function just few lines above the one you mentioned, don't you? > > Hence at some point I believe I will still need to call the "platform_get_resource" > function to accomplish this. Is this acceptable or perhaps you have another > suggestion? > > One alternative I thought of was including a property in the device tree node > That specifies which i2c engine this is: hpe,gxp-engine = <1>. Best regards, Krzysztof