pwm: tegra: Support dynamic clock frequency configuration
authorSandipan Patra <spatra@nvidia.com>
Mon, 1 Jun 2020 05:20:36 +0000 (10:50 +0530)
committerThierry Reding <thierry.reding@gmail.com>
Tue, 2 Jun 2020 12:25:37 +0000 (14:25 +0200)
commit1d7796bdb63a63c9cc8087ffc6daeb36a7c005e1
treebfff18999abd8809b98742d02b601e63b736f535
parent74db728c0b4c7c0781d439afa6ebc43c76a1f952
pwm: tegra: Support dynamic clock frequency configuration

Added support for dynamic clock freq configuration in PWM kernel driver.
Earlier the PWM driver used to cache boot time clock rate by PWM clock
parent during probe. Hence dynamically changing PWM frequency was not
possible for all the possible ranges. With this change, dynamic
calculation is enabled and it is able to set the requested period from
sysfs knob provided the value is supported by clock source.

Changes mainly have 2 parts:
  - Tegra186 and later chips [1]
  - Tegra210 and prior chips [2]

For [1] - Changes implemented to set pwm period dynamically and also
          checks added to allow only if requested period(ns) is below or
          equals to higher range.

For [2] - Only checks if the requested period(ns) is below or equals to
          higher range defined by max clock limit. The limitation in
          Tegra210 or prior chips are due to the reason of having only
          one PWM controller supporting multiple channels. But later
          chips have multiple PWM controller instances each having
          single channel support.

Signed-off-by: Sandipan Patra <spatra@nvidia.com>
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
drivers/pwm/pwm-tegra.c