On 4/25/2018 22:53, Pierre-Louis Bossart wrote:
On 4/25/18 1:50 AM, Xiuli Pan wrote:
From: Pan Xiuli xiuli.pan@linux.intel.com
SW_REG is in memory window and the cache is enabled, need to writeback the SW_REG.
Signed-off-by: Pan Xiuli xiuli.pan@linux.intel.com
Test with: Mininow max rt5651 and UP2 nocodec and CNL nocodec SOF master: 3ad69eb715a09de9a0b91c56c9cca8a79ead00a9 SOF-Tool master: b327539e98f1c84e3a131dd048460189a5de8c26 https://github.com/plbossart/sound/tree/topic/sof-v4.14: 735b995d7b66485c19e0aed51131532075cfce42
src/include/sof/mailbox.h | 14 ++++++++++++++ src/platform/apollolake/include/platform/platform.h | 6 ++++-- src/platform/cannonlake/include/platform/platform.h | 6 ++++-- 3 files changed, 22 insertions(+), 4 deletions(-)
diff --git a/src/include/sof/mailbox.h b/src/include/sof/mailbox.h index 59259a0..17d9daa 100644 --- a/src/include/sof/mailbox.h +++ b/src/include/sof/mailbox.h @@ -26,6 +26,7 @@ * POSSIBILITY OF SUCH DAMAGE. * * Author: Liam Girdwood liam.r.girdwood@linux.intel.com
- * Xiuli Pan xiuli.pan@linux.intel.com
*/ #ifndef __INCLUDE_MAILBOX__ @@ -36,6 +37,11 @@ #include <stdint.h> #include <sof/string.h> +/* For those platform did not have SW_REG window, use DEBUG at now */ +#ifndef MAILBOX_SW_REG_BASE +#define MAILBOX_SW_REG_BASE MAILBOX_DEBUG_BASE +#endif /* MAILBOX_SW_REG_BASE */
this is really a work-around to compile on legacy platforms, right? The value has no impact or meaning.
Yes, this is only for the lagacy platform compiling.
/* 4k should be enough for everyone ..... */ #define IPC_MAX_MAILBOX_BYTES 0x1000 @@ -100,4 +106,12 @@ void mailbox_stream_write(size_t offset, const void *src, size_t bytes) bytes); } +static inline +void mailbox_sw_reg_write(size_t offset, uint32_t src) +{ + *((volatile uint32_t*)(MAILBOX_SW_REG_BASE + offset)) = src; + dcache_writeback_region((void *)(MAILBOX_SW_REG_BASE + offset), + sizeof(src)); +}
#endif diff --git a/src/platform/apollolake/include/platform/platform.h b/src/platform/apollolake/include/platform/platform.h index 8503ce2..92f5b77 100644 --- a/src/platform/apollolake/include/platform/platform.h +++ b/src/platform/apollolake/include/platform/platform.h @@ -27,6 +27,7 @@ * * Author: Liam Girdwood liam.r.girdwood@linux.intel.com * Keyon Jie yang.jie@linux.intel.com
- * Xiuli Pan xiuli.pan@linux.intel.com
*/ #ifndef __PLATFORM_PLATFORM_H__ @@ -117,13 +118,14 @@ struct sof; /* Platform defined panic code */ #define platform_panic(__x) { \ - sw_reg_write(SRAM_REG_FW_STATUS, (0xdead000 | __x) & 0x3fffffff); \ + mailbox_sw_reg_write(SRAM_REG_FW_STATUS, \ + (0xdead000 | __x) & 0x3fffffff); \
can you either resubmit or send a follow-up patch with the argument __x in parenthesis to protect against unintended macro expansion issues, e.g. + mailbox_sw_reg_write(SRAM_REG_FW_STATUS, \
+ (0xdead000 | (__x)) & 0x3fffffff); \
work on the TODO for bdw and hsw. Will send a V2 soon.
Thanks Xiuli
ipc_write(IPC_DIPCI, 0x80000000 | ((0xdead000 | __x) & 0x3fffffff)); \ } /* Platform defined trace code */ #define platform_trace_point(__x) \ - sw_reg_write(SRAM_REG_FW_TRACEP, __x) + mailbox_sw_reg_write(SRAM_REG_FW_TRACEP, __x) extern struct timer *platform_timer; diff --git a/src/platform/cannonlake/include/platform/platform.h b/src/platform/cannonlake/include/platform/platform.h index c5bf42a..aff90a7 100644 --- a/src/platform/cannonlake/include/platform/platform.h +++ b/src/platform/cannonlake/include/platform/platform.h @@ -28,6 +28,7 @@ * Author: Liam Girdwood liam.r.girdwood@linux.intel.com * Keyon Jie yang.jie@linux.intel.com * Rander Wang rander.wang@intel.com
- * Xiuli Pan xiuli.pan@linux.intel.com
*/ #ifndef __PLATFORM_PLATFORM_H__ @@ -112,13 +113,14 @@ struct sof; /* Platform defined trace code */ #define platform_panic(__x) { \ - sw_reg_write(SRAM_REG_FW_STATUS, (0xdead000 | __x) & 0x3fffffff); \ + mailbox_sw_reg_write(SRAM_REG_FW_STATUS, \ + (0xdead000 | __x) & 0x3fffffff); \ ipc_write(IPC_DIPCIDR, 0x80000000 | ((0xdead000 | __x) & 0x3fffffff)); \ } /* Platform defined trace code */ #define platform_trace_point(__x) \ - sw_reg_write(SRAM_REG_FW_TRACEP, __x) + mailbox_sw_reg_write(SRAM_REG_FW_TRACEP, __x) extern struct timer *platform_timer;
Sound-open-firmware mailing list Sound-open-firmware@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/sound-open-firmware