coreboot/src/soc
Kilian Krause c71071397f soc/intel/common/fast_spi: Add static bus scanning
Add scan_bus operation to fast_spi device operations to enable
discovery of statically defined child devices.

This allows device drivers such as drivers/pc80/tpm that are
physically connected to the fast_spi bus to be properly
enumerated and initialized during device tree scanning.

Without this change, child devices defined in devicetree under
fast_spi would not be discovered, preventing proper driver
binding and initialization.

Example devicetree configuration:
```
                device ref fast_spi on
                        chip drivers/pc80/tpm   # SPI TPM header
                                device pnp 0c31.0 on end
                        end
                end
```

Without a .scan_bus hook in fast_spi_dev_ops, coreboot's
BS_DEV_ENUMERATE phase never creates the pnp 0c31.0 device. As a
result, in BS_DEV_RESOURCES you see, that the device PNP 0c31.0
is missing its function "read_resources":

```
(in BS_DEV_ENUMERATE)

[DEBUG]  scan_bus: bus PCI: 00:00:1f.4 finished in 11 msecs
[DEBUG]  scan_bus: bus DOMAIN: 00000000 finished in 1510 msecs
[SPEW ]  scan_static_bus for Root Device done

... (in BS_DEV_RESOURCES)

[SPEW ]  PCI: 00:00:1f.5 read_resources segment group 0 bus 0
[ERROR]  PNP: 0c31.0 missing read_resources
[SPEW ]  PCI: 00:00:1f.5 read_resources segment group 0 bus 0 done
[SPEW ]  DOMAIN: 00000000 read_resources segment group 0 bus 0 done
[SPEW ]  Root Device read_resources segment group 0 bus 0 done
[INFO ]  Done reading resources.
```

With the implementation of scan_bus, the log shows that the resources
are allocated correctly:

```
(in BS_DEV_ENUMERATE)

[DEBUG]  scan_bus: bus PCI: 00:00:1f.4 finished in 11 msecs
[DEBUG]  PCI: 00:00:1f.5 scanning...
[SPEW ]  scan_static_bus for PCI: 00:00:1f.5
[DEBUG]  PNP: 0c31.0 enabled
[SPEW ]  scan_static_bus for PCI: 00:00:1f.5 done
[DEBUG]  scan_bus: bus PCI: 00:00:1f.5 finished in 14 msecs
[DEBUG]  scan_bus: bus DOMAIN: 00000000 finished in 1536 msecs
[SPEW ]  scan_static_bus for Root Device done

... (in BS_DEV_RESOURCES)

[SPEW ]  PCI: 00:00:1f.5 read_resources segment group 0 bus 0
[SPEW ]  dev: PNP: 0c31.0, index: 0x0, base: 0xfed40000, size: 0x5000
[SPEW ]  PCI: 00:00:1f.5 read_resources segment group 0 bus 0 done
[SPEW ]  DOMAIN: 00000000 read_resources segment group 0 bus 0 done
[SPEW ]  Root Device read_resources segment group 0 bus 0 done
[INFO ]  Done reading resources.
```

TEST=Verified on Siemens mc_rpl1 mainboard. TPM device properly
enumerated with scan_bus implementation.


Change-Id: I4049d2d3cd5132362a7efd551dc9dd78cd24b9eb
Signed-off-by: Kilian Krause <kilian.krause@siemens.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/88966
Reviewed-by: Paul Menzel <paulepanter@mailbox.org>
Reviewed-by: Mario Scheithauer <mario.scheithauer@siemens.com>
Reviewed-by: Jérémy Compostella <jeremy.compostella@intel.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Werner Zeh <werner.zeh@siemens.com>
2025-09-02 11:00:50 +00:00
..
amd soc/amd/common/fsp/dmi: Skip parsing when memory type UNKNOWN 2025-08-30 13:55:51 +00:00
cavium
example/min86
ibm/power9 soc/power9/rom_media.c: find CBFS in PNOR 2025-08-28 20:14:01 +00:00
intel soc/intel/common/fast_spi: Add static bus scanning 2025-09-02 11:00:50 +00:00
mediatek soc/mediatek/common: Increase WAIT_AUX_READY_TIME_MS 2025-08-30 15:00:41 +00:00
nvidia
qualcomm soc/qualcomm/x1p42100: Use SPMI driver 2025-08-26 02:41:32 +00:00
rockchip
samsung samsung/exynos5250: Replace 'unsigned long int' by 'unsigned long' 2025-01-15 08:32:16 +00:00
sifive tree: Remove unused <assert.h> 2024-11-19 00:40:04 +00:00
ti
ucb/riscv soc/riscv/ucb: Switch to FDT parsing to get memory size 2025-02-26 17:11:09 +00:00
xilinx soc/xilinx/zynq7000: Initial Xilinx Zynq 7000 SoC bringup 2025-01-23 00:41:01 +00:00