[Sound-open-firmware] [PATCH] configure.ac: add CONFIG_HOST_PTABLE flag for platforms which need handle it

Liam Girdwood liam.r.girdwood at linux.intel.com
Wed Dec 6 08:20:29 CET 2017


On Wed, 2017-12-06 at 15:05 +0800, Keyon Jie wrote:
> We only need handle host page tables on platforms that we
> program DMA host buffer(addr/size) inside firmware, for
> other platforms, host driver will program these settings
> and won't pass in page tables.
> 
> So here add frag CONFIG_HOST_PTABLE to configure this for
> different platforms, on Baytrail, Cherrytrail, we need
> CONFIG_HOST_PTABLE to be selected.
> 
> Signed-off-by: Keyon Jie <yang.jie at linux.intel.com>
> ---
>  configure.ac        | 2 ++
>  src/ipc/intel-ipc.c | 6 ++++++
>  2 files changed, 8 insertions(+)
> 
> diff --git a/configure.ac b/configure.ac
> index 093d0b4..e437d06 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -82,6 +82,7 @@ case "$with_platform" in
>  
>  	AC_DEFINE([CONFIG_BAYTRAIL], [1], [Configure for Baytrail])
>  	AC_DEFINE([CONFIG_DMA_TRACE], [1], [Configure DMA trace])
> +	AC_DEFINE([CONFIG_HOST_PTABLE], [1], [Configure handling
> host page table])
>      ;;
>      cherrytrail*)
>  
> @@ -99,6 +100,7 @@ case "$with_platform" in
>  
>  	AC_DEFINE([CONFIG_CHERRYTRAIL], [1], [Configure for
> Cherrytrail])
>  	AC_DEFINE([CONFIG_DMA_TRACE], [1], [Configure DMA trace])
> +	AC_DEFINE([CONFIG_HOST_PTABLE], [1], [Configure handling
> host page table])
>      ;;
>      *)
>          AC_MSG_ERROR([Host platform not specified])


Best to do this outside switch() with AM_CONDITIONAL

AM_CONDITIONAL(BUILD_BLAH,  test "$FW_NAME" = "byt" -o "$FW_NAME" = "apl")

Look at "man test" for conditional logic details.

> diff --git a/src/ipc/intel-ipc.c b/src/ipc/intel-ipc.c
> index 4c310b6..e39951a 100644
> --- a/src/ipc/intel-ipc.c
> +++ b/src/ipc/intel-ipc.c
> @@ -82,6 +82,7 @@ static inline struct sof_ipc_hdr
> *mailbox_validate(void)
>  	return hdr;
>  }
>  
> +#ifdef CONFIG_HOST_PTABLE
>  static void dma_complete(void *data, uint32_t type, struct
> dma_sg_elem *next)
>  {
>  	struct intel_ipc_data *iipc = (struct intel_ipc_data *)data;
> @@ -219,6 +220,7 @@ static int parse_page_descriptors(struct
> intel_ipc_data *iipc,
>  
>  	return 0;
>  }
> +#endif
>  
>  /*
>   * Stream IPC Operations.
> @@ -227,7 +229,9 @@ static int parse_page_descriptors(struct
> intel_ipc_data *iipc,
>  /* allocate a new stream */
>  static int ipc_stream_pcm_params(uint32_t stream)
>  {
> +#ifdef CONFIG_HOST_PTABLE
>  	struct intel_ipc_data *iipc = ipc_get_drvdata(_ipc);
> +#endif
>  	struct sof_ipc_pcm_params *pcm_params = _ipc->comp_data;
>  	struct sof_ipc_pcm_params_reply reply;
>  	struct ipc_comp_dev *pcm_dev;
> @@ -255,6 +259,7 @@ static int ipc_stream_pcm_params(uint32_t stream)
>  	cd = pcm_dev->cd;
>  	cd->params = pcm_params->params;
>  
> +#ifdef CONFIG_HOST_PTABLE
>  	/* use DMA to read in compressed page table ringbuffer from
> host */
>  	err = get_page_descriptors(iipc, &pcm_params-
> >params.buffer);
>  	if (err < 0) {
> @@ -269,6 +274,7 @@ static int ipc_stream_pcm_params(uint32_t stream)
>  		trace_ipc_error("eAP");
>  		goto error;
>  	}
> +#endif
>  
>  	/* configure pipeline audio params */
>  	err = pipeline_params(pcm_dev->cd->pipeline, pcm_dev->cd,
> pcm_params);


More information about the Sound-open-firmware mailing list