On 08/07/2024 05:16, JieGan wrote: > >> >>> + >>> + drvdata->base = devm_ioremap(dev, res->start, resource_size(res)); >> >> Use proper wrapper for this two. > Replaced by: > res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > drvdata->base = devm_ioremap_resource(dev, res); Why? Use the wrapper. ... >>> + >>> +static struct platform_driver ccu_driver = { >>> + .probe = ccu_probe, >>> + .remove = ccu_remove, >>> + .driver = { >>> + .name = "coresight-ccu", >>> + .of_match_table = ccu_match, >>> + .suppress_bind_attrs = true, >> >> Why? > Sorry, I dont get the point here. You do not get the point why I am asking "why?"? Why do you need it? > We dont need automatic bind/unbind, so the suppress_bind_attrs sets to true. But I need it... > We need configure some settings before we register the device. Hm, is this expected for coresight devices? Best regards, Krzysztof