/* * Copyright (c) 2008-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 <linux/moduleparam.h> #include "hw.h" #include "ar5008_initvals.h" #include "ar9001_initvals.h" #include "ar9002_initvals.h" #include "ar9002_phy.h" /* General hardware code for the A5008/AR9001/AR9002 hadware families */ static int ar9002_hw_init_mode_regs(struct ath_hw *ah) { … } static void ar9280_20_hw_init_rxgain_ini(struct ath_hw *ah) { … } static void ar9280_20_hw_init_txgain_ini(struct ath_hw *ah, u32 txgain_type) { … } static void ar9271_hw_init_txgain_ini(struct ath_hw *ah, u32 txgain_type) { … } static void ar9002_hw_init_mode_gain_regs(struct ath_hw *ah) { … } /* * Helper for ASPM support. * * Disable PLL when in L0s as well as receiver clock when in L1. * This power saving option must be enabled through the SerDes. * * Programming the SerDes must go through the same 288 bit serial shift * register as the other analog registers. Hence the 9 writes. */ static void ar9002_hw_configpcipowersave(struct ath_hw *ah, bool power_off) { … } static int ar9002_hw_get_radiorev(struct ath_hw *ah) { … } int ar9002_hw_rf_claim(struct ath_hw *ah) { … } void ar9002_hw_enable_async_fifo(struct ath_hw *ah) { … } static void ar9002_hw_init_hang_checks(struct ath_hw *ah) { … } /* Sets up the AR5008/AR9001/AR9002 hardware familiy callbacks */ int ar9002_hw_attach_ops(struct ath_hw *ah) { … } void ar9002_hw_load_ani_reg(struct ath_hw *ah, struct ath9k_channel *chan) { … }