mb/google/brox: Configure ISH device based on FW_CONFIG

ISH Firmware name needs to be configured only when full sensing
capabilities are enabled through ISH_ENABLE FW_CONFIG. Similarly DMA
property needs to be added only when UFS is enabled through STORAGE_UFS
FW_CONFIG. Hence configure the ISH device at run-time based on
FW_CONFIG.

BUG=b:319164720
TEST=Build Brox BIOS image and boot to OS.

Change-Id: I678416acd48e03ab77ae299beae6e295a688b8df
Signed-off-by: Karthikeyan Ramasubramanian <kramasub@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/81418
Reviewed-by: Varshit Pandya <pandyavarshit@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Eric Lai <ericllai@google.com>
diff --git a/src/mainboard/google/brox/variants/brox/fw_config.c b/src/mainboard/google/brox/variants/brox/fw_config.c
index 162f4a1..d8fd44d 100644
--- a/src/mainboard/google/brox/variants/brox/fw_config.c
+++ b/src/mainboard/google/brox/variants/brox/fw_config.c
@@ -1,10 +1,12 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
 #include <bootstate.h>
+#include <drivers/intel/ish/chip.h>
 #include <fw_config.h>
 #include <gpio.h>
 
 #define GPIO_PADBASED_OVERRIDE(b, a) gpio_padbased_override(b, a, ARRAY_SIZE(a))
+#define ISH_FIRMWARE_NAME "brox_ish.bin"
 
 static const struct pad_config ish_enable_pads[] = {
 	/* GPP_B5 : ISH I2C0_SDA */
@@ -27,9 +29,19 @@
 
 static void fw_config_handle(void *unused)
 {
+	struct device *ish_config_device = DEV_PTR(ish_conf);
+	struct drivers_intel_ish_config *config = config_of(ish_config_device);
+
 	if (fw_config_probe(FW_CONFIG(ISH, ISH_ENABLE))) {
-		printk(BIOS_INFO, "Configure GPIOs for ISH.\n");
+		printk(BIOS_INFO, "Configure GPIOs, device config for ISH.\n");
 		gpio_configure_pads(ish_enable_pads, ARRAY_SIZE(ish_enable_pads));
+
+		config->firmware_name = ISH_FIRMWARE_NAME;
+	}
+
+	if (fw_config_probe(FW_CONFIG(STORAGE, STORAGE_UFS))) {
+		printk(BIOS_INFO, "Configure GPIOs, device config for UFS.\n");
+		config->add_acpi_dma_property = true;
 	}
 }
 BOOT_STATE_INIT_ENTRY(BS_DEV_ENABLE, BS_ON_ENTRY, fw_config_handle, NULL);
diff --git a/src/mainboard/google/brox/variants/brox/overridetree.cb b/src/mainboard/google/brox/variants/brox/overridetree.cb
index 2c4335b..7b00098 100644
--- a/src/mainboard/google/brox/variants/brox/overridetree.cb
+++ b/src/mainboard/google/brox/variants/brox/overridetree.cb
@@ -300,9 +300,7 @@
 		end
 		device ref ish on
 			chip drivers/intel/ish
-				register "firmware_name" = ""brox_ish.bin""
-				register "add_acpi_dma_property" = "true"
-				device generic 0 on end
+				device generic 0 alias ish_conf on end
 			end
 			probe ISH ISH_ENABLE
 			probe STORAGE STORAGE_UFS