NHLT_LINK_INVALID
 };
 
+enum nhlt_device_type {
+       NHLT_DEVICE_BT = 0,
+       NHLT_DEVICE_DMIC = 1,
+       NHLT_DEVICE_I2S = 4,
+       NHLT_DEVICE_INVALID
+};
+
 #if IS_ENABLED(CONFIG_ACPI) && IS_ENABLED(CONFIG_SND_INTEL_NHLT)
 
 struct wav_fmt {
        u8 sub_fmt[16];
 } __packed;
 
-enum nhlt_device_type {
-       NHLT_DEVICE_BT = 0,
-       NHLT_DEVICE_DMIC = 1,
-       NHLT_DEVICE_I2S = 4,
-       NHLT_DEVICE_INVALID
-};
-
 struct nhlt_specific_cfg {
        u32 size;
        u8 caps[];
 int intel_nhlt_get_dmic_geo(struct device *dev, struct nhlt_acpi_table *nhlt);
 
 bool intel_nhlt_has_endpoint_type(struct nhlt_acpi_table *nhlt, u8 link_type);
+
+int intel_nhlt_ssp_endpoint_mask(struct nhlt_acpi_table *nhlt, u8 device_type);
+
 struct nhlt_specific_cfg *
 intel_nhlt_get_endpoint_blob(struct device *dev, struct nhlt_acpi_table *nhlt,
                             u32 bus_id, u8 link_type, u8 vbps, u8 bps,
        return false;
 }
 
+static inline int intel_nhlt_ssp_endpoint_mask(struct nhlt_acpi_table *nhlt, u8 device_type)
+{
+       return 0;
+}
+
 static inline struct nhlt_specific_cfg *
 intel_nhlt_get_endpoint_blob(struct device *dev, struct nhlt_acpi_table *nhlt,
                             u32 bus_id, u8 link_type, u8 vbps, u8 bps,
 
 }
 EXPORT_SYMBOL(intel_nhlt_has_endpoint_type);
 
+int intel_nhlt_ssp_endpoint_mask(struct nhlt_acpi_table *nhlt, u8 device_type)
+{
+       struct nhlt_endpoint *epnt;
+       int ssp_mask = 0;
+       int i;
+
+       if (!nhlt || (device_type != NHLT_DEVICE_BT && device_type != NHLT_DEVICE_I2S))
+               return 0;
+
+       epnt = (struct nhlt_endpoint *)nhlt->desc;
+       for (i = 0; i < nhlt->endpoint_count; i++) {
+               if (epnt->linktype == NHLT_LINK_SSP && epnt->device_type == device_type) {
+                       /* for SSP the virtual bus id is the SSP port */
+                       ssp_mask |= BIT(epnt->virtual_bus_id);
+               }
+               epnt = (struct nhlt_endpoint *)((u8 *)epnt + epnt->length);
+       }
+
+       return ssp_mask;
+}
+EXPORT_SYMBOL(intel_nhlt_ssp_endpoint_mask);
+
 static struct nhlt_specific_cfg *
 nhlt_get_specific_cfg(struct device *dev, struct nhlt_fmt *fmt, u8 num_ch,
                      u32 rate, u8 vbps, u8 bps)