freebsd-dev/sys/mips/conf/QCA955X_BASE
Adrian Chadd fb76025135 Bring over the initial QCA955x SoC support framework.
This is enough to bring up the basic SoC support.

What works thus far:

* The mips74k core, pll setup, and UART (or else well, stuff would
  be really difficult..)
* both USB 2.0 EHCI controllers
* on-board 2GHz 3x3 wifi (the other variant has 2GHz/5GHz wifi on-chip);
* arge0 - not yet sure why arge1 isn't firing off interrupts and thus
  handling traffic, but I will soon figure it out and fix it here.

Tested:

* AP135 reference design, QCA9558 SoC, pretending to be an 11n
  2GHz AP.

TODO:

* There's an interrupt mux hooking up devices to IP2 and IP3 - but it's
  not a read-and-clear or write-to-clear register.  So, trying to use it
  naively like I have been ends up with massive interrupt storms.
  For now the things that share those interrupts can just take them as
  shared interrupts and try to play nice.

* There's two PCIe root complexes /and/ one of them can actually be
  a PCIe device endpoint.  Yes, you heard right.  I have to teach the
  AR724x PCIe bridge code to handle multiple instances with multiple
  memory/irq regions, and then there'll be RC support, but EP support
  isn't on my TODO list.

* I'm not sure why arge1 isn't up and running.  I'll go figure that
  out soon and fix it here.

Thankyou to Qualcomm Atheros for providing me with hardware and
an abundance of documentation about these things.
2015-03-02 02:24:46 +00:00

148 lines
3.8 KiB
Plaintext

#
# QCA955X_BASE -- Kernel configuration base file for the Qualcomm Atheros
# QCA955x SoC.
#
# This file (and the hints file accompanying it) are not designed to be
# used by themselves. Instead, users of this file should create a kernel
# config file which includes this file (which gets the basic hints), then
# override the default options (adding devices as needed) and adding
# hints as needed (for example, the GPIO and LAN PHY.)
#
# $FreeBSD$
#
machine mips mips
ident QCA955X_BASE
cpu CPU_MIPS74KC
makeoptions KERNLOADADDR=0x80050000
options HZ=1000
options BREAK_TO_DEBUGGER
options ALT_BREAK_TO_DEBUGGER
# options BOOTVERBOSE=10
files "../atheros/files.ar71xx"
hints "QCA955X_BASE.hints"
makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols
# makeoptions MODULES_OVERRIDE="random gpio ar71xx if_gif if_gre if_bridge bridgestp usb wlan wlan_xauth wlan_acl wlan_wep wlan_tkip wlan_ccmp wlan_rssadapt wlan_amrr ath ath_ahb hwpmc"
makeoptions MODULES_OVERRIDE=""
options DDB
options KDB
options ALQ
options SCHED_4BSD #4BSD scheduler
options INET #InterNETworking
#options INET6 #InterNETworking
#options NFSCL #Network Filesystem Client
options PSEUDOFS #Pseudo-filesystem framework
options _KPOSIX_PRIORITY_SCHEDULING #Posix P1003_1B real-time extensions
# Don't include the SCSI/CAM strings in the default build
options SCSI_NO_SENSE_STRINGS
options SCSI_NO_OP_STRINGS
# .. And no sysctl strings
options NO_SYSCTL_DESCR
# Limit IO size
options NBUF=128
# Limit UMTX hash size
# options UMTX_NUM_CHAINS=64
# PMC
#options HWPMC_HOOKS
#device hwpmc
#device hwpmc_mips24k
# options NFS_LEGACYRPC
# Debugging for use in -current
#options INVARIANTS
#options INVARIANT_SUPPORT
#options WITNESS
#options WITNESS_SKIPSPIN
options FFS #Berkeley Fast Filesystem
#options SOFTUPDATES #Enable FFS soft updates support
#options UFS_ACL #Support for access control lists
#options UFS_DIRHASH #Improve performance on big directories
options NO_FFS_SNAPSHOT # We don't require snapshot support
# Wireless NIC cards
options IEEE80211_DEBUG
options IEEE80211_SUPPORT_MESH
options IEEE80211_SUPPORT_TDMA
options IEEE80211_SUPPORT_SUPERG
options IEEE80211_ALQ # 802.11 ALQ logging support
device wlan # 802.11 support
device wlan_wep # 802.11 WEP support
device wlan_ccmp # 802.11 CCMP support
device wlan_tkip # 802.11 TKIP support
device wlan_xauth # 802.11 hostap support
# ath(4)
device ath # Atheros network device
device ath_rate_sample
device ath_ahb # Atheros host bus glue
options ATH_DEBUG
options ATH_DIAGAPI
option ATH_ENABLE_11N
option AH_DEBUG_ALQ
#device ath_hal
device ath_ar9300 # AR9330 HAL; no need for the others
option AH_DEBUG
option AH_SUPPORT_AR5416 # 11n HAL support
option AH_SUPPORT_QCA9550 # Chipset support
option AH_DEBUG_ALQ
option AH_AR5416_INTERRUPT_MITIGATION
device mii
device arge
options ARGE_DEBUG
device usb
options USB_EHCI_BIG_ENDIAN_DESC # handle big-endian byte order
options USB_DEBUG
options USB_HOST_ALIGN=32 # AR71XX (MIPS in general?) requires this
device ehci
device pci
# XXX TODO: need to write a qca955x_pci bridge
# .. since it now handles >1 PCIe bus and the reset
# registers may have changed a bit.
# device ar724x_pci
device scbus
device umass
device da
device spibus
device ar71xx_spi
device mx25l
device ar71xx_wdog
device uart
device uart_ar71xx
device ar71xx_apb
# Until some better interrupt handling is shoehorned into qca955x_apb,
# we'll have to stick to shared interrupts for IP2/IP3 demux.
# device qca955x_apb
device loop
device ether
device md
device bpf
device random
device if_bridge
device gpio
device gpioled
#options KTR
#options KTR_MASK=(KTR_INTR)
#options KTR_COMPILE=(KTR_INTR)
#options KTR_VERBOSE