DM: Fixes issue #592 NHLT is not detected on audio passthru.
When XSDT is created by DM, if audio passthru is enabled for audio device (0:e:0), an entry is added in XSDT that references the NHLT table. With this fix, NHLT appears in the kernel boot log for ACPI and entry can be seen in /sys/firmware/acpi/tables/NHLT. Signed-off-by: Madeeha Javed <madeeha_javed@mentor.com>
This commit is contained in:
parent
3e2d1fba6b
commit
078178b23b
|
@ -114,6 +114,8 @@ struct basl_fio {
|
||||||
#define EFPRINTF(...) fprintf(__VA_ARGS__)
|
#define EFPRINTF(...) fprintf(__VA_ARGS__)
|
||||||
#define EFFLUSH(x) fflush(x)
|
#define EFFLUSH(x) fflush(x)
|
||||||
|
|
||||||
|
static bool acpi_table_is_valid(int num);
|
||||||
|
|
||||||
static int
|
static int
|
||||||
basl_fwrite_rsdp(FILE *fp, struct vmctx *ctx)
|
basl_fwrite_rsdp(FILE *fp, struct vmctx *ctx)
|
||||||
{
|
{
|
||||||
|
@ -198,6 +200,10 @@ basl_fwrite_xsdt(FILE *fp, struct vmctx *ctx)
|
||||||
EFPRINTF(fp, "[0004]\t\tACPI Table Address 3 : 00000000%08X\n",
|
EFPRINTF(fp, "[0004]\t\tACPI Table Address 3 : 00000000%08X\n",
|
||||||
basl_acpi_base + MCFG_OFFSET);
|
basl_acpi_base + MCFG_OFFSET);
|
||||||
|
|
||||||
|
if (acpi_table_is_valid(NHLT_ENTRY_NO))
|
||||||
|
EFPRINTF(fp, "[0004]\t\tACPI Table Address 4 : 00000000%08X\n",
|
||||||
|
basl_acpi_base + NHLT_OFFSET);
|
||||||
|
|
||||||
EFFLUSH(fp);
|
EFFLUSH(fp);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -976,6 +982,12 @@ acpi_table_enable(int num)
|
||||||
basl_ftables[num].valid = true;
|
basl_ftables[num].valid = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
acpi_table_is_valid(int num)
|
||||||
|
{
|
||||||
|
return basl_ftables[num].valid;
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t
|
uint32_t
|
||||||
get_acpi_base(void)
|
get_acpi_base(void)
|
||||||
{
|
{
|
||||||
|
@ -1018,7 +1030,7 @@ acpi_build(struct vmctx *ctx, int ncpu)
|
||||||
* copying them into guest memory
|
* copying them into guest memory
|
||||||
*/
|
*/
|
||||||
while (!err && (i < ARRAY_SIZE(basl_ftables))) {
|
while (!err && (i < ARRAY_SIZE(basl_ftables))) {
|
||||||
if (basl_ftables[i].valid)
|
if (acpi_table_is_valid(i))
|
||||||
err = basl_compile(ctx, basl_ftables[i].wsect,
|
err = basl_compile(ctx, basl_ftables[i].wsect,
|
||||||
basl_ftables[i].offset);
|
basl_ftables[i].offset);
|
||||||
i++;
|
i++;
|
||||||
|
|
Loading…
Reference in New Issue