summaryrefslogtreecommitdiff
path: root/chip/it83xx/hwtimer_chip.h
diff options
context:
space:
mode:
Diffstat (limited to 'chip/it83xx/hwtimer_chip.h')
-rw-r--r--chip/it83xx/hwtimer_chip.h23
1 files changed, 22 insertions, 1 deletions
diff --git a/chip/it83xx/hwtimer_chip.h b/chip/it83xx/hwtimer_chip.h
index 690505dcb1..18ee3f0f13 100644
--- a/chip/it83xx/hwtimer_chip.h
+++ b/chip/it83xx/hwtimer_chip.h
@@ -8,11 +8,30 @@
#ifndef __CROS_EC_HWTIMER_CHIP_H
#define __CROS_EC_HWTIMER_CHIP_H
+#define TIMER_COUNT_1US_SHIFT 3
+
+/* Combinational mode, microseconds to timer counter setting register */
+#define TIMER_H_US_TO_COUNT(us) ((us) >> (24 - TIMER_COUNT_1US_SHIFT))
+#define TIMER_L_US_TO_COUNT(us) (((us) << TIMER_COUNT_1US_SHIFT) & 0x00ffffff)
+
+/* Free running timer counter observation value to microseconds */
+#define TIMER_H_COUNT_TO_US(cnt) ((~(cnt)) << (24 - TIMER_COUNT_1US_SHIFT))
+#define TIMER_L_COUNT_TO_US(cnt) (((cnt) & 0x00ffffff) >> TIMER_COUNT_1US_SHIFT)
+
+/* Microseconds to event timer counter setting register */
+#define EVENT_TIMER_US_TO_COUNT(us) ((us) << TIMER_COUNT_1US_SHIFT)
+/* Event timer counter observation value to microseconds */
+#define EVENT_TIMER_COUNT_TO_US(cnt) ((cnt) >> TIMER_COUNT_1US_SHIFT)
+
+#define TIMER_H_CNT_COMP TIMER_H_US_TO_COUNT(0xffffffff)
+#define TIMER_L_CNT_COMP TIMER_L_US_TO_COUNT(0xffffffff)
+
#define FREE_EXT_TIMER_L EXT_TIMER_3
#define FREE_EXT_TIMER_H EXT_TIMER_4
#define FAN_CTRL_EXT_TIMER EXT_TIMER_5
#define EVENT_EXT_TIMER EXT_TIMER_6
#define WDT_EXT_TIMER EXT_TIMER_7
+#define LOW_POWER_EXT_TIMER EXT_TIMER_8
enum ext_timer_clock_source {
EXT_PSR_32P768K_HZ = 0,
@@ -35,7 +54,7 @@ enum ext_timer_sel {
EXT_TIMER_6,
/* For WDT capture important state information before being reset */
EXT_TIMER_7,
- /* reserved */
+ /* HW timer for low power mode */
EXT_TIMER_8,
EXT_TIMER_COUNT,
};
@@ -43,6 +62,7 @@ enum ext_timer_sel {
struct ext_timer_ctrl_t {
volatile uint8_t *mode;
volatile uint8_t *polarity;
+ volatile uint8_t *isr;
uint8_t mask;
uint8_t irq;
};
@@ -52,6 +72,7 @@ void ext_timer_start(enum ext_timer_sel ext_timer, int en_irq);
void ext_timer_stop(enum ext_timer_sel ext_timer, int dis_irq);
void fan_ext_timer_interrupt(void);
void update_exc_start_time(void);
+
/**
* Config a external timer.
*