Skip to content

Conversation

@iuliana-prodan
Copy link
Contributor

When building SOF, in Zephyr, as a sample application I got the following errors:

/zephyrproject/modules/audio/sof/src/audio/asrc/asrc_farrow.c
/zephyrproject/modules/audio/sof/src/audio/asrc/asrc_farrow.c:274:22: error: conflicting types for 'asrc_initialise'; have 'enum asrc_error_code(struct comp_dev *, struct asrc_farrow *, int,  int,  int,  enum asrc_io_format,  enum asrc_io_format,  enum asrc_buffer_mode,  int,  int,  enum asrc_control_mode,  enum asrc_operation_mode)'
  274 | enum asrc_error_code asrc_initialise(struct comp_dev *dev,
      |                      ^~~~~~~~~~~~~~~
In file included from /zephyrproject/modules/audio/sof/src/audio/asrc/asrc_farrow.c:16:
/zephyrproject/modules/audio/sof/src/include/sof/audio/asrc/asrc_farrow.h:271:22: note: previous declaration of 'asrc_initialise' with type 'enum asrc_error_code(struct comp_dev *, struct asrc_farrow *, int,  int32_t,  int32_t,  enum asrc_io_format,  enum asrc_io_format,  enum asrc_buffer_mode,  int,  int,  enum asrc_control_mode,  enum asrc_operation_mode)' {aka 'enum asrc_error_code(struct comp_dev *, struct asrc_farrow *, int,  long int,  long int,  enum asrc_io_format,  enum asrc_io_format,  enum asrc_buffer_mode,  int,  int,  enum asrc_control_mode,  enum asrc_operation_mode)'}
  271 | enum asrc_error_code asrc_initialise(struct comp_dev *dev,
      |                      ^~~~~~~~~~~~~~~
[83/212] Building C object CMakeFiles/sof.dir/src/audio/module_adapter/module_adapter.c.o
ninja: build stopped: subcommand failed.
/zephyrproject/modules/audio/sof/src/arch/xtensa/hal/atomics.c: In function '_xt_atomic_compare_exchange_4':
/zephyrproject/modules/audio/sof/src/arch/xtensa/hal/atomics.c:10:38: error: passing argument 1 of 'xthal_compare_and_set' from incompatible pointer type [-Werror=incompatible-pointer-types]
   10 |         return xthal_compare_and_set(address, test_value, set_value);
      |                                      ^~~~~~~
      |                                      |
      |                                      int32_t * {aka long int *}
In file included from /zephyrproject/modules/audio/sof/src/arch/xtensa/hal/atomics.c:4:
/zephyrproject/modules/audio/sof/src/arch/xtensa/include/xtensa/hal.h:387:45: note: expected 'int *' but argument is of type 'int32_t *' {aka 'long int *'}
  387 | extern int      xthal_compare_and_set( int *addr, int test_val, int compare_val );
      |                                        ~~~~~^~~~
cc1: all warnings being treated as errors

This PR fixes the above issues.

Update parameter type for asrc_initialise() to match those
from header file.

This fixes "error: conflicting types for 'asrc_initialise'".

Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com>
Update parameter type for _xt_atomic_compare_exchange_4()
to match xthal_compare_and_set() from xtensa/hal.h

This fixes "error: passing argument 1 of
'xthal_compare_and_set' from incompatible pointer type"

Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com>
int _xt_atomic_compare_exchange_4(int *address, int32_t test_value, int32_t set_value);

int _xt_atomic_compare_exchange_4(int32_t *address, int32_t test_value, int32_t set_value)
int _xt_atomic_compare_exchange_4(int *address, int32_t test_value, int32_t set_value)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

interesting, I don't see this file being built with Zephyr? And I don't see this function called anywhere. How are you building?

Copy link
Collaborator

@paulstelian97 paulstelian97 Apr 28, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The NXP config has select ATOMIC_OPERATIONS_BUILTIN.

The Intel config has select ATOMIC_OPERATIONS_BUILTIN if "$(ZEPHYR_TOOLCHAIN_VARIANT)" != "xcc" (note: probably should extend to also cover xt-clang?)

Files are in zephyr/soc/xtensa/{intel,nxp}_adsp/*/Kconfig.series

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

interesting, I don't see this file being built with Zephyr? And I don't see this function called anywhere. How are you building?

Directly from zephyr folder:
nxa06898@lsv15040:~/data/zephyrproject/zephyr$ west build -p always -b nxp_adsp_imx8m ../modules/audio/sof/ -- -DTOOLCHAIN=/opt/zephyr-sdk-0.15.2/xtensa-nxp_imx8m_adsp_zephyr-elf/bin/xtensa-nxp_imx8m_adsp_zephyr-elf -DINIT_CONFIG=imx8m_defconfig

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I only see atomics.c being built in src/arch/xtensa/hal/CMakeLists.txt and AFAIK that file isn't used in Zephyr builds, so I'm confused...

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

interesting, I don't see this file being built with Zephyr? And I don't see this function called anywhere. How are you building?

Directly from zephyr folder: nxa06898@lsv15040:~/data/zephyrproject/zephyr$ west build -p always -b nxp_adsp_imx8m ../modules/audio/sof/ -- -DTOOLCHAIN=/opt/zephyr-sdk-0.15.2/xtensa-nxp_imx8m_adsp_zephyr-elf/bin/xtensa-nxp_imx8m_adsp_zephyr-elf -DINIT_CONFIG=imx8m_defconfig

@iuliana-prodan this looks wrong to me. You should build modules/audio/sof/app, not modules/audio/sof

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, so it can use the correct CMakeFiles.txt and related files. Yeah makes sense, she was using the CMakeFiles.txt for Xtos within the Zephyr build.

The fix still felt sketchy.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@lyakh you're right! Compiling modules/audio/sof/app is fine, no warnings/errors thrown.
But, these fixes seems reasonable to me, since we need to have the same parameters in header and source.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants