Example #1
0
static unsigned long mainboard_write_acpi_tables(
    device_t device, unsigned long current, acpi_rsdp_t *rsdp)
{
    uintptr_t start_addr;
    uintptr_t end_addr;
    struct nhlt *nhlt;

    start_addr = current;

    nhlt = nhlt_init();

    if (nhlt == NULL)
        return start_addr;

    /* 2 Channel DMIC array. */
    if (nhlt_soc_add_dmic_array(nhlt, 2))
        printk(BIOS_ERR, "Couldn't add 2CH DMIC array.\n");

    /* MAXIM Smart Amps for left and right. */
    if (nhlt_soc_add_max98357(nhlt, AUDIO_LINK_SSP0))
        printk(BIOS_ERR, "Couldn't add max98357.\n");

    /* NAU88l25 Headset codec. */
    if (nhlt_soc_add_nau88l25(nhlt, AUDIO_LINK_SSP1))
        printk(BIOS_ERR, "Couldn't add headset codec.\n");

    end_addr = nhlt_soc_serialize(nhlt, start_addr);

    if (end_addr != start_addr)
        acpi_add_table(rsdp, (void *)start_addr);

    return end_addr;
}
Example #2
0
static unsigned long mainboard_write_acpi_tables(
	device_t device, unsigned long current, acpi_rsdp_t *rsdp)
{
	uintptr_t start_addr;
	uintptr_t end_addr;
	struct nhlt *nhlt;
	const char *oem_id = NULL;
	const char *oem_table_id = NULL;

	start_addr = current;

	nhlt = nhlt_init();

	if (nhlt == NULL)
		return start_addr;

	variant_nhlt_init(nhlt);
	variant_nhlt_oem_strings(&oem_id, &oem_table_id);

	end_addr = nhlt_soc_serialize_oem_overrides(nhlt, start_addr,
			oem_id, oem_table_id);

	if (end_addr != start_addr)
		acpi_add_table(rsdp, (void *)start_addr);

	return end_addr;
}
Example #3
0
static unsigned long mainboard_write_acpi_tables(
	device_t device, unsigned long current, acpi_rsdp_t *rsdp)
{
		uintptr_t start_addr;
		uintptr_t end_addr;
		struct nhlt *nhlt;
		const char *oem_id = NULL;
		const char *oem_table_id = NULL;

		start_addr = current;

		nhlt = nhlt_init();

		if (nhlt == NULL)
			return start_addr;

		/* 2 Channel DMIC array. */
		if (nhlt_soc_add_dmic_array(nhlt, 2))
			printk(BIOS_ERR, "Couldn't add 2CH DMIC array.\n");


		/* 4 Channel DMIC array. */
		if (nhlt_soc_add_dmic_array(nhlt, 4))
			printk(BIOS_ERR, "Couldn't add 4CH DMIC arrays.\n");

		if (select_audio_codec()) {
			/* ADI Smart Amps for left and right. */
			if (nhlt_soc_add_ssm4567(nhlt, AUDIO_LINK_SSP0))
				printk(BIOS_ERR, "Couldn't add ssm4567.\n");
		} else {
			/* MAXIM Smart Amps for left and right. */
			if (nhlt_soc_add_max98357(nhlt, AUDIO_LINK_SSP0))
				printk(BIOS_ERR, "Couldn't add max98357.\n");

			oem_id = oem_id_maxim;
			oem_table_id = oem_table_id_maxim;
		}

		/* NAU88l25 Headset codec. */
		if (nhlt_soc_add_nau88l25(nhlt, AUDIO_LINK_SSP1))
			printk(BIOS_ERR, "Couldn't add headset codec.\n");

		end_addr = nhlt_soc_serialize_oem_overrides(nhlt, start_addr,
						 oem_id, oem_table_id);

		if (end_addr != start_addr)
			acpi_add_table(rsdp, (void *)start_addr);

		return end_addr;
}