diff options
author | adrian <adrian@FreeBSD.org> | 2011-04-28 12:47:40 +0000 |
---|---|---|
committer | adrian <adrian@FreeBSD.org> | 2011-04-28 12:47:40 +0000 |
commit | a4f08be08e135ccfb609b61b096ce1849e2a1e6a (patch) | |
tree | 054204116e570df7c016e1567dc5a2f5d878dd94 /sys/modules | |
parent | a09ee46337e80760839065ecb43f8003cd7a7f85 (diff) | |
download | FreeBSD-src-a4f08be08e135ccfb609b61b096ce1849e2a1e6a.zip FreeBSD-src-a4f08be08e135ccfb609b61b096ce1849e2a1e6a.tar.gz |
Introduce AR9130 (HOWL) WMAC support to the FreeBSD HAL.
The AR9130 is an AR9160/AR5416 family WMAC which is glued directly
to the AR913x SoC peripheral bus (APB) rather than via a PCI/PCIe
bridge.
The specifics:
* A new build option is required to use the AR9130 - AH_SUPPORT_AR9130.
This is needed due to the different location the RTC registers live
with this chip; hopefully this will be undone in the future.
This does currently mean that enabling this option will break non-AR9130
builds, so don't enable it unless you're specifically building an image
for the AR913x SoC.
* Add the new probe, attach, EEPROM and PLL methods specific to Howl.
* Add a work-around to ah_eeprom_v14.c which disables some of the checks
for endian-ness and magic in the EEPROM image if an eepromdata block
is provided. This'll be fixed at a later stage by porting the ath9k
probe code and making sure it doesn't break in other setups (which
my previous attempt at this did.)
* Sprinkle Howl modifications throughput the interrupt path - it doesn't
implement the SYNC interrupt registers, so ignore those.
* Sprinkle Howl chip powerup/down throughout the reset path; the RTC methods
were
* Sprinkle some other Howl workarounds in the reset path.
* Hard-code an alternative setup for the AR_CFG register for Howl, that
sets up things suitable for Big-Endian MIPS (which is the only platform
this chip is glued to.)
This has been tested on the AR913x based TP-Link WR-1043nd mode, in
legacy, HT/20 and HT/40 modes.
Caveats:
* 2ghz has only been tested. I've not seen any 5ghz radios glued to this
chipset so I can't test it.
* AR5416_INTERRUPT_MITIGATION is not supported on the AR9130. At least,
it isn't implemented in ath9k. Please don't enable this.
* This hasn't been tested in MBSS mode or in RX/TX block-aggregation mode.
Diffstat (limited to 'sys/modules')
-rw-r--r-- | sys/modules/ath/Makefile | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/sys/modules/ath/Makefile b/sys/modules/ath/Makefile index e5fc7f6..b66ec09 100644 --- a/sys/modules/ath/Makefile +++ b/sys/modules/ath/Makefile @@ -75,13 +75,14 @@ SRCS+= ar2425.c SRCS+= ar5413.c # -# AR5416, AR9160 support; these are 11n parts but only really -# supported (right now) operating in legacy mode. Note enabling -# this support requires defining AH_SUPPORT_AR5416 in opt_ah.h -# so the 11n tx/rx descriptor format is handled. +# AR5416, AR9130, AR9160, AR9220, AR9280, AR9285 support. + +# Note enabling this support requires defining AH_SUPPORT_AR5416 +# in opt_ah.h so the 11n tx/rx descriptor format is handled. # # NB: 9160 depends on 5416 but 5416 does not require 9160 # +# + 5416 (Owl) .PATH: ${.CURDIR}/../../dev/ath/ath_hal/ar5416 SRCS+= ah_eeprom_v14.c ah_eeprom_v4k.c \ ar5416_ani.c ar5416_attach.c ar5416_beacon.c ar5416_cal.c \ @@ -90,14 +91,28 @@ SRCS+= ah_eeprom_v14.c ah_eeprom_v4k.c \ ar5416_misc.c ar5416_phy.c ar5416_power.c ar5416_recv.c \ ar5416_reset.c ar5416_xmit.c -# RF backend for 5416 and 9160 +# RF backend for 5416, 9130 and 9160 SRCS+= ar2133.c +# + AR9160 (Sowl) .PATH: ${.CURDIR}/../../dev/ath/ath_hal/ar9001 SRCS+= ar9160_attach.c +# + AR9130 - (Sowl) - Embedded (AR913x SoC) +# +# This requires AH_SUPPORT_AR9130 in order to function as some +# register values have shifted for this chipset. Definig this however +# (currently) breaks non-AR9130 chipsets - since this is an embedded +# chipset and no other radios are glued to it, this shouldn't pose a +# problem. +SRCS+= ar9130_attach.c ar9130_eeprom.c ar9130_phy.c + +# AR9002 series chips +# + AR9220/AR9280 - Merlin .PATH: ${.CURDIR}/../../dev/ath/ath_hal/ar9002 SRCS+= ar9280.c ar9280_attach.c ar9280_olc.c + +# + AR9285 - Kite SRCS+= ar9285.c ar9285_reset.c ar9285_attach.c ar9285_cal.c ar9285_phy.c SRCS+= ar9285_diversity.c |