[Sound-open-firmware] [PATCH v2] cnl: core: Add support for xcc
Pierre-Louis Bossart
pierre-louis.bossart at linux.intel.com
Fri Mar 30 16:21:52 CEST 2018
On 3/30/18 8:45 AM, Liam Girdwood wrote:
> xcc has more strict rules than gcc:
> - Add missing sections to linker scripts
> - Fix compile warnings
> - Extend memory enabling timeout to infinite (too small delay for xcc)
>
> Signed-off-by: Tomasz Lauda <tomasz.lauda at linux.intel.com>
>
> # Conflicts:
> # src/platform/apollolake/platform.c
> # src/platform/cannonlake/platform.c
looks like the merge didn't work too well or there was a missing patch
from the exception handling on some other branch?
> ---
> rimage/manifest.c | 9 +-
> rimage/manifest.h | 3 +
> src/arch/xtensa/boot_loader.c | 11 +--
> .../apollolake/include/platform/platform.h | 2 +-
> src/platform/apollolake/platform.c | 98 +++++++++++-----------
> src/platform/baytrail/platform.c | 84 ++++++++++---------
> src/platform/cannonlake/boot_ldr.x.in | 7 +-
> src/platform/cannonlake/cannonlake.x.in | 49 +++++------
> .../cannonlake/include/platform/platform.h | 2 +-
> src/platform/cannonlake/platform.c | 98 +++++++++++-----------
> src/platform/haswell/platform.c | 84 ++++++++++---------
> 11 files changed, 230 insertions(+), 217 deletions(-)
>
> diff --git a/rimage/manifest.c b/rimage/manifest.c
> index 243c194f..f3f85600 100644
> --- a/rimage/manifest.c
> +++ b/rimage/manifest.c
> @@ -211,11 +211,18 @@ static int man_get_module_manifest(struct image *image, struct module *module,
> section = &module->section[man_section_idx];
>
> /* load in manifest data */
> - ret = fseek(module->fd, section->sh_offset, SEEK_SET);
> + /* module built using xcc has preceding bytes */
> + if (section->sh_size > sizeof(sof_mod))
> + ret = fseek(module->fd,
> + section->sh_offset + XCC_MOD_OFFSET, SEEK_SET);
> + else
> + ret = fseek(module->fd, section->sh_offset, SEEK_SET);
> +
> if (ret < 0) {
> fprintf(stderr, "error: can't seek to section %d\n", ret);
> return ret;
> }
> +
> count = fread(&sof_mod, 1, sizeof(sof_mod), module->fd);
> if (count != sizeof(sof_mod)) {
> fprintf(stderr, "error: can't read section %d\n", -errno);
> diff --git a/rimage/manifest.h b/rimage/manifest.h
> index ca951321..8d1d3d2c 100644
> --- a/rimage/manifest.h
> +++ b/rimage/manifest.h
> @@ -22,6 +22,9 @@
>
> #define MAN_PAGE_SIZE 4096
>
> +/* start offset for modules built using xcc */
> +#define XCC_MOD_OFFSET 0x8
> +
> /* start offset for base FW module */
> #define FILE_TEXT_OFFSET 0x8000
>
> diff --git a/src/arch/xtensa/boot_loader.c b/src/arch/xtensa/boot_loader.c
> index 862db458..05d6bf90 100644
> --- a/src/arch/xtensa/boot_loader.c
> +++ b/src/arch/xtensa/boot_loader.c
> @@ -121,7 +121,7 @@ static void parse_manifest(void)
> /* power on HPSRAM */
> static int32_t hp_sram_init(void)
> {
> - int delay_count = 256, timeout = 256;
> + int delay_count = 256;
> uint32_t status;
>
> shim_write(SHIM_LDOCTL, SHIM_HPMEM_POWER_ON);
> @@ -141,24 +141,15 @@ static int32_t hp_sram_init(void)
> status = io_reg_read(HSPGISTS0);
> while (status) {
> idelay(delay_count);
> -
> status = io_reg_read(HSPGISTS0);
> - if (timeout-- < 0) {
> - return -EIO;
> - }
> }
>
> /* query the power status of second part of HP memory */
> /* and do as above code */
> - timeout = 256;
> status = io_reg_read(HSPGISTS1);
> while (status) {
> idelay(delay_count);
> -
> status = io_reg_read(HSPGISTS1);
> - if (timeout-- < 0) {
> - return -EIO;
> - }
> }
>
> /* add some delay before touch power register */
> diff --git a/src/platform/apollolake/include/platform/platform.h b/src/platform/apollolake/include/platform/platform.h
> index 86172bfa..3a2d40bc 100644
> --- a/src/platform/apollolake/include/platform/platform.h
> +++ b/src/platform/apollolake/include/platform/platform.h
> @@ -125,7 +125,7 @@ struct reef;
> #define platform_trace_point(__x) \
> sw_reg_write(SRAM_REG_FW_TRACEP, __x)
>
> -struct timer *platform_timer;
> +extern struct timer *platform_timer;
>
> /*
> * APIs declared here are defined for every platform and IPC mechanism.
> diff --git a/src/platform/apollolake/platform.c b/src/platform/apollolake/platform.c
> index 2b41028b..ce408da6 100644
> --- a/src/platform/apollolake/platform.c
> +++ b/src/platform/apollolake/platform.c
> @@ -78,54 +78,56 @@ static const struct sof_ipc_window sram_window = {
> .type = SOF_IPC_EXT_WINDOW,
> },
> .num_windows = NUM_APL_WINDOWS,
> - .window[0] = {
> - .type = SOF_IPC_REGION_REGS,
> - .id = 0, /* map to host window 0 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_SW_REG_SIZE,
> - .offset = 0,
> - },
> - .window[1] = {
> - .type = SOF_IPC_REGION_UPBOX,
> - .id = 0, /* map to host window 0 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_DSPBOX_SIZE,
> - .offset = MAILBOX_SW_REG_SIZE,
> - },
> - .window[2] = {
> - .type = SOF_IPC_REGION_DOWNBOX,
> - .id = 1, /* map to host window 1 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_HOSTBOX_SIZE,
> - .offset = 0,
> - },
> - .window[3] = {
> - .type = SOF_IPC_REGION_DEBUG,
> - .id = 2, /* map to host window 2 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_DEBUG_SIZE,
> - .offset = 0,
> - },
> - .window[4] = {
> - .type = SOF_IPC_REGION_EXCEPTION,
> - .id = 2, /* map to host window 2 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_EXCEPTION_SIZE,
> - .offset = MAILBOX_EXCEPTION_OFFSET,
> - },
> - .window[5] = {
> - .type = SOF_IPC_REGION_STREAM,
> - .id = 2, /* map to host window 2 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_STREAM_SIZE,
> - .offset = MAILBOX_STREAM_OFFSET,
> - },
> - .window[6] = {
> - .type = SOF_IPC_REGION_TRACE,
> - .id = 3, /* map to host window 3 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_TRACE_SIZE,
> - .offset = 0,
> + .window = {
> + {
> + .type = SOF_IPC_REGION_REGS,
> + .id = 0, /* map to host window 0 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_SW_REG_SIZE,
> + .offset = 0,
> + },
> + {
> + .type = SOF_IPC_REGION_UPBOX,
> + .id = 0, /* map to host window 0 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_DSPBOX_SIZE,
> + .offset = MAILBOX_SW_REG_SIZE,
> + },
> + {
> + .type = SOF_IPC_REGION_DOWNBOX,
> + .id = 1, /* map to host window 1 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_HOSTBOX_SIZE,
> + .offset = 0,
> + },
> + {
> + .type = SOF_IPC_REGION_DEBUG,
> + .id = 2, /* map to host window 2 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_EXCEPTION_SIZE + MAILBOX_DEBUG_SIZE,
> + .offset = 0,
> + },
> + {
> + .type = SOF_IPC_REGION_EXCEPTION,
> + .id = 2, /* map to host window 2 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_EXCEPTION_SIZE,
> + .offset = MAILBOX_EXCEPTION_OFFSET,
> + },
> + {
> + .type = SOF_IPC_REGION_STREAM,
> + .id = 2, /* map to host window 2 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_STREAM_SIZE,
> + .offset = MAILBOX_STREAM_OFFSET,
> + },
> + {
> + .type = SOF_IPC_REGION_TRACE,
> + .id = 3, /* map to host window 3 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_TRACE_SIZE,
> + .offset = 0,
> + },
> },
> };
>
> diff --git a/src/platform/baytrail/platform.c b/src/platform/baytrail/platform.c
> index 8fa03a75..1917054e 100644
> --- a/src/platform/baytrail/platform.c
> +++ b/src/platform/baytrail/platform.c
> @@ -79,47 +79,49 @@ static const struct sof_ipc_window sram_window = {
> .type = SOF_IPC_EXT_WINDOW,
> },
> .num_windows = NUM_BYT_WINDOWS,
> - .window[0] = {
> - .type = SOF_IPC_REGION_UPBOX,
> - .id = 0, /* map to host window 0 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_DSPBOX_SIZE,
> - .offset = MAILBOX_DSPBOX_OFFSET,
> - },
> - .window[1] = {
> - .type = SOF_IPC_REGION_DOWNBOX,
> - .id = 0, /* map to host window 0 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_HOSTBOX_SIZE,
> - .offset = MAILBOX_HOSTBOX_OFFSET,
> - },
> - .window[2] = {
> - .type = SOF_IPC_REGION_DEBUG,
> - .id = 0, /* map to host window 0 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_DEBUG_SIZE,
> - .offset = MAILBOX_DEBUG_OFFSET,
> - },
> - .window[3] = {
> - .type = SOF_IPC_REGION_TRACE,
> - .id = 0, /* map to host window 0 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_TRACE_SIZE,
> - .offset = MAILBOX_TRACE_OFFSET,
> - },
> - .window[4] = {
> - .type = SOF_IPC_REGION_STREAM,
> - .id = 0, /* map to host window 0 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_STREAM_SIZE,
> - .offset = MAILBOX_STREAM_OFFSET,
> - },
> - .window[5] = {
> - .type = SOF_IPC_REGION_EXCEPTION,
> - .id = 0, /* map to host window 0 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_EXCEPTION_SIZE,
> - .offset = MAILBOX_EXCEPTION_OFFSET,
> + .window = {
> + {
> + .type = SOF_IPC_REGION_UPBOX,
> + .id = 0, /* map to host window 0 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_DSPBOX_SIZE,
> + .offset = MAILBOX_DSPBOX_OFFSET,
> + },
> + {
> + .type = SOF_IPC_REGION_DOWNBOX,
> + .id = 0, /* map to host window 0 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_HOSTBOX_SIZE,
> + .offset = MAILBOX_HOSTBOX_OFFSET,
> + },
> + {
> + .type = SOF_IPC_REGION_DEBUG,
> + .id = 0, /* map to host window 0 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_DEBUG_SIZE,
> + .offset = MAILBOX_DEBUG_OFFSET,
> + },
> + {
> + .type = SOF_IPC_REGION_TRACE,
> + .id = 0, /* map to host window 0 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_TRACE_SIZE,
> + .offset = MAILBOX_TRACE_OFFSET,
> + },
> + {
> + .type = SOF_IPC_REGION_STREAM,
> + .id = 0, /* map to host window 0 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_STREAM_SIZE,
> + .offset = MAILBOX_STREAM_OFFSET,
> + },
> + {
> + .type = SOF_IPC_REGION_EXCEPTION,
> + .id = 0, /* map to host window 0 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_EXCEPTION_SIZE,
> + .offset = MAILBOX_EXCEPTION_OFFSET,
> + },
> },
> };
>
> diff --git a/src/platform/cannonlake/boot_ldr.x.in b/src/platform/cannonlake/boot_ldr.x.in
> index a42fd897..b85bfab2 100644
> --- a/src/platform/cannonlake/boot_ldr.x.in
> +++ b/src/platform/cannonlake/boot_ldr.x.in
> @@ -21,7 +21,7 @@ MEMORY
> org = IMR_BOOT_LDR_LIT_BASE,
> len = IMR_BOOT_LDR_LIT_SIZE
> reef_text :
> - org = IMR_BOOT_LDR_TEXT_BASE,
> + org = IMR_BOOT_LDR_TEXT_BASE,
> len = IMR_BOOT_LDR_TEXT_SIZE,
> vector_base_text :
> org = XCHAL_VECBASE_RESET_PADDR,
> @@ -81,7 +81,7 @@ MEMORY
> org = XCHAL_DOUBLEEXC_VECTOR_PADDR,
> len = REEF_MEM_VECT_TEXT_SIZE
> reef_data :
> - org = IMR_BOOT_LDR_DATA_BASE,
> + org = IMR_BOOT_LDR_DATA_BASE,
> len = IMR_BOOT_LDR_DATA_SIZE
> reef_bss_data :
> org = IMR_BOOT_LDR_BSS_BASE,
> @@ -148,6 +148,9 @@ SECTIONS
> *(.fini.literal)
> KEEP(*(.fini))
> *(.gnu.version)
> + KEEP (*(.ResetVector.text))
> + KEEP (*(.ResetHandler.text))
> + KEEP (*(.MemoryExceptionVector.text))
> _text_end = ABSOLUTE(.);
> _etext = .;
> } >reef_text :reef_text_phdr
> diff --git a/src/platform/cannonlake/cannonlake.x.in b/src/platform/cannonlake/cannonlake.x.in
> index 47acd5e0..2a52d674 100644
> --- a/src/platform/cannonlake/cannonlake.x.in
> +++ b/src/platform/cannonlake/cannonlake.x.in
> @@ -21,79 +21,79 @@ MEMORY
> org = XCHAL_RESET_VECTOR0_PADDR + REEF_MEM_RESET_TEXT_SIZE,
> len = REEF_MEM_RESET_LIT_SIZE
> vector_memory_lit :
> - org = XCHAL_MEMERROR_VECTOR_PADDR + REEF_MEM_ERROR_LIT_SIZE,
> + org = XCHAL_MEMERROR_VECTOR_PADDR + REEF_MEM_ERROR_LIT_SIZE,
> len = REEF_MEM_ERROR_LIT_SIZE
> vector_memory_text :
> - org = XCHAL_MEMERROR_VECTOR_PADDR,
> + org = XCHAL_MEMERROR_VECTOR_PADDR,
> len = REEF_MEM_ERROR_TEXT_SIZE
> vector_base_text :
> - org = XCHAL_VECBASE_RESET_PADDR,
> + org = XCHAL_VECBASE_RESET_PADDR,
> len = REEF_MEM_VECBASE_LIT_SIZE
> vector_int2_lit :
> - org = XCHAL_INTLEVEL2_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
> + org = XCHAL_INTLEVEL2_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
> len = REEF_MEM_VECT_LIT_SIZE
> vector_int2_text :
> org = XCHAL_INTLEVEL2_VECTOR_PADDR,
> len = REEF_MEM_VECT_TEXT_SIZE
> vector_int3_lit :
> - org = XCHAL_INTLEVEL3_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
> + org = XCHAL_INTLEVEL3_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
> len = REEF_MEM_VECT_LIT_SIZE
> vector_int3_text :
> - org = XCHAL_INTLEVEL3_VECTOR_PADDR,
> + org = XCHAL_INTLEVEL3_VECTOR_PADDR,
> len = REEF_MEM_VECT_TEXT_SIZE
> vector_int4_lit :
> - org = XCHAL_INTLEVEL4_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
> + org = XCHAL_INTLEVEL4_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
> len = REEF_MEM_VECT_LIT_SIZE
> vector_int4_text :
> - org = XCHAL_INTLEVEL4_VECTOR_PADDR,
> + org = XCHAL_INTLEVEL4_VECTOR_PADDR,
> len = REEF_MEM_VECT_TEXT_SIZE
> vector_int5_lit :
> - org = XCHAL_INTLEVEL5_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
> + org = XCHAL_INTLEVEL5_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
> len = REEF_MEM_VECT_LIT_SIZE
> vector_int5_text :
> - org = XCHAL_INTLEVEL5_VECTOR_PADDR,
> + org = XCHAL_INTLEVEL5_VECTOR_PADDR,
> len = REEF_MEM_VECT_TEXT_SIZE
> vector_int6_lit :
> - org = XCHAL_INTLEVEL6_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
> + org = XCHAL_INTLEVEL6_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
> len = REEF_MEM_VECT_LIT_SIZE
> vector_int6_text :
> - org = XCHAL_INTLEVEL6_VECTOR_PADDR,
> + org = XCHAL_INTLEVEL6_VECTOR_PADDR,
> len = REEF_MEM_VECT_TEXT_SIZE
> vector_int7_lit :
> - org = XCHAL_INTLEVEL7_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
> + org = XCHAL_INTLEVEL7_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
> len = REEF_MEM_VECT_LIT_SIZE
> vector_int7_text :
> - org = XCHAL_INTLEVEL7_VECTOR_PADDR,
> + org = XCHAL_INTLEVEL7_VECTOR_PADDR,
> len = REEF_MEM_VECT_TEXT_SIZE
> vector_kernel_lit :
> - org = XCHAL_KERNEL_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
> + org = XCHAL_KERNEL_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
> len = REEF_MEM_VECT_LIT_SIZE
> vector_kernel_text :
> - org = XCHAL_KERNEL_VECTOR_PADDR,
> + org = XCHAL_KERNEL_VECTOR_PADDR,
> len = REEF_MEM_VECT_TEXT_SIZE
> vector_user_lit :
> - org = XCHAL_USER_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
> + org = XCHAL_USER_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
> len = REEF_MEM_VECT_LIT_SIZE
> vector_user_text :
> - org = XCHAL_USER_VECTOR_PADDR,
> + org = XCHAL_USER_VECTOR_PADDR,
> len = REEF_MEM_VECT_TEXT_SIZE
> vector_double_lit :
> - org = XCHAL_DOUBLEEXC_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
> + org = XCHAL_DOUBLEEXC_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
> len = REEF_MEM_VECT_LIT_SIZE
> vector_double_text :
> - org = XCHAL_DOUBLEEXC_VECTOR_PADDR,
> + org = XCHAL_DOUBLEEXC_VECTOR_PADDR,
> len = REEF_MEM_VECT_TEXT_SIZE
> reef_text_start :
> - org = REEF_TEXT_START,
> + org = REEF_TEXT_START,
> len = REEF_TEXT_START_SIZE,
> reef_text :
> - org = REEF_TEXT_BASE,
> + org = REEF_TEXT_BASE,
> len = REEF_TEXT_SIZE,
> reef_data :
> - org = REEF_TEXT_BASE + REEF_TEXT_SIZE,
> + org = REEF_TEXT_BASE + REEF_TEXT_SIZE,
> len = REEF_DATA_SIZE
> reef_bss_data :
> - org = REEF_TEXT_BASE + REEF_TEXT_SIZE + REEF_DATA_SIZE,
> + org = REEF_TEXT_BASE + REEF_TEXT_SIZE + REEF_DATA_SIZE,
> len = REEF_BSS_DATA_SIZE
> system_heap :
> org = HEAP_SYSTEM_BASE,
> @@ -350,6 +350,7 @@ SECTIONS
> *(.fini.literal)
> KEEP(*(.fini))
> *(.gnu.version)
> + KEEP (*(.ResetHandler.text))
> _text_end = ABSOLUTE(.);
> _etext = .;
> } >reef_text :reef_text_phdr
> diff --git a/src/platform/cannonlake/include/platform/platform.h b/src/platform/cannonlake/include/platform/platform.h
> index 764ef76a..44345bc3 100644
> --- a/src/platform/cannonlake/include/platform/platform.h
> +++ b/src/platform/cannonlake/include/platform/platform.h
> @@ -120,7 +120,7 @@ struct reef;
> #define platform_trace_point(__x) \
> sw_reg_write(SRAM_REG_FW_TRACEP, __x)
>
> -struct timer *platform_timer;
> +extern struct timer *platform_timer;
>
> /*
> * APIs declared here are defined for every platform and IPC mechanism.
> diff --git a/src/platform/cannonlake/platform.c b/src/platform/cannonlake/platform.c
> index 1f1fd2fc..a0198e5b 100644
> --- a/src/platform/cannonlake/platform.c
> +++ b/src/platform/cannonlake/platform.c
> @@ -80,54 +80,56 @@ static const struct sof_ipc_window sram_window = {
> .type = SOF_IPC_EXT_WINDOW,
> },
> .num_windows = NUM_CNL_WINDOWS,
> - .window[0] = {
> - .type = SOF_IPC_REGION_REGS,
> - .id = 0, /* map to host window 0 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_SW_REG_SIZE,
> - .offset = 0,
> - },
> - .window[1] = {
> - .type = SOF_IPC_REGION_UPBOX,
> - .id = 0, /* map to host window 0 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_DSPBOX_SIZE,
> - .offset = MAILBOX_SW_REG_SIZE,
> - },
> - .window[2] = {
> - .type = SOF_IPC_REGION_DOWNBOX,
> - .id = 1, /* map to host window 1 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_HOSTBOX_SIZE,
> - .offset = 0,
> - },
> - .window[3] = {
> - .type = SOF_IPC_REGION_DEBUG,
> - .id = 2, /* map to host window 2 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_DEBUG_SIZE,
> - .offset = 0,
> - },
> - .window[4] = {
> - .type = SOF_IPC_REGION_EXCEPTION,
> - .id = 2, /* map to host window 2 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_EXCEPTION_SIZE,
> - .offset = MAILBOX_EXCEPTION_OFFSET,
> - },
> - .window[5] = {
> - .type = SOF_IPC_REGION_STREAM,
> - .id = 2, /* map to host window 2 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_STREAM_SIZE,
> - .offset = MAILBOX_STREAM_OFFSET,
> - },
> - .window[6] = {
> - .type = SOF_IPC_REGION_TRACE,
> - .id = 3, /* map to host window 3 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_TRACE_SIZE,
> - .offset = 0,
> + .window = {
> + {
> + .type = SOF_IPC_REGION_REGS,
> + .id = 0, /* map to host window 0 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_SW_REG_SIZE,
> + .offset = 0,
> + },
> + {
> + .type = SOF_IPC_REGION_UPBOX,
> + .id = 0, /* map to host window 0 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_DSPBOX_SIZE,
> + .offset = MAILBOX_SW_REG_SIZE,
> + },
> + {
> + .type = SOF_IPC_REGION_DOWNBOX,
> + .id = 1, /* map to host window 1 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_HOSTBOX_SIZE,
> + .offset = 0,
> + },
> + {
> + .type = SOF_IPC_REGION_DEBUG,
> + .id = 2, /* map to host window 2 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_EXCEPTION_SIZE + MAILBOX_DEBUG_SIZE,
> + .offset = 0,
> + },
> + {
> + .type = SOF_IPC_REGION_EXCEPTION,
> + .id = 2, /* map to host window 2 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_EXCEPTION_SIZE,
> + .offset = MAILBOX_EXCEPTION_OFFSET,
> + },
> + {
> + .type = SOF_IPC_REGION_STREAM,
> + .id = 2, /* map to host window 2 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_STREAM_SIZE,
> + .offset = MAILBOX_STREAM_OFFSET,
> + },
> + {
> + .type = SOF_IPC_REGION_TRACE,
> + .id = 3, /* map to host window 3 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_TRACE_SIZE,
> + .offset = 0,
> + },
> },
> };
>
> diff --git a/src/platform/haswell/platform.c b/src/platform/haswell/platform.c
> index e9270ac1..30e8e5d7 100644
> --- a/src/platform/haswell/platform.c
> +++ b/src/platform/haswell/platform.c
> @@ -78,47 +78,49 @@ static const struct sof_ipc_window sram_window = {
> .type = SOF_IPC_EXT_WINDOW,
> },
> .num_windows = NUM_HSW_WINDOWS,
> - .window[0] = {
> - .type = SOF_IPC_REGION_UPBOX,
> - .id = 0, /* map to host window 0 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_DSPBOX_SIZE,
> - .offset = MAILBOX_DSPBOX_OFFSET,
> - },
> - .window[1] = {
> - .type = SOF_IPC_REGION_DOWNBOX,
> - .id = 0, /* map to host window 0 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_HOSTBOX_SIZE,
> - .offset = MAILBOX_HOSTBOX_OFFSET,
> - },
> - .window[2] = {
> - .type = SOF_IPC_REGION_DEBUG,
> - .id = 0, /* map to host window 0 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_DEBUG_SIZE,
> - .offset = MAILBOX_DEBUG_OFFSET,
> - },
> - .window[3] = {
> - .type = SOF_IPC_REGION_TRACE,
> - .id = 0, /* map to host window 0 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_TRACE_SIZE,
> - .offset = MAILBOX_TRACE_OFFSET,
> - },
> - .window[4] = {
> - .type = SOF_IPC_REGION_STREAM,
> - .id = 0, /* map to host window 0 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_STREAM_SIZE,
> - .offset = MAILBOX_STREAM_OFFSET,
> - },
> - .window[5] = {
> - .type = SOF_IPC_REGION_EXCEPTION,
> - .id = 0, /* map to host window 0 */
> - .flags = 0, // TODO: set later
> - .size = MAILBOX_EXCEPTION_SIZE,
> - .offset = MAILBOX_EXCEPTION_OFFSET,
> + .window = {
> + {
> + .type = SOF_IPC_REGION_UPBOX,
> + .id = 0, /* map to host window 0 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_DSPBOX_SIZE,
> + .offset = MAILBOX_DSPBOX_OFFSET,
> + },
> + {
> + .type = SOF_IPC_REGION_DOWNBOX,
> + .id = 0, /* map to host window 0 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_HOSTBOX_SIZE,
> + .offset = MAILBOX_HOSTBOX_OFFSET,
> + },
> + {
> + .type = SOF_IPC_REGION_DEBUG,
> + .id = 0, /* map to host window 0 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_DEBUG_SIZE,
> + .offset = MAILBOX_DEBUG_OFFSET,
> + },
> + {
> + .type = SOF_IPC_REGION_TRACE,
> + .id = 0, /* map to host window 0 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_TRACE_SIZE,
> + .offset = MAILBOX_TRACE_OFFSET,
> + },
> + {
> + .type = SOF_IPC_REGION_STREAM,
> + .id = 0, /* map to host window 0 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_STREAM_SIZE,
> + .offset = MAILBOX_STREAM_OFFSET,
> + },
> + {
> + .type = SOF_IPC_REGION_EXCEPTION,
> + .id = 0, /* map to host window 0 */
> + .flags = 0, // TODO: set later
> + .size = MAILBOX_EXCEPTION_SIZE,
> + .offset = MAILBOX_EXCEPTION_OFFSET,
> + },
> },
> };
>
>
More information about the Sound-open-firmware
mailing list