mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-04 05:50:17 +00:00 
			
		
		
		
	RFC: arm: pci: Add PCI cam support to PCI-E ecam driver
When booting U-Boot in crosvm, the virtual machine emulates a PCI cam device, not the PCI-E 'ecam' device normally seen on e.g. QEMU. This PCI device can be supported with only trivial changes to the ecam driver. Instead of adding a completely new driver which is identical besides the initialization step, add support for the PCI version to the existing driver. Signed-off-by: Alistair Delva <adelva@google.com> Cc: Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi> Cc: Ram Muthiah <rammuthiah@google.com>
This commit is contained in:
		
							parent
							
								
									e3cdc2cbb1
								
							
						
					
					
						commit
						4f2e228086
					
				@ -14,6 +14,8 @@
 | 
			
		||||
 | 
			
		||||
#include <asm/io.h>
 | 
			
		||||
 | 
			
		||||
#define TYPE_PCI 0x1
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * struct generic_ecam_pcie - generic_ecam PCIe controller state
 | 
			
		||||
 * @cfg_base: The base address of memory mapped configuration space
 | 
			
		||||
@ -46,8 +48,14 @@ static int pci_generic_ecam_conf_address(const struct udevice *bus,
 | 
			
		||||
	void *addr;
 | 
			
		||||
 | 
			
		||||
	addr = pcie->cfg_base;
 | 
			
		||||
	addr += PCIE_ECAM_OFFSET(PCI_BUS(bdf) - pcie->first_busno,
 | 
			
		||||
				 PCI_DEV(bdf), PCI_FUNC(bdf), offset);
 | 
			
		||||
 | 
			
		||||
	if (dev_get_driver_data(bus) == TYPE_PCI) {
 | 
			
		||||
		addr += ((PCI_BUS(bdf) - pcie->first_busno) << 16) |
 | 
			
		||||
			 (PCI_DEV(bdf) << 11) | (PCI_FUNC(bdf) << 8) | offset;
 | 
			
		||||
	} else {
 | 
			
		||||
		addr += PCIE_ECAM_OFFSET(PCI_BUS(bdf) - pcie->first_busno,
 | 
			
		||||
					 PCI_DEV(bdf), PCI_FUNC(bdf), offset);
 | 
			
		||||
	}
 | 
			
		||||
	*paddress = addr;
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
@ -156,7 +164,8 @@ static const struct dm_pci_ops pci_generic_ecam_ops = {
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static const struct udevice_id pci_generic_ecam_ids[] = {
 | 
			
		||||
	{ .compatible = "pci-host-ecam-generic" },
 | 
			
		||||
	{ .compatible = "pci-host-ecam-generic" /* PCI-E */ },
 | 
			
		||||
	{ .compatible = "pci-host-cam-generic", .data = TYPE_PCI },
 | 
			
		||||
	{ }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user