mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-09 13:15:18 -05:00
Sansa AMS: Revert r21177 : the timer frequency is used by the user timer (example: metronome will be twice too fast)
Instead use a private KERNEL_TIMER_FREQ define which is dependant on HAVE_SCROLLWHEEL Comment that call_tick_tasks() will read the scrollwheel Remove the unneeded volatile type qualifier from poll_scrollwheel git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21187 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
aa7b081bad
commit
2409c28f21
2 changed files with 13 additions and 12 deletions
|
|
@ -24,19 +24,27 @@
|
||||||
#include "panic.h"
|
#include "panic.h"
|
||||||
#include "timer-target.h"
|
#include "timer-target.h"
|
||||||
|
|
||||||
|
#ifdef HAVE_SCROLLWHEEL
|
||||||
|
/* let the timer interrupt twice as often for the scrollwheel polling */
|
||||||
|
#define KERNEL_TIMER_FREQ (TIMER_FREQ/2)
|
||||||
|
#else
|
||||||
|
#define KERNEL_TIMER_FREQ TIMER_FREQ
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_SCROLLWHEEL
|
#ifdef HAVE_SCROLLWHEEL
|
||||||
#include "button-target.h"
|
#include "button-target.h"
|
||||||
/* The scrollwheel is polled every 5 ms (the tick tasks only every 10) */
|
/* The scrollwheel is polled every 5 ms (the tick tasks only every 10) */
|
||||||
static volatile int poll_scrollwheel = 0;
|
static int poll_scrollwheel = 0;
|
||||||
|
|
||||||
void INT_TIMER2(void)
|
void INT_TIMER2(void)
|
||||||
{
|
{
|
||||||
if (!poll_scrollwheel)
|
if (!poll_scrollwheel)
|
||||||
call_tick_tasks(); /* Run through the list of tick tasks */
|
call_tick_tasks(); /* Run through the list of tick tasks
|
||||||
|
* (that includes reading the scrollwheel) */
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!button_hold())
|
if (!button_hold())
|
||||||
button_read_dbop();
|
button_read_dbop(); /* Read the scrollwheel */
|
||||||
}
|
}
|
||||||
|
|
||||||
poll_scrollwheel ^= 1;
|
poll_scrollwheel ^= 1;
|
||||||
|
|
@ -55,7 +63,7 @@ void tick_start(unsigned int interval_in_ms)
|
||||||
{
|
{
|
||||||
int phi = 0; /* prescaler bits */
|
int phi = 0; /* prescaler bits */
|
||||||
int prescale = 1;
|
int prescale = 1;
|
||||||
int cycles = TIMER_FREQ / 1000 * interval_in_ms;
|
int cycles = KERNEL_TIMER_FREQ / 1000 * interval_in_ms;
|
||||||
|
|
||||||
while(cycles > 0x10000)
|
while(cycles > 0x10000)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -25,14 +25,7 @@ bool __timer_set(long cycles, bool set);
|
||||||
bool __timer_register(void);
|
bool __timer_register(void);
|
||||||
void __timer_unregister(void);
|
void __timer_unregister(void);
|
||||||
|
|
||||||
#ifdef HAVE_SCROLLWHEEL
|
#define TIMER_FREQ (24000000 / 16)
|
||||||
/* The scrollwheel is polled every 5 ms (the tick tasks still every 10ms) */
|
|
||||||
#define TIMER_DIV (16*2)
|
|
||||||
#else
|
|
||||||
#define TIMER_DIV (16)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define TIMER_FREQ (24000000 / TIMER_DIV)
|
|
||||||
|
|
||||||
#define __TIMER_SET(cycles, set) \
|
#define __TIMER_SET(cycles, set) \
|
||||||
__timer_set(cycles, set)
|
__timer_set(cycles, set)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue