#include <linux/acpi.h>
 #include <linux/mod_devicetable.h>
 #include <linux/soundwire/sdw.h>
+#include <sound/soc.h>
 
 struct snd_soc_acpi_package_context {
        char *name;           /* package name */
  *  is not constant since this field may be updated at run-time
  * @sof_tplg_filename: Sound Open Firmware topology file name, if enabled
  * @tplg_quirk_mask: quirks to select different topology files dynamically
+ * @get_function_tplg_files: This is an optional callback, if specified then instead of
+ *     the single sof_tplg_filename the callback will return the list of function topology
+ *     files to be loaded.
+ *     Return value: The number of the files or negative ERRNO. 0 means that the single topology
+ *                   file should be used, no function topology split can be used on the machine.
+ *     @card: the pointer of the card
+ *     @mach: the pointer of the machine driver
+ *     @prefix: the prefix of the topology file name. Typically, it is the path.
+ *     @tplg_files: the pointer of the array of the topology file names.
  */
 /* Descriptor for SST ASoC machine driver */
 struct snd_soc_acpi_mach {
        struct snd_soc_acpi_mach_params mach_params;
        const char *sof_tplg_filename;
        const u32 tplg_quirk_mask;
+       int (*get_function_tplg_files)(struct snd_soc_card *card,
+                                      const struct snd_soc_acpi_mach *mach,
+                                      const char *prefix, const char ***tplg_files);
 };
 
 #define SND_SOC_ACPI_MAX_CODECS 3