Hi,

This series looks good to me...

Sujith

Felix Fietkau wrote:
> The initvals use up quite a bit of space, and PC-OEM support is
> typically not needed on embedded systems
> 
> Signed-off-by: Felix Fietkau <[email protected]>
> ---
>  drivers/net/wireless/ath/ath9k/Kconfig      |  5 ++++
>  drivers/net/wireless/ath/ath9k/Makefile     |  3 ++-
>  drivers/net/wireless/ath/ath9k/ar9003_rtt.h | 36 
> +++++++++++++++++++++++++++++
>  drivers/net/wireless/ath/ath9k/hw.h         | 17 ++++++++++----
>  drivers/net/wireless/ath/ath9k/init.c       |  3 +++
>  drivers/net/wireless/ath/ath9k/pci.c        |  6 +++++
>  drivers/net/wireless/ath/ath9k/reg.h        | 33 +++++++++++++++-----------
>  7 files changed, 84 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/net/wireless/ath/ath9k/Kconfig 
> b/drivers/net/wireless/ath/ath9k/Kconfig
> index 896e632..ca101d7 100644
> --- a/drivers/net/wireless/ath/ath9k/Kconfig
> +++ b/drivers/net/wireless/ath/ath9k/Kconfig
> @@ -148,6 +148,11 @@ config ATH9K_CHANNEL_CONTEXT
>        for multi-channel concurrency. Enable this if P2P PowerSave support
>        is required.
>  
> +config ATH9K_PCOEM
> +     bool "Atheros ath9k support for PC OEM cards" if EXPERT
> +     depends on ATH9K
> +     default y
> +
>  config ATH9K_HTC
>         tristate "Atheros HTC based wireless cards support"
>         depends on USB && MAC80211
> diff --git a/drivers/net/wireless/ath/ath9k/Makefile 
> b/drivers/net/wireless/ath/ath9k/Makefile
> index 73704c1..22b934b 100644
> --- a/drivers/net/wireless/ath/ath9k/Makefile
> +++ b/drivers/net/wireless/ath/ath9k/Makefile
> @@ -32,7 +32,6 @@ ath9k_hw-y:=        \
>               ar5008_phy.o \
>               ar9002_calib.o \
>               ar9003_calib.o \
> -             ar9003_rtt.o \
>               calib.o \
>               eeprom.o \
>               eeprom_def.o \
> @@ -50,6 +49,8 @@ ath9k_hw-$(CONFIG_ATH9K_WOW) += ar9003_wow.o
>  ath9k_hw-$(CONFIG_ATH9K_BTCOEX_SUPPORT) += btcoex.o \
>                                          ar9003_mci.o
>  
> +ath9k_hw-$(CONFIG_ATH9K_PCOEM) += ar9003_rtt.o
> +
>  ath9k_hw-$(CONFIG_ATH9K_DYNACK) += dynack.o
>  
>  obj-$(CONFIG_ATH9K_HW) += ath9k_hw.o
> diff --git a/drivers/net/wireless/ath/ath9k/ar9003_rtt.h 
> b/drivers/net/wireless/ath/ath9k/ar9003_rtt.h
> index a43b30d..6290467 100644
> --- a/drivers/net/wireless/ath/ath9k/ar9003_rtt.h
> +++ b/drivers/net/wireless/ath/ath9k/ar9003_rtt.h
> @@ -17,6 +17,7 @@
>  #ifndef AR9003_RTT_H
>  #define AR9003_RTT_H
>  
> +#ifdef CONFIG_ATH9K_PCOEM
>  void ar9003_hw_rtt_enable(struct ath_hw *ah);
>  void ar9003_hw_rtt_disable(struct ath_hw *ah);
>  void ar9003_hw_rtt_set_mask(struct ath_hw *ah, u32 rtt_mask);
> @@ -25,5 +26,40 @@ void ar9003_hw_rtt_load_hist(struct ath_hw *ah);
>  void ar9003_hw_rtt_fill_hist(struct ath_hw *ah);
>  void ar9003_hw_rtt_clear_hist(struct ath_hw *ah);
>  bool ar9003_hw_rtt_restore(struct ath_hw *ah, struct ath9k_channel *chan);
> +#else
> +static inline void ar9003_hw_rtt_enable(struct ath_hw *ah)
> +{
> +}
> +
> +static inline void ar9003_hw_rtt_disable(struct ath_hw *ah)
> +{
> +}
> +
> +static inline void ar9003_hw_rtt_set_mask(struct ath_hw *ah, u32 rtt_mask)
> +{
> +}
> +
> +static inline bool ar9003_hw_rtt_force_restore(struct ath_hw *ah)
> +{
> +     return false;
> +}
> +
> +static inline void ar9003_hw_rtt_load_hist(struct ath_hw *ah)
> +{
> +}
> +
> +static inline void ar9003_hw_rtt_fill_hist(struct ath_hw *ah)
> +{
> +}
> +
> +static inline void ar9003_hw_rtt_clear_hist(struct ath_hw *ah)
> +{
> +}
> +
> +static inline bool ar9003_hw_rtt_restore(struct ath_hw *ah, struct 
> ath9k_channel *chan)
> +{
> +     return false;
> +}
> +#endif
>  
>  #endif
> diff --git a/drivers/net/wireless/ath/ath9k/hw.h 
> b/drivers/net/wireless/ath/ath9k/hw.h
> index 975074f..7a81f5b 100644
> --- a/drivers/net/wireless/ath/ath9k/hw.h
> +++ b/drivers/net/wireless/ath/ath9k/hw.h
> @@ -244,13 +244,20 @@ enum ath9k_hw_caps {
>       ATH9K_HW_CAP_2GHZ                       = BIT(11),
>       ATH9K_HW_CAP_5GHZ                       = BIT(12),
>       ATH9K_HW_CAP_APM                        = BIT(13),
> +#ifdef CONFIG_ATH9K_PCOEM
>       ATH9K_HW_CAP_RTT                        = BIT(14),
>       ATH9K_HW_CAP_MCI                        = BIT(15),
> -     ATH9K_HW_CAP_DFS                        = BIT(16),
> -     ATH9K_HW_WOW_DEVICE_CAPABLE             = BIT(17),
> -     ATH9K_HW_CAP_PAPRD                      = BIT(18),
> -     ATH9K_HW_CAP_FCC_BAND_SWITCH            = BIT(19),
> -     ATH9K_HW_CAP_BT_ANT_DIV                 = BIT(20),
> +     ATH9K_HW_WOW_DEVICE_CAPABLE             = BIT(16),
> +     ATH9K_HW_CAP_BT_ANT_DIV                 = BIT(17),
> +#else
> +     ATH9K_HW_CAP_RTT                        = 0,
> +     ATH9K_HW_CAP_MCI                        = 0,
> +     ATH9K_HW_WOW_DEVICE_CAPABLE             = 0,
> +     ATH9K_HW_CAP_BT_ANT_DIV                 = 0,
> +#endif
> +     ATH9K_HW_CAP_DFS                        = BIT(18),
> +     ATH9K_HW_CAP_PAPRD                      = BIT(19),
> +     ATH9K_HW_CAP_FCC_BAND_SWITCH            = BIT(20),
>  };
>  
>  /*
> diff --git a/drivers/net/wireless/ath/ath9k/init.c 
> b/drivers/net/wireless/ath/ath9k/init.c
> index 3bd0304..0d80011 100644
> --- a/drivers/net/wireless/ath/ath9k/init.c
> +++ b/drivers/net/wireless/ath/ath9k/init.c
> @@ -362,6 +362,9 @@ static void ath9k_init_pcoem_platform(struct ath_softc 
> *sc)
>       struct ath9k_hw_capabilities *pCap = &ah->caps;
>       struct ath_common *common = ath9k_hw_common(ah);
>  
> +     if (!IS_ENABLED(CONFIG_ATH9K_PCOEM))
> +             return;
> +
>       if (common->bus_ops->ath_bus_type != ATH_PCI)
>               return;
>  
> diff --git a/drivers/net/wireless/ath/ath9k/pci.c 
> b/drivers/net/wireless/ath/ath9k/pci.c
> index c018dea..e3f60d5 100644
> --- a/drivers/net/wireless/ath/ath9k/pci.c
> +++ b/drivers/net/wireless/ath/ath9k/pci.c
> @@ -30,6 +30,7 @@ static const struct pci_device_id ath_pci_id_table[] = {
>       { PCI_VDEVICE(ATHEROS, 0x0029) }, /* PCI   */
>       { PCI_VDEVICE(ATHEROS, 0x002A) }, /* PCI-E */
>  
> +#ifdef CONFIG_ATH9K_PCOEM
>       { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS,
>                        0x002A,
>                        PCI_VENDOR_ID_AZWAVE,
> @@ -82,6 +83,7 @@ static const struct pci_device_id ath_pci_id_table[] = {
>                        PCI_VENDOR_ID_AZWAVE,
>                        0x2C37),
>         .driver_data = ATH9K_PCI_BT_ANT_DIV },
> +#endif
>  
>       { PCI_VDEVICE(ATHEROS, 0x002B) }, /* PCI-E */
>       { PCI_VDEVICE(ATHEROS, 0x002C) }, /* PCI-E 802.11n bonded out */
> @@ -102,6 +104,7 @@ static const struct pci_device_id ath_pci_id_table[] = {
>  
>       { PCI_VDEVICE(ATHEROS, 0x0030) }, /* PCI-E  AR9300 */
>  
> +#ifdef CONFIG_ATH9K_PCOEM
>       /* PCI-E CUS198 */
>       { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS,
>                        0x0032,
> @@ -294,10 +297,12 @@ static const struct pci_device_id ath_pci_id_table[] = {
>                        PCI_VENDOR_ID_ASUSTEK,
>                        0x850D),
>         .driver_data = ATH9K_PCI_NO_PLL_PWRSAVE },
> +#endif
>  
>       { PCI_VDEVICE(ATHEROS, 0x0032) }, /* PCI-E  AR9485 */
>       { PCI_VDEVICE(ATHEROS, 0x0033) }, /* PCI-E  AR9580 */
>  
> +#ifdef CONFIG_ATH9K_PCOEM
>       /* PCI-E CUS217 */
>       { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS,
>                        0x0034,
> @@ -657,6 +662,7 @@ static const struct pci_device_id ath_pci_id_table[] = {
>       /* PCI-E AR9565 (WB335) */
>       { PCI_VDEVICE(ATHEROS, 0x0036),
>         .driver_data = ATH9K_PCI_BT_ANT_DIV },
> +#endif
>  
>       { 0 }
>  };
> diff --git a/drivers/net/wireless/ath/ath9k/reg.h 
> b/drivers/net/wireless/ath/ath9k/reg.h
> index 2a938f4..1c0b1c1 100644
> --- a/drivers/net/wireless/ath/ath9k/reg.h
> +++ b/drivers/net/wireless/ath/ath9k/reg.h
> @@ -892,10 +892,21 @@
>       (AR_SREV_9330((_ah)) && \
>        ((_ah)->hw_version.macRev == AR_SREV_REVISION_9330_12))
>  
> +#ifdef CONFIG_ATH9K_PCOEM
> +#define AR_SREV_9462(_ah) \
> +     (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9462))
>  #define AR_SREV_9485(_ah) \
>       (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9485))
> +#define AR_SREV_9565(_ah) \
> +     (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9565))
> +#else
> +#define AR_SREV_9462(_ah) 0
> +#define AR_SREV_9485(_ah) 0
> +#define AR_SREV_9565(_ah) 0
> +#endif
> +
>  #define AR_SREV_9485_11_OR_LATER(_ah) \
> -     (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9485) && \
> +     (AR_SREV_9485(_ah) && \
>        ((_ah)->hw_version.macRev >= AR_SREV_REVISION_9485_11))
>  #define AR_SREV_9485_OR_LATER(_ah) \
>       (((_ah)->hw_version.macVersion >= AR_SREV_VERSION_9485))
> @@ -915,34 +926,30 @@
>      (AR_SREV_9285_12_OR_LATER(_ah) && \
>       ((REG_READ(_ah, AR_AN_SYNTH9) & 0x7) == 0x1))
>  
> -#define AR_SREV_9462(_ah) \
> -     (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9462))
>  #define AR_SREV_9462_20(_ah) \
> -     (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9462) && \
> +     (AR_SREV_9462(_ah) && \
>        ((_ah)->hw_version.macRev == AR_SREV_REVISION_9462_20))
>  #define AR_SREV_9462_21(_ah) \
> -     (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9462) && \
> +     (AR_SREV_9462(_ah) && \
>        ((_ah)->hw_version.macRev == AR_SREV_REVISION_9462_21))
>  #define AR_SREV_9462_20_OR_LATER(_ah) \
> -     (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9462) && \
> +     (AR_SREV_9462(_ah) && \
>        ((_ah)->hw_version.macRev >= AR_SREV_REVISION_9462_20))
>  #define AR_SREV_9462_21_OR_LATER(_ah) \
> -     (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9462) && \
> +     (AR_SREV_9462(_ah) && \
>        ((_ah)->hw_version.macRev >= AR_SREV_REVISION_9462_21))
>  
> -#define AR_SREV_9565(_ah) \
> -     (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9565))
>  #define AR_SREV_9565_10(_ah) \
> -     (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9565) && \
> +     (AR_SREV_9565(_ah) && \
>        ((_ah)->hw_version.macRev == AR_SREV_REVISION_9565_10))
>  #define AR_SREV_9565_101(_ah) \
> -     (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9565) && \
> +     (AR_SREV_9565(_ah) && \
>        ((_ah)->hw_version.macRev == AR_SREV_REVISION_9565_101))
>  #define AR_SREV_9565_11(_ah) \
> -     (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9565) && \
> +     (AR_SREV_9565(_ah) && \
>        ((_ah)->hw_version.macRev == AR_SREV_REVISION_9565_11))
>  #define AR_SREV_9565_11_OR_LATER(_ah) \
> -     (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9565) && \
> +     (AR_SREV_9565(_ah) && \
>        ((_ah)->hw_version.macRev >= AR_SREV_REVISION_9565_11))
>  
>  #define AR_SREV_9550(_ah) \
> -- 
> 2.1.2
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to