pinctrl: pinctrl-single: Avoid divisions in context save/restore
The divisions (and multiplications) can be avoided by changing the loops to use increments of mux_bytes instead of 1. While at it, remove the unneeded casts when assigning void pointers. This saves +100 bytes of kernel size on arm32/arm64. Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Acked-by: Tony Lindgren <tony@atomide.com> Tested-by: Keerthy <j-keerthy@ti.com> Reviewed-by: Keerthy <j-keerthy@ti.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
7547b5969e
commit
7d71b5f4b2
|
@ -1595,19 +1595,19 @@ static int pcs_save_context(struct pcs_device *pcs)
|
||||||
|
|
||||||
switch (pcs->width) {
|
switch (pcs->width) {
|
||||||
case 64:
|
case 64:
|
||||||
regsl = (u64 *)pcs->saved_vals;
|
regsl = pcs->saved_vals;
|
||||||
for (i = 0; i < pcs->size / mux_bytes; i++)
|
for (i = 0; i < pcs->size; i += mux_bytes)
|
||||||
regsl[i] = pcs->read(pcs->base + i * mux_bytes);
|
*regsl++ = pcs->read(pcs->base + i);
|
||||||
break;
|
break;
|
||||||
case 32:
|
case 32:
|
||||||
regsw = (u32 *)pcs->saved_vals;
|
regsw = pcs->saved_vals;
|
||||||
for (i = 0; i < pcs->size / mux_bytes; i++)
|
for (i = 0; i < pcs->size; i += mux_bytes)
|
||||||
regsw[i] = pcs->read(pcs->base + i * mux_bytes);
|
*regsw++ = pcs->read(pcs->base + i);
|
||||||
break;
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
regshw = (u16 *)pcs->saved_vals;
|
regshw = pcs->saved_vals;
|
||||||
for (i = 0; i < pcs->size / mux_bytes; i++)
|
for (i = 0; i < pcs->size; i += mux_bytes)
|
||||||
regshw[i] = pcs->read(pcs->base + i * mux_bytes);
|
*regshw++ = pcs->read(pcs->base + i);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1625,19 +1625,19 @@ static void pcs_restore_context(struct pcs_device *pcs)
|
||||||
|
|
||||||
switch (pcs->width) {
|
switch (pcs->width) {
|
||||||
case 64:
|
case 64:
|
||||||
regsl = (u64 *)pcs->saved_vals;
|
regsl = pcs->saved_vals;
|
||||||
for (i = 0; i < pcs->size / mux_bytes; i++)
|
for (i = 0; i < pcs->size; i += mux_bytes)
|
||||||
pcs->write(regsl[i], pcs->base + i * mux_bytes);
|
pcs->write(*regsl++, pcs->base + i);
|
||||||
break;
|
break;
|
||||||
case 32:
|
case 32:
|
||||||
regsw = (u32 *)pcs->saved_vals;
|
regsw = pcs->saved_vals;
|
||||||
for (i = 0; i < pcs->size / mux_bytes; i++)
|
for (i = 0; i < pcs->size; i += mux_bytes)
|
||||||
pcs->write(regsw[i], pcs->base + i * mux_bytes);
|
pcs->write(*regsw++, pcs->base + i);
|
||||||
break;
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
regshw = (u16 *)pcs->saved_vals;
|
regshw = pcs->saved_vals;
|
||||||
for (i = 0; i < pcs->size / mux_bytes; i++)
|
for (i = 0; i < pcs->size; i += mux_bytes)
|
||||||
pcs->write(regshw[i], pcs->base + i * mux_bytes);
|
pcs->write(*regshw++, pcs->base + i);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue