From: Tomasz Lauda tomasz.lauda@linux.intel.com
This patch adds wait_delay routine, which will wait for specified minimum number of clocks.
Signed-off-by: Tomasz Lauda tomasz.lauda@linux.intel.com --- src/include/sof/wait.h | 12 ++++++++++++ src/platform/apollolake/include/platform/platform.h | 3 +++ src/platform/baytrail/include/platform/platform.h | 3 +++ src/platform/cannonlake/include/platform/platform.h | 3 +++ src/platform/haswell/include/platform/platform.h | 3 +++ 5 files changed, 24 insertions(+)
diff --git a/src/include/sof/wait.h b/src/include/sof/wait.h index b7725b8..feb8b29 100644 --- a/src/include/sof/wait.h +++ b/src/include/sof/wait.h @@ -145,4 +145,16 @@ static inline int wait_for_completion_timeout(completion_t *comp) } }
+/** + * \brief Waits at least passed number of clocks. + * \param[in] number_of_clks Minimum number of clocks to wait. + */ +static inline void wait_delay(uint64_t number_of_clks) +{ + uint64_t current = platform_timer_get(platform_timer); + + while ((platform_timer_get(platform_timer) - current) < number_of_clks) + idelay(PLATFORM_DEFAULT_DELAY); +} + #endif diff --git a/src/platform/apollolake/include/platform/platform.h b/src/platform/apollolake/include/platform/platform.h index 1321f1f..ff40b1c 100644 --- a/src/platform/apollolake/include/platform/platform.h +++ b/src/platform/apollolake/include/platform/platform.h @@ -120,6 +120,9 @@ struct sof; /* number of SSP ports in platform */ #define PLATFORM_NUM_SSP 6
+/* DSP default delay in cycles */ +#define PLATFORM_DEFAULT_DELAY 12 + /* Platform defined panic code */ static inline void platform_panic(uint32_t p) { diff --git a/src/platform/baytrail/include/platform/platform.h b/src/platform/baytrail/include/platform/platform.h index 1defe27..0d1664c 100644 --- a/src/platform/baytrail/include/platform/platform.h +++ b/src/platform/baytrail/include/platform/platform.h @@ -102,6 +102,9 @@ struct sof; /* DSP should be idle in this time frame */ #define PLATFORM_IDLE_TIME 750000
+/* DSP default delay in cycles */ +#define PLATFORM_DEFAULT_DELAY 12 + /* Platform defined panic code */ static inline void platform_panic(uint32_t p) { diff --git a/src/platform/cannonlake/include/platform/platform.h b/src/platform/cannonlake/include/platform/platform.h index c7d4a82..cf045c0 100644 --- a/src/platform/cannonlake/include/platform/platform.h +++ b/src/platform/cannonlake/include/platform/platform.h @@ -117,6 +117,9 @@ struct sof; /* DSP should be idle in this time frame */ #define PLATFORM_IDLE_TIME 750000
+/* DSP default delay in cycles */ +#define PLATFORM_DEFAULT_DELAY 12 + /* Platform defined trace code */ static inline void platform_panic(uint32_t p) { diff --git a/src/platform/haswell/include/platform/platform.h b/src/platform/haswell/include/platform/platform.h index c5d8187..af628ee 100644 --- a/src/platform/haswell/include/platform/platform.h +++ b/src/platform/haswell/include/platform/platform.h @@ -101,6 +101,9 @@ struct sof; /* DSP should be idle in this time frame */ #define PLATFORM_IDLE_TIME 750000
+/* DSP default delay in cycles */ +#define PLATFORM_DEFAULT_DELAY 12 + /* Platform defined panic code */ static inline void platform_panic(uint32_t p) {