mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-01 10:42:11 +00:00
pwm: Reduce number of pointer dereferences in pwm_device_request()
pwm->chip and pwm->chip->ops are used several times in this function. Introduce local variables for these. There is no semantical change, but with ARCH=arm, allmodconfig and gcc-13 bloat-o-meter reports a slight improvement: add/remove: 1/1 grow/shrink: 1/1 up/down: 8/-36 (-28) Function old new delta pwm_apply_state 476 480 +4 __initcall__kmod_core__307_1092_pwm_debugfs_init4 - 4 +4 __initcall__kmod_core__307_1090_pwm_debugfs_init4 4 - -4 pwm_request_from_chip 628 596 -32 Total: Before=15091, After=15063, chg -0.19% Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
This commit is contained in:
parent
d243221dc9
commit
efb704abed
@ -59,22 +59,24 @@ static struct pwm_chip *pwmchip_find_by_name(const char *name)
|
||||
static int pwm_device_request(struct pwm_device *pwm, const char *label)
|
||||
{
|
||||
int err;
|
||||
struct pwm_chip *chip = pwm->chip;
|
||||
const struct pwm_ops *ops = chip->ops;
|
||||
|
||||
if (test_bit(PWMF_REQUESTED, &pwm->flags))
|
||||
return -EBUSY;
|
||||
|
||||
if (!try_module_get(pwm->chip->owner))
|
||||
if (!try_module_get(chip->owner))
|
||||
return -ENODEV;
|
||||
|
||||
if (pwm->chip->ops->request) {
|
||||
err = pwm->chip->ops->request(pwm->chip, pwm);
|
||||
if (ops->request) {
|
||||
err = ops->request(chip, pwm);
|
||||
if (err) {
|
||||
module_put(pwm->chip->owner);
|
||||
module_put(chip->owner);
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
||||
if (pwm->chip->ops->get_state) {
|
||||
if (ops->get_state) {
|
||||
/*
|
||||
* Zero-initialize state because most drivers are unaware of
|
||||
* .usage_power. The other members of state are supposed to be
|
||||
@ -84,7 +86,7 @@ static int pwm_device_request(struct pwm_device *pwm, const char *label)
|
||||
*/
|
||||
struct pwm_state state = { 0, };
|
||||
|
||||
err = pwm->chip->ops->get_state(pwm->chip, pwm, &state);
|
||||
err = ops->get_state(chip, pwm, &state);
|
||||
trace_pwm_get(pwm, &state, err);
|
||||
|
||||
if (!err)
|
||||
|
Loading…
Reference in New Issue
Block a user