Go back –> Atheros Linux wireless drivers

ath9k_hw

ath9k_hw provides the routines used to access modify and tune Atheros hardware directly. It supports all Atheros 802.11n devices including the USB devices (and in the future possibly SDIO). 802.11 devices typically have firmware for direct hardware access, but some Atheros 802.11 devices do not require any firmware at all. Instead all direct hardware access code is performed directly through the driver. The exception to this is the USB AR9271 and the Mobile AR6003 devices, AR9287 for example performs some things in firmware and others through the hardware code on ath9k_hw. All current PCI, PCI-E and mini-pci-e devices do perform all tasks directly through the hardware code provided by ath9k_hw.

Hardware access components

the ath9k_hw module is built by linking the following objects:

  • hw.o - general harwdare code
  • eeprom.o - eeprom code
  • eeprom_def.o - default eeprom callbacks
  • eeprom_4k.o - eeprom callbacks for 4k family type of EEPROM (AR9285 and AR9271)
  • eeprom_9287.o - eeprom callbacks for AR9287
  • calib.o - calibration code
  • ani.o - code dealing with Adaptive Noise Immunity
  • phy.o - code dealing with the actual radios for both single-chip devices and for devices with external radios
  • btcoex.o - bluetooth coexistance code
  • mac.o - MAC code

These object currently export 88 symbols for use for other drivers to directly tune hardware.

ath9k_hw initvals

The ath9k_hw module has an array of registers with their respective values which are to be programmed into the hardware during initialization. These original value maps are kept in what Atheros calls 'initvals' for initialization values. The initvals are split up by hardware family on ath9k.

To help with the initval header style format, integrity checking and synchronization the ath9k initvals-tool can be used.