[Sound-open-firmware] [PATCH] timer: pass platform timer structure in to all platform timer calls.
Liam Girdwood
liam.r.girdwood at linux.intel.com
Wed Sep 20 00:36:01 CEST 2017
Make sure we pass in our timer structure. In preparation for 64bit timers.
Signed-off-by: Liam Girdwood <liam.r.girdwood at linux.intel.com>
---
src/ipc/intel-ipc.c | 2 +-
src/lib/schedule.c | 4 ++--
src/lib/trace.c | 2 +-
src/platform/baytrail/clk.c | 3 +--
src/platform/baytrail/include/platform/timer.h | 1 +
src/platform/baytrail/platform.c | 9 +++------
6 files changed, 9 insertions(+), 12 deletions(-)
diff --git a/src/ipc/intel-ipc.c b/src/ipc/intel-ipc.c
index 01c83b6..0c1b10a 100644
--- a/src/ipc/intel-ipc.c
+++ b/src/ipc/intel-ipc.c
@@ -505,7 +505,7 @@ static int ipc_pm_context_save(uint32_t header)
/* TODO: clear any outstanding platform IRQs - TODO refine */
/* TODO: stop ALL timers */
- platform_timer_stop(0);
+ platform_timer_stop(platform_timer);
/* TODO: disable SSP and DMA HW */
diff --git a/src/lib/schedule.c b/src/lib/schedule.c
index b10bb98..147bfff 100644
--- a/src/lib/schedule.c
+++ b/src/lib/schedule.c
@@ -84,7 +84,7 @@ static inline struct task *edf_get_next(void)
return NULL;
/* get the current time */
- current = platform_timer_get(NULL);
+ current = platform_timer_get(platform_timer);
/* check every queued or running task in list */
list_for_item(clist, &sch->list) {
@@ -174,7 +174,7 @@ void schedule_task(struct task *task, uint32_t deadline, uint16_t priority,
}
/* get the current time */
- current = platform_timer_get(NULL);
+ current = platform_timer_get(platform_timer);
/* calculate deadline - TODO: include MIPS */
ticks = clock_us_to_ticks(sch->clock, deadline);
diff --git a/src/lib/trace.c b/src/lib/trace.c
index 5da7c95..33e1466 100644
--- a/src/lib/trace.c
+++ b/src/lib/trace.c
@@ -56,7 +56,7 @@ void _trace_event(uint32_t event)
/* write timestamp and event to trace buffer */
t =(volatile uint32_t*)(MAILBOX_TRACE_BASE + trace.pos);
- t[0] = platform_timer_get(0);
+ t[0] = platform_timer_get(platform_timer);
t[1] = event;
/* writeback trace data */
diff --git a/src/platform/baytrail/clk.c b/src/platform/baytrail/clk.c
index 5d8a73a..fdffcd5 100644
--- a/src/platform/baytrail/clk.c
+++ b/src/platform/baytrail/clk.c
@@ -240,8 +240,7 @@ uint32_t clock_time_elapsed(int clock, uint32_t previous, uint32_t *current)
_current = arch_timer_get_system(NULL);
break;
case CLK_SSP:
- // TODO: fix timer ID
- _current = platform_timer_get(NULL);
+ _current = platform_timer_get(platform_timer);
break;
default:
return 0;
diff --git a/src/platform/baytrail/include/platform/timer.h b/src/platform/baytrail/include/platform/timer.h
index 309828c..a7d2fc8 100644
--- a/src/platform/baytrail/include/platform/timer.h
+++ b/src/platform/baytrail/include/platform/timer.h
@@ -49,6 +49,7 @@
struct comp_dev;
struct sof_ipc_stream_posn;
+extern struct timer *platform_timer;
void platform_timer_set(struct timer *timer, uint32_t ticks);
void platform_timer_clear(struct timer *timer);
uint32_t platform_timer_get(struct timer *timer);
diff --git a/src/platform/baytrail/platform.c b/src/platform/baytrail/platform.c
index b8c3e49..f97971a 100644
--- a/src/platform/baytrail/platform.c
+++ b/src/platform/baytrail/platform.c
@@ -83,6 +83,8 @@ static struct work_queue_timesource platform_generic_queue = {
.timer_get = platform_timer_get,
};
+struct timer *platform_timer = &platform_generic_queue.timer;
+
int platform_boot_complete(uint32_t boot_message)
{
uint64_t outbox = MAILBOX_HOST_OFFSET >> 3;
@@ -138,11 +140,6 @@ void platform_interrupt_unmask(uint32_t irq, uint32_t mask)
}
-static struct timer platform_ext_timer = {
- .id = TIMER3,
- .irq = IRQ_NUM_EXT_TIMER,
-};
-
int platform_init(struct reef *reef)
{
#if defined CONFIG_BAYTRAIL
@@ -176,7 +173,7 @@ int platform_init(struct reef *reef)
/* init work queues and clocks */
trace_point(TRACE_BOOT_PLATFORM_TIMER);
- platform_timer_start(&platform_ext_timer);
+ platform_timer_start(platform_timer);
trace_point(TRACE_BOOT_PLATFORM_CLOCK);
init_platform_clocks();
--
2.11.0
More information about the Sound-open-firmware
mailing list