Commit 1064c6ba authored by Martin Blumenstingl's avatar Martin Blumenstingl Committed by Thierry Reding

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: default avatarNeil Armstrong <narmstrong@baylibre.com>
Signed-off-by: default avatarMartin Blumenstingl <martin.blumenstingl@googlemail.com>
Signed-off-by: default avatarThierry Reding <thierry.reding@gmail.com>
parent 8bbf3164
...@@ -98,12 +98,16 @@ static inline struct meson_pwm *to_meson_pwm(struct pwm_chip *chip) ...@@ -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) 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; struct device *dev = chip->dev;
int err; int err;
if (!channel) channel = pwm_get_chip_data(pwm);
return -ENODEV; if (channel)
return 0;
channel = &meson->channels[pwm->hwpwm];
if (channel->clk_parent) { if (channel->clk_parent) {
err = clk_set_parent(channel->clk, 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) ...@@ -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); 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) 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) ...@@ -469,14 +473,6 @@ static int meson_pwm_init_channels(struct meson_pwm *meson)
return 0; 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) static int meson_pwm_probe(struct platform_device *pdev)
{ {
struct meson_pwm *meson; struct meson_pwm *meson;
...@@ -512,8 +508,6 @@ static int meson_pwm_probe(struct platform_device *pdev) ...@@ -512,8 +508,6 @@ static int meson_pwm_probe(struct platform_device *pdev)
return err; return err;
} }
meson_pwm_add_channels(meson);
platform_set_drvdata(pdev, meson); platform_set_drvdata(pdev, meson);
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment