Search Linux Wireless

Re: [RFC/WIP 11/22] ath9k_hw: Handle MCI power state using a helper

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Feb 21, 2012 at 2:53 PM, Sujith Manoharan
<c_manoha@xxxxxxxxxxxxxxxx> wrote:
> Signed-off-by: Sujith Manoharan <c_manoha@xxxxxxxxxxxxxxxx>
> ---
>  drivers/net/wireless/ath/ath9k/ar9003_mci.c |   17 +++++++++++++++++
>  drivers/net/wireless/ath/ath9k/hw.c         |   17 ++---------------
>  drivers/net/wireless/ath/ath9k/hw.h         |    1 +
>  3 files changed, 20 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mci.c b/drivers/net/wireless/ath/ath9k/ar9003_mci.c
> index 118e774..f8dd0b2 100644
> --- a/drivers/net/wireless/ath/ath9k/ar9003_mci.c
> +++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.c
> @@ -365,6 +365,23 @@ static void ar9003_mci_prep_interface(struct ath_hw *ah)
>        REG_WRITE(ah, AR_MCI_INTERRUPT_EN, saved_mci_int_en);
>  }
>
> +void ar9003_mci_set_full_sleep(struct ath_hw *ah)
> +{
> +       struct ath_common *common = ath9k_hw_common(ah);
> +       struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
> +
> +       if (ar9003_mci_state(ah, MCI_STATE_ENABLE, NULL) &&
> +           (mci->bt_state != MCI_BT_SLEEP) &&
> +           !mci->halted_bt_gpm) {
> +               ath_dbg(common, MCI,
> +                       "MCI halt BT GPM (full_sleep)\n");
> +               ar9003_mci_send_coex_halt_bt_gpm(ah, true, true);
> +       }
> +
> +       mci->ready = false;
> +       REG_WRITE(ah, AR_RTC_KEEP_AWAKE, 0x2);
> +}
> +
>  void ar9003_mci_disable_interrupt(struct ath_hw *ah)
>  {
>        if (!ATH9K_HW_CAP_MCI)
> diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
> index f4b121f..406ffd0 100644
> --- a/drivers/net/wireless/ath/ath9k/hw.c
> +++ b/drivers/net/wireless/ath/ath9k/hw.c
> @@ -2076,7 +2076,6 @@ static bool ath9k_hw_set_power_awake(struct ath_hw *ah, int setChip)
>  bool ath9k_hw_setpower(struct ath_hw *ah, enum ath9k_power_mode mode)
>  {
>        struct ath_common *common = ath9k_hw_common(ah);
> -       struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
>        int status = true, setChip = true;
>        static const char *modes[] = {
>                "AWAKE",
> @@ -2100,20 +2099,8 @@ bool ath9k_hw_setpower(struct ath_hw *ah, enum ath9k_power_mode mode)
>
>                break;
>        case ATH9K_PM_FULL_SLEEP:
> -
> -               if (ah->caps.hw_caps & ATH9K_HW_CAP_MCI) {
> -                       if (ar9003_mci_state(ah, MCI_STATE_ENABLE, NULL) &&
> -                               (mci->bt_state != MCI_BT_SLEEP) &&
> -                               !mci->halted_bt_gpm) {
> -                               ath_dbg(common, MCI,
> -                                       "MCI halt BT GPM (full_sleep)\n");
> -                               ar9003_mci_send_coex_halt_bt_gpm(ah,
> -                                                                true, true);
> -                       }
> -
> -                       mci->ready = false;
> -                       REG_WRITE(ah, AR_RTC_KEEP_AWAKE, 0x2);
> -               }
> +               if (ah->caps.hw_caps & ATH9K_HW_CAP_MCI)
> +                       ar9003_mci_set_full_sleep(ah);
>
>                ath9k_set_power_sleep(ah, setChip);
>                ah->chip_fullsleep = true;
> diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
> index ebc32d0..07dd53e 100644
> --- a/drivers/net/wireless/ath/ath9k/hw.h
> +++ b/drivers/net/wireless/ath/ath9k/hw.h
> @@ -1219,6 +1219,7 @@ void ar9003_mci_send_coex_halt_bt_gpm(struct ath_hw *ah, bool halt,
>  u32 ar9003_mci_wait_for_gpm(struct ath_hw *ah, u8 gpm_type,
>                            u8 gpm_opcode, int time_out);
>  void ar9003_mci_2g5g_changed(struct ath_hw *ah, bool is_2g);
> +void ar9003_mci_set_full_sleep(struct ath_hw *ah);
>  void ar9003_mci_disable_interrupt(struct ath_hw *ah);
>  void ar9003_mci_enable_interrupt(struct ath_hw *ah);
>  void ar9003_mci_2g5g_switch(struct ath_hw *ah, bool wait_done);
> --

thanks!


-- 
thanks,
shafi
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux