]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
firmware: cs_dsp: mock_bin: Pass offset32 to cs_dsp_mock_bin_add_raw_block()
authorRichard Fitzgerald <rf@opensource.cirrus.com>
Wed, 31 Dec 2025 17:27:07 +0000 (17:27 +0000)
committerMark Brown <broonie@kernel.org>
Mon, 5 Jan 2026 13:18:27 +0000 (13:18 +0000)
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>
drivers/firmware/cirrus/test/cs_dsp_mock_bin.c
drivers/firmware/cirrus/test/cs_dsp_test_bin_error.c
include/linux/firmware/cirrus/cs_dsp_test_utils.h

index 3f8777ee4dc09b8e1efb7c45884ff5732d7afe32..bc6b8651259c65e60e0549c7e09d0e970e96c69e 100644 (file)
@@ -56,13 +56,14 @@ EXPORT_SYMBOL_NS_GPL(cs_dsp_mock_bin_get_firmware, "FW_CS_DSP_KUNIT_TEST_UTILS")
  * @alg_id:            Algorithm ID.
  * @alg_ver:           Algorithm version.
  * @type:              Type of the block.
- * @offset:            Offset.
+ * @offset:            16-bit offset.
+ * @offset32:          32-bit offset (sample rate on V1 and V2 file formats).
  * @payload_data:      Pointer to buffer containing the payload data.
  * @payload_len_bytes: Length of payload data in bytes.
  */
 void cs_dsp_mock_bin_add_raw_block(struct cs_dsp_mock_bin_builder *builder,
                                   unsigned int alg_id, unsigned int alg_ver,
-                                  int type, unsigned int offset,
+                                  int type, u16 offset, u32 offset32,
                                   const void *payload_data, size_t payload_len_bytes)
 {
        struct wmfw_coeff_item *item;
@@ -75,6 +76,7 @@ void cs_dsp_mock_bin_add_raw_block(struct cs_dsp_mock_bin_builder *builder,
        item = builder->write_p;
 
        item->offset = cpu_to_le16(offset);
+       item->offset32 = cpu_to_le32(offset32);
        item->type = cpu_to_le16(type);
        item->id = cpu_to_le32(alg_id);
        item->ver = cpu_to_le32(alg_ver << 8);
@@ -104,7 +106,7 @@ static void cs_dsp_mock_bin_add_name_or_info(struct cs_dsp_mock_bin_builder *bui
                info = tmp;
        }
 
-       cs_dsp_mock_bin_add_raw_block(builder, 0, 0, WMFW_INFO_TEXT, 0, info, info_len);
+       cs_dsp_mock_bin_add_raw_block(builder, 0, 0, WMFW_INFO_TEXT, 0, 0, info, info_len);
        kunit_kfree(builder->test_priv->test, tmp);
 }
 
@@ -156,7 +158,7 @@ void cs_dsp_mock_bin_add_patch(struct cs_dsp_mock_bin_builder *builder,
        KUNIT_ASSERT_EQ(builder->test_priv->test, payload_len_bytes % 4, 0);
 
        cs_dsp_mock_bin_add_raw_block(builder, alg_id, alg_ver,
-                                     mem_region, reg_addr_offset,
+                                     mem_region, (u16)reg_addr_offset, 0,
                                      payload_data, payload_len_bytes);
 }
 EXPORT_SYMBOL_NS_GPL(cs_dsp_mock_bin_add_patch, "FW_CS_DSP_KUNIT_TEST_UTILS");
index a7ec956d27249ec4abca50757f079d158aa5199a..fe0112dc3077722b918a22eb9b985a101f59a88f 100644 (file)
@@ -66,24 +66,24 @@ static void bin_load_with_unknown_blocks(struct kunit *test)
        cs_dsp_mock_bin_add_raw_block(local->bin_builder,
                                      cs_dsp_bin_err_test_mock_algs[0].id,
                                      cs_dsp_bin_err_test_mock_algs[0].ver,
-                                     0xf5, 0,
+                                     0xf5, 0, 0,
                                      random_data, sizeof(random_data));
        cs_dsp_mock_bin_add_raw_block(local->bin_builder,
                                      cs_dsp_bin_err_test_mock_algs[0].id,
                                      cs_dsp_bin_err_test_mock_algs[0].ver,
-                                     0xf500, 0,
+                                     0xf500, 0, 0,
                                      random_data, sizeof(random_data));
        cs_dsp_mock_bin_add_raw_block(local->bin_builder,
                                      cs_dsp_bin_err_test_mock_algs[0].id,
                                      cs_dsp_bin_err_test_mock_algs[0].ver,
-                                     0xc300, 0,
+                                     0xc300, 0, 0,
                                      random_data, sizeof(random_data));
 
        /* Add a single payload to be written to DSP memory */
        cs_dsp_mock_bin_add_raw_block(local->bin_builder,
                                      cs_dsp_bin_err_test_mock_algs[0].id,
                                      cs_dsp_bin_err_test_mock_algs[0].ver,
-                                     WMFW_ADSP2_YM, 0,
+                                     WMFW_ADSP2_YM, 0, 0,
                                      payload_data, payload_size_bytes);
 
        bin = cs_dsp_mock_bin_get_firmware(local->bin_builder);
@@ -277,7 +277,7 @@ static void bin_too_short_for_block_header(struct kunit *test)
        cs_dsp_mock_bin_add_raw_block(local->bin_builder,
                                      cs_dsp_bin_err_test_mock_algs[0].id,
                                      cs_dsp_bin_err_test_mock_algs[0].ver,
-                                     param->block_type, 0,
+                                     param->block_type, 0, 0,
                                      NULL, 0);
 
        bin = cs_dsp_mock_bin_get_firmware(local->bin_builder);
@@ -309,7 +309,7 @@ static void bin_too_short_for_block_payload(struct kunit *test)
        cs_dsp_mock_bin_add_raw_block(local->bin_builder,
                                      cs_dsp_bin_err_test_mock_algs[0].id,
                                      cs_dsp_bin_err_test_mock_algs[0].ver,
-                                     param->block_type, 0,
+                                     param->block_type, 0, 0,
                                      payload, sizeof(payload));
 
        bin = cs_dsp_mock_bin_get_firmware(local->bin_builder);
@@ -341,7 +341,7 @@ static void bin_block_payload_len_garbage(struct kunit *test)
        cs_dsp_mock_bin_add_raw_block(local->bin_builder,
                                      cs_dsp_bin_err_test_mock_algs[0].id,
                                      cs_dsp_bin_err_test_mock_algs[0].ver,
-                                     param->block_type, 0,
+                                     param->block_type, 0, 0,
                                      &payload, sizeof(payload));
 
        bin = cs_dsp_mock_bin_get_firmware(local->bin_builder);
index 1f97764fdfd7d5c8e29e9701b3cce6f6a8736eb3..877fa4a496ddf4094edfe1d4458e5e9416b3cf8c 100644 (file)
@@ -126,7 +126,7 @@ struct cs_dsp_mock_bin_builder *cs_dsp_mock_bin_init(struct cs_dsp_test *priv,
                                                     unsigned int fw_version);
 void cs_dsp_mock_bin_add_raw_block(struct cs_dsp_mock_bin_builder *builder,
                                   unsigned int alg_id, unsigned int alg_ver,
-                                  int type, unsigned int offset,
+                                  int type, u16 offset, u32 offset32,
                                   const void *payload_data, size_t payload_len_bytes);
 void cs_dsp_mock_bin_add_info(struct cs_dsp_mock_bin_builder *builder,
                              const char *info);