Hi Pascal, Just a small comment below, On Wed, Jul 31, 2019 at 05:29:19PM +0200, Pascal van Leeuwen wrote: > > - /* Release engine from reset */ > - val = readl(EIP197_PE(priv) + ctrl); > - val &= ~EIP197_PE_ICE_x_CTRL_SW_RESET; > - writel(val, EIP197_PE(priv) + ctrl); > + for (pe = 0; pe < priv->config.pes; pe++) { > + base = EIP197_PE_ICE_SCRATCH_RAM(pe); > + pollcnt = EIP197_FW_START_POLLCNT; > + while (pollcnt && > + (readl_relaxed(EIP197_PE(priv) + base + > + pollofs) != 1)) { > + pollcnt--; You might want to use readl_relaxed_poll_timeout() here, instead of a busy polling. Thanks, Antoine -- Antoine Ténart, Bootlin Embedded Linux and Kernel engineering https://bootlin.com