diff options
author | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2021-11-10 09:49:50 +0100 |
---|---|---|
committer | Thierry Reding <thierry.reding@gmail.com> | 2022-02-02 17:04:37 +0100 |
commit | 9136a39e6cf69e49803ac6123a4ac4431bc915a2 (patch) | |
tree | 0ce7dbb1de381a78466399cbefa956b97eb628fd /drivers/staging | |
parent | 20d9de9c4d6642bb40c935233697723b56573cbc (diff) | |
download | linux-9136a39e6cf69e49803ac6123a4ac4431bc915a2.tar.bz2 |
pwm: lpc18xx-sct: Simplify driver by not using pwm_[gs]et_chip_data()
The per-channel data is available directly in the driver data struct. So
use it without making use of pwm_[gs]et_chip_data().
The relevant change introduced by this patch to lpc18xx_pwm_disable() at
the assembler level (for an arm lpc18xx_defconfig build) is:
push {r3, r4, r5, lr}
mov r4, r0
mov r0, r1
mov r5, r1
bl 0 <pwm_get_chip_data>
ldr r3, [r0, #0]
changes to
ldr r3, [r1, #8]
push {r4, lr}
add.w r3, r0, r3, lsl #2
ldr r3, [r3, #92] ; 0x5c
So this reduces stack usage, has an improved runtime behavior because of
better pipeline usage, doesn't branch to an external function and the
generated code is a bit smaller occupying less memory.
The codesize of lpc18xx_pwm_probe() is reduced by 32 bytes.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
Diffstat (limited to 'drivers/staging')
0 files changed, 0 insertions, 0 deletions