1
0
Fork 0

pwm: meson: Move pwm_set_chip_data() to meson_pwm_request()

All existing PWM drivers (except pwm-meson and two other ones) call
pwm_set_chip_data() from their pwm_ops.request() callback. Now that we
can access the struct meson_pwm_channel from struct meson_pwm we can do
the same.

Move the call to pwm_set_chip_data() to meson_pwm_request() and drop the
custom meson_pwm_add_channels(). This makes the implementation
consistent with other drivers and makes it slightly more obvious
thatpwm_get_chip_data() cannot be used from pwm_ops.get_state() (because
that's called by the PWM core before pwm_ops.request()).

No functional changes intended.

Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
alistair/sunxi64-5.4-dsi
Martin Blumenstingl 2019-06-12 21:59:06 +02:00 committed by Thierry Reding
parent 8bbf316453
commit 1064c6bace
1 changed files with 8 additions and 14 deletions

View File

@ -98,12 +98,16 @@ static inline struct meson_pwm *to_meson_pwm(struct pwm_chip *chip)
static int meson_pwm_request(struct pwm_chip *chip, struct pwm_device *pwm)
{
struct meson_pwm_channel *channel = pwm_get_chip_data(pwm);
struct meson_pwm *meson = to_meson_pwm(chip);
struct meson_pwm_channel *channel;
struct device *dev = chip->dev;
int err;
if (!channel)
return -ENODEV;
channel = pwm_get_chip_data(pwm);
if (channel)
return 0;
channel = &meson->channels[pwm->hwpwm];
if (channel->clk_parent) {
err = clk_set_parent(channel->clk, channel->clk_parent);
@ -124,7 +128,7 @@ static int meson_pwm_request(struct pwm_chip *chip, struct pwm_device *pwm)
chip->ops->get_state(chip, pwm, &channel->state);
return 0;
return pwm_set_chip_data(pwm, channel);
}
static void meson_pwm_free(struct pwm_chip *chip, struct pwm_device *pwm)
@ -469,14 +473,6 @@ static int meson_pwm_init_channels(struct meson_pwm *meson)
return 0;
}
static void meson_pwm_add_channels(struct meson_pwm *meson)
{
unsigned int i;
for (i = 0; i < meson->chip.npwm; i++)
pwm_set_chip_data(&meson->chip.pwms[i], &meson->channels[i]);
}
static int meson_pwm_probe(struct platform_device *pdev)
{
struct meson_pwm *meson;
@ -512,8 +508,6 @@ static int meson_pwm_probe(struct platform_device *pdev)
return err;
}
meson_pwm_add_channels(meson);
platform_set_drvdata(pdev, meson);
return 0;