2 * include/linux/platform_data/pwm_omap_dmtimer.h
4 * OMAP Dual-Mode Timer PWM platform data
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>
10 * Platform device conversion and hwmod support.
12 * Copyright (C) 2005 Nokia Corporation
13 * Author: Lauri Leukkunen <lauri.leukkunen@nokia.com>
14 * PWM and clock framework support by Timo Teras.
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.
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.
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.
35 #ifndef __PWM_OMAP_DMTIMER_PDATA_H
36 #define __PWM_OMAP_DMTIMER_PDATA_H
39 #define PWM_OMAP_DMTIMER_SRC_SYS_CLK 0x00
40 #define PWM_OMAP_DMTIMER_SRC_32_KHZ 0x01
41 #define PWM_OMAP_DMTIMER_SRC_EXT_CLK 0x02
43 /* timer interrupt enable bits */
44 #define PWM_OMAP_DMTIMER_INT_CAPTURE (1 << 2)
45 #define PWM_OMAP_DMTIMER_INT_OVERFLOW (1 << 1)
46 #define PWM_OMAP_DMTIMER_INT_MATCH (1 << 0)
49 #define PWM_OMAP_DMTIMER_TRIGGER_NONE 0x00
50 #define PWM_OMAP_DMTIMER_TRIGGER_OVERFLOW 0x01
51 #define PWM_OMAP_DMTIMER_TRIGGER_OVERFLOW_AND_COMPARE 0x02
54 typedef struct omap_dm_timer pwm_omap_dmtimer
;
56 struct pwm_omap_dmtimer_pdata
{
57 pwm_omap_dmtimer
*(*request_by_node
)(struct device_node
*np
);
58 pwm_omap_dmtimer
*(*request_specific
)(int timer_id
);
59 pwm_omap_dmtimer
*(*request
)(void);
61 int (*free
)(pwm_omap_dmtimer
*timer
);
63 void (*enable
)(pwm_omap_dmtimer
*timer
);
64 void (*disable
)(pwm_omap_dmtimer
*timer
);
66 int (*get_irq
)(pwm_omap_dmtimer
*timer
);
67 int (*set_int_enable
)(pwm_omap_dmtimer
*timer
, unsigned int value
);
68 int (*set_int_disable
)(pwm_omap_dmtimer
*timer
, u32 mask
);
70 struct clk
*(*get_fclk
)(pwm_omap_dmtimer
*timer
);
72 int (*start
)(pwm_omap_dmtimer
*timer
);
73 int (*stop
)(pwm_omap_dmtimer
*timer
);
74 int (*set_source
)(pwm_omap_dmtimer
*timer
, int source
);
76 int (*set_load
)(pwm_omap_dmtimer
*timer
, int autoreload
,
78 int (*set_match
)(pwm_omap_dmtimer
*timer
, int enable
,
80 int (*set_pwm
)(pwm_omap_dmtimer
*timer
, int def_on
,
81 int toggle
, int trigger
);
82 int (*set_prescaler
)(pwm_omap_dmtimer
*timer
, int prescaler
);
84 unsigned int (*read_counter
)(pwm_omap_dmtimer
*timer
);
85 int (*write_counter
)(pwm_omap_dmtimer
*timer
, unsigned int value
);
86 unsigned int (*read_status
)(pwm_omap_dmtimer
*timer
);
87 int (*write_status
)(pwm_omap_dmtimer
*timer
, unsigned int value
);
90 #endif /* __PWM_OMAP_DMTIMER_PDATA_H */