10 Feb, 2014
1 commit
-
Before we had the PWM framework we used to have a barebone PWM api. The
HAVE_PWM Kconfig symbol used to be selected by the PWM drivers to specify
the PWM API is present in the kernel. Since the last legacy driver is gone
the HAVE_PWM symbol can go aswell.Signed-off-by: Sascha Hauer
Cc: Dmitry Torokhov
Cc: Eric Miao
Cc: Haojian Zhuang
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Cc: Thierry Reding
Cc: linux-pwm@vger.kernel.orig
Cc: Russell King
Cc: Ralf Baechle
Signed-off-by: Thierry Reding
21 Jun, 2013
1 commit
-
Add a simple sysfs interface to the generic PWM framework.
/sys/class/pwm/
`-- pwmchipN/ for each PWM chip
|-- export (w/o) ask the kernel to export a PWM channel
|-- npwm (r/o) number of PWM channels in this PWM chip
|-- pwmX/ for each exported PWM channel
| |-- duty_cycle (r/w) duty cycle (in nanoseconds)
| |-- enable (r/w) enable/disable PWM
| |-- period (r/w) period (in nanoseconds)
| `-- polarity (r/w) polarity of PWM (normal/inversed)
`-- unexport (w/o) return a PWM channel to the kernelBased on work by Lars Poeschel.
Signed-off-by: H Hartley Sweeten
Cc: Thierry Reding
Cc: Lars Poeschel
Cc: Ryan Mallon
Cc: Rob Landley
Signed-off-by: Thierry Reding
27 Feb, 2013
1 commit
-
Pull PWM changes from Thierry Reding:
"A new driver has been added to support the PWM mode of the timer
counter blocks found on Atmel AT91 SoCs. The VT8500 driver now
supports changing the PWM signal polarity and the TI drivers (EHRPWM
and ECAP) gained suspend and resume functionality.User drivers can now query the core for whether access to a PWM device
will sleep (if the PWM chip is on a slow bus such as I2C or SPI).The pwm-backlight driver now handles the backlight BL_CORE_FBBLANK
state in addition to the FB layer's blanking states.To round things off, a few fixes and cleanups are also included"
* tag 'for-3.9-rc1' of git://gitorious.org/linux-pwm/linux-pwm:
pwm: twl: Use to_twl() instead of container_of()
pwm: tegra: assume CONFIG_OF
pwm_backlight: Validate dft_brightness in main probe function
pwm: Export pwm_{set,get}_chip_data()
pwm: Make Kconfig entries more consistent
pwm: Add can_sleep property to drivers
pwm: Add pwm_can_sleep() as exported API to users
pwm-backlight: handle BL_CORE_FBBLANK state
pwm: pwm-tiecap: Low power sleep support
pwm: pwm-tiehrpwm: Low power sleep support
pwm: pwm-tiehrpwm: Update the clock handling of pwm-tiehrpwm driver
pwm: vt8500: Add polarity support
pwm: vt8500: Register write busy test performed incorrectly
pwm: atmel: add Timer Counter Block PWM driver
02 Feb, 2013
3 commits
-
When booted with DT users can use devm version of of_pwm_get() to benefit
from automatic resource release.Signed-off-by: Peter Ujfalusi
Acked-by: Thierry Reding
Signed-off-by: Bryan Wu -
Allow client driver to use of_pwm_get() to get the PWM they need. This
is needed for drivers which handle more than one PWM separately, like
leds-pwm driver, which have:pwmleds {
compatible = "pwm-leds";
kpad {
label = "omap4::keypad";
pwms = ;
max-brightness = ;
};charging {
label = "omap4:green:chrg";
pwms = ;
max-brightness = ;
};
};in the dts files.
Signed-off-by: Peter Ujfalusi
Acked-by: Thierry Reding
Signed-off-by: Bryan Wu -
To synchronize the header file definition and the actual code. In the code
the consumer parameter is named as con_id, change the header file and replace
consumer -> con_id in the parameter list.Signed-off-by: Peter Ujfalusi
Ackedy-by: Thierry Reding
Signed-off-by: Bryan Wu
30 Jan, 2013
1 commit
-
Calls to some external PWM chips can sleep. To help users,
add pwm_can_sleep() API.Cc: Thierry Reding
Cc: Peter Ujfalusi
Signed-off-by: Florian Vaussard
Reviewed-by: Peter Ujfalusi
Signed-off-by: Thierry Reding
23 Nov, 2012
1 commit
-
Add support for encoding PWM properties in bit encoded form with
of_pwm_xlate_with_flags() function support. Platforms require platform
specific PWM properties has to populate in 3rd cell of the pwm-specifier
and PWM driver should also set .of_xlate support with this function.
Currently PWM property polarity encoded in bit position 0 of the third
cell in pwm-specifier.Signed-off-by: Philip, Avinash
Acked-by: Grant Likely
Signed-off-by: Thierry Reding
20 Sep, 2012
1 commit
-
Add dummy implemention of public symbols for compilation-safe inclusion
of include/linux/pwm.h file when CONFIG_PWM is not defined.Reported-by: Sachin Kamat
Signed-off-by: Tushar Behera
Signed-off-by: Thierry Reding
10 Sep, 2012
2 commits
-
Add resource managed variants of pwm_get() and pwm_put() for
convenience. Code is largely inspired by the equivalent devm functions
of the regulator framework.Signed-off-by: Alexandre Courbot
Signed-off-by: Thierry Reding -
Some hardware supports inverting the polarity of the PWM signal. This
commit adds support to the PWM framework to allow users of the PWM API
to configure the polarity. Note that in order to reduce complexity,
changing the polarity of a PWM signal is only allowed while the PWM is
disabled.A practical example where this can prove useful is to simulate inversion
of the duty cycle. While inversion of polarity and duty cycle are not
exactly the same, the differences for most use-cases are negligible.Signed-off-by: Philip, Avinash
Signed-off-by: Thierry Reding
15 Jun, 2012
5 commits
-
This patch adds helpers to support device tree bindings for the generic
PWM API. Device tree binding documentation for PWM controllers is also
provided.Acked-by: Arnd Bergmann
Reviewed-by: Shawn Guo
Signed-off-by: Thierry Reding -
In order to get rid of the global namespace for PWM devices, this commit
provides an alternative method, similar to that of the regulator or
clock frameworks, for registering a static mapping for PWM devices. This
works by providing a table with a provider/consumer map in the board
setup code.With the new pwm_get() and pwm_put() functions available, usage of
pwm_request() and pwm_free() becomes deprecated.Reviewed-by: Shawn Guo
Reviewed-by: Mark Brown
Signed-off-by: Thierry Reding -
This commit adds a debugfs interface that can be used to list the
current internal state of the PWM devices registered with the PWM
framework.Reviewed-by: Mark Brown
Reviewed-by: Shawn Guo
Signed-off-by: Thierry Reding -
Many PWM controllers provide access to more than a single PWM output and
may even share some resource among them. Allowing a PWM chip to provide
multiple PWM devices enables better sharing of those resources. As a
side-effect this change allows easy integration with the device tree
where a given PWM can be looked up based on the PWM chip's phandle and a
corresponding index.This commit modifies the PWM core to support multiple PWMs per struct
pwm_chip. It achieves this in a similar way to how gpiolib works, by
allowing PWM ranges to be requested dynamically (pwm_chip.base == -1) or
starting at a given offset (pwm_chip.base >= 0). A chip specifies how
many PWMs it controls using the npwm member. Each of the functions in
the pwm_ops structure gets an additional argument that specified the PWM
number (it can be converted to a per-chip index by subtracting the
chip's base).The total maximum number of PWM devices is currently fixed to 1024 while
the data is actually stored in a radix tree, thus saving resources if
not all of them are used.Reviewed-by: Mark Brown
Reviewed-by: Shawn Guo
[eric@eukrea.com: fix error handling in pwmchip_add]
Signed-off-by: Eric Bénard
Signed-off-by: Thierry Reding -
This patch adds framework support for PWM (pulse width modulation) devices.
The is a barebone PWM API already in the kernel under include/linux/pwm.h,
but it does not allow for multiple drivers as each of them implements the
pwm_*() functions.There are other PWM framework patches around from Bill Gatliff. Unlike
his framework this one does not change the existing API for PWMs so that
this framework can act as a drop in replacement for the existing API.Why another framework?
Several people argue that there should not be another framework for PWMs
but they should be integrated into one of the existing frameworks like led
or hwmon. Unlike these frameworks the PWM framework is agnostic to the
purpose of the PWM. In fact, a PWM can drive a LED, but this makes the
LED framework a user of a PWM, like already done in leds-pwm.c. The gpio
framework also is not suitable for PWMs. Every gpio could be turned into
a PWM using timer based toggling, but on the other hand not every PWM hardware
device can be turned into a gpio due to the lack of hardware capabilities.This patch does not try to improve the PWM API yet, this could be done in
subsequent patches.Signed-off-by: Sascha Hauer
Acked-by: Kurt Van Dijck
Reviewed-by: Arnd Bergmann
Reviewed-by: Matthias Kaehlcke
Reviewed-by: Mark Brown
Reviewed-by: Shawn Guo
[thierry.reding@avionic-design.de: fixup typos, kerneldoc comments]
Signed-off-by: Thierry Reding
30 Mar, 2009
1 commit
-
Signed-off-by: Mark Vels
Signed-off-by: Jiri Kosina
19 May, 2008
1 commit
-
Signed-off-by: Russell King