3421894765
Add a new common routine to extract a package exposed by a device indexed with the HID value. The functionality is implemented without assumptions on the package type or structure to allow for reuse. The caller is responsible for defining the name and allocating structures to store the results, ACPICA will complain in case of type mismatches or buffer size issues. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
60 lines
1.7 KiB
C
60 lines
1.7 KiB
C
/*
|
|
* Copyright (C) 2013-15, Intel Corporation. All rights reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License version
|
|
* 2 as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
*/
|
|
|
|
#include <linux/stddef.h>
|
|
#include <linux/acpi.h>
|
|
|
|
struct sst_acpi_package_context {
|
|
char *name; /* package name */
|
|
int length; /* number of elements */
|
|
struct acpi_buffer *format;
|
|
struct acpi_buffer *state;
|
|
bool data_valid;
|
|
};
|
|
|
|
#if IS_ENABLED(CONFIG_ACPI)
|
|
/* translation fron HID to I2C name, needed for DAI codec_name */
|
|
const char *sst_acpi_find_name_from_hid(const u8 hid[ACPI_ID_LEN]);
|
|
bool sst_acpi_find_package_from_hid(const u8 hid[ACPI_ID_LEN],
|
|
struct sst_acpi_package_context *ctx);
|
|
#else
|
|
static inline const char *sst_acpi_find_name_from_hid(const u8 hid[ACPI_ID_LEN])
|
|
{
|
|
return NULL;
|
|
}
|
|
static inline bool sst_acpi_find_package_from_hid(const u8 hid[ACPI_ID_LEN],
|
|
struct sst_acpi_package_context *ctx)
|
|
{
|
|
return false;
|
|
}
|
|
#endif
|
|
|
|
/* acpi match */
|
|
struct sst_acpi_mach *sst_acpi_find_machine(struct sst_acpi_mach *machines);
|
|
|
|
/* Descriptor for SST ASoC machine driver */
|
|
struct sst_acpi_mach {
|
|
/* ACPI ID for the matching machine driver. Audio codec for instance */
|
|
const u8 id[ACPI_ID_LEN];
|
|
/* machine driver name */
|
|
const char *drv_name;
|
|
/* firmware file name */
|
|
const char *fw_filename;
|
|
|
|
/* board name */
|
|
const char *board;
|
|
struct sst_acpi_mach * (*machine_quirk)(void *arg);
|
|
void *pdata;
|
|
};
|