ALSA: hda: intel-nhlt: add intel_nhlt_ssp_device_type() function
Add a helper function intel_nhlt_ssp_device_type() to detect the type of specific SSP port. The result is nhlt_device_type enum type which could be NHLT_DEVICE_BT or NHLT_DEVICE_I2S. Signed-off-by: Brent Lu <brent.lu@intel.com> Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Message-ID: <20231127120657.19764-2-peter.ujfalusi@linux.intel.com>
This commit is contained in:
parent
9f2347842b
commit
02545bc575
|
@ -143,6 +143,9 @@ intel_nhlt_get_endpoint_blob(struct device *dev, struct nhlt_acpi_table *nhlt,
|
|||
u32 bus_id, u8 link_type, u8 vbps, u8 bps,
|
||||
u8 num_ch, u32 rate, u8 dir, u8 dev_type);
|
||||
|
||||
int intel_nhlt_ssp_device_type(struct device *dev, struct nhlt_acpi_table *nhlt,
|
||||
u8 virtual_bus_id);
|
||||
|
||||
#else
|
||||
|
||||
static inline struct nhlt_acpi_table *intel_nhlt_init(struct device *dev)
|
||||
|
@ -184,6 +187,13 @@ intel_nhlt_get_endpoint_blob(struct device *dev, struct nhlt_acpi_table *nhlt,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static inline int intel_nhlt_ssp_device_type(struct device *dev,
|
||||
struct nhlt_acpi_table *nhlt,
|
||||
u8 virtual_bus_id)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -343,3 +343,29 @@ intel_nhlt_get_endpoint_blob(struct device *dev, struct nhlt_acpi_table *nhlt,
|
|||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(intel_nhlt_get_endpoint_blob);
|
||||
|
||||
int intel_nhlt_ssp_device_type(struct device *dev, struct nhlt_acpi_table *nhlt,
|
||||
u8 virtual_bus_id)
|
||||
{
|
||||
struct nhlt_endpoint *epnt;
|
||||
int i;
|
||||
|
||||
if (!nhlt)
|
||||
return -EINVAL;
|
||||
|
||||
epnt = (struct nhlt_endpoint *)nhlt->desc;
|
||||
for (i = 0; i < nhlt->endpoint_count; i++) {
|
||||
/* for SSP link the virtual bus id is the SSP port number */
|
||||
if (epnt->linktype == NHLT_LINK_SSP &&
|
||||
epnt->virtual_bus_id == virtual_bus_id) {
|
||||
dev_dbg(dev, "SSP%d: dev_type=%d\n", virtual_bus_id,
|
||||
epnt->device_type);
|
||||
return epnt->device_type;
|
||||
}
|
||||
|
||||
epnt = (struct nhlt_endpoint *)((u8 *)epnt + epnt->length);
|
||||
}
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
EXPORT_SYMBOL(intel_nhlt_ssp_device_type);
|
||||
|
|
Loading…
Reference in New Issue