* [PATCH 8/9] ath5k: AHB port. Add AHB bus support. [not found] <22942120.791289486697022.JavaMail.wlan@CHBU500181> @ 2010-11-11 14:58 ` Wojciech Dubowik 2010-11-12 19:26 ` Bob Copeland 0 siblings, 1 reply; 10+ messages in thread From: Wojciech Dubowik @ 2010-11-11 14:58 UTC (permalink / raw) To: linville; +Cc: linux-wireless AHB specific functions are now in ahb.c file. There is no common init functions which tries first pci and then ahb becasue on some wisoc's PCI is not present. AHB bus is compiled in when CONFIG_ATHEROS_AR231X is set in kernel. Signed-off-by: Wojciech Dubowik <Wojciech.Dubowik@neratec.com> --- drivers/net/wireless/ath/ath5k/Makefile | 2 +- drivers/net/wireless/ath/ath5k/ahb.c | 221 +++++++++++++++++++++++++++++++ drivers/net/wireless/ath/ath5k/ath5k.h | 12 ++ drivers/net/wireless/ath/ath5k/base.c | 16 ++- drivers/net/wireless/ath/ath5k/led.c | 6 + drivers/net/wireless/ath/ath5k/reg.h | 25 ++++ 6 files changed, 279 insertions(+), 3 deletions(-) create mode 100644 drivers/net/wireless/ath/ath5k/ahb.c diff --git a/drivers/net/wireless/ath/ath5k/Makefile b/drivers/net/wireless/ath/ath5k/Makefile index dae881c..50d5e08 100644 --- a/drivers/net/wireless/ath/ath5k/Makefile +++ b/drivers/net/wireless/ath/ath5k/Makefile @@ -15,5 +15,5 @@ ath5k-y += rfkill.o ath5k-y += ani.o ath5k-y += sysfs.o ath5k-$(CONFIG_ATH5K_DEBUG) += debug.o -ath5k-y += pci.o +ath5k-y += $(if $(CONFIG_ATHEROS_AR231X),ahb,pci).o obj-$(CONFIG_ATH5K) += ath5k.o diff --git a/drivers/net/wireless/ath/ath5k/ahb.c b/drivers/net/wireless/ath/ath5k/ahb.c new file mode 100644 index 0000000..6e1aa65 --- /dev/null +++ b/drivers/net/wireless/ath/ath5k/ahb.c @@ -0,0 +1,221 @@ +/* + * Copyright (c) 2008-2009 Atheros Communications Inc. + * Copyright (c) 2009 Gabor Juhos <juhosg@openwrt.org> + * Copyright (c) 2009 Imre Kaloz <kaloz@openwrt.org> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include <linux/nl80211.h> +#include <linux/platform_device.h> +#include <ar231x_platform.h> +#include "ath5k.h" +#include "debug.h" +#include "base.h" +#include "reg.h" +#include "debug.h" + +/* return bus cachesize in 4B word units */ +static void ath5k_ahb_read_cachesize(struct ath_common *common, int *csz) +{ + *csz = L1_CACHE_BYTES >> 2; +} + +bool ath5k_ahb_eeprom_read(struct ath_common *common, u32 off, u16 *data) +{ + struct ath5k_softc *sc = common->priv; + struct platform_device *pdev = to_platform_device(sc->dev); + struct ar231x_board_config *bcfg = pdev->dev.platform_data; + u16 *eeprom, *eeprom_end; + + + + bcfg = pdev->dev.platform_data; + eeprom = (u16 *) bcfg->radio; + eeprom_end = ((void *) bcfg->config) + BOARD_CONFIG_BUFSZ; + + eeprom += off; + if (eeprom > eeprom_end) + return -EINVAL; + + *data = *eeprom; + return 0; +} + +int ath5k_bus_read_srev(struct ath5k_hw *ah) +{ + struct ath5k_softc *sc = ah->ah_sc; + struct platform_device *pdev = to_platform_device(sc->dev); + struct ar231x_board_config *bcfg = pdev->dev.platform_data; + ah->ah_mac_srev = bcfg->devid; + return 0; +} + +static const struct ath_bus_ops ath_ahb_bus_ops = { + .ath_bus_type = ATH_AHB, + .read_cachesize = ath5k_ahb_read_cachesize, + .eeprom_read = ath5k_ahb_eeprom_read, +}; + +/*Initialization*/ +static int ath_ahb_probe(struct platform_device *pdev) +{ + struct ar231x_board_config *bcfg = pdev->dev.platform_data; + struct ath5k_softc *sc; + struct ieee80211_hw *hw; + struct resource *res; + void __iomem *mem; + int irq; + int ret = 0; + u32 reg; + + if (!pdev->dev.platform_data) { + dev_err(&pdev->dev, "no platform data specified\n"); + ret = -EINVAL; + goto err_out; + } + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (res == NULL) { + dev_err(&pdev->dev, "no memory resource found\n"); + ret = -ENXIO; + goto err_out; + } + + mem = ioremap_nocache(res->start, res->end - res->start + 1); + if (mem == NULL) { + dev_err(&pdev->dev, "ioremap failed\n"); + ret = -ENOMEM; + goto err_out; + } + + res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); + if (res == NULL) { + dev_err(&pdev->dev, "no IRQ resource found\n"); + ret = -ENXIO; + goto err_out; + } + + irq = res->start; + + hw = ieee80211_alloc_hw(sizeof(struct ath5k_softc), &ath5k_hw_ops); + if (hw == NULL) { + dev_err(&pdev->dev, "no memory for ieee80211_hw\n"); + ret = -ENOMEM; + goto err_out; + } + + sc = hw->priv; + sc->hw = hw; + sc->dev = &pdev->dev; + sc->iobase = mem; + sc->irq = irq; + sc->devid = bcfg->devid; + + if (bcfg->devid >= AR5K_SREV_AR2315_R6) { + /* Enable WMAC AHB arbitration */ + reg = __raw_readl((void __iomem *) AR5K_AR2315_AHB_ARB_CTL); + reg |= AR5K_AR2315_AHB_ARB_CTL_WLAN; + __raw_writel(reg, (void __iomem *) AR5K_AR2315_AHB_ARB_CTL); + + /* Enable global WMAC swapping */ + reg = __raw_readl((void __iomem *) AR5K_AR2315_BYTESWAP); + reg |= AR5K_AR2315_BYTESWAP_WMAC; + __raw_writel(reg, (void __iomem *) AR5K_AR2315_BYTESWAP); + } else { + /* Enable WMAC DMA access (assuming 5312 or 231x*/ + /* TODO: check other platforms */ + reg = __raw_readl((void __iomem *) AR5K_AR5312_ENABLE); + if( to_platform_device(sc->dev)->id == 0) { + reg |= AR5K_AR5312_ENABLE_WLAN0; + } else { + reg |= AR5K_AR5312_ENABLE_WLAN1; + } + __raw_writel(reg, (void __iomem *) AR5K_AR5312_ENABLE); + } + + ret = ath5k_attach(sc, &ath_ahb_bus_ops); + if (ret != 0) { + dev_err(&pdev->dev, "failed to attach device, err=%d\n", ret); + ret = -ENODEV; + goto err_free_hw; + } + + platform_set_drvdata(pdev, hw); + + return 0; + + err_free_hw: + ieee80211_free_hw(hw); + platform_set_drvdata(pdev, NULL); + err_out: + return ret; +} + +static int ath_ahb_remove(struct platform_device *pdev) +{ + struct ar231x_board_config *bcfg = pdev->dev.platform_data; + struct ieee80211_hw *hw = platform_get_drvdata(pdev); + struct ath5k_softc *sc; + u32 reg; + + if (!hw) + return 0; + + sc = hw->priv; + + if (bcfg->devid >= AR5K_SREV_AR2315_R6) { + /* Disable WMAC AHB arbitration */ + reg = __raw_readl((void __iomem *) AR5K_AR2315_AHB_ARB_CTL); + reg &= ~AR5K_AR2315_AHB_ARB_CTL_WLAN; + __raw_writel(reg, (void __iomem *) AR5K_AR2315_AHB_ARB_CTL); + } else { + /*Stop DMA access */ + reg = __raw_readl((void __iomem *) AR5K_AR5312_ENABLE); + if( to_platform_device(sc->dev)->id == 0) { + reg &= ~AR5K_AR5312_ENABLE_WLAN0; + } else { + reg &= ~AR5K_AR5312_ENABLE_WLAN1; + } + __raw_writel(reg, (void __iomem *) AR5K_AR5312_ENABLE); + } + + ath5k_detach(sc); + platform_set_drvdata(pdev, NULL); + + return 0; +} + +static struct platform_driver ath_ahb_driver = { + .probe = ath_ahb_probe, + .remove = ath_ahb_remove, + .driver = { + .name = "ar231x-wmac", + .owner = THIS_MODULE, + }, +}; + +static int __init +ath5k_ahb_init(void) +{ + return platform_driver_register(&ath_ahb_driver); +} + +static void __exit +ath5k_ahb_exit(void) +{ + platform_driver_unregister(&ath_ahb_driver); +} + +module_init(ath5k_ahb_init); +module_exit(ath5k_ahb_exit); diff --git a/drivers/net/wireless/ath/ath5k/ath5k.h b/drivers/net/wireless/ath/ath5k/ath5k.h index a13243a..1c46a63 100644 --- a/drivers/net/wireless/ath/ath5k/ath5k.h +++ b/drivers/net/wireless/ath/ath5k/ath5k.h @@ -303,12 +303,19 @@ struct ath5k_srev_name { #define AR5K_SREV_AR5311B 0x30 /* Spirit */ #define AR5K_SREV_AR5211 0x40 /* Oahu */ #define AR5K_SREV_AR5212 0x50 /* Venice */ +#define AR5K_SREV_AR5312_R2 0x52 /* AP31 */ #define AR5K_SREV_AR5212_V4 0x54 /* ??? */ #define AR5K_SREV_AR5213 0x55 /* ??? */ +#define AR5K_SREV_AR5312_R7 0x57 /* AP30 */ +#define AR5K_SREV_AR2313_R8 0x58 /* AP43 */ #define AR5K_SREV_AR5213A 0x59 /* Hainan */ #define AR5K_SREV_AR2413 0x78 /* Griffin lite */ #define AR5K_SREV_AR2414 0x70 /* Griffin */ +#define AR5K_SREV_AR2315_R6 0x86 /* AP51-Light */ +#define AR5K_SREV_AR2315_R7 0x87 /* AP51-Full */ #define AR5K_SREV_AR5424 0x90 /* Condor */ +#define AR5K_SREV_AR2317_R1 0x90 /* AP61-Light */ +#define AR5K_SREV_AR2317_R2 0x91 /* AP61-Full */ #define AR5K_SREV_AR5413 0xa4 /* Eagle lite */ #define AR5K_SREV_AR5414 0xa0 /* Eagle */ #define AR5K_SREV_AR2415 0xb0 /* Talon */ @@ -1311,6 +1318,11 @@ static inline void ath5k_hw_reg_write(struct ath5k_hw *ah, u32 val, u16 reg) iowrite32(val, ah->ah_iobase + reg); } +static inline enum ath_bus_type ath5k_get_bus_type(struct ath5k_hw *ah) +{ + return ath5k_hw_common(ah)->bus_ops->ath_bus_type; +} + static inline void ath5k_read_cachesize(struct ath_common *common, int *csz) { common->bus_ops->read_cachesize(common, csz); diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c index 22464e2..13d5da5 100644 --- a/drivers/net/wireless/ath/ath5k/base.c +++ b/drivers/net/wireless/ath/ath5k/base.c @@ -86,6 +86,15 @@ static void ath5k_beacon_update_timers(struct ath5k_softc *sc, u64 bc_tsf); /* Known SREVs */ static const struct ath5k_srev_name srev_names[] = { +#ifdef CONFIG_ATHEROS_AR231X + { "5312", AR5K_VERSION_MAC, AR5K_SREV_AR5312_R2 }, + { "5312", AR5K_VERSION_MAC, AR5K_SREV_AR5312_R7 }, + { "2313", AR5K_VERSION_MAC, AR5K_SREV_AR2313_R8 }, + { "2315", AR5K_VERSION_MAC, AR5K_SREV_AR2315_R6 }, + { "2315", AR5K_VERSION_MAC, AR5K_SREV_AR2315_R7 }, + { "2317", AR5K_VERSION_MAC, AR5K_SREV_AR2317_R1 }, + { "2317", AR5K_VERSION_MAC, AR5K_SREV_AR2317_R2 }, +#else { "5210", AR5K_VERSION_MAC, AR5K_SREV_AR5210 }, { "5311", AR5K_VERSION_MAC, AR5K_SREV_AR5311 }, { "5311A", AR5K_VERSION_MAC, AR5K_SREV_AR5311A }, @@ -104,6 +113,7 @@ static const struct ath5k_srev_name srev_names[] = { { "5418", AR5K_VERSION_MAC, AR5K_SREV_AR5418 }, { "2425", AR5K_VERSION_MAC, AR5K_SREV_AR2425 }, { "2417", AR5K_VERSION_MAC, AR5K_SREV_AR2417 }, +#endif { "xxxxx", AR5K_VERSION_MAC, AR5K_SREV_UNKNOWN }, { "5110", AR5K_VERSION_RAD, AR5K_SREV_RAD_5110 }, { "5111", AR5K_VERSION_RAD, AR5K_SREV_RAD_5111 }, @@ -117,10 +127,12 @@ static const struct ath5k_srev_name srev_names[] = { { "2112B", AR5K_VERSION_RAD, AR5K_SREV_RAD_2112B }, { "2413", AR5K_VERSION_RAD, AR5K_SREV_RAD_2413 }, { "5413", AR5K_VERSION_RAD, AR5K_SREV_RAD_5413 }, - { "2316", AR5K_VERSION_RAD, AR5K_SREV_RAD_2316 }, - { "2317", AR5K_VERSION_RAD, AR5K_SREV_RAD_2317 }, { "5424", AR5K_VERSION_RAD, AR5K_SREV_RAD_5424 }, { "5133", AR5K_VERSION_RAD, AR5K_SREV_RAD_5133 }, +#ifdef CONFIG_ATHEROS_AR231X + { "2316", AR5K_VERSION_RAD, AR5K_SREV_RAD_2316 }, + { "2317", AR5K_VERSION_RAD, AR5K_SREV_RAD_2317 }, +#endif { "xxxxx", AR5K_VERSION_RAD, AR5K_SREV_UNKNOWN }, }; diff --git a/drivers/net/wireless/ath/ath5k/led.c b/drivers/net/wireless/ath/ath5k/led.c index 1f5a991..be43158 100644 --- a/drivers/net/wireless/ath/ath5k/led.c +++ b/drivers/net/wireless/ath/ath5k/led.c @@ -161,14 +161,20 @@ int ath5k_init_leds(struct ath5k_softc *sc) { int ret = 0; struct ieee80211_hw *hw = sc->hw; +#ifndef CONFIG_ATHEROS_AR231X struct pci_dev *pdev = sc->pdev; +#endif char name[ATH5K_LED_MAX_NAME_LEN + 1]; const struct pci_device_id *match; if (!sc->pdev) return 0; +#ifdef CONFIG_ATHEROS_AR231X + match=NULL; +#else match = pci_match_id(&ath5k_led_devices[0], pdev); +#endif if (match) { __set_bit(ATH_STAT_LEDSOFT, sc->status); sc->led_pin = ATH_PIN(match->driver_data); diff --git a/drivers/net/wireless/ath/ath5k/reg.h b/drivers/net/wireless/ath/ath5k/reg.h index ca79ecd..2ed6b43 100644 --- a/drivers/net/wireless/ath/ath5k/reg.h +++ b/drivers/net/wireless/ath/ath5k/reg.h @@ -2558,3 +2558,28 @@ */ #define AR5K_PHY_PDADC_TXPOWER_BASE 0xa280 #define AR5K_PHY_PDADC_TXPOWER(_n) (AR5K_PHY_PDADC_TXPOWER_BASE + ((_n) << 2)) + +/* + * Platform registers for WiSoC + */ +#define AR5K_AR5312_RESET 0xbc003020 +#define AR5K_AR5312_RESET_BB0_COLD 0x00000004 +#define AR5K_AR5312_RESET_BB1_COLD 0x00000200 +#define AR5K_AR5312_RESET_WMAC0 0x00002000 +#define AR5K_AR5312_RESET_BB0_WARM 0x00004000 +#define AR5K_AR5312_RESET_WMAC1 0x00020000 +#define AR5K_AR5312_RESET_BB1_WARM 0x00040000 + +#define AR5K_AR5312_ENABLE 0xbc003080 +#define AR5K_AR5312_ENABLE_WLAN0 0x00000001 +#define AR5K_AR5312_ENABLE_WLAN1 0x00000008 + +#define AR5K_AR2315_RESET 0xb1000004 +#define AR5K_AR2315_RESET_WMAC 0x00000001 +#define AR5K_AR2315_RESET_BB_WARM 0x00000002 + +#define AR5K_AR2315_AHB_ARB_CTL 0xb1000008 +#define AR5K_AR2315_AHB_ARB_CTL_WLAN 0x00000002 + +#define AR5K_AR2315_BYTESWAP 0xb100000c +#define AR5K_AR2315_BYTESWAP_WMAC 0x00000002 -- 1.7.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 8/9] ath5k: AHB port. Add AHB bus support. 2010-11-11 14:58 ` [PATCH 8/9] ath5k: AHB port. Add AHB bus support Wojciech Dubowik @ 2010-11-12 19:26 ` Bob Copeland 2010-11-12 19:36 ` Felix Fietkau 0 siblings, 1 reply; 10+ messages in thread From: Bob Copeland @ 2010-11-12 19:26 UTC (permalink / raw) To: Wojciech Dubowik; +Cc: linville, linux-wireless On Thu, Nov 11, 2010 at 9:58 AM, Wojciech Dubowik <dubowoj@neratec.com> wrote: > > AHB specific functions are now in ahb.c file. There is no common > init functions which tries first pci and then ahb becasue on some 'because' > --- a/drivers/net/wireless/ath/ath5k/Makefile > +++ b/drivers/net/wireless/ath/ath5k/Makefile > @@ -15,5 +15,5 @@ ath5k-y += rfkill.o > ath5k-y += ani.o > ath5k-y += sysfs.o > ath5k-$(CONFIG_ATH5K_DEBUG) += debug.o > -ath5k-y += pci.o > +ath5k-y += $(if $(CONFIG_ATHEROS_AR231X),ahb,pci).o > obj-$(CONFIG_ATH5K) += ath5k.o This is not the right way.. what if someone wants both in one kernel? -- Bob Copeland %% www.bobcopeland.com ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 8/9] ath5k: AHB port. Add AHB bus support. 2010-11-12 19:26 ` Bob Copeland @ 2010-11-12 19:36 ` Felix Fietkau 2010-11-12 19:51 ` Wojciech Dubowik 0 siblings, 1 reply; 10+ messages in thread From: Felix Fietkau @ 2010-11-12 19:36 UTC (permalink / raw) To: Bob Copeland; +Cc: Wojciech Dubowik, linville, linux-wireless On 2010-11-12 8:26 PM, Bob Copeland wrote: > On Thu, Nov 11, 2010 at 9:58 AM, Wojciech Dubowik <dubowoj@neratec.com> wrote: >> >> AHB specific functions are now in ahb.c file. There is no common >> init functions which tries first pci and then ahb becasue on some > > 'because' > >> --- a/drivers/net/wireless/ath/ath5k/Makefile >> +++ b/drivers/net/wireless/ath/ath5k/Makefile >> @@ -15,5 +15,5 @@ ath5k-y += rfkill.o >> ath5k-y += ani.o >> ath5k-y += sysfs.o >> ath5k-$(CONFIG_ATH5K_DEBUG) += debug.o >> -ath5k-y += pci.o >> +ath5k-y += $(if $(CONFIG_ATHEROS_AR231X),ahb,pci).o >> obj-$(CONFIG_ATH5K) += ath5k.o > > This is not the right way.. what if someone wants both in one kernel? Having both in the kernel is completely pointless. There are no devices that can support both, nor will there ever be. - Felix ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 8/9] ath5k: AHB port. Add AHB bus support. 2010-11-12 19:36 ` Felix Fietkau @ 2010-11-12 19:51 ` Wojciech Dubowik 2010-11-12 19:55 ` Felix Fietkau 0 siblings, 1 reply; 10+ messages in thread From: Wojciech Dubowik @ 2010-11-12 19:51 UTC (permalink / raw) To: Bob Copeland; +Cc: linville, linux-wireless, Felix Fietkau > From: "Felix Fietkau" <nbd@openwrt.org> > To: "Bob Copeland" <me@bobcopeland.com> > Cc: "Wojciech Dubowik" <dubowoj@neratec.com>, linville@tuxdriver.com, linux-wireless@vger.kernel.org > Sent: Freitag, 12. November 2010 20:36:51 > Subject: Re: [PATCH 8/9] ath5k: AHB port. Add AHB bus support. > On 2010-11-12 8:26 PM, Bob Copeland wrote: > > On Thu, Nov 11, 2010 at 9:58 AM, Wojciech Dubowik > > <dubowoj@neratec.com> wrote: > >> > >> AHB specific functions are now in ahb.c file. There is no common > >> init functions which tries first pci and then ahb becasue on some > > > > 'because' > > > >> --- a/drivers/net/wireless/ath/ath5k/Makefile > >> +++ b/drivers/net/wireless/ath/ath5k/Makefile > >> @@ -15,5 +15,5 @@ ath5k-y += rfkill.o > >> ath5k-y += ani.o > >> ath5k-y += sysfs.o > >> ath5k-$(CONFIG_ATH5K_DEBUG) += debug.o > >> -ath5k-y += pci.o > >> +ath5k-y += $(if $(CONFIG_ATHEROS_AR231X),ahb,pci).o > >> obj-$(CONFIG_ATH5K) += ath5k.o > > > > This is not the right way.. what if someone wants both in one > > kernel? > Having both in the kernel is completely pointless. There are no > devices > that can support both, nor will there ever be. > > - Felix I agree. The only advantage would be that some of the typos and missing functions in either of the files would be detected during compile time. My AR5312 board crashes when I enable PCI. I guess it's fixable but it's out of the scope of the ath5k driver... br, Wojtek ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 8/9] ath5k: AHB port. Add AHB bus support. 2010-11-12 19:51 ` Wojciech Dubowik @ 2010-11-12 19:55 ` Felix Fietkau 2010-11-13 13:27 ` Bob Copeland 0 siblings, 1 reply; 10+ messages in thread From: Felix Fietkau @ 2010-11-12 19:55 UTC (permalink / raw) To: Wojciech Dubowik; +Cc: Bob Copeland, linville, linux-wireless On 2010-11-12 8:51 PM, Wojciech Dubowik wrote: >> From: "Felix Fietkau" <nbd@openwrt.org> >> To: "Bob Copeland" <me@bobcopeland.com> >> Cc: "Wojciech Dubowik" <dubowoj@neratec.com>, linville@tuxdriver.com, linux-wireless@vger.kernel.org >> Sent: Freitag, 12. November 2010 20:36:51 >> Subject: Re: [PATCH 8/9] ath5k: AHB port. Add AHB bus support. >> On 2010-11-12 8:26 PM, Bob Copeland wrote: >> > On Thu, Nov 11, 2010 at 9:58 AM, Wojciech Dubowik >> > <dubowoj@neratec.com> wrote: >> >> >> >> AHB specific functions are now in ahb.c file. There is no common >> >> init functions which tries first pci and then ahb becasue on some >> > >> > 'because' >> > >> >> --- a/drivers/net/wireless/ath/ath5k/Makefile >> >> +++ b/drivers/net/wireless/ath/ath5k/Makefile >> >> @@ -15,5 +15,5 @@ ath5k-y += rfkill.o >> >> ath5k-y += ani.o >> >> ath5k-y += sysfs.o >> >> ath5k-$(CONFIG_ATH5K_DEBUG) += debug.o >> >> -ath5k-y += pci.o >> >> +ath5k-y += $(if $(CONFIG_ATHEROS_AR231X),ahb,pci).o >> >> obj-$(CONFIG_ATH5K) += ath5k.o >> > >> > This is not the right way.. what if someone wants both in one >> > kernel? >> Having both in the kernel is completely pointless. There are no >> devices >> that can support both, nor will there ever be. >> >> - Felix > > I agree. The only advantage would be that some of the typos and missing > functions in either of the files would be detected during compile time. > My AR5312 board crashes when I enable PCI. I guess it's fixable but it's > out of the scope of the ath5k driver... Well, AR5312 does not have PCI. Only AR2315 has it, and there is only one device that even uses it (Atheros never officially supported it). - Felix ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 8/9] ath5k: AHB port. Add AHB bus support. 2010-11-12 19:55 ` Felix Fietkau @ 2010-11-13 13:27 ` Bob Copeland 0 siblings, 0 replies; 10+ messages in thread From: Bob Copeland @ 2010-11-13 13:27 UTC (permalink / raw) To: Felix Fietkau; +Cc: Wojciech Dubowik, linville, linux-wireless On Fri, Nov 12, 2010 at 08:55:36PM +0100, Felix Fietkau wrote: > On 2010-11-12 8:51 PM, Wojciech Dubowik wrote: > >> Having both in the kernel is completely pointless. There are no > >> devices > >> that can support both, nor will there ever be. > > > > I agree. The only advantage would be that some of the typos and missing > > functions in either of the files would be detected during compile time. Compile-testing coverage is a fine reason to allow people to compile both modules. Ok, I accept that it's a bit of a pain to create separate modules, but can we at least do it like: ath5k-$(CONFIG_ATH5K_PCI) += pci.o ath5k-$(CONFIG_ATH5K_AHB) += ahb.o and add the appropriate selects and mutual exclusion to the Kconfig? Of course, that presupposes a Kconfig entry for CONFIG_ATHEROS_AR2316 where there is not one currently. -- Bob Copeland %% www.bobcopeland.com ^ permalink raw reply [flat|nested] 10+ messages in thread
[parent not found: <16168765.161289826231239.JavaMail.wlan@CHBU500181>]
* Re: [PATCH 8/9] ath5k: AHB port. Add AHB bus support. [not found] <16168765.161289826231239.JavaMail.wlan@CHBU500181> @ 2010-11-15 13:16 ` Wojciech Dubowik 2010-11-15 15:07 ` Bob Copeland 0 siblings, 1 reply; 10+ messages in thread From: Wojciech Dubowik @ 2010-11-15 13:16 UTC (permalink / raw) To: Bob Copeland; +Cc: linville, linux-wireless, Felix Fietkau > On Fri, Nov 12, 2010 at 08:55:36PM +0100, Felix Fietkau wrote: > > On 2010-11-12 8:51 PM, Wojciech Dubowik wrote: > > >> Having both in the kernel is completely pointless. There are no > > >> devices > > >> that can support both, nor will there ever be. > > > > > > I agree. The only advantage would be that some of the typos and > missing > > > functions in either of the files would be detected during compile > time. > > Compile-testing coverage is a fine reason to allow people to compile > both modules. Ok, I accept that it's a bit of a pain to create > separate > modules, but can we at least do it like: > > ath5k-$(CONFIG_ATH5K_PCI) += pci.o > ath5k-$(CONFIG_ATH5K_AHB) += ahb.o > > and add the appropriate selects and mutual exclusion to the Kconfig? > Of course, that presupposes a Kconfig entry for CONFIG_ATHEROS_AR2316 > where there is not one currently. > > -- > Bob Copeland %% www.bobcopeland.com What about such changes compared to original patch? It's then possible to compile both modules at the same time. Of course linking won't work because I would need to separate functions like in ath9k. --- diff --git a/drivers/net/wireless/ath/ath5k/Kconfig b/drivers/net/wireless/ath/ath5k/Kconfig index eb83b7b..eba97f8 100644 --- a/drivers/net/wireless/ath/ath5k/Kconfig +++ b/drivers/net/wireless/ath/ath5k/Kconfig @@ -1,9 +1,11 @@ config ATH5K tristate "Atheros 5xxx wireless cards support" - depends on PCI && MAC80211 + depends on (PCI || ATHEROS_AR231X) && MAC80211 select MAC80211_LEDS select LEDS_CLASS select NEW_LEDS + select ATH5K_AHB if ATHEROS_AR231X + select ATH5K_PCI if PCI ---help--- This module adds support for wireless adapters based on Atheros 5xxx chipset. @@ -37,3 +39,14 @@ config ATH5K_DEBUG modprobe ath5k debug=0x00000400 +config ATH5K_AHB + bool "Atheros 5xxx AHB bus support" + depends on ATHEROS_AR231X + ---help--- + This adds support for WiSoC type chipsets of the 5xxx family + +config ATH5K_PCI + bool "Atheros 5xxx PCI bus support" + depends on PCI + ---help--- + This adds support for PCI type chipsets of the 5xxx family diff --git a/drivers/net/wireless/ath/ath5k/Makefile b/drivers/net/wireless/ath/ath5k/Makefile index 50d5e08..a16b178 100644 --- a/drivers/net/wireless/ath/ath5k/Makefile +++ b/drivers/net/wireless/ath/ath5k/Makefile @@ -15,5 +15,6 @@ ath5k-y += rfkill.o ath5k-y += ani.o ath5k-y += sysfs.o ath5k-$(CONFIG_ATH5K_DEBUG) += debug.o -ath5k-y += $(if $(CONFIG_ATHEROS_AR231X),ahb,pci).o +ath5k-$(CONFIG_ATH5K_PCI) += pci.o +ath5k-$(CONFIG_ATH5K_AHB) += ahb.o obj-$(CONFIG_ATH5K) += ath5k.o ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 8/9] ath5k: AHB port. Add AHB bus support. 2010-11-15 13:16 ` Wojciech Dubowik @ 2010-11-15 15:07 ` Bob Copeland 0 siblings, 0 replies; 10+ messages in thread From: Bob Copeland @ 2010-11-15 15:07 UTC (permalink / raw) To: Wojciech Dubowik; +Cc: linville, linux-wireless, Felix Fietkau On Mon, Nov 15, 2010 at 02:16:06PM +0100, Wojciech Dubowik wrote: > What about such changes compared to original patch? It's then possible to > compile both modules at the same time. Of course linking won't work because > I would need to separate functions like in ath9k. Is there a plan to add a config entry for ATHEROS_AR231X (or did I miss it?) Someone will one day run their Kconfig checker and report it missing. > --- a/drivers/net/wireless/ath/ath5k/Kconfig > +++ b/drivers/net/wireless/ath/ath5k/Kconfig > @@ -1,9 +1,11 @@ > config ATH5K > tristate "Atheros 5xxx wireless cards support" > - depends on PCI && MAC80211 > + depends on (PCI || ATHEROS_AR231X) && MAC80211 > select MAC80211_LEDS > select LEDS_CLASS > select NEW_LEDS > + select ATH5K_AHB if ATHEROS_AR231X > + select ATH5K_PCI if PCI I like this better, but there probably needs to be a mutual exclusion so that randconfig builds don't break. Then you don't get to build both still, but the resulting Makefile is a bit more normal. And then if someone shows up saying that they really do have some AR231X device with PCI, then it's more obvious what they need to do to fix it (i.e. separate bus interfaces from core). Something like? select ATH5K_PCI if (PCI && !ATHEROS_AR231X) or depends on ((PCI && !ATHEROS_AR231X) || (!PCI && ATHEROS_AR231X)) ... -- Bob Copeland %% www.bobcopeland.com ^ permalink raw reply [flat|nested] 10+ messages in thread
[parent not found: <25235417.301289836112686.JavaMail.wlan@CHBU500181>]
* Re: [PATCH 8/9] ath5k: AHB port. Add AHB bus support. [not found] <25235417.301289836112686.JavaMail.wlan@CHBU500181> @ 2010-11-15 15:49 ` Wojciech Dubowik 2010-11-15 16:37 ` Florian Fainelli 0 siblings, 1 reply; 10+ messages in thread From: Wojciech Dubowik @ 2010-11-15 15:49 UTC (permalink / raw) To: Bob Copeland; +Cc: linville, linux-wireless, Felix Fietkau > On Mon, Nov 15, 2010 at 02:16:06PM +0100, Wojciech Dubowik wrote: > > What about such changes compared to original patch? It's then > possible to > > compile both modules at the same time. Of course linking won't work > because > > I would need to separate functions like in ath9k. > > Is there a plan to add a config entry for ATHEROS_AR231X (or did > I miss it?) Someone will one day run their Kconfig checker and > report it missing. > Openwrt has whole implementation but I have no idea why it's not in the official kernel. Actually the same applies to ath9k because ATHEROS_AR71XX definition needed for AHB is not specified in latest kernel. http://www.mail-archive.com/ath9k-devel@lists.ath9k.org/msg03660.html > > --- a/drivers/net/wireless/ath/ath5k/Kconfig > > +++ b/drivers/net/wireless/ath/ath5k/Kconfig > > @@ -1,9 +1,11 @@ > > config ATH5K > > tristate "Atheros 5xxx wireless cards support" > > - depends on PCI && MAC80211 > > + depends on (PCI || ATHEROS_AR231X) && MAC80211 > > select MAC80211_LEDS > > select LEDS_CLASS > > select NEW_LEDS > > + select ATH5K_AHB if ATHEROS_AR231X > > + select ATH5K_PCI if PCI > > I like this better, but there probably needs to be a mutual > exclusion so that randconfig builds don't break. Then you don't > get to build both still, but the resulting Makefile is a bit more > normal. And then if someone shows up saying that they really do > have some AR231X device with PCI, then it's more obvious what they > need to do to fix it (i.e. separate bus interfaces from core). > > Something like? > select ATH5K_PCI if (PCI && !ATHEROS_AR231X) > or > depends on ((PCI && !ATHEROS_AR231X) || (!PCI && ATHEROS_AR231X)) ... I will make it exclusive and post in the the series if there are no more comments. Wojtek > > -- > Bob Copeland %% www.bobcopeland.com ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 8/9] ath5k: AHB port. Add AHB bus support. 2010-11-15 15:49 ` Wojciech Dubowik @ 2010-11-15 16:37 ` Florian Fainelli 0 siblings, 0 replies; 10+ messages in thread From: Florian Fainelli @ 2010-11-15 16:37 UTC (permalink / raw) To: Wojciech Dubowik; +Cc: Bob Copeland, linville, linux-wireless, Felix Fietkau On Monday 15 November 2010 16:49:47 Wojciech Dubowik wrote: > > On Mon, Nov 15, 2010 at 02:16:06PM +0100, Wojciech Dubowik wrote: > > > What about such changes compared to original patch? It's then > > > > possible to > > > > > compile both modules at the same time. Of course linking won't work > > > > because > > > > > I would need to separate functions like in ath9k. > > > > Is there a plan to add a config entry for ATHEROS_AR231X (or did > > I miss it?) Someone will one day run their Kconfig checker and > > report it missing. > > Openwrt has whole implementation but I have no idea why it's not > in the official kernel. > > Actually the same applies to ath9k because ATHEROS_AR71XX definition > needed for AHB is not specified in latest kernel. > http://www.mail-archive.com/ath9k-devel@lists.ath9k.org/msg03660.html Support for Atheros AR71xx chips has been submitted for review a couple of days ago: http://www.linux-mips.org/archives/linux-mips/2010-11/msg00085.html the Kconfig symbol name should be changed accordingly when the patches are accepted. > > > > --- a/drivers/net/wireless/ath/ath5k/Kconfig > > > +++ b/drivers/net/wireless/ath/ath5k/Kconfig > > > @@ -1,9 +1,11 @@ > > > > > > config ATH5K > > > > > > tristate "Atheros 5xxx wireless cards support" > > > > > > - depends on PCI && MAC80211 > > > + depends on (PCI || ATHEROS_AR231X) && MAC80211 > > > > > > select MAC80211_LEDS > > > select LEDS_CLASS > > > select NEW_LEDS > > > > > > + select ATH5K_AHB if ATHEROS_AR231X > > > + select ATH5K_PCI if PCI > > > > I like this better, but there probably needs to be a mutual > > exclusion so that randconfig builds don't break. Then you don't > > get to build both still, but the resulting Makefile is a bit more > > normal. And then if someone shows up saying that they really do > > have some AR231X device with PCI, then it's more obvious what they > > need to do to fix it (i.e. separate bus interfaces from core). > > > > Something like? > > select ATH5K_PCI if (PCI && !ATHEROS_AR231X) > > or > > depends on ((PCI && !ATHEROS_AR231X) || (!PCI && ATHEROS_AR231X)) ... > > I will make it exclusive and post in the the series if there are > no more comments. > > Wojtek > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-wireless" > in the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2010-11-15 16:37 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <22942120.791289486697022.JavaMail.wlan@CHBU500181> 2010-11-11 14:58 ` [PATCH 8/9] ath5k: AHB port. Add AHB bus support Wojciech Dubowik 2010-11-12 19:26 ` Bob Copeland 2010-11-12 19:36 ` Felix Fietkau 2010-11-12 19:51 ` Wojciech Dubowik 2010-11-12 19:55 ` Felix Fietkau 2010-11-13 13:27 ` Bob Copeland [not found] <16168765.161289826231239.JavaMail.wlan@CHBU500181> 2010-11-15 13:16 ` Wojciech Dubowik 2010-11-15 15:07 ` Bob Copeland [not found] <25235417.301289836112686.JavaMail.wlan@CHBU500181> 2010-11-15 15:49 ` Wojciech Dubowik 2010-11-15 16:37 ` Florian Fainelli
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).