Hi Mathieu, thanks for taking the time to look into this! (I will address any of your comments that I am not mentioning in this email anymore. Thanks a lot for the suggestions!) On Wed, Jul 28, 2021 at 7:58 PM Mathieu Poirier <mathieu.poirier@xxxxxxxxxx> wrote: [...] > > + writel(FIELD_PREP(AO_REMAP_REG0_REMAP_AHB_SRAM_BITS_17_14_FOR_ARM_CPU, > > + priv->sram_pa >> 14), > Indentation problem The idea here is to align priv->sram_pa with AO_REMAP_REG0... which are both arguments to FIELD_PREP Maybe using something like this will make that easier to read: tmp = FIELD_PREP(AO_REMAP_REG0_REMAP_AHB_SRAM_BITS_17_14_FOR_ARM_CPU, priv->sram_pa >> 14); writel(tmp, priv->remap_base + AO_REMAP_REG0); What do you think: leave it as is or use a separate variable? [...] > > + usleep_range(10, 100); > > I've seen this kind of mysterious timeouts in other patchset based vendor trees. > You likely don't know why it is needed so I won't ask. unfortunately this is also the case here [...] > > + priv->arc_reset = devm_reset_control_get_exclusive(dev, NULL); > > + if (IS_ERR(priv->arc_reset)) { > > Function __reset_control_get() in __devm_reset_control_get() can return NULL so > this should be IS_ERR_OR_NULL(). The logic in there is: return optional ? NULL : ERR_PTR(-...); I am requesting a mandatory reset line here, so reset core will never return NULL See also [0] For this reason I am not planning to change this [...] > This driver is squeaky clean. With the above: > > Reviewed-by: Mathieu Poirier <mathieu.poirier@xxxxxxxxxx> awesome, thank you! Best regards, Martin [0] https://elixir.bootlin.com/linux/v5.14-rc4/source/include/linux/reset.h#L227