aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/platform_data/pwm_omap_dmtimer.h
diff options
context:
space:
mode:
authorNeil Armstrong <narmstrong@baylibre.com>2015-11-02 06:14:21 -0500
committerThierry Reding <thierry.reding@gmail.com>2015-12-16 11:25:37 -0500
commit6604c6556db9e41c85f2839f66bd9d617bcf9f87 (patch)
treedf8c02d08ed1d824c158ead4c10999b295b652ae /include/linux/platform_data/pwm_omap_dmtimer.h
parent72c16a9f98afad073b4a9c947c1c89bfb886ffcb (diff)
pwm: Add PWM driver for OMAP using dual-mode timers
Adds support for using a OMAP dual-mode timer with PWM capability as a Linux PWM device. The driver controls the timer by using the dmtimer API. Add a platform_data structure for each pwm-omap-dmtimer nodes containing the dmtimers functions in order to get driver not rely on platform specific functions. Cc: Grant Erickson <marathon96@gmail.com> Cc: NeilBrown <neilb@suse.de> Cc: Joachim Eastwood <manabian@gmail.com> Suggested-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> Acked-by: Tony Lindgren <tony@atomide.com> [thierry.reding@gmail.com: coding style bikeshed, fix timer leak] Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
Diffstat (limited to 'include/linux/platform_data/pwm_omap_dmtimer.h')
-rw-r--r--include/linux/platform_data/pwm_omap_dmtimer.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/include/linux/platform_data/pwm_omap_dmtimer.h b/include/linux/platform_data/pwm_omap_dmtimer.h
new file mode 100644
index 000000000000..59384217208f
--- /dev/null
+++ b/include/linux/platform_data/pwm_omap_dmtimer.h
@@ -0,0 +1,69 @@
1/*
2 * include/linux/platform_data/pwm_omap_dmtimer.h
3 *
4 * OMAP Dual-Mode Timer PWM platform data
5 *
6 * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
7 * Tarun Kanti DebBarma <tarun.kanti@ti.com>
8 * Thara Gopinath <thara@ti.com>
9 *
10 * Platform device conversion and hwmod support.
11 *
12 * Copyright (C) 2005 Nokia Corporation
13 * Author: Lauri Leukkunen <lauri.leukkunen@nokia.com>
14 * PWM and clock framework support by Timo Teras.
15 *
16 * This program is free software; you can redistribute it and/or modify it
17 * under the terms of the GNU General Public License as published by the
18 * Free Software Foundation; either version 2 of the License, or (at your
19 * option) any later version.
20 *
21 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
22 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
23 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
24 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
25 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 *
30 * You should have received a copy of the GNU General Public License along
31 * with this program; if not, write to the Free Software Foundation, Inc.,
32 * 675 Mass Ave, Cambridge, MA 02139, USA.
33 */
34
35#ifndef __PWM_OMAP_DMTIMER_PDATA_H
36#define __PWM_OMAP_DMTIMER_PDATA_H
37
38/* trigger types */
39#define PWM_OMAP_DMTIMER_TRIGGER_NONE 0x00
40#define PWM_OMAP_DMTIMER_TRIGGER_OVERFLOW 0x01
41#define PWM_OMAP_DMTIMER_TRIGGER_OVERFLOW_AND_COMPARE 0x02
42
43struct omap_dm_timer;
44typedef struct omap_dm_timer pwm_omap_dmtimer;
45
46struct pwm_omap_dmtimer_pdata {
47 pwm_omap_dmtimer *(*request_by_node)(struct device_node *np);
48 int (*free)(pwm_omap_dmtimer *timer);
49
50 void (*enable)(pwm_omap_dmtimer *timer);
51 void (*disable)(pwm_omap_dmtimer *timer);
52
53 struct clk *(*get_fclk)(pwm_omap_dmtimer *timer);
54
55 int (*start)(pwm_omap_dmtimer *timer);
56 int (*stop)(pwm_omap_dmtimer *timer);
57
58 int (*set_load)(pwm_omap_dmtimer *timer, int autoreload,
59 unsigned int value);
60 int (*set_match)(pwm_omap_dmtimer *timer, int enable,
61 unsigned int match);
62 int (*set_pwm)(pwm_omap_dmtimer *timer, int def_on,
63 int toggle, int trigger);
64 int (*set_prescaler)(pwm_omap_dmtimer *timer, int prescaler);
65
66 int (*write_counter)(pwm_omap_dmtimer *timer, unsigned int value);
67};
68
69#endif /* __PWM_OMAP_DMTIMER_PDATA_H */