]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
firmware: cs_dsp: Don't require client to provide a struct cs_dsp_client_ops
authorRichard Fitzgerald <rf@opensource.cirrus.com>
Fri, 28 Nov 2025 10:21:31 +0000 (10:21 +0000)
committerMark Brown <broonie@kernel.org>
Fri, 28 Nov 2025 11:47:55 +0000 (11:47 +0000)
A client of cs_dsp does not necessarily need to implement any of the
optional callbacks in struct cs_dsp_client_ops, so allow the client_ops
pointer to be NULL.

This has been done by pointing client_ops at a default empty
cs_dsp_client_ops. It keeps the code cleaner by avoiding having to add
double nested NULL checks everywhere one of these callbacks is called.

Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Link: https://patch.msgid.link/20251128102132.1575177-2-rf@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/firmware/cirrus/cs_dsp.c

index 60a2061c444c02552acfd590f772bfe1deb8c4ec..525ac0f0a75d8f4e15f35a829e504df38f19fed1 100644 (file)
@@ -2329,6 +2329,9 @@ static int cs_dsp_create_name(struct cs_dsp *dsp)
        return 0;
 }
 
+static const struct cs_dsp_client_ops cs_dsp_default_client_ops = {
+};
+
 static int cs_dsp_common_init(struct cs_dsp *dsp)
 {
        int ret;
@@ -2342,6 +2345,9 @@ static int cs_dsp_common_init(struct cs_dsp *dsp)
 
        mutex_init(&dsp->pwr_lock);
 
+       if (!dsp->client_ops)
+               dsp->client_ops = &cs_dsp_default_client_ops;
+
 #ifdef CONFIG_DEBUG_FS
        /* Ensure this is invalid if client never provides a debugfs root */
        dsp->debugfs_root = ERR_PTR(-ENODEV);