1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * DMTIMER platform data for TI OMAP platforms 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2012 Texas Instruments 6*4882a593Smuzhiyun * Author: Jon Hunter <jon-hunter@ti.com> 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #ifndef __PLATFORM_DATA_DMTIMER_OMAP_H__ 10*4882a593Smuzhiyun #define __PLATFORM_DATA_DMTIMER_OMAP_H__ 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun struct omap_dm_timer_ops { 13*4882a593Smuzhiyun struct omap_dm_timer *(*request_by_node)(struct device_node *np); 14*4882a593Smuzhiyun struct omap_dm_timer *(*request_specific)(int timer_id); 15*4882a593Smuzhiyun struct omap_dm_timer *(*request)(void); 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun int (*free)(struct omap_dm_timer *timer); 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun void (*enable)(struct omap_dm_timer *timer); 20*4882a593Smuzhiyun void (*disable)(struct omap_dm_timer *timer); 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun int (*get_irq)(struct omap_dm_timer *timer); 23*4882a593Smuzhiyun int (*set_int_enable)(struct omap_dm_timer *timer, 24*4882a593Smuzhiyun unsigned int value); 25*4882a593Smuzhiyun int (*set_int_disable)(struct omap_dm_timer *timer, u32 mask); 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun struct clk *(*get_fclk)(struct omap_dm_timer *timer); 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun int (*start)(struct omap_dm_timer *timer); 30*4882a593Smuzhiyun int (*stop)(struct omap_dm_timer *timer); 31*4882a593Smuzhiyun int (*set_source)(struct omap_dm_timer *timer, int source); 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun int (*set_load)(struct omap_dm_timer *timer, unsigned int value); 34*4882a593Smuzhiyun int (*set_match)(struct omap_dm_timer *timer, int enable, 35*4882a593Smuzhiyun unsigned int match); 36*4882a593Smuzhiyun int (*set_pwm)(struct omap_dm_timer *timer, int def_on, 37*4882a593Smuzhiyun int toggle, int trigger, int autoreload); 38*4882a593Smuzhiyun int (*get_pwm_status)(struct omap_dm_timer *timer); 39*4882a593Smuzhiyun int (*set_prescaler)(struct omap_dm_timer *timer, int prescaler); 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun unsigned int (*read_counter)(struct omap_dm_timer *timer); 42*4882a593Smuzhiyun int (*write_counter)(struct omap_dm_timer *timer, 43*4882a593Smuzhiyun unsigned int value); 44*4882a593Smuzhiyun unsigned int (*read_status)(struct omap_dm_timer *timer); 45*4882a593Smuzhiyun int (*write_status)(struct omap_dm_timer *timer, 46*4882a593Smuzhiyun unsigned int value); 47*4882a593Smuzhiyun }; 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun struct dmtimer_platform_data { 50*4882a593Smuzhiyun /* set_timer_src - Only used for OMAP1 devices */ 51*4882a593Smuzhiyun int (*set_timer_src)(struct platform_device *pdev, int source); 52*4882a593Smuzhiyun u32 timer_capability; 53*4882a593Smuzhiyun u32 timer_errata; 54*4882a593Smuzhiyun int (*get_context_loss_count)(struct device *); 55*4882a593Smuzhiyun const struct omap_dm_timer_ops *timer_ops; 56*4882a593Smuzhiyun }; 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun #endif /* __PLATFORM_DATA_DMTIMER_OMAP_H__ */ 59