diff options
Diffstat (limited to 'arch/powerpc/sysdev/fsl_msi.c')
| -rw-r--r-- | arch/powerpc/sysdev/fsl_msi.c | 17 | 
1 files changed, 10 insertions, 7 deletions
diff --git a/arch/powerpc/sysdev/fsl_msi.c b/arch/powerpc/sysdev/fsl_msi.c index d5679dc1e20..92e78333c47 100644 --- a/arch/powerpc/sysdev/fsl_msi.c +++ b/arch/powerpc/sysdev/fsl_msi.c @@ -110,7 +110,7 @@ static void fsl_teardown_msi_irqs(struct pci_dev *pdev)  	list_for_each_entry(entry, &pdev->msi_list, list) {  		if (entry->irq == NO_IRQ)  			continue; -		msi_data = irq_get_handler_data(entry->irq); +		msi_data = irq_get_chip_data(entry->irq);  		irq_set_msi_desc(entry->irq, NULL);  		msi_bitmap_free_hwirqs(&msi_data->bitmap,  				       virq_to_hw(entry->irq), 1); @@ -168,7 +168,7 @@ static int fsl_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type)  			rc = -ENOSPC;  			goto out_free;  		} -		irq_set_handler_data(virq, msi_data); +		/* chip_data is msi_data via host->hostdata in host->map() */  		irq_set_msi_desc(virq, entry);  		fsl_compose_msi_msg(pdev, hwirq, &msg, msi_data); @@ -193,7 +193,7 @@ static void fsl_msi_cascade(unsigned int irq, struct irq_desc *desc)  	u32 have_shift = 0;  	struct fsl_msi_cascade_data *cascade_data; -	cascade_data = (struct fsl_msi_cascade_data *)irq_get_handler_data(irq); +	cascade_data = irq_get_handler_data(irq);  	msi_data = cascade_data->msi_data;  	raw_spin_lock(&desc->lock); @@ -253,7 +253,7 @@ unlock:  static int fsl_of_msi_remove(struct platform_device *ofdev)  { -	struct fsl_msi *msi = ofdev->dev.platform_data; +	struct fsl_msi *msi = platform_get_drvdata(ofdev);  	int virq, i;  	struct fsl_msi_cascade_data *cascade_data; @@ -304,8 +304,10 @@ static int __devinit fsl_msi_setup_hwirq(struct fsl_msi *msi,  	return 0;  } +static const struct of_device_id fsl_of_msi_ids[];  static int __devinit fsl_of_msi_probe(struct platform_device *dev)  { +	const struct of_device_id *match;  	struct fsl_msi *msi;  	struct resource res;  	int err, i, j, irq_index, count; @@ -316,9 +318,10 @@ static int __devinit fsl_of_msi_probe(struct platform_device *dev)  	u32 offset;  	static const u32 all_avail[] = { 0, NR_MSI_IRQS }; -	if (!dev->dev.of_match) +	match = of_match_device(fsl_of_msi_ids, &dev->dev); +	if (!match)  		return -EINVAL; -	features = dev->dev.of_match->data; +	features = match->data;  	printk(KERN_DEBUG "Setting up Freescale MSI support\n"); @@ -327,7 +330,7 @@ static int __devinit fsl_of_msi_probe(struct platform_device *dev)  		dev_err(&dev->dev, "No memory for MSI structure\n");  		return -ENOMEM;  	} -	dev->dev.platform_data = msi; +	platform_set_drvdata(dev, msi);  	msi->irqhost = irq_alloc_host(dev->dev.of_node, IRQ_HOST_MAP_LINEAR,  				      NR_MSI_IRQS, &fsl_msi_host_ops, 0);  |