Blame view
sound/hda/intel-nhlt.c
1.72 KB
e149ca29f ASoC: SOF/Intel: ... |
1 |
// SPDX-License-Identifier: GPL-2.0-only |
303681f43 ALSA: hda: move p... |
2 3 4 5 |
// Copyright (c) 2015-2019 Intel Corporation #include <linux/acpi.h> #include <sound/intel-nhlt.h> |
303681f43 ALSA: hda: move p... |
6 7 |
struct nhlt_acpi_table *intel_nhlt_init(struct device *dev) { |
0d283287a ALSA: hda: Refact... |
8 9 |
struct nhlt_acpi_table *nhlt; acpi_status status; |
303681f43 ALSA: hda: move p... |
10 |
|
0d283287a ALSA: hda: Refact... |
11 12 13 14 15 |
status = acpi_get_table(ACPI_SIG_NHLT, 0, (struct acpi_table_header **)&nhlt); if (ACPI_FAILURE(status)) { dev_warn(dev, "NHLT table not found "); |
303681f43 ALSA: hda: move p... |
16 17 |
return NULL; } |
0d283287a ALSA: hda: Refact... |
18 |
return nhlt; |
303681f43 ALSA: hda: move p... |
19 20 21 22 23 |
} EXPORT_SYMBOL_GPL(intel_nhlt_init); void intel_nhlt_free(struct nhlt_acpi_table *nhlt) { |
0d283287a ALSA: hda: Refact... |
24 |
acpi_put_table((struct acpi_table_header *)nhlt); |
303681f43 ALSA: hda: move p... |
25 26 27 28 29 30 31 |
} EXPORT_SYMBOL_GPL(intel_nhlt_free); int intel_nhlt_get_dmic_geo(struct device *dev, struct nhlt_acpi_table *nhlt) { struct nhlt_endpoint *epnt; struct nhlt_dmic_array_config *cfg; |
7a33ea70e ALSA: hda: intel-... |
32 |
struct nhlt_vendor_dmic_array_config *cfg_vendor; |
303681f43 ALSA: hda: move p... |
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
unsigned int dmic_geo = 0; u8 j; if (!nhlt) return 0; epnt = (struct nhlt_endpoint *)nhlt->desc; for (j = 0; j < nhlt->endpoint_count; j++) { if (epnt->linktype == NHLT_LINK_DMIC) { cfg = (struct nhlt_dmic_array_config *) (epnt->config.caps); switch (cfg->array_type) { case NHLT_MIC_ARRAY_2CH_SMALL: case NHLT_MIC_ARRAY_2CH_BIG: dmic_geo = MIC_ARRAY_2CH; break; case NHLT_MIC_ARRAY_4CH_1ST_GEOM: case NHLT_MIC_ARRAY_4CH_L_SHAPED: case NHLT_MIC_ARRAY_4CH_2ND_GEOM: dmic_geo = MIC_ARRAY_4CH; break; |
7a33ea70e ALSA: hda: intel-... |
56 57 58 59 |
case NHLT_MIC_ARRAY_VENDOR_DEFINED: cfg_vendor = (struct nhlt_vendor_dmic_array_config *)cfg; dmic_geo = cfg_vendor->nb_mics; break; |
303681f43 ALSA: hda: move p... |
60 61 62 63 64 65 66 67 68 69 70 71 |
default: dev_warn(dev, "undefined DMIC array_type 0x%0x ", cfg->array_type); } } epnt = (struct nhlt_endpoint *)((u8 *)epnt + epnt->length); } return dmic_geo; } EXPORT_SYMBOL_GPL(intel_nhlt_get_dmic_geo); |