tc_etu: Add explicit enable/disable functions

We don't want the tc_etu to call into card_emu at all times,
e.g. while clock is applied, but RST is not yet present.

Rather, we want to explicitly enable it once RST is released
This commit is contained in:
Harald Welte 2016-02-24 21:01:50 +01:00
parent 855ba9e168
commit 042f0d366b
2 changed files with 21 additions and 3 deletions

View File

@ -1,6 +1,6 @@
/* SIMtrace TC (Timer / Clock) code for ETU tracking */
/* (C) 2006-2015 by Harald Welte <hwelte@hmw-consulting.de>
/* (C) 2006-2016 by Harald Welte <hwelte@hmw-consulting.de>
*
* 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
@ -133,6 +133,22 @@ void tc_etu_set_etu(uint8_t chan_nr, uint16_t etu)
recalc_nr_events(te);
}
void tc_etu_enable(uint8_t chan_nr)
{
struct tc_etu_state *te = get_te(chan_nr);
te->nr_events = 0;
te->chan->TC_CCR = TC_CCR_CLKEN|TC_CCR_SWTRG;
}
void tc_etu_disable(uint8_t chan_nr)
{
struct tc_etu_state *te = get_te(chan_nr);
te->nr_events = 0;
te->chan->TC_CCR = TC_CCR_CLKDIS;
}
void tc_etu_init(uint8_t chan_nr, void *handle)
{
struct tc_etu_state *te = get_te(chan_nr);
@ -186,8 +202,8 @@ void tc_etu_init(uint8_t chan_nr, void *handle)
tc_etu_set_etu(chan_nr, 372);
/* enable master clock for TC */
te->chan->TC_CCR = TC_CCR_CLKEN;
/* start with a disabled clock */
tc_etu_disable(chan_nr);
/* Reset to start timers */
TC0->TC_BCR = TC_BCR_SYNC;

View File

@ -4,6 +4,8 @@
void tc_etu_set_wtime(uint8_t chan_nr, uint16_t wtime);
void tc_etu_set_etu(uint8_t chan_nr, uint16_t etu);
void tc_etu_init(uint8_t chan_nr, void *handle);
void tc_etu_enable(uint8_t chan_nr);
void tc_etu_disable(uint8_t chan_nr);
extern void tc_etu_wtime_half_expired(void *handle);
extern void tc_etu_wtime_expired(void *handle);