forked from mirrors/linux
		
	PCI: Add helpers to manage pci_dev->irq and pci_dev->irq_managed
Add pci_has_managed_irq(), pci_set_managed_irq(), and pci_reset_managed_irq() to simplify code. No functional change. [bhelgaas: changelog] Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Acked-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
		
							parent
							
								
									991de2e590
								
							
						
					
					
						commit
						811a4e6fce
					
				
					 4 changed files with 27 additions and 14 deletions
				
			
		|  | @ -211,7 +211,7 @@ static int intel_mid_pci_irq_enable(struct pci_dev *dev) | |||
| 	struct irq_alloc_info info; | ||||
| 	int polarity; | ||||
| 
 | ||||
| 	if (dev->irq_managed && dev->irq > 0) | ||||
| 	if (pci_has_managed_irq(dev)) | ||||
| 		return 0; | ||||
| 
 | ||||
| 	if (intel_mid_identify_cpu() == INTEL_MID_CPU_CHIP_TANGIER) | ||||
|  | @ -234,7 +234,7 @@ static int intel_mid_pci_irq_enable(struct pci_dev *dev) | |||
| 
 | ||||
| static void intel_mid_pci_irq_disable(struct pci_dev *dev) | ||||
| { | ||||
| 	if (dev->irq_managed && dev->irq > 0) { | ||||
| 	if (pci_has_managed_irq(dev)) { | ||||
| 		mp_unmap_irq(dev->irq); | ||||
| 		dev->irq_managed = 0; | ||||
| 		/*
 | ||||
|  |  | |||
|  | @ -1202,7 +1202,7 @@ static int pirq_enable_irq(struct pci_dev *dev) | |||
| 			struct pci_dev *temp_dev; | ||||
| 			int irq; | ||||
| 
 | ||||
| 			if (dev->irq_managed && dev->irq > 0) | ||||
| 			if (pci_has_managed_irq(dev)) | ||||
| 				return 0; | ||||
| 
 | ||||
| 			irq = IO_APIC_get_PCI_irq_vector(dev->bus->number, | ||||
|  | @ -1230,8 +1230,7 @@ static int pirq_enable_irq(struct pci_dev *dev) | |||
| 			} | ||||
| 			dev = temp_dev; | ||||
| 			if (irq >= 0) { | ||||
| 				dev->irq_managed = 1; | ||||
| 				dev->irq = irq; | ||||
| 				pci_set_managed_irq(dev, irq); | ||||
| 				dev_info(&dev->dev, "PCI->APIC IRQ transform: " | ||||
| 					 "INT %c -> IRQ %d\n", 'A' + pin - 1, irq); | ||||
| 				return 0; | ||||
|  | @ -1259,9 +1258,8 @@ static int pirq_enable_irq(struct pci_dev *dev) | |||
| 
 | ||||
| static void pirq_disable_irq(struct pci_dev *dev) | ||||
| { | ||||
| 	if (io_apic_assign_pci_irqs && dev->irq_managed && dev->irq) { | ||||
| 	if (io_apic_assign_pci_irqs && pci_has_managed_irq(dev)) { | ||||
| 		mp_unmap_irq(dev->irq); | ||||
| 		dev->irq = 0; | ||||
| 		dev->irq_managed = 0; | ||||
| 		pci_reset_managed_irq(dev); | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -412,7 +412,7 @@ int acpi_pci_irq_enable(struct pci_dev *dev) | |||
| 		return 0; | ||||
| 	} | ||||
| 
 | ||||
| 	if (dev->irq_managed && dev->irq > 0) | ||||
| 	if (pci_has_managed_irq(dev)) | ||||
| 		return 0; | ||||
| 
 | ||||
| 	entry = acpi_pci_irq_lookup(dev, pin); | ||||
|  | @ -457,8 +457,7 @@ int acpi_pci_irq_enable(struct pci_dev *dev) | |||
| 		kfree(entry); | ||||
| 		return rc; | ||||
| 	} | ||||
| 	dev->irq = rc; | ||||
| 	dev->irq_managed = 1; | ||||
| 	pci_set_managed_irq(dev, rc); | ||||
| 
 | ||||
| 	if (link) | ||||
| 		snprintf(link_desc, sizeof(link_desc), " -> Link[%s]", link); | ||||
|  | @ -481,7 +480,7 @@ void acpi_pci_irq_disable(struct pci_dev *dev) | |||
| 	u8 pin; | ||||
| 
 | ||||
| 	pin = dev->pin; | ||||
| 	if (!pin || !dev->irq_managed || dev->irq <= 0) | ||||
| 	if (!pin || !pci_has_managed_irq(dev)) | ||||
| 		return; | ||||
| 
 | ||||
| 	entry = acpi_pci_irq_lookup(dev, pin); | ||||
|  | @ -503,7 +502,6 @@ void acpi_pci_irq_disable(struct pci_dev *dev) | |||
| 	dev_dbg(&dev->dev, "PCI INT %c disabled\n", pin_name(pin)); | ||||
| 	if (gsi >= 0) { | ||||
| 		acpi_unregister_gsi(gsi); | ||||
| 		dev->irq_managed = 0; | ||||
| 		dev->irq = 0; | ||||
| 		pci_reset_managed_irq(dev); | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -963,6 +963,23 @@ static inline int pci_is_managed(struct pci_dev *pdev) | |||
| 	return pdev->is_managed; | ||||
| } | ||||
| 
 | ||||
| static inline void pci_set_managed_irq(struct pci_dev *pdev, unsigned int irq) | ||||
| { | ||||
| 	pdev->irq = irq; | ||||
| 	pdev->irq_managed = 1; | ||||
| } | ||||
| 
 | ||||
| static inline void pci_reset_managed_irq(struct pci_dev *pdev) | ||||
| { | ||||
| 	pdev->irq = 0; | ||||
| 	pdev->irq_managed = 0; | ||||
| } | ||||
| 
 | ||||
| static inline bool pci_has_managed_irq(struct pci_dev *pdev) | ||||
| { | ||||
| 	return pdev->irq_managed && pdev->irq > 0; | ||||
| } | ||||
| 
 | ||||
| void pci_disable_device(struct pci_dev *dev); | ||||
| 
 | ||||
| extern unsigned int pcibios_max_latency; | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Jiang Liu
						Jiang Liu