diff options
Diffstat (limited to 'drivers/pci/htirq.c')
| -rw-r--r-- | drivers/pci/htirq.c | 37 | 
1 files changed, 16 insertions, 21 deletions
diff --git a/drivers/pci/htirq.c b/drivers/pci/htirq.c index 834842aa5bb..a94dd2c4183 100644 --- a/drivers/pci/htirq.c +++ b/drivers/pci/htirq.c @@ -9,6 +9,7 @@  #include <linux/irq.h>  #include <linux/pci.h>  #include <linux/spinlock.h> +#include <linux/export.h>  #include <linux/slab.h>  #include <linux/htirq.h> @@ -34,7 +35,7 @@ struct ht_irq_cfg {  void write_ht_irq_msg(unsigned int irq, struct ht_irq_msg *msg)  { -	struct ht_irq_cfg *cfg = get_irq_data(irq); +	struct ht_irq_cfg *cfg = irq_get_handler_data(irq);  	unsigned long flags;  	spin_lock_irqsave(&ht_irq_lock, flags);  	if (cfg->msg.address_lo != msg->address_lo) { @@ -53,13 +54,13 @@ void write_ht_irq_msg(unsigned int irq, struct ht_irq_msg *msg)  void fetch_ht_irq_msg(unsigned int irq, struct ht_irq_msg *msg)  { -	struct ht_irq_cfg *cfg = get_irq_data(irq); +	struct ht_irq_cfg *cfg = irq_get_handler_data(irq);  	*msg = cfg->msg;  }  void mask_ht_irq(struct irq_data *data)  { -	struct ht_irq_cfg *cfg = irq_data_get_irq_data(data); +	struct ht_irq_cfg *cfg = irq_data_get_irq_handler_data(data);  	struct ht_irq_msg msg = cfg->msg;  	msg.address_lo |= 1; @@ -68,7 +69,7 @@ void mask_ht_irq(struct irq_data *data)  void unmask_ht_irq(struct irq_data *data)  { -	struct ht_irq_cfg *cfg = irq_data_get_irq_data(data); +	struct ht_irq_cfg *cfg = irq_data_get_irq_handler_data(data);  	struct ht_irq_msg msg = cfg->msg;  	msg.address_lo &= ~1; @@ -86,12 +87,9 @@ void unmask_ht_irq(struct irq_data *data)  int __ht_create_irq(struct pci_dev *dev, int idx, ht_irq_update_t *update)  {  	struct ht_irq_cfg *cfg; +	int max_irq, pos, irq;  	unsigned long flags;  	u32 data; -	int max_irq; -	int pos; -	int irq; -	int node;  	pos = pci_find_ht_capability(dev, HT_CAPTYPE_IRQ);  	if (!pos) @@ -104,7 +102,7 @@ int __ht_create_irq(struct pci_dev *dev, int idx, ht_irq_update_t *update)  	spin_unlock_irqrestore(&ht_irq_lock, flags);  	max_irq = (data >> 16) & 0xff; -	if ( idx > max_irq) +	if (idx > max_irq)  		return -EINVAL;  	cfg = kmalloc(sizeof(*cfg), GFP_KERNEL); @@ -119,14 +117,12 @@ int __ht_create_irq(struct pci_dev *dev, int idx, ht_irq_update_t *update)  	cfg->msg.address_lo = 0xffffffff;  	cfg->msg.address_hi = 0xffffffff; -	node = dev_to_node(&dev->dev); -	irq = create_irq_nr(0, node); - -	if (irq <= 0) { +	irq = irq_alloc_hwirq(dev_to_node(&dev->dev)); +	if (!irq) {  		kfree(cfg);  		return -EBUSY;  	} -	set_irq_data(irq, cfg); +	irq_set_handler_data(irq, cfg);  	if (arch_setup_ht_irq(irq, dev) < 0) {  		ht_destroy_irq(irq); @@ -135,6 +131,7 @@ int __ht_create_irq(struct pci_dev *dev, int idx, ht_irq_update_t *update)  	return irq;  } +EXPORT_SYMBOL(__ht_create_irq);  /**   * ht_create_irq - create an irq and attach it to a device. @@ -150,6 +147,7 @@ int ht_create_irq(struct pci_dev *dev, int idx)  {  	return __ht_create_irq(dev, idx, NULL);  } +EXPORT_SYMBOL(ht_create_irq);  /**   * ht_destroy_irq - destroy an irq created with ht_create_irq @@ -162,14 +160,11 @@ void ht_destroy_irq(unsigned int irq)  {  	struct ht_irq_cfg *cfg; -	cfg = get_irq_data(irq); -	set_irq_chip(irq, NULL); -	set_irq_data(irq, NULL); -	destroy_irq(irq); +	cfg = irq_get_handler_data(irq); +	irq_set_chip(irq, NULL); +	irq_set_handler_data(irq, NULL); +	irq_free_hwirq(irq);  	kfree(cfg);  } - -EXPORT_SYMBOL(__ht_create_irq); -EXPORT_SYMBOL(ht_create_irq);  EXPORT_SYMBOL(ht_destroy_irq);  | 
