Skip to content

[BUG][IPC4] wrong 24bit variant selected #4383

@kv2019i

Description

@kv2019i

IPC4 interface allows to specify two variants of 24bit sample encoding, SOF_IPC4_MSB_INTEGER and SOF_IPC4_LSB_INTEGER.

Currently driver does not set this field explicitly, so it is set as 0 (MSB_INTEGER). This is however not correct as

  • valid_bits=24, bit_depth=32, MSB_INTEGER -> SNDRV_PCM_FMTBIT_S32_LE (msbits=24)
  • valid_bits=24 ,bit_depth=32, LSB_INTEGER -> SNDRV_PCM_FMTBIT_S24_LE
    For reference, the third variant in ALSA for 24bti sampoles
  • valid_bits=24, bit_depth=24, SNDRV_PCM_FMTBIT_S24_3LE

The documentation is also wrong in kernel header.h

This has not been noticed as currnet SOF FW for IPC4 behaves as SOF IPC3 used to behave (like LSB_INTEGER=1), but this needs to be fixed.

Metadata

Metadata

Assignees

Labels

MTLApplies to Meteor Lake platform.P2Critical bugs or normal features

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions