X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/1be286180b3df7250741aa92090fcf090bba0844..6d9af11c8cb11d5deb4f53649c7b96faba88df47:/package/mac80211/patches/405-ath9k-move-PCI-code-into-separate-file.patch diff --git a/package/mac80211/patches/405-ath9k-move-PCI-code-into-separate-file.patch b/package/mac80211/patches/405-ath9k-move-PCI-code-into-separate-file.patch index 2e673ed5d..4a55ded9e 100644 --- a/package/mac80211/patches/405-ath9k-move-PCI-code-into-separate-file.patch +++ b/package/mac80211/patches/405-ath9k-move-PCI-code-into-separate-file.patch @@ -1,19 +1,22 @@ -From 957a60be8a6b55da588df12e160ac53e3b36238e Mon Sep 17 00:00:00 2001 +From 4803193b165c67abcd7cb10dd0c178dbcffb6cc7 Mon Sep 17 00:00:00 2001 From: Gabor Juhos -Date: Fri, 2 Jan 2009 16:10:25 +0100 -Subject: [RFC 05/12] ath9k: move PCI code into separate file +Date: Mon, 5 Jan 2009 11:01:09 +0100 +Subject: [PATCH v3 05/11] ath9k: move PCI code into separate file -Convert 'struct pci_dev' to 'struct device' to make it usable on the AHB -bus as well. +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 Signed-off-by: Imre Kaloz --- drivers/net/wireless/ath9k/Makefile | 1 + - drivers/net/wireless/ath9k/core.h | 16 ++ - drivers/net/wireless/ath9k/main.c | 368 ++--------------------------------- - drivers/net/wireless/ath9k/pci.c | 357 +++++++++++++++++++++++++++++++++ - 4 files changed, 395 insertions(+), 347 deletions(-) + 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 @@ -27,13 +30,23 @@ Signed-off-by: Imre Kaloz obj-$(CONFIG_ATH9K) += ath9k.o --- a/drivers/net/wireless/ath9k/core.h +++ b/drivers/net/wireless/ath9k/core.h -@@ -857,4 +857,20 @@ static inline void ath_bus_cleanup(struc +@@ -18,7 +18,7 @@ + #define CORE_H + + #include +-#include ++#include + #include + #include + #include +@@ -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); @@ -50,7 +63,7 @@ Signed-off-by: Imre Kaloz #endif /* CORE_H */ --- a/drivers/net/wireless/ath9k/main.c +++ b/drivers/net/wireless/ath9k/main.c -@@ -28,37 +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"); @@ -65,13 +78,16 @@ Signed-off-by: Imre Kaloz -}; - -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_pci_read_cachesize(struct ath_softc *sc, int *csz) -{ - u8 u8tmp; - -- pci_read_config_byte(sc->pdev, PCI_CACHE_LINE_SIZE, (u8 *)&u8tmp); +- pci_read_config_byte(to_pci_dev(sc->dev), PCI_CACHE_LINE_SIZE, +- (u8 *)&u8tmp); - *csz = (int)u8tmp; - - /* @@ -84,11 +100,10 @@ Signed-off-by: Imre Kaloz - *csz = DEFAULT_CACHELINE >> 2; /* Use the default size */ -} - -- - static void ath_setcurmode(struct ath_softc *sc, enum wireless_mode mode) + static void ath_cache_conf_rate(struct ath_softc *sc, + struct ieee80211_conf *conf) { - sc->cur_rate_table = sc->hw_rate_table[mode]; -@@ -499,7 +468,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); } @@ -97,16 +112,25 @@ Signed-off-by: Imre Kaloz { struct ath_softc *sc = dev; struct ath_hal *ah = sc->sc_ah; -@@ -1287,7 +1256,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; -@@ -1538,7 +1507,7 @@ bad: +@@ -1543,7 +1510,7 @@ bad: return error; } @@ -115,7 +139,7 @@ Signed-off-by: Imre Kaloz { struct ieee80211_hw *hw = sc->hw; int error = 0; -@@ -2466,7 +2435,7 @@ static int ath9k_ampdu_action(struct iee +@@ -2466,7 +2433,7 @@ static int ath9k_ampdu_action(struct iee return ret; } @@ -124,7 +148,7 @@ Signed-off-by: Imre Kaloz .tx = ath9k_tx, .start = ath9k_start, .stop = ath9k_stop, -@@ -2510,7 +2479,7 @@ static struct { +@@ -2510,7 +2477,7 @@ static struct { /* * Return the MAC/BB name. "????" is returned if the MAC/BB is unknown. */ @@ -133,7 +157,7 @@ Signed-off-by: Imre Kaloz ath_mac_bb_name(u32 mac_bb_version) { int i; -@@ -2527,7 +2496,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. */ @@ -142,95 +166,21 @@ Signed-off-by: Imre Kaloz ath_rf_name(u16 rf_version) { int i; -@@ -2541,306 +2510,7 @@ ath_rf_name(u16 rf_version) +@@ -2541,234 +2508,7 @@ ath_rf_name(u16 rf_version) return "????"; } --static dma_addr_t ath_pci_map_single_to_device(struct ath_softc *sc, -- void *p, size_t size) --{ -- return pci_map_single(sc->pdev, p, size, PCI_DMA_TODEVICE); --} -- --static void ath_pci_unmap_single_to_device(struct ath_softc *sc, -- dma_addr_t da, size_t size) --{ -- pci_unmap_single(sc->pdev, da, size, PCI_DMA_TODEVICE); --} -- --static dma_addr_t ath_pci_map_single_from_device(struct ath_softc *sc, -- void *p, size_t size) --{ -- return pci_map_single(sc->pdev, p, size, PCI_DMA_FROMDEVICE); --} -- --static void ath_pci_unmap_single_from_device(struct ath_softc *sc, -- dma_addr_t da, size_t size) --{ -- pci_unmap_single(sc->pdev, da, size, PCI_DMA_FROMDEVICE); --} -- --static int ath_pci_dma_mapping_error(struct ath_softc *sc, dma_addr_t da) --{ -- return pci_dma_mapping_error(sc->pdev, da); --} -- --static void ath_pci_sync_single_for_cpu(struct ath_softc *sc, dma_addr_t da, -- size_t size) --{ -- pci_dma_sync_single_for_cpu(sc->pdev, da, size, -- PCI_DMA_FROMDEVICE); --} -- --static void *ath_pci_dma_alloc(struct ath_softc *sc, size_t size, -- dma_addr_t *pda) --{ -- return pci_alloc_consistent(sc->pdev, size, pda); --} -- --static void ath_pci_dma_free(struct ath_softc *sc, size_t size, -- void *p, dma_addr_t da) --{ -- pci_free_consistent(sc->pdev, size, p, da); --} -- --static u32 ath_pci_reg_read(struct ath_hal *ah, unsigned reg) --{ -- return ioread32(ah->ah_sh + reg); --} -- --static void ath_pci_reg_write(struct ath_hal *ah, unsigned reg, u32 val) --{ -- iowrite32(val, ah->ah_sh + reg); --} -- -static void ath_pci_cleanup(struct ath_softc *sc) -{ -- ath_detach(sc); -- if (sc->pdev->irq) -- free_irq(sc->pdev->irq, sc); -- pci_iounmap(sc->pdev, sc->mem); -- pci_release_region(sc->pdev, 0); -- pci_disable_device(sc->pdev); -- ieee80211_free_hw(sc->hw); --} -- --static struct ath_bus_ops ath_pci_bus_ops = { -- .dma_map_single_to_device = ath_pci_map_single_to_device, -- .dma_unmap_single_to_device = ath_pci_unmap_single_to_device, -- .dma_map_single_from_device = ath_pci_map_single_from_device, -- .dma_unmap_single_from_device = ath_pci_unmap_single_from_device, -- .dma_map_single_to_device = ath_pci_map_single_to_device, -- .dma_mapping_error = ath_pci_dma_mapping_error, -- .dma_sync_single_for_cpu = ath_pci_sync_single_for_cpu, -- .dma_alloc = ath_pci_dma_alloc, -- .dma_free = ath_pci_dma_free, +- struct pci_dev *pdev = to_pci_dev(sc->dev); - -- .reg_read = ath_pci_reg_read, -- .reg_write = ath_pci_reg_write, +- pci_iounmap(pdev, sc->mem); +- pci_release_region(pdev, 0); +- pci_disable_device(pdev); +-} - +-static struct ath_bus_ops ath_pci_bus_ops = { - .read_cachesize = ath_pci_read_cachesize, -- - .cleanup = ath_pci_cleanup, -}; - @@ -320,7 +270,7 @@ Signed-off-by: Imre Kaloz - - sc = hw->priv; - sc->hw = hw; -- sc->pdev = pdev; +- sc->dev = &pdev->dev; - sc->mem = mem; - sc->bus_ops = &ath_pci_bus_ops; - @@ -338,6 +288,8 @@ Signed-off-by: Imre Kaloz - goto bad4; - } - +- sc->irq = pdev->irq; +- - ah = sc->sc_ah; - printk(KERN_INFO - "%s: Atheros AR%s MAC/BB Rev:%x " @@ -368,7 +320,7 @@ Signed-off-by: Imre Kaloz - struct ieee80211_hw *hw = pci_get_drvdata(pdev); - struct ath_softc *sc = hw->priv; - -- ath_pci_cleanup(sc); +- ath_cleanup(sc); -} - -#ifdef CONFIG_PM @@ -450,7 +402,7 @@ Signed-off-by: Imre Kaloz { int error; -@@ -2852,26 +2522,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); @@ -493,7 +445,7 @@ Signed-off-by: Imre Kaloz +module_exit(ath9k_exit); --- /dev/null +++ b/drivers/net/wireless/ath9k/pci.c -@@ -0,0 +1,357 @@ +@@ -0,0 +1,287 @@ +/* + * Copyright (c) 2008 Atheros Communications Inc. + * @@ -511,6 +463,7 @@ Signed-off-by: Imre Kaloz + */ + +#include ++#include +#include "core.h" +#include "reg.h" +#include "hw.h" @@ -530,7 +483,8 @@ Signed-off-by: Imre Kaloz +{ + u8 u8tmp; + -+ pci_read_config_byte(sc->pdev, PCI_CACHE_LINE_SIZE, (u8 *)&u8tmp); ++ pci_read_config_byte(to_pci_dev(sc->dev), PCI_CACHE_LINE_SIZE, ++ (u8 *)&u8tmp); + *csz = (int)u8tmp; + + /* @@ -543,91 +497,17 @@ Signed-off-by: Imre Kaloz + *csz = DEFAULT_CACHELINE >> 2; /* Use the default size */ +} + -+static dma_addr_t ath_pci_map_single_to_device(struct ath_softc *sc, -+ void *p, size_t size) -+{ -+ return pci_map_single(sc->pdev, p, size, PCI_DMA_TODEVICE); -+} -+ -+static void ath_pci_unmap_single_to_device(struct ath_softc *sc, -+ dma_addr_t da, size_t size) -+{ -+ pci_unmap_single(sc->pdev, da, size, PCI_DMA_TODEVICE); -+} -+ -+static dma_addr_t ath_pci_map_single_from_device(struct ath_softc *sc, -+ void *p, size_t size) -+{ -+ return pci_map_single(sc->pdev, p, size, PCI_DMA_FROMDEVICE); -+} -+ -+static void ath_pci_unmap_single_from_device(struct ath_softc *sc, -+ dma_addr_t da, size_t size) -+{ -+ pci_unmap_single(sc->pdev, da, size, PCI_DMA_FROMDEVICE); -+} -+ -+static int ath_pci_dma_mapping_error(struct ath_softc *sc, dma_addr_t da) -+{ -+ return pci_dma_mapping_error(sc->pdev, da); -+} -+ -+static void ath_pci_sync_single_for_cpu(struct ath_softc *sc, dma_addr_t da, -+ size_t size) -+{ -+ pci_dma_sync_single_for_cpu(sc->pdev, da, size, -+ PCI_DMA_FROMDEVICE); -+} -+ -+static void *ath_pci_dma_alloc(struct ath_softc *sc, size_t size, -+ dma_addr_t *pda) -+{ -+ return pci_alloc_consistent(sc->pdev, size, pda); -+} -+ -+static void ath_pci_dma_free(struct ath_softc *sc, size_t size, -+ void *p, dma_addr_t da) -+{ -+ pci_free_consistent(sc->pdev, size, p, da); -+} -+ -+static u32 ath_pci_reg_read(struct ath_hal *ah, unsigned reg) -+{ -+ return ioread32(ah->ah_sh + reg); -+} -+ -+static void ath_pci_reg_write(struct ath_hal *ah, unsigned reg, u32 val) -+{ -+ iowrite32(val, ah->ah_sh + reg); -+} -+ +static void ath_pci_cleanup(struct ath_softc *sc) +{ -+ ath_detach(sc); -+ if (sc->pdev->irq) -+ free_irq(sc->pdev->irq, sc); -+ pci_iounmap(sc->pdev, sc->mem); -+ pci_release_region(sc->pdev, 0); -+ pci_disable_device(sc->pdev); -+ ieee80211_free_hw(sc->hw); -+} -+ -+static struct ath_bus_ops ath_pci_bus_ops = { -+ .dma_map_single_to_device = ath_pci_map_single_to_device, -+ .dma_unmap_single_to_device = ath_pci_unmap_single_to_device, -+ .dma_map_single_from_device = ath_pci_map_single_from_device, -+ .dma_unmap_single_from_device = ath_pci_unmap_single_from_device, -+ .dma_map_single_to_device = ath_pci_map_single_to_device, -+ .dma_mapping_error = ath_pci_dma_mapping_error, -+ .dma_sync_single_for_cpu = ath_pci_sync_single_for_cpu, -+ .dma_alloc = ath_pci_dma_alloc, -+ .dma_free = ath_pci_dma_free, ++ struct pci_dev *pdev = to_pci_dev(sc->dev); + -+ .reg_read = ath_pci_reg_read, -+ .reg_write = ath_pci_reg_write, ++ pci_iounmap(pdev, sc->mem); ++ pci_release_region(pdev, 0); ++ pci_disable_device(pdev); ++} + ++static struct ath_bus_ops ath_pci_bus_ops = { + .read_cachesize = ath_pci_read_cachesize, -+ + .cleanup = ath_pci_cleanup, +}; + @@ -717,7 +597,7 @@ Signed-off-by: Imre Kaloz + + sc = hw->priv; + sc->hw = hw; -+ sc->pdev = pdev; ++ sc->dev = &pdev->dev; + sc->mem = mem; + sc->bus_ops = &ath_pci_bus_ops; + @@ -735,6 +615,8 @@ Signed-off-by: Imre Kaloz + goto bad4; + } + ++ sc->irq = pdev->irq; ++ + ah = sc->sc_ah; + printk(KERN_INFO + "%s: Atheros AR%s MAC/BB Rev:%x " @@ -765,7 +647,7 @@ Signed-off-by: Imre Kaloz + struct ieee80211_hw *hw = pci_get_drvdata(pdev); + struct ath_softc *sc = hw->priv; + -+ ath_pci_cleanup(sc); ++ ath_cleanup(sc); +} + +#ifdef CONFIG_PM