mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 11:19:37 +00:00
![Tony Lindgren](/assets/img/avatar_default.png)
Before we start removing omap3 legacy booting support, let's make n900 DT booting behave the same way for ir-rx51 as the legacy booting does. For now, we need to pass pdata to the ir-rx51 driver. This means that the n900 tree can move to using DT based booting without having to carry all the legacy platform data with it when it gets dropped from the mainline tree. Note that the ir-rx51 driver is currently disabled because of the dependency to !ARCH_MULTIPLATFORM. This will get sorted out later with the help of drivers/pwm/pwm-omap-dmtimer.c. But first we need to add chained IRQ support to dmtimer code to avoid introducing new custom frameworks. So let's just pass the necessary dmtimer functions to ir-rx51 so we can get it working in the following patch. Cc: Neil Armstrong <narmstrong@baylibre.com> Tested-by: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
90 lines
3.3 KiB
C
90 lines
3.3 KiB
C
/*
|
|
* include/linux/platform_data/pwm_omap_dmtimer.h
|
|
*
|
|
* OMAP Dual-Mode Timer PWM platform data
|
|
*
|
|
* Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
|
|
* Tarun Kanti DebBarma <tarun.kanti@ti.com>
|
|
* Thara Gopinath <thara@ti.com>
|
|
*
|
|
* Platform device conversion and hwmod support.
|
|
*
|
|
* Copyright (C) 2005 Nokia Corporation
|
|
* Author: Lauri Leukkunen <lauri.leukkunen@nokia.com>
|
|
* PWM and clock framework support by Timo Teras.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the
|
|
* Free Software Foundation; either version 2 of the License, or (at your
|
|
* option) any later version.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
|
* NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
*/
|
|
|
|
#ifndef __PWM_OMAP_DMTIMER_PDATA_H
|
|
#define __PWM_OMAP_DMTIMER_PDATA_H
|
|
|
|
/* clock sources */
|
|
#define PWM_OMAP_DMTIMER_SRC_SYS_CLK 0x00
|
|
#define PWM_OMAP_DMTIMER_SRC_32_KHZ 0x01
|
|
#define PWM_OMAP_DMTIMER_SRC_EXT_CLK 0x02
|
|
|
|
/* timer interrupt enable bits */
|
|
#define PWM_OMAP_DMTIMER_INT_CAPTURE (1 << 2)
|
|
#define PWM_OMAP_DMTIMER_INT_OVERFLOW (1 << 1)
|
|
#define PWM_OMAP_DMTIMER_INT_MATCH (1 << 0)
|
|
|
|
/* trigger types */
|
|
#define PWM_OMAP_DMTIMER_TRIGGER_NONE 0x00
|
|
#define PWM_OMAP_DMTIMER_TRIGGER_OVERFLOW 0x01
|
|
#define PWM_OMAP_DMTIMER_TRIGGER_OVERFLOW_AND_COMPARE 0x02
|
|
|
|
struct omap_dm_timer;
|
|
typedef struct omap_dm_timer pwm_omap_dmtimer;
|
|
|
|
struct pwm_omap_dmtimer_pdata {
|
|
pwm_omap_dmtimer *(*request_by_node)(struct device_node *np);
|
|
pwm_omap_dmtimer *(*request_specific)(int timer_id);
|
|
pwm_omap_dmtimer *(*request)(void);
|
|
|
|
int (*free)(pwm_omap_dmtimer *timer);
|
|
|
|
void (*enable)(pwm_omap_dmtimer *timer);
|
|
void (*disable)(pwm_omap_dmtimer *timer);
|
|
|
|
int (*get_irq)(pwm_omap_dmtimer *timer);
|
|
int (*set_int_enable)(pwm_omap_dmtimer *timer, unsigned int value);
|
|
int (*set_int_disable)(pwm_omap_dmtimer *timer, u32 mask);
|
|
|
|
struct clk *(*get_fclk)(pwm_omap_dmtimer *timer);
|
|
|
|
int (*start)(pwm_omap_dmtimer *timer);
|
|
int (*stop)(pwm_omap_dmtimer *timer);
|
|
int (*set_source)(pwm_omap_dmtimer *timer, int source);
|
|
|
|
int (*set_load)(pwm_omap_dmtimer *timer, int autoreload,
|
|
unsigned int value);
|
|
int (*set_match)(pwm_omap_dmtimer *timer, int enable,
|
|
unsigned int match);
|
|
int (*set_pwm)(pwm_omap_dmtimer *timer, int def_on,
|
|
int toggle, int trigger);
|
|
int (*set_prescaler)(pwm_omap_dmtimer *timer, int prescaler);
|
|
|
|
unsigned int (*read_counter)(pwm_omap_dmtimer *timer);
|
|
int (*write_counter)(pwm_omap_dmtimer *timer, unsigned int value);
|
|
unsigned int (*read_status)(pwm_omap_dmtimer *timer);
|
|
int (*write_status)(pwm_omap_dmtimer *timer, unsigned int value);
|
|
};
|
|
|
|
#endif /* __PWM_OMAP_DMTIMER_PDATA_H */
|