drivers/system76/dgpu: Support GPU device on different PEG
Change-Id: I4386e89c6af8b1c0a2512f96f1c972685400d006
This commit is contained in:
		
				
					committed by
					
						 Jeremy Soller
						Jeremy Soller
					
				
			
			
				
	
			
			
			
						parent
						
							688d22d133
						
					
				
				
					commit
					ead3af013e
				
			| @@ -3,3 +3,10 @@ config DRIVERS_SYSTEM76_DGPU | ||||
| 	default n | ||||
| 	help | ||||
| 		System76 switchable graphics support | ||||
|  | ||||
| #TODO: make this cleaner, use device tree? | ||||
| config DRIVERS_SYSTEM76_DGPU_DEVICE | ||||
| 	hex | ||||
| 	default 0x01 | ||||
| 	help | ||||
| 		System76 switchable graphics root device number | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| /* SPDX-License-Identifier: GPL-2.0-only */ | ||||
|  | ||||
| Device (\_SB.PCI0.PEGP) { | ||||
| 	Name (_ADR, 0x00010000) | ||||
| 	Name (_ADR, CONFIG_DRIVERS_SYSTEM76_DGPU_DEVICE << 16) | ||||
|  | ||||
| 	PowerResource (PWRR, 0, 0) { | ||||
| 		Name (_STA, 1) | ||||
| @@ -35,7 +35,8 @@ Device (\_SB.PCI0.PEGP.DEV0) { | ||||
|  | ||||
| 	// Memory mapped PCI express registers | ||||
| 	// Not sure what this stuff is, but it is used to get into GC6 | ||||
| 	OperationRegion (RPCX, SystemMemory, 0xE0008000, 0x1000) | ||||
|         //TODO: use DGPU_DEVICE to generate address | ||||
| 	OperationRegion (RPCX, SystemMemory, CONFIG_MMCONF_BASE_ADDRESS + 0x8000, 0x1000) | ||||
| 	Field (RPCX, ByteAcc, NoLock, Preserve) { | ||||
| 		PVID,   16, | ||||
| 		PDID,   16, | ||||
|   | ||||
| @@ -55,13 +55,13 @@ static struct device_operations dgpu_pci_ops_dev = { | ||||
| static void dgpu_above_4g(void *unused) { | ||||
| 	struct device *pdev; | ||||
|  | ||||
| 	// Find PEG0 | ||||
| 	pdev = pcidev_on_root(1, 0); | ||||
| 	// Find PEGP | ||||
| 	pdev = pcidev_on_root(CONFIG_DRIVERS_SYSTEM76_DGPU_DEVICE, 0); | ||||
| 	if (!pdev) { | ||||
| 		printk(BIOS_ERR, "system76: failed to find PEG0\n"); | ||||
| 		printk(BIOS_ERR, "system76: failed to find PEGP\n"); | ||||
| 		return; | ||||
| 	} | ||||
| 	printk(BIOS_INFO, "system76: PEG0 at %p, %04x:%04x\n", pdev, pdev->vendor, pdev->device); | ||||
| 	printk(BIOS_INFO, "system76: PEGP at %p, %04x:%04x\n", pdev, pdev->vendor, pdev->device); | ||||
|  | ||||
|     int fn; | ||||
|     for (fn = 0; fn < 8; fn++) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user