/* * Copyright (c) 2010-2011 Atheros Communications Inc. * * 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 "htc.h" /******************/ /* BTCOEX */ /******************/ #define ATH_HTC_BTCOEX_PRODUCT_ID … #ifdef CONFIG_ATH9K_BTCOEX_SUPPORT /* * Detects if there is any priority bt traffic */ static void ath_detect_bt_priority(struct ath9k_htc_priv *priv) { … } /* * This is the master bt coex work which runs for every * 45ms, bt traffic will be given priority during 55% of this * period while wlan gets remaining 45% */ static void ath_btcoex_period_work(struct work_struct *work) { … } /* * Work to time slice between wlan and bt traffic and * configure weight registers */ static void ath_btcoex_duty_cycle_work(struct work_struct *work) { … } static void ath_htc_init_btcoex_work(struct ath9k_htc_priv *priv) { … } /* * (Re)start btcoex work */ static void ath_htc_resume_btcoex_work(struct ath9k_htc_priv *priv) { … } /* * Cancel btcoex and bt duty cycle work. */ static void ath_htc_cancel_btcoex_work(struct ath9k_htc_priv *priv) { … } void ath9k_htc_start_btcoex(struct ath9k_htc_priv *priv) { … } void ath9k_htc_stop_btcoex(struct ath9k_htc_priv *priv) { … } void ath9k_htc_init_btcoex(struct ath9k_htc_priv *priv, char *product) { … } #endif /* CONFIG_ATH9K_BTCOEX_SUPPORT */ /*******/ /* LED */ /*******/ #ifdef CONFIG_MAC80211_LEDS void ath9k_led_work(struct work_struct *work) { … } static void ath9k_led_brightness(struct led_classdev *led_cdev, enum led_brightness brightness) { … } void ath9k_deinit_leds(struct ath9k_htc_priv *priv) { … } void ath9k_configure_leds(struct ath9k_htc_priv *priv) { … } void ath9k_init_leds(struct ath9k_htc_priv *priv) { … } #endif /*******************/ /* Rfkill */ /*******************/ static bool ath_is_rfkill_set(struct ath9k_htc_priv *priv) { … } void ath9k_htc_rfkill_poll_state(struct ieee80211_hw *hw) { … } void ath9k_start_rfkill_poll(struct ath9k_htc_priv *priv) { … }