diff options
author | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2011-06-18 11:21:12 -0400 |
---|---|---|
committer | Wey-Yi Guy <wey-yi.w.guy@intel.com> | 2011-06-18 11:22:58 -0400 |
commit | 705cd4513a2fc561d8a2d5853cffb102bf183d70 (patch) | |
tree | 577d4d3a96b5f7acc80e4c41ba9a36148d8480ba /drivers | |
parent | 4b55b07fc9e5eccfd204cad75509bf062d3c22a3 (diff) |
iwlagn: store the irq number to iwl_bus just like dev
Since the irq number is just an unsigned int, store it inside iwl_bus
instead of calling the get_irq ops every time it is needed.
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn.c | 12 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-dev.h | 1 |
3 files changed, 8 insertions, 7 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c index 138286373850..1ac6c6475353 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c | |||
@@ -3496,6 +3496,7 @@ int iwl_probe(void *bus_specific, struct iwl_bus_ops *bus_ops, | |||
3496 | priv->bus.priv = priv; | 3496 | priv->bus.priv = priv; |
3497 | priv->bus.bus_specific = bus_specific; | 3497 | priv->bus.bus_specific = bus_specific; |
3498 | priv->bus.ops = bus_ops; | 3498 | priv->bus.ops = bus_ops; |
3499 | priv->bus.irq = priv->bus.ops->get_irq(&priv->bus); | ||
3499 | priv->bus.ops->set_drv_data(&priv->bus, priv); | 3500 | priv->bus.ops->set_drv_data(&priv->bus, priv); |
3500 | priv->bus.dev = priv->bus.ops->get_dev(&priv->bus); | 3501 | priv->bus.dev = priv->bus.ops->get_dev(&priv->bus); |
3501 | 3502 | ||
@@ -3603,11 +3604,10 @@ int iwl_probe(void *bus_specific, struct iwl_bus_ops *bus_ops, | |||
3603 | ********************/ | 3604 | ********************/ |
3604 | iwl_alloc_isr_ict(priv); | 3605 | iwl_alloc_isr_ict(priv); |
3605 | 3606 | ||
3606 | err = request_irq(priv->bus.ops->get_irq(&priv->bus), iwl_isr_ict, | 3607 | err = request_irq(priv->bus.irq, iwl_isr_ict, IRQF_SHARED, |
3607 | IRQF_SHARED, DRV_NAME, priv); | 3608 | DRV_NAME, priv); |
3608 | if (err) { | 3609 | if (err) { |
3609 | IWL_ERR(priv, "Error allocating IRQ %d\n", | 3610 | IWL_ERR(priv, "Error allocating IRQ %d\n", priv->bus.irq); |
3610 | priv->bus.ops->get_irq(&priv->bus)); | ||
3611 | goto out_uninit_drv; | 3611 | goto out_uninit_drv; |
3612 | } | 3612 | } |
3613 | 3613 | ||
@@ -3644,7 +3644,7 @@ int iwl_probe(void *bus_specific, struct iwl_bus_ops *bus_ops, | |||
3644 | out_destroy_workqueue: | 3644 | out_destroy_workqueue: |
3645 | destroy_workqueue(priv->workqueue); | 3645 | destroy_workqueue(priv->workqueue); |
3646 | priv->workqueue = NULL; | 3646 | priv->workqueue = NULL; |
3647 | free_irq(priv->bus.ops->get_irq(&priv->bus), priv); | 3647 | free_irq(priv->bus.irq, priv); |
3648 | iwl_free_isr_ict(priv); | 3648 | iwl_free_isr_ict(priv); |
3649 | out_uninit_drv: | 3649 | out_uninit_drv: |
3650 | iwl_uninit_drv(priv); | 3650 | iwl_uninit_drv(priv); |
@@ -3716,7 +3716,7 @@ void __devexit iwl_remove(struct iwl_priv * priv) | |||
3716 | priv->workqueue = NULL; | 3716 | priv->workqueue = NULL; |
3717 | iwl_free_traffic_mem(priv); | 3717 | iwl_free_traffic_mem(priv); |
3718 | 3718 | ||
3719 | free_irq(priv->bus.ops->get_irq(&priv->bus), priv); | 3719 | free_irq(priv->bus.irq, priv); |
3720 | priv->bus.ops->set_drv_data(&priv->bus, NULL); | 3720 | priv->bus.ops->set_drv_data(&priv->bus, NULL); |
3721 | 3721 | ||
3722 | iwl_uninit_drv(priv); | 3722 | iwl_uninit_drv(priv); |
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.h b/drivers/net/wireless/iwlwifi/iwl-agn.h index 848a6c3a56ad..6d5584ae5ebf 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn.h +++ b/drivers/net/wireless/iwlwifi/iwl-agn.h | |||
@@ -125,7 +125,7 @@ irqreturn_t iwl_isr_ict(int irq, void *data); | |||
125 | static inline void iwl_synchronize_irq(struct iwl_priv *priv) | 125 | static inline void iwl_synchronize_irq(struct iwl_priv *priv) |
126 | { | 126 | { |
127 | /* wait to make sure we flush pending tasklet*/ | 127 | /* wait to make sure we flush pending tasklet*/ |
128 | synchronize_irq(priv->bus.ops->get_irq(&priv->bus)); | 128 | synchronize_irq(priv->bus.irq); |
129 | tasklet_kill(&priv->irq_tasklet); | 129 | tasklet_kill(&priv->irq_tasklet); |
130 | } | 130 | } |
131 | 131 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h index 2d13d8928e2c..8ec04f20c96a 100644 --- a/drivers/net/wireless/iwlwifi/iwl-dev.h +++ b/drivers/net/wireless/iwlwifi/iwl-dev.h | |||
@@ -1224,6 +1224,7 @@ struct iwl_bus { | |||
1224 | struct iwl_priv *priv; /* driver's context */ | 1224 | struct iwl_priv *priv; /* driver's context */ |
1225 | struct device *dev; | 1225 | struct device *dev; |
1226 | struct iwl_bus_ops *ops; | 1226 | struct iwl_bus_ops *ops; |
1227 | unsigned int irq; | ||
1227 | }; | 1228 | }; |
1228 | 1229 | ||
1229 | struct iwl_priv { | 1230 | struct iwl_priv { |