Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 148571
b: refs/heads/master
c: c8d5ea8
h: refs/heads/master
i:
  148569: c839215
  148567: 77051d3
v: v3
  • Loading branch information
Michael Hennerich authored and Mike Frysinger committed Jun 12, 2009
1 parent 2deb938 commit d1a4395
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 25 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 9ba3c24f10c948dadac2ca91ed714dfbcedd61ca
refs/heads/master: c8d5ea8ccb1ce586131c6c549899cb5073222da0
43 changes: 24 additions & 19 deletions trunk/arch/blackfin/include/asm/gptimers.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
30 changes: 25 additions & 5 deletions trunk/arch/blackfin/kernel/gptimers.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand All @@ -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);

Expand All @@ -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);
Expand Down Expand Up @@ -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;
Expand All @@ -253,13 +260,26 @@ 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];
SSYNC();
}
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);
Expand Down

0 comments on commit d1a4395

Please sign in to comment.