mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-21 16:29:59 +00:00
Blackfin: update gptimers API
First we fix the prototypes for functions that return boolean values by using "int" rather than "uint16_t". Then we introduce a get_gptimer_run() function for checking the current run status of a timer, and then we add a disable_gptimers_sync() function which parallels disable_gptimers() with corresponding normal "_sync" behavior. Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
parent
9ba3c24f10
commit
c8d5ea8ccb
2 changed files with 49 additions and 24 deletions
|
@ -30,6 +30,7 @@
|
|||
# else
|
||||
# define MAX_BLACKFIN_GPTIMERS 11
|
||||
# define TIMER8_GROUP_REG TIMER_ENABLE1
|
||||
# define TIMER_GROUP2 1
|
||||
# endif
|
||||
# define TIMER0_GROUP_REG TIMER_ENABLE0
|
||||
#endif
|
||||
|
@ -40,10 +41,12 @@
|
|||
# define MAX_BLACKFIN_GPTIMERS 12
|
||||
# define TIMER0_GROUP_REG TMRS8_ENABLE
|
||||
# define TIMER8_GROUP_REG TMRS4_ENABLE
|
||||
# define TIMER_GROUP2 1
|
||||
#endif
|
||||
/*
|
||||
* All others: 3 timers:
|
||||
*/
|
||||
#define TIMER_GROUP1 0
|
||||
#if !defined(MAX_BLACKFIN_GPTIMERS)
|
||||
# define MAX_BLACKFIN_GPTIMERS 3
|
||||
# define TIMER0_GROUP_REG TIMER_ENABLE
|
||||
|
@ -109,8 +112,8 @@
|
|||
#define TIMER_ERR_PROG_PER 0x8000
|
||||
#define TIMER_ERR_PROG_PW 0xC000
|
||||
#define TIMER_EMU_RUN 0x0200
|
||||
#define TIMER_TOGGLE_HI 0x0100
|
||||
#define TIMER_CLK_SEL 0x0080
|
||||
#define TIMER_TOGGLE_HI 0x0100
|
||||
#define TIMER_CLK_SEL 0x0080
|
||||
#define TIMER_OUT_DIS 0x0040
|
||||
#define TIMER_TIN_SEL 0x0020
|
||||
#define TIMER_IRQ_ENA 0x0010
|
||||
|
@ -169,23 +172,25 @@
|
|||
|
||||
/* The actual gptimer API */
|
||||
|
||||
void set_gptimer_pwidth (int timer_id, uint32_t width);
|
||||
uint32_t get_gptimer_pwidth (int timer_id);
|
||||
void set_gptimer_period (int timer_id, uint32_t period);
|
||||
uint32_t get_gptimer_period (int timer_id);
|
||||
uint32_t get_gptimer_count (int timer_id);
|
||||
uint16_t get_gptimer_intr (int timer_id);
|
||||
void clear_gptimer_intr (int timer_id);
|
||||
uint16_t get_gptimer_over (int timer_id);
|
||||
void clear_gptimer_over (int timer_id);
|
||||
void set_gptimer_config (int timer_id, uint16_t config);
|
||||
uint16_t get_gptimer_config (int timer_id);
|
||||
void set_gptimer_pulse_hi (int timer_id);
|
||||
void set_gptimer_pwidth(int timer_id, uint32_t width);
|
||||
uint32_t get_gptimer_pwidth(int timer_id);
|
||||
void set_gptimer_period(int timer_id, uint32_t period);
|
||||
uint32_t get_gptimer_period(int timer_id);
|
||||
uint32_t get_gptimer_count(int timer_id);
|
||||
int get_gptimer_intr(int timer_id);
|
||||
void clear_gptimer_intr(int timer_id);
|
||||
int get_gptimer_over(int timer_id);
|
||||
void clear_gptimer_over(int timer_id);
|
||||
void set_gptimer_config(int timer_id, uint16_t config);
|
||||
uint16_t get_gptimer_config(int timer_id);
|
||||
int get_gptimer_run(int timer_id);
|
||||
void set_gptimer_pulse_hi(int timer_id);
|
||||
void clear_gptimer_pulse_hi(int timer_id);
|
||||
void enable_gptimers (uint16_t mask);
|
||||
void disable_gptimers (uint16_t mask);
|
||||
uint16_t get_enabled_gptimers (void);
|
||||
uint32_t get_gptimer_status (int group);
|
||||
void set_gptimer_status (int group, uint32_t value);
|
||||
void enable_gptimers(uint16_t mask);
|
||||
void disable_gptimers(uint16_t mask);
|
||||
void disable_gptimers_sync(uint16_t mask);
|
||||
uint16_t get_enabled_gptimers(void);
|
||||
uint32_t get_gptimer_status(int group);
|
||||
void set_gptimer_status(int group, uint32_t value);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -189,10 +189,10 @@ void set_gptimer_status(int group, uint32_t value)
|
|||
}
|
||||
EXPORT_SYMBOL(set_gptimer_status);
|
||||
|
||||
uint16_t get_gptimer_intr(int timer_id)
|
||||
int get_gptimer_intr(int timer_id)
|
||||
{
|
||||
tassert(timer_id < MAX_BLACKFIN_GPTIMERS);
|
||||
return (group_regs[BFIN_TIMER_OCTET(timer_id)]->status & timil_mask[timer_id]) ? 1 : 0;
|
||||
return !!(group_regs[BFIN_TIMER_OCTET(timer_id)]->status & timil_mask[timer_id]);
|
||||
}
|
||||
EXPORT_SYMBOL(get_gptimer_intr);
|
||||
|
||||
|
@ -203,10 +203,10 @@ void clear_gptimer_intr(int timer_id)
|
|||
}
|
||||
EXPORT_SYMBOL(clear_gptimer_intr);
|
||||
|
||||
uint16_t get_gptimer_over(int timer_id)
|
||||
int get_gptimer_over(int timer_id)
|
||||
{
|
||||
tassert(timer_id < MAX_BLACKFIN_GPTIMERS);
|
||||
return (group_regs[BFIN_TIMER_OCTET(timer_id)]->status & tovf_mask[timer_id]) ? 1 : 0;
|
||||
return !!(group_regs[BFIN_TIMER_OCTET(timer_id)]->status & tovf_mask[timer_id]);
|
||||
}
|
||||
EXPORT_SYMBOL(get_gptimer_over);
|
||||
|
||||
|
@ -217,6 +217,13 @@ void clear_gptimer_over(int timer_id)
|
|||
}
|
||||
EXPORT_SYMBOL(clear_gptimer_over);
|
||||
|
||||
int get_gptimer_run(int timer_id)
|
||||
{
|
||||
tassert(timer_id < MAX_BLACKFIN_GPTIMERS);
|
||||
return !!(group_regs[BFIN_TIMER_OCTET(timer_id)]->status & trun_mask[timer_id]);
|
||||
}
|
||||
EXPORT_SYMBOL(get_gptimer_run);
|
||||
|
||||
void set_gptimer_config(int timer_id, uint16_t config)
|
||||
{
|
||||
tassert(timer_id < MAX_BLACKFIN_GPTIMERS);
|
||||
|
@ -244,7 +251,7 @@ void enable_gptimers(uint16_t mask)
|
|||
}
|
||||
EXPORT_SYMBOL(enable_gptimers);
|
||||
|
||||
void disable_gptimers(uint16_t mask)
|
||||
static void _disable_gptimers(uint16_t mask)
|
||||
{
|
||||
int i;
|
||||
uint16_t m = mask;
|
||||
|
@ -253,6 +260,12 @@ void disable_gptimers(uint16_t mask)
|
|||
group_regs[i]->disable = m & 0xFF;
|
||||
m >>= 8;
|
||||
}
|
||||
}
|
||||
|
||||
void disable_gptimers(uint16_t mask)
|
||||
{
|
||||
int i;
|
||||
_disable_gptimers(mask);
|
||||
for (i = 0; i < MAX_BLACKFIN_GPTIMERS; ++i)
|
||||
if (mask & (1 << i))
|
||||
group_regs[BFIN_TIMER_OCTET(i)]->status |= trun_mask[i];
|
||||
|
@ -260,6 +273,13 @@ void disable_gptimers(uint16_t mask)
|
|||
}
|
||||
EXPORT_SYMBOL(disable_gptimers);
|
||||
|
||||
void disable_gptimers_sync(uint16_t mask)
|
||||
{
|
||||
_disable_gptimers(mask);
|
||||
SSYNC();
|
||||
}
|
||||
EXPORT_SYMBOL(disable_gptimers_sync);
|
||||
|
||||
void set_gptimer_pulse_hi(int timer_id)
|
||||
{
|
||||
tassert(timer_id < MAX_BLACKFIN_GPTIMERS);
|
||||
|
|
Loading…
Reference in a new issue