mb/google/zork: Switch to using newly added i2s_machine_dev driver
This change switches zork devices to use the newly added i2s_machine_dev driver in devicetree rather than passing dmic_select_gpio in SoC config. BUG=b:157708581 Change-Id: I76c633694cbfb454c081ab2a4af4765bfbbae16b Signed-off-by: Furquan Shaikh <furquan@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/43543 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
		| @@ -14,6 +14,7 @@ config BOARD_SPECIFIC_OPTIONS | |||||||
| 	select SOC_AMD_PICASSO | 	select SOC_AMD_PICASSO | ||||||
| 	select VGA_BIOS | 	select VGA_BIOS | ||||||
| 	select BOARD_ROMSIZE_KB_16384 | 	select BOARD_ROMSIZE_KB_16384 | ||||||
|  | 	select DRIVERS_AMD_I2S_MACHINE_DEV | ||||||
| 	select DISABLE_SPI_FLASH_ROM_SHARING | 	select DISABLE_SPI_FLASH_ROM_SHARING | ||||||
| 	select DRIVERS_GENERIC_GPIO_KEYS | 	select DRIVERS_GENERIC_GPIO_KEYS | ||||||
| 	select DRIVERS_I2C_GENERIC | 	select DRIVERS_I2C_GENERIC | ||||||
|   | |||||||
| @@ -17,16 +17,6 @@ chip soc/amd/picasso | |||||||
| 	register "acp_i2s_wake_enable" = "1" | 	register "acp_i2s_wake_enable" = "1" | ||||||
| 	register "acpi_pme_enable" = "1" | 	register "acpi_pme_enable" = "1" | ||||||
|  |  | ||||||
| 	# DMIC select GPIO for ACP machine device |  | ||||||
| 	# This GPIO is used to select DMIC0 or DMIC1 by the kernel driver. It does not |  | ||||||
| 	# really have a polarity since low and high control the selection of DMIC and |  | ||||||
| 	# hence does not have an active polarity. |  | ||||||
| 	# Kernel driver does not use the polarity field and instead treats the GPIO |  | ||||||
| 	# selection as follows: |  | ||||||
| 	# Set low (0) = Select DMIC0 |  | ||||||
| 	# Set high (1) = Select DMIC1 |  | ||||||
| 	register "dmic_select_gpio" = "ACPI_GPIO_OUTPUT(GPIO_67)" |  | ||||||
|  |  | ||||||
| 	# Start : OPN Performance Configuration | 	# Start : OPN Performance Configuration | ||||||
| 	# (Configuratin that is common for all variants) | 	# (Configuratin that is common for all variants) | ||||||
| 	# For the below fields, 0 indicates use SOC default | 	# For the below fields, 0 indicates use SOC default | ||||||
| @@ -273,7 +263,22 @@ chip soc/amd/picasso | |||||||
| 					end | 					end | ||||||
| 				end | 				end | ||||||
| 			end | 			end | ||||||
| 			device pci 0.5 on  end # Audio | 			device pci 0.5 on | ||||||
|  | 				chip drivers/amd/i2s_machine_dev | ||||||
|  | 					register "hid" = ""AMDI5682"" | ||||||
|  | 					# DMIC select GPIO for ACP machine device | ||||||
|  | 					# This GPIO is used to select DMIC0 or DMIC1 by the | ||||||
|  | 					# kernel driver. It does not really have a polarity | ||||||
|  | 					# since low and high control the selection of DMIC and | ||||||
|  | 					# hence does not have an active polarity. | ||||||
|  | 					# Kernel driver does not use the polarity field and | ||||||
|  | 					# instead treats the GPIO selection as follows: | ||||||
|  | 					# Set low (0) = Select DMIC0 | ||||||
|  | 					# Set high (1) = Select DMIC1 | ||||||
|  | 					register "dmic_select_gpio" = "ACPI_GPIO_OUTPUT(GPIO_67)" | ||||||
|  | 					device generic 0.0 on end | ||||||
|  | 				end | ||||||
|  | 			end # Audio | ||||||
| 			device pci 0.6 on  end # HDA | 			device pci 0.6 on  end # HDA | ||||||
| 			device pci 0.7 on  end # non-Sensor Fusion Hub device | 			device pci 0.7 on  end # non-Sensor Fusion Hub device | ||||||
| 		end | 		end | ||||||
|   | |||||||
| @@ -17,16 +17,6 @@ chip soc/amd/picasso | |||||||
| 	register "acp_i2s_wake_enable" = "1" | 	register "acp_i2s_wake_enable" = "1" | ||||||
| 	register "acpi_pme_enable" = "1" | 	register "acpi_pme_enable" = "1" | ||||||
|  |  | ||||||
| 	# DMIC select GPIO for ACP machine device |  | ||||||
| 	# This GPIO is used to select DMIC0 or DMIC1 by the kernel driver. It does not |  | ||||||
| 	# really have a polarity since low and high control the selection of DMIC and |  | ||||||
| 	# hence does not have an active polarity. |  | ||||||
| 	# Kernel driver does not use the polarity field and instead treats the GPIO |  | ||||||
| 	# selection as follows: |  | ||||||
| 	# Set low (0) = Select DMIC0 |  | ||||||
| 	# Set high (1) = Select DMIC1 |  | ||||||
| 	register "dmic_select_gpio" = "ACPI_GPIO_OUTPUT(GPIO_67)" |  | ||||||
|  |  | ||||||
| 	# Start : OPN Performance Configuration | 	# Start : OPN Performance Configuration | ||||||
| 	# (Configuratin that is common for all variants) | 	# (Configuratin that is common for all variants) | ||||||
| 	# For the below fields, 0 indicates use SOC default | 	# For the below fields, 0 indicates use SOC default | ||||||
| @@ -301,7 +291,22 @@ chip soc/amd/picasso | |||||||
| 					end | 					end | ||||||
| 				end | 				end | ||||||
| 			end | 			end | ||||||
| 			device pci 0.5 on  end # Audio | 			device pci 0.5 on | ||||||
|  | 				chip drivers/amd/i2s_machine_dev | ||||||
|  | 					register "hid" = ""AMDI5682"" | ||||||
|  | 					# DMIC select GPIO for ACP machine device | ||||||
|  | 					# This GPIO is used to select DMIC0 or DMIC1 by the | ||||||
|  | 					# kernel driver. It does not really have a polarity | ||||||
|  | 					# since low and high control the selection of DMIC and | ||||||
|  | 					# hence does not have an active polarity. | ||||||
|  | 					# Kernel driver does not use the polarity field and | ||||||
|  | 					# instead treats the GPIO selection as follows: | ||||||
|  | 					# Set low (0) = Select DMIC0 | ||||||
|  | 					# Set high (1) = Select DMIC1 | ||||||
|  | 					register "dmic_select_gpio" = "ACPI_GPIO_OUTPUT(GPIO_67)" | ||||||
|  | 					device generic 0.0 on end | ||||||
|  | 				end | ||||||
|  | 			end # Audio | ||||||
| 			device pci 0.6 on  end # HDA | 			device pci 0.6 on  end # HDA | ||||||
| 			device pci 0.7 on  end # non-Sensor Fusion Hub device | 			device pci 0.7 on  end # non-Sensor Fusion Hub device | ||||||
| 		end | 		end | ||||||
|   | |||||||
| @@ -2,19 +2,48 @@ | |||||||
|  |  | ||||||
| #include <acpi/acpi_device.h> | #include <acpi/acpi_device.h> | ||||||
| #include <baseboard/variants.h> | #include <baseboard/variants.h> | ||||||
|  | #include <drivers/amd/i2s_machine_dev/chip.h> | ||||||
| #include <ec/google/chromeec/ec.h> | #include <ec/google/chromeec/ec.h> | ||||||
| #include <soc/gpio.h> | #include <soc/gpio.h> | ||||||
|  | #include <soc/pci_devs.h> | ||||||
|  |  | ||||||
|  | extern struct chip_operations drivers_amd_i2s_machine_dev_ops; | ||||||
|  |  | ||||||
| void variant_audio_update(void) | void variant_audio_update(void) | ||||||
| { | { | ||||||
| 	struct soc_amd_picasso_config *cfg = config_of_soc(); | 	const struct device *gpp_a_dev; | ||||||
| 	struct acpi_gpio *gpio = &cfg->dmic_select_gpio; | 	const struct device *acp_dev; | ||||||
|  | 	struct device *machine_dev = NULL; | ||||||
|  |  | ||||||
| 	if (variant_uses_v3_schematics()) | 	if (variant_uses_v3_schematics()) | ||||||
| 		return; | 		return; | ||||||
|  |  | ||||||
| 	if (CONFIG(BOARD_GOOGLE_BASEBOARD_TREMBYLE)) | 	gpp_a_dev = pcidev_path_on_root(PCIE_GPP_A_DEVFN); | ||||||
| 		gpio->pins[0] = GPIO_13; | 	if (gpp_a_dev == NULL) | ||||||
| 	else | 		return; | ||||||
| 		gpio->pins[0] = GPIO_6; |  | ||||||
|  | 	acp_dev = pcidev_path_behind(gpp_a_dev->link_list, AUDIO_DEVFN); | ||||||
|  | 	if (acp_dev == NULL) | ||||||
|  | 		return; | ||||||
|  |  | ||||||
|  | 	while ((machine_dev = dev_bus_each_child(acp_dev->link_list, machine_dev)) != NULL) { | ||||||
|  | 		struct drivers_amd_i2s_machine_dev_config *cfg; | ||||||
|  | 		struct acpi_gpio *gpio; | ||||||
|  |  | ||||||
|  | 		if (machine_dev->chip_info == NULL) | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		if (machine_dev->chip_ops != &drivers_amd_i2s_machine_dev_ops) | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		cfg = machine_dev->chip_info; | ||||||
|  | 		gpio = &cfg->dmic_select_gpio; | ||||||
|  |  | ||||||
|  | 		if (CONFIG(BOARD_GOOGLE_BASEBOARD_TREMBYLE)) | ||||||
|  | 			gpio->pins[0] = GPIO_13; | ||||||
|  | 		else | ||||||
|  | 			gpio->pins[0] = GPIO_6; | ||||||
|  |  | ||||||
|  | 		break; | ||||||
|  | 	} | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user