-From d95e670cd1395ffd8410bed809b6d060f2183d6b Mon Sep 17 00:00:00 2001
+From 4803193b165c67abcd7cb10dd0c178dbcffb6cc7 Mon Sep 17 00:00:00 2001
From: Gabor Juhos <juhosg@openwrt.org>
Date: Mon, 5 Jan 2009 11:01:09 +0100
-Subject: [PATCH 05/11] ath9k: move PCI code into separate file
+Subject: [PATCH v3 05/11] ath9k: move PCI code into separate file
Now that we have converted all bus specific routines to replaceable, we
can move the PCI specific codes into a separate file.
+Changes-licensed-under: ISC
+
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
---
drivers/net/wireless/ath9k/Makefile | 1 +
- drivers/net/wireless/ath9k/core.h | 18 ++-
- drivers/net/wireless/ath9k/main.c | 299 +++--------------------------------
- drivers/net/wireless/ath9k/pci.c | 289 +++++++++++++++++++++++++++++++++
+ drivers/net/wireless/ath9k/core.h | 19 ++-
+ drivers/net/wireless/ath9k/main.c | 300 +++--------------------------------
+ drivers/net/wireless/ath9k/pci.c | 287 +++++++++++++++++++++++++++++++++
4 files changed, 328 insertions(+), 279 deletions(-)
+ create mode 100644 drivers/net/wireless/ath9k/pci.c
--- a/drivers/net/wireless/ath9k/Makefile
+++ b/drivers/net/wireless/ath9k/Makefile
#include <net/mac80211.h>
#include <linux/leds.h>
#include <linux/rfkill.h>
-@@ -766,4 +766,20 @@ static inline void ath_bus_cleanup(struc
+@@ -767,4 +767,21 @@ static inline void ath_bus_cleanup(struc
sc->bus_ops->cleanup(sc);
}
+extern struct ieee80211_ops ath9k_ops;
+
+irqreturn_t ath_isr(int irq, void *dev);
++void ath_cleanup(struct ath_softc *sc);
+int ath_attach(u16 devid, struct ath_softc *sc);
+void ath_detach(struct ath_softc *sc);
+const char *ath_mac_bb_name(u32 mac_bb_version);
#endif /* CORE_H */
--- a/drivers/net/wireless/ath9k/main.c
+++ b/drivers/net/wireless/ath9k/main.c
-@@ -28,38 +28,6 @@ MODULE_DESCRIPTION("Support for Atheros
+@@ -28,39 +28,6 @@ MODULE_DESCRIPTION("Support for Atheros
MODULE_SUPPORTED_DEVICE("Atheros 802.11n WLAN cards");
MODULE_LICENSE("Dual BSD/GPL");
-};
-
-static void ath_detach(struct ath_softc *sc);
+-static void ath_cleanup(struct ath_softc *sc);
-
-/* return bus cachesize in 4B word units */
-
static void ath_cache_conf_rate(struct ath_softc *sc,
struct ieee80211_conf *conf)
{
-@@ -497,7 +465,7 @@ static void ath9k_tasklet(unsigned long
+@@ -500,7 +467,7 @@ static void ath9k_tasklet(unsigned long
ath9k_hw_set_interrupts(sc->sc_ah, sc->sc_imask);
}
{
struct ath_softc *sc = dev;
struct ath_hal *ah = sc->sc_ah;
-@@ -1278,7 +1246,7 @@ static int ath_start_rfkill_poll(struct
+@@ -1281,7 +1248,7 @@ static int ath_start_rfkill_poll(struct
}
#endif /* CONFIG_RFKILL */
+-static void ath_cleanup(struct ath_softc *sc)
++void ath_cleanup(struct ath_softc *sc)
+ {
+ ath_detach(sc);
+ free_irq(sc->irq, sc);
+@@ -1289,7 +1256,7 @@ static void ath_cleanup(struct ath_softc
+ ieee80211_free_hw(sc->hw);
+ }
+
-static void ath_detach(struct ath_softc *sc)
+void ath_detach(struct ath_softc *sc)
{
struct ieee80211_hw *hw = sc->hw;
int i = 0;
-@@ -1529,7 +1497,7 @@ bad:
+@@ -1543,7 +1510,7 @@ bad:
return error;
}
{
struct ieee80211_hw *hw = sc->hw;
int error = 0;
-@@ -2448,7 +2416,7 @@ static int ath9k_ampdu_action(struct iee
+@@ -2466,7 +2433,7 @@ static int ath9k_ampdu_action(struct iee
return ret;
}
.tx = ath9k_tx,
.start = ath9k_start,
.stop = ath9k_stop,
-@@ -2492,7 +2460,7 @@ static struct {
+@@ -2510,7 +2477,7 @@ static struct {
/*
* Return the MAC/BB name. "????" is returned if the MAC/BB is unknown.
*/
ath_mac_bb_name(u32 mac_bb_version)
{
int i;
-@@ -2509,7 +2477,7 @@ ath_mac_bb_name(u32 mac_bb_version)
+@@ -2527,7 +2494,7 @@ ath_mac_bb_name(u32 mac_bb_version)
/*
* Return the RF name. "????" is returned if the RF is unknown.
*/
ath_rf_name(u16 rf_version)
{
int i;
-@@ -2523,236 +2491,7 @@ ath_rf_name(u16 rf_version)
+@@ -2541,234 +2508,7 @@ ath_rf_name(u16 rf_version)
return "????";
}
-{
- struct pci_dev *pdev = to_pci_dev(sc->dev);
-
-- ath_detach(sc);
-- if (pdev->irq)
-- free_irq(pdev->irq, sc);
- pci_iounmap(pdev, sc->mem);
- pci_release_region(pdev, 0);
- pci_disable_device(pdev);
-- ieee80211_free_hw(sc->hw);
-}
-
-static struct ath_bus_ops ath_pci_bus_ops = {
- goto bad4;
- }
-
+- sc->irq = pdev->irq;
+-
- ah = sc->sc_ah;
- printk(KERN_INFO
- "%s: Atheros AR%s MAC/BB Rev:%x "
- struct ieee80211_hw *hw = pci_get_drvdata(pdev);
- struct ath_softc *sc = hw->priv;
-
-- ath_pci_cleanup(sc);
+- ath_cleanup(sc);
-}
-
-#ifdef CONFIG_PM
{
int error;
-@@ -2764,26 +2503,30 @@ static int __init init_ath_pci(void)
+@@ -2780,26 +2520,30 @@ static int __init init_ath_pci(void)
printk(KERN_ERR
"Unable to register rate control algorithm: %d\n",
error);
+module_exit(ath9k_exit);
--- /dev/null
+++ b/drivers/net/wireless/ath9k/pci.c
-@@ -0,0 +1,289 @@
+@@ -0,0 +1,287 @@
+/*
+ * Copyright (c) 2008 Atheros Communications Inc.
+ *
+{
+ struct pci_dev *pdev = to_pci_dev(sc->dev);
+
-+ ath_detach(sc);
-+ if (pdev->irq)
-+ free_irq(pdev->irq, sc);
+ pci_iounmap(pdev, sc->mem);
+ pci_release_region(pdev, 0);
+ pci_disable_device(pdev);
-+ ieee80211_free_hw(sc->hw);
+}
+
+static struct ath_bus_ops ath_pci_bus_ops = {
+ goto bad4;
+ }
+
++ sc->irq = pdev->irq;
++
+ ah = sc->sc_ah;
+ printk(KERN_INFO
+ "%s: Atheros AR%s MAC/BB Rev:%x "
+ struct ieee80211_hw *hw = pci_get_drvdata(pdev);
+ struct ath_softc *sc = hw->priv;
+
-+ ath_pci_cleanup(sc);
++ ath_cleanup(sc);
+}
+
+#ifdef CONFIG_PM