Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

firmware: cs_dsp: mock_bin: Pass offset32 to cs_dsp_mock_bin_add_raw_block()

Add an argument to cs_dsp_mock_bin_add_raw_block() to pass a 32-bit
offset, and change the type of the existing offset argument to u16.

The cs_dsp_test_bin_error.c test uses cs_dsp_mock_bin_add_raw_block()
so it needs corresponding updates to pass 0 as the 32-bit offset.

Version 1 and 2 of the bin file format had a 16-bit offset on blocks
and the sample rate field of the blocks was not used. Version 3 adds
new block types that change the old sample rate field to be a 32-bit
offset with the old offset currently unused.

cs_dsp_mock_bin_add_raw_block() doesn't attempt to do any magic - its
purpose is to create a raw block exactly as specified by the calling
test code. So the test case can pass a value for both offset fields.

Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Link: https://patch.msgid.link/20251231172711.450024-5-rf@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Richard Fitzgerald and committed by
Mark Brown
9e6f4c5b a01816ed

+14 -12
+6 -4
drivers/firmware/cirrus/test/cs_dsp_mock_bin.c
··· 56 56 * @alg_id: Algorithm ID. 57 57 * @alg_ver: Algorithm version. 58 58 * @type: Type of the block. 59 - * @offset: Offset. 59 + * @offset: 16-bit offset. 60 + * @offset32: 32-bit offset (sample rate on V1 and V2 file formats). 60 61 * @payload_data: Pointer to buffer containing the payload data. 61 62 * @payload_len_bytes: Length of payload data in bytes. 62 63 */ 63 64 void cs_dsp_mock_bin_add_raw_block(struct cs_dsp_mock_bin_builder *builder, 64 65 unsigned int alg_id, unsigned int alg_ver, 65 - int type, unsigned int offset, 66 + int type, u16 offset, u32 offset32, 66 67 const void *payload_data, size_t payload_len_bytes) 67 68 { 68 69 struct wmfw_coeff_item *item; ··· 76 75 item = builder->write_p; 77 76 78 77 item->offset = cpu_to_le16(offset); 78 + item->offset32 = cpu_to_le32(offset32); 79 79 item->type = cpu_to_le16(type); 80 80 item->id = cpu_to_le32(alg_id); 81 81 item->ver = cpu_to_le32(alg_ver << 8); ··· 106 104 info = tmp; 107 105 } 108 106 109 - cs_dsp_mock_bin_add_raw_block(builder, 0, 0, WMFW_INFO_TEXT, 0, info, info_len); 107 + cs_dsp_mock_bin_add_raw_block(builder, 0, 0, WMFW_INFO_TEXT, 0, 0, info, info_len); 110 108 kunit_kfree(builder->test_priv->test, tmp); 111 109 } 112 110 ··· 158 156 KUNIT_ASSERT_EQ(builder->test_priv->test, payload_len_bytes % 4, 0); 159 157 160 158 cs_dsp_mock_bin_add_raw_block(builder, alg_id, alg_ver, 161 - mem_region, reg_addr_offset, 159 + mem_region, (u16)reg_addr_offset, 0, 162 160 payload_data, payload_len_bytes); 163 161 } 164 162 EXPORT_SYMBOL_NS_GPL(cs_dsp_mock_bin_add_patch, "FW_CS_DSP_KUNIT_TEST_UTILS");
+7 -7
drivers/firmware/cirrus/test/cs_dsp_test_bin_error.c
··· 66 66 cs_dsp_mock_bin_add_raw_block(local->bin_builder, 67 67 cs_dsp_bin_err_test_mock_algs[0].id, 68 68 cs_dsp_bin_err_test_mock_algs[0].ver, 69 - 0xf5, 0, 69 + 0xf5, 0, 0, 70 70 random_data, sizeof(random_data)); 71 71 cs_dsp_mock_bin_add_raw_block(local->bin_builder, 72 72 cs_dsp_bin_err_test_mock_algs[0].id, 73 73 cs_dsp_bin_err_test_mock_algs[0].ver, 74 - 0xf500, 0, 74 + 0xf500, 0, 0, 75 75 random_data, sizeof(random_data)); 76 76 cs_dsp_mock_bin_add_raw_block(local->bin_builder, 77 77 cs_dsp_bin_err_test_mock_algs[0].id, 78 78 cs_dsp_bin_err_test_mock_algs[0].ver, 79 - 0xc300, 0, 79 + 0xc300, 0, 0, 80 80 random_data, sizeof(random_data)); 81 81 82 82 /* Add a single payload to be written to DSP memory */ 83 83 cs_dsp_mock_bin_add_raw_block(local->bin_builder, 84 84 cs_dsp_bin_err_test_mock_algs[0].id, 85 85 cs_dsp_bin_err_test_mock_algs[0].ver, 86 - WMFW_ADSP2_YM, 0, 86 + WMFW_ADSP2_YM, 0, 0, 87 87 payload_data, payload_size_bytes); 88 88 89 89 bin = cs_dsp_mock_bin_get_firmware(local->bin_builder); ··· 277 277 cs_dsp_mock_bin_add_raw_block(local->bin_builder, 278 278 cs_dsp_bin_err_test_mock_algs[0].id, 279 279 cs_dsp_bin_err_test_mock_algs[0].ver, 280 - param->block_type, 0, 280 + param->block_type, 0, 0, 281 281 NULL, 0); 282 282 283 283 bin = cs_dsp_mock_bin_get_firmware(local->bin_builder); ··· 309 309 cs_dsp_mock_bin_add_raw_block(local->bin_builder, 310 310 cs_dsp_bin_err_test_mock_algs[0].id, 311 311 cs_dsp_bin_err_test_mock_algs[0].ver, 312 - param->block_type, 0, 312 + param->block_type, 0, 0, 313 313 payload, sizeof(payload)); 314 314 315 315 bin = cs_dsp_mock_bin_get_firmware(local->bin_builder); ··· 341 341 cs_dsp_mock_bin_add_raw_block(local->bin_builder, 342 342 cs_dsp_bin_err_test_mock_algs[0].id, 343 343 cs_dsp_bin_err_test_mock_algs[0].ver, 344 - param->block_type, 0, 344 + param->block_type, 0, 0, 345 345 &payload, sizeof(payload)); 346 346 347 347 bin = cs_dsp_mock_bin_get_firmware(local->bin_builder);
+1 -1
include/linux/firmware/cirrus/cs_dsp_test_utils.h
··· 126 126 unsigned int fw_version); 127 127 void cs_dsp_mock_bin_add_raw_block(struct cs_dsp_mock_bin_builder *builder, 128 128 unsigned int alg_id, unsigned int alg_ver, 129 - int type, unsigned int offset, 129 + int type, u16 offset, u32 offset32, 130 130 const void *payload_data, size_t payload_len_bytes); 131 131 void cs_dsp_mock_bin_add_info(struct cs_dsp_mock_bin_builder *builder, 132 132 const char *info);