u-boot-brain/drivers
Simon Glass 9b69ba4a78 pci: sandbox: Move the emulators into their own node
Sandbox pci works using emulation drivers which are currently children of
the pci device:

	pci-controller {
		pci@1f,0 {
			compatible = "pci-generic";
			reg = <0xf800 0 0 0 0>;
			emul@1f,0 {
				compatible = "sandbox,swap-case";
			};
		};
	};

In this case the emulation device is attached to pci device on address
f800 (device 1f, function 0) and provides the swap-case functionality.

However this is not ideal, since every device on a PCI bus has a child
device. This is only really the case for sandbox, but we want to avoid
special-case code for sandbox.

Worse, child devices cannot be probed before their parents. This forces
us to use 'find' rather than 'get' to obtain the emulator device. In fact
the emulator devices are never probed. There is code in
sandbox_pci_emul_post_probe() which tries to track when emulators are
active, but at present this does not work.

A better approach seems to be to add a separate node elsewhere in the
device tree, an 'emulation parent'. This could be given a bogus address
(such as -1) to hide the emulators away from the 'pci' command, but it
seems better to keep it at the root node to avoid such hacks.

Then we can use a phandle to point from the device to the correct
emulator, and only on sandbox. The code to find an emulator does not
interfere with normal pci operation.

Add a new UCLASS_PCI_EMUL_PARENT uclass which allows finding an emulator
given a bus, and finding a bus given an emulator. Update the existing
device trees and the code for finding an emulator.

This brings PCI emulators more into line with I2C.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com>
[bmeng: fix 3 typos in the commit message;
        encode bus number in the labels of swap_case_emul nodes;
        mention commit 4345998ae9 in sandbox_pci_get_emul()]
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
2019-10-08 13:57:41 +08:00
..
adc adc: stm32: Fix warnings when compiling with W=1 2019-07-12 11:50:55 +02:00
ata dm: scsi: Scan the actual number of ports 2019-08-26 11:46:20 -04:00
axi drivers: cosmetic: Convert SPDX license tags to Linux Kernel style 2018-10-28 09:26:39 -04:00
bios_emulator bios_emulator: remove stray break 2019-08-09 22:24:02 +08:00
block dm: core: Add device_foreach_child() 2019-10-08 13:57:39 +08:00
board board: gazerbeam: Fix SC detection 2019-05-21 08:03:38 +02:00
bootcount env: Drop environment.h header file where not needed 2019-08-11 16:43:41 -04:00
cache dm: cache: add v5l2 cache controller driver 2019-09-03 09:31:03 +08:00
clk rockchip: clk: rk3399: remove clk_enable() 2019-09-11 16:16:12 +08:00
core dm: core: Correct the return value for uclass_find_first_device() 2019-10-08 13:57:38 +08:00
cpu riscv: cpu: Skip unavailable hart in the get_count() op 2019-09-03 09:29:43 +08:00
crypto Revert "drivers/crypto/fsl: assign job-rings to non-TrustZone" 2019-06-11 10:42:48 +02:00
ddr ddr, fsl: add DM_I2C support 2019-08-26 21:16:24 +05:30
demo SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
dfu env: Move env_get() to env.h 2019-08-11 16:43:41 -04:00
dma CONFIG_SPL_SYS_[DI]CACHE_OFF: add 2019-05-18 08:15:35 -04:00
fastboot env: Move env_get() to env.h 2019-08-11 16:43:41 -04:00
firmware firmware: ti_sci: Parse all resource ranges even if some is not available 2019-08-12 13:33:43 -04:00
fpga fpga: altera: cyclon2: Check function pointer before calling 2019-07-30 10:21:15 +02:00
gpio sandbox: spmi: Add ranges property for address translation 2019-10-08 13:57:39 +08:00
hwspinlock hwspinlock: add stm32 hardware spinlock support 2018-12-06 23:26:33 -05:00
i2c i2c: mxc: add CONFIG_CLK support 2019-09-02 06:35:08 +02:00
input env: Move env_get() to env.h 2019-08-11 16:43:41 -04:00
led led: bcm6858: allow to use this driver on ARCH_963158 2019-04-23 17:57:22 -04:00
mailbox mailbox: introduce stm32-ipcc driver 2019-07-12 11:18:53 +02:00
memory SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
misc sandbox: pci: Move pci_offset_to_barnum() to pci.h 2019-10-08 13:57:40 +08:00
mmc sandbox: mmc: Fix up MMC emulator for valgrind 2019-10-08 13:57:39 +08:00
mtd mtd: spi-nor: enable protection ops for SST26 flash series 2019-09-16 08:09:22 +05:30
net NET: DW: fix regression for ARC boards 2019-10-07 13:23:49 -04:00
nvme nvme: Fix PRP Offset Invalid 2019-08-26 11:46:28 -04:00
pch pch: Add ioctl support 2019-02-20 15:27:08 +08:00
pci pci: sandbox: Move the emulators into their own node 2019-10-08 13:57:41 +08:00
pci_endpoint pci_ep: Fix Coverity warning 2019-08-07 15:31:04 -04:00
phy Kconfig: Varios: Fix more SPL, TPL dependencies 2019-08-26 11:46:29 -04:00
pinctrl clk: aspeed: Add support for SD clock 2019-09-05 15:27:31 +08:00
power stpmic1: simplify stpmic1_sysreset_request 2019-08-27 11:19:23 +02:00
pwm pwm: imx: add DM_PWM support 2019-07-19 20:14:50 +02:00
qe env: Drop environment.h header file where not needed 2019-08-11 16:43:41 -04:00
ram ram: rk3288: Initialize dram for TPL builds 2019-09-19 09:35:31 +08:00
remoteproc stm32mp1: Add remoteproc support for m4 coprocessor 2019-08-27 11:19:23 +02:00
reset env: Move env_get() to env.h 2019-08-11 16:43:41 -04:00
rtc rtc: ds3231/ds3232: fix coding style 2019-09-19 12:18:53 -04:00
scsi env: Move env_set_ulong() to env.h 2019-08-11 16:43:41 -04:00
serial dm: core: Call ofdata_to_platdata() with of-platdata 2019-10-08 13:57:38 +08:00
smem drivers: smem: sandbox 2018-07-19 16:31:38 -04:00
soc soc: ti: k3-navss-ringacc: fix k3_nav_ringacc_ring_reset_dma 2019-09-13 11:56:08 -04:00
sound sound: tegra: Add a sound driver 2019-05-24 10:14:10 -07:00
spi spi: Add spi_write_then_read 2019-09-16 08:09:22 +05:30
spmi SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
sysreset x86: sysreset: Allow reset driver to be included in SPL/TPL 2019-10-08 13:51:04 +08:00
tee env: Drop the ACTION typedef 2019-08-11 16:43:41 -04:00
thermal thermal: add i.MX8 thermal driver 2019-07-19 15:17:05 +02:00
timer dm: timer: Skip device that does not have a valid ofnode in pre_probe() 2019-07-24 12:54:08 -07:00
tpm tpm: wait for valid status 2019-07-11 14:11:18 -04:00
usb Merge branch 'master' of git://git.denx.de/u-boot-usb 2019-09-14 19:56:09 -04:00
video sunxi: video: HDMI: Fix LCD clock divider 2019-09-21 10:52:57 +02:00
virtio virtio: Add a Sandbox transport driver 2018-11-14 09:16:28 -08:00
w1 w1: Add driver for i.MX bus master controller 2019-01-01 14:12:18 +01:00
w1-eeprom w1-eeprom: Add support for Maxim DS2502 add only memory 2018-11-16 16:51:55 -05:00
watchdog watchdog: omap_wdt: Fix WDT target reset when booted from emmc 2019-09-19 12:54:29 -04:00
Kconfig Drop PCMCIA 2019-08-11 19:27:41 -04:00
Makefile Drop PCMCIA 2019-08-11 19:27:41 -04:00