ide: separate PCI specific init from generic init in ide_pci_setup_ports()
* Setup ->mate and ->channel in ide_pci_setup_ports() instead of in ide_hwif_configure(). * Make 'port' parameter for ide_hwif_configure() 'unsigned int'. * Separate PCI specific init from generic init in ide_pci_setup_ports(). Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
		
							parent
							
								
									bf77c53171
								
							
						
					
					
						commit
						1ebf74936b
					
				| @ -339,7 +339,8 @@ static int ide_pci_check_iomem(struct pci_dev *dev, const struct ide_port_info * | ||||
|  *	ide_hwif_configure	-	configure an IDE interface | ||||
|  *	@dev: PCI device holding interface | ||||
|  *	@d: IDE port info | ||||
|  *	@mate: Paired interface if any | ||||
|  *	@port: port number | ||||
|  *	@irq: PCI IRQ | ||||
|  * | ||||
|  *	Perform the initial set up for the hardware interface structure. This | ||||
|  *	is done per interface port rather than per PCI device. There may be | ||||
| @ -348,7 +349,9 @@ static int ide_pci_check_iomem(struct pci_dev *dev, const struct ide_port_info * | ||||
|  *	Returns the new hardware interface structure, or NULL on a failure | ||||
|  */ | ||||
| 
 | ||||
| static ide_hwif_t *ide_hwif_configure(struct pci_dev *dev, const struct ide_port_info *d, ide_hwif_t *mate, int port, int irq) | ||||
| static ide_hwif_t *ide_hwif_configure(struct pci_dev *dev, | ||||
| 				      const struct ide_port_info *d, | ||||
| 				      unsigned int port, int irq) | ||||
| { | ||||
| 	unsigned long ctl = 0, base = 0; | ||||
| 	ide_hwif_t *hwif; | ||||
| @ -394,12 +397,7 @@ static ide_hwif_t *ide_hwif_configure(struct pci_dev *dev, const struct ide_port | ||||
| 
 | ||||
| 	hwif->dev = &dev->dev; | ||||
| 	hwif->cds = d; | ||||
| 	hwif->channel = port; | ||||
| 
 | ||||
| 	if (mate) { | ||||
| 		hwif->mate = mate; | ||||
| 		mate->mate = hwif; | ||||
| 	} | ||||
| 	return hwif; | ||||
| } | ||||
| 
 | ||||
| @ -527,10 +525,25 @@ void ide_pci_setup_ports(struct pci_dev *dev, const struct ide_port_info *d, int | ||||
| 			continue;	/* port not enabled */ | ||||
| 		} | ||||
| 
 | ||||
| 		if ((hwif = ide_hwif_configure(dev, d, mate, port, pciirq)) == NULL) | ||||
| 		hwif = ide_hwif_configure(dev, d, port, pciirq); | ||||
| 		if (hwif == NULL) | ||||
| 			continue; | ||||
| 
 | ||||
| 		*(idx + port) = hwif->index; | ||||
| 	} | ||||
| 
 | ||||
| 	for (port = 0; port < channels; ++port) { | ||||
| 		if (*(idx + port) == 0xff) | ||||
| 			continue; | ||||
| 
 | ||||
| 		hwif = &ide_hwifs[*(idx + port)]; | ||||
| 
 | ||||
| 		if (mate) { | ||||
| 			hwif->mate = mate; | ||||
| 			mate->mate = hwif; | ||||
| 		} | ||||
| 
 | ||||
| 		hwif->channel = port; | ||||
| 
 | ||||
| 		if (d->init_iops) | ||||
| 			d->init_iops(hwif); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user