summaryrefslogtreecommitdiffstats
path: root/drivers/pwm
Commit message (Collapse)AuthorAgeFilesLines
* pwm: pwm-tiehrpwm: Fix conflicting channel period settingPhilip, Avinash2012-09-101-0/+29
| | | | | | | | | | | | | | | | | EHRPWM hardware supports 2 independent PWM channels. However the device uses only one register to handle period setting for both channels. So both channels should be configured for same period (in nsec). Fix the same by returning error for conflicting period values. However, allow 1. Configuration of period settings if not conflicting with other channels 2. Re-configuring of period settings if no other channels being configured Signed-off-by: Philip, Avinash <avinashphilip@ti.com> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: pwm-tiecap: Disable APWM mode after configurePhilip, Avinash2012-09-101-0/+7
| | | | | | | | | | | | APWM mode is enabled while configuring PWM device. This was done to handle shadow & immediate mode update of period and compare registers. However, leaving it enabled after configuring will cause APWM output on PWM pin even before enabling PWM device. Fix the same by disabling APWM mode after configuring if PWM device is not running. Signed-off-by: Philip, Avinash <avinashphilip@ti.com> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: Improve Kconfig help textThierry Reding2012-08-201-6/+25
| | | | | | | | | | The Kconfig help text should help the user understand what functionality is provided by an option. This is especially true for new subsystems. An improved help text is provided by this commit in the hopes of clarifying the usefulness of the PWM framework. Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de> Acked-by: Borislav Petkov <bp@alien8.de>
* pwm: core: Fix coding style issuesSachin Kamat2012-08-171-4/+4
| | | | | | | | | | Fixes the following: WARNING: line over 80 characters ERROR: spaces required around that ':' (ctx:VxW) WARNING: Prefer pr_warn(... to pr_warning(... Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: vt8500: Fix coding style issueSachin Kamat2012-08-171-1/+1
| | | | | | | | | Fixes the following: WARNING: Prefer pr_warn(... to pr_warning(... pr_warning("Waiting for status bits 0x%x to clear timed out\n", Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: Remove a redundant error message when devm_request_and_ioremap failsAxel Lin2012-08-173-9/+3
| | | | | | | | | | The implementation in devm_request_and_ioremap() already shows error message, so no need to show dev_err again if devm_request_and_ioremap() fails. Signed-off-by: Axel Lin <axel.lin@gmail.com> Cc: Stephen Warren <swarren@wwwdotorg.org> Cc: Philip, Avinash <avinashphilip@ti.com> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: samsung: add missing device pointer to struct pwm_chipJingoo Han2012-08-171-0/+1
| | | | | | | | This patch adds missing device pointer to struct pwm_chip. If the device pointer is NULL, pwmchip_add() will return error. Signed-off-by: Jingoo Han <jg1.han@samsung.com> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: Add missing static storage class specifiers in core.c fileSachin Kamat2012-08-171-2/+2
| | | | | | | | | | | Fixes the following sparse warnings: drivers/pwm/core.c:152:6: warning: symbol 'of_pwmchip_add' was not declared. Should it be static? drivers/pwm/core.c:165:6: warning: symbol 'of_pwmchip_remove' was not declared. Should it be static? Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: pwm-tiehrpwm: PWM driver support for EHRPWMPhilip, Avinash2012-07-263-0/+422
| | | | | | | | | | | Enhanced high resolution PWM module (EHRPWM) hardware can be used to generate PWM output over 2 channels. This commit adds PWM driver support for EHRPWM device present on AM33XX SOC. Current implementation supports simple PWM functionality. Reviewed-by: Vaibhav Bedia <vaibhav.bedia@ti.com> Signed-off-by: Philip, Avinash <avinashphilip@ti.com> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: pwm-tiecap: PWM driver support for ECAP APWMPhilip, Avinash2012-07-263-0/+243
| | | | | | | | | | | | | | ECAP hardware on AM33XX SOC supports auxiliary PWM (APWM) feature. This commit adds PWM driver support for ECAP hardware on AM33XX SOC. In the ECAP hardware, each PWM pin can also be configured to be in capture mode. Current implementation only supports PWM mode of operation. Also, hardware supports sync between multiple PWM pins but the driver supports simple independent PWM functionality. Reviewed-by: Vaibhav Bedia <vaibhav.bedia@ti.com> Signed-off-by: Philip, Avinash <avinashphilip@ti.com> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: fix used-uninitialized warning in pwm_get()Thierry Reding2012-07-231-1/+1
| | | | | | | | | | | Some versions of GCC don't seem no notice that the initialization of the index variable is tied to that of the chip variable and falsely report it as potentially being used uninitialized. However, to save anybody else from tripping over this, we now initialize the index variable unconditionally. Originally-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: add lpc32xx PWM supportAlexandre Pereira da Silva2012-07-233-0/+159
| | | | | | | | Add lpc32xx SOC PWM driver. Signed-off-by: Alexandre Pereira da Silva <aletes.xgr@gmail.com> Acked-by: Roland Stigge <stigge@antcom.de> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: Use pr_* functions in pwm-samsung.c fileSachin Kamat2012-07-231-2/+4
| | | | | | | Replace printk with pr_* functions to avoid checkpatch warnings. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: Convert pwm-samsung to use devm_* APIsAxel Lin2012-07-231-18/+6
| | | | | Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: Convert pwm-tegra to use devm_clk_get()Axel Lin2012-07-231-6/+2
| | | | | | | | Also return proper error in tegra_pwm_remove() if pwmchip_remove() fails. Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: pwm-mxs: Return proper error if pwmchip_remove() failsAxel Lin2012-07-231-3/+1
| | | | | | Signed-off-by: Axel Lin <axel.lin@gmail.com> Acked-by: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: pwm-bfin: Return proper error if pwmchip_remove() failsAxel Lin2012-07-231-3/+1
| | | | | Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: pxa: Propagate pwmchip_remove() errorThierry Reding2012-07-231-2/+1
| | | | | | | | If the pwmchip_remove() call fails, propagate the error to the driver's remove callback. This is required to prevent the module from being unloaded if a PWM provided by the driver is still in use. Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: Convert pwm-pxa to use devm_* APIsAxel Lin2012-07-231-39/+10
| | | | | Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: Convert pwm-vt8500 to use devm_* APIsAxel Lin2012-07-231-39/+8
| | | | | Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: Convert pwm-imx to use devm_* APIsAxel Lin2012-07-231-47/+10
| | | | | Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: Conflict with legacy PWM APIThierry Reding2012-07-231-0/+1
| | | | | | | | | | | | | | In order to avoid duplicate symbols with legacy PWM API implementations, the new PWM framework needs to conflict with any of the existing legacy implementations. This is done in two ways: for implementations provided by drivers, a conflict is added to the driver to ensure it will have to be ported to the PWM subsystem before it can coexist with other PWM providers. For architecture-specific code, the conflict is added to the PWM symbol to avoid confusion when a previously picked platform or machine can no longer be selected because of the PWM subsystem being included. Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: pwm-mxs: add pinctrl supportShawn Guo2012-07-231-0/+6
| | | | | | | Call pinctrl subsystem to set up pwm pin. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: pwm-mxs: use devm_* managed functionsShawn Guo2012-07-231-16/+8
| | | | | | | Use devm_* managed functions to have a clean fail-out. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: pwm-mxs: use global reset function stmp_reset_blockShawn Guo2012-07-232-2/+3
| | | | | | | | Use global reset function stmp_reset_block instead of mxs_reset_block to remove <mach/common.h> inclusion. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: pwm-mxs: encode soc name in compatible stringShawn Guo2012-07-231-1/+1
| | | | | | | | | Encode soc name in the compatible string to know the specific version hardware block. This is the general approach adopted for most bindings. Change mxs-pwm binding to use the approach. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: add pwm-mxs supportShawn Guo2012-07-023-0/+217
| | | | | | | | Add generic PWM framework driver (DT only) for Freescale MXS. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* ARM vt8500: Move vt8500 pwm driver to pwm frameworkSascha Hauer2012-07-023-0/+218
| | | | | | | | Move the driver to drivers/pwm/ and convert it to use the framework. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Cc: Alexey Charkov <alchark@gmail.com> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* ARM Samsung: Move s3c pwm driver to pwm frameworkSascha Hauer2012-07-023-0/+376
| | | | | | | | | | | Move the driver to drivers/pwm/ and convert it to use the framework. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Cc: Ben Dooks <ben-linux@fluff.org> Cc: Kukjin Kim <kgene.kim@samsung.com> [eric@eukrea.com: fix pwmchip_add return code test] Signed-off-by: Eric Bénard <eric@eukrea.com> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* ARM i.MX: Move i.MX pwm driver to pwm frameworkSascha Hauer2012-07-023-0/+277
| | | | | | | | | | Move the driver to drivers/pwm/ and convert it to use the framework. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> [eric@eukrea.com: set chip.dev to prevent probe failure] [eric@eukrea.com: fix pwmchip_add return code test] Signed-off-by: Eric Bénard <eric@eukrea.com> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: Move PXA PWM driver to PWM frameworkThierry Reding2012-07-023-0/+258
| | | | | | | This commit moves the PXA PWM driver to the drivers/pwm subdirectory and converts it to use the new PWM framework. Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: Move Blackfin PWM driver to PWM frameworkThierry Reding2012-07-023-0/+174
| | | | | | | This commit moves the Blackfin PWM driver to the drivers/pwm sub- directory and converts it to register with the new PWM framework. Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: tegra: Add device tree supportThierry Reding2012-07-021-0/+11
| | | | | | | | | Add auxdata to instantiate the PWFM controller from a device tree, include the corresponding nodes in the dtsi files for Tegra 20 and Tegra 30 and add binding documentation. Acked-by: Stephen Warren <swarren@wwwdotorg.org> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: Add NVIDIA Tegra SoC supportThierry Reding2012-07-023-0/+265
| | | | | | | | | | This commit adds a generic PWM framework driver for the PWFM controller found on NVIDIA Tegra SoCs. The driver is based on code from the Chromium kernel tree and was originally written by Gary King (NVIDIA) and later modified by Simon Que (Chromium). Acked-by: Stephen Warren <swarren@wwwdotorg.org> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: Add device tree supportThierry Reding2012-06-151-2/+146
| | | | | | | | | | 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 <arnd@arndb.de> Reviewed-by: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: Add table-based lookup for static mappingsThierry Reding2012-06-151-15/+154
| | | | | | | | | | | | | | | 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 <shawn.guo@linaro.org> Reviewed-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: Add debugfs interfaceThierry Reding2012-06-151-0/+90
| | | | | | | | | | 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 <broonie@opensource.wolfsonmicro.com> Reviewed-by: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: Allow chips to support multiple PWMsThierry Reding2012-06-151-77/+190
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 <broonie@opensource.wolfsonmicro.com> Reviewed-by: Shawn Guo <shawn.guo@linaro.org> [eric@eukrea.com: fix error handling in pwmchip_add] Signed-off-by: Eric Bénard <eric@eukrea.com> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
* pwm: Add PWM framework supportSascha Hauer2012-06-153-0/+240
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 <s.hauer@pengutronix.de> Acked-by: Kurt Van Dijck <kurt.van.dijck@eia.be> Reviewed-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Matthias Kaehlcke <matthias@kaehlcke.net> Reviewed-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Reviewed-by: Shawn Guo <shawn.guo@linaro.org> [thierry.reding@avionic-design.de: fixup typos, kerneldoc comments] Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
OpenPOWER on IntegriCloud