Hi Boris,
Boris Brezillon [off-list ref] wrote on Sun, 10 May
2020 09:02:30 +0200:
On Fri, 8 May 2020 19:13:38 +0200
Miquel Raynal [off-list ref] wrote:
quoted
+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;
This is not possible, we need unaligned accesses for NAND detection.
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;
The rest looks fine, I will change it and also add these checks in
->exec_op() check_nonly path.