On Fri, 8 May 2020 19:13:38 +0200 Miquel Raynal <miquel.raynal@xxxxxxxxxxx> wrote: > +static int anfc_len_to_steps(struct nand_chip *chip, unsigned int len) > +{ > + unsigned int steps = 1, pktsize = len; > + > + while (pktsize > ANFC_MAX_PKT_SIZE) { > + steps *= 2; > + pktsize = DIV_ROUND_UP(len, steps); > + } Same here, you shouldn't have a round_up() but instead complain if "len != pkt_size * steps" if (len % 4) return -ENOTSUPP; if (len < ANFC_MAX_PKT_SIZE) return len; for (steps = 2; steps < ANFC_MAX_STEPS; steps *= 2) { pkt_size = len / steps; if (pkt_size <= ANFC_MAX_PKT_SIZE) break; } if (pkt_size * steps != len) return -ENOTSUPP; return pkt_size; > + > + if (steps > ANFC_MAX_STEPS) > + return -ENOTSUPP; > + > + return steps; > +}