Message ID | 1528374274-26385-1-git-send-email-geert+renesas@glider.be (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
* Geert Uytterhoeven <geert+renesas@glider.be> [180607 13:40]: > 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> > --- > Compile-tested only. Makes sense to me: Acked-by: Tony Lindgren <tony@atomide.com> Keerthy can you please test? Regards, Tony -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Friday 08 June 2018 11:56 AM, Tony Lindgren wrote: > * Geert Uytterhoeven <geert+renesas@glider.be> [180607 13:40]: >> 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> >> --- >> Compile-tested only. > > Makes sense to me: > > Acked-by: Tony Lindgren <tony@atomide.com> > > Keerthy can you please test? Tested on AM437x-gp-evm for Deep Sleep0. Tested-by: Keerthy <j-keerthy@ti.com> Reviewed-by: Keerthy <j-keerthy@ti.com> Thanks Geert! > > Regards, > > Tony > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, Jun 7, 2018 at 2:24 PM, Geert Uytterhoeven <geert+renesas@glider.be> wrote: > 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> Patch applied for v4.19. Yours, Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c index 9c3c00515aa0fe20..5de5dedb804928eb 100644 --- a/drivers/pinctrl/pinctrl-single.c +++ b/drivers/pinctrl/pinctrl-single.c @@ -1593,19 +1593,19 @@ static int pcs_save_context(struct pcs_device *pcs) switch (pcs->width) { case 64: - regsl = (u64 *)pcs->saved_vals; - for (i = 0; i < pcs->size / mux_bytes; i++) - regsl[i] = pcs->read(pcs->base + i * mux_bytes); + regsl = pcs->saved_vals; + for (i = 0; i < pcs->size; i += mux_bytes) + *regsl++ = pcs->read(pcs->base + i); break; case 32: - regsw = (u32 *)pcs->saved_vals; - for (i = 0; i < pcs->size / mux_bytes; i++) - regsw[i] = pcs->read(pcs->base + i * mux_bytes); + regsw = pcs->saved_vals; + for (i = 0; i < pcs->size; i += mux_bytes) + *regsw++ = pcs->read(pcs->base + i); break; case 16: - regshw = (u16 *)pcs->saved_vals; - for (i = 0; i < pcs->size / mux_bytes; i++) - regshw[i] = pcs->read(pcs->base + i * mux_bytes); + regshw = pcs->saved_vals; + for (i = 0; i < pcs->size; i += mux_bytes) + *regshw++ = pcs->read(pcs->base + i); break; } @@ -1623,19 +1623,19 @@ static void pcs_restore_context(struct pcs_device *pcs) switch (pcs->width) { case 64: - regsl = (u64 *)pcs->saved_vals; - for (i = 0; i < pcs->size / mux_bytes; i++) - pcs->write(regsl[i], pcs->base + i * mux_bytes); + regsl = pcs->saved_vals; + for (i = 0; i < pcs->size; i += mux_bytes) + pcs->write(*regsl++, pcs->base + i); break; case 32: - regsw = (u32 *)pcs->saved_vals; - for (i = 0; i < pcs->size / mux_bytes; i++) - pcs->write(regsw[i], pcs->base + i * mux_bytes); + regsw = pcs->saved_vals; + for (i = 0; i < pcs->size; i += mux_bytes) + pcs->write(*regsw++, pcs->base + i); break; case 16: - regshw = (u16 *)pcs->saved_vals; - for (i = 0; i < pcs->size / mux_bytes; i++) - pcs->write(regshw[i], pcs->base + i * mux_bytes); + regshw = pcs->saved_vals; + for (i = 0; i < pcs->size; i += mux_bytes) + pcs->write(*regshw++, pcs->base + i); break; } }
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> --- Compile-tested only. As the loops are now identical, the code could be made even smaller by moving the switch() inside the loop, at the expense of readability. --- drivers/pinctrl/pinctrl-single.c | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-)