[Sound-open-firmware] [PATCH 1/2] mailbox: use mailbox function for SW_REG

Pan, Xiuli xiuli.pan at linux.intel.com
Thu May 3 10:31:46 CEST 2018



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 at 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 at 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 at linux.intel.com>
>> + *         Xiuli Pan <xiuli.pan at 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 at linux.intel.com>
>>    *         Keyon Jie <yang.jie at linux.intel.com>
>> + *         Xiuli Pan <xiuli.pan at 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 at linux.intel.com>
>>    *         Keyon Jie <yang.jie at linux.intel.com>
>>    *         Rander Wang <rander.wang at intel.com>
>> + *         Xiuli Pan <xiuli.pan at 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 at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/sound-open-firmware



More information about the Sound-open-firmware mailing list