#
# NOTES -- Lines that can be cut/pasted into kernel and hints configs.
#
# This file contains machine dependent kernel configuration notes.  For
# machine independent notes, look in /sys/conf/NOTES.
#
#

#
# We want LINT to cover profiling as well.
# Except it's broken.
#profile         2

#
# Enable the kernel DTrace hooks which are required to load the DTrace
# kernel modules.
#
options 	KDTRACE_HOOKS
options 	KDTRACE_MIB_SDT

#
# Most of the following is copied from ARM64 GENERIC.
cpu		ARM64

makeoptions	DEBUG=-g		# Build kernel with gdb(1) debug symbols
makeoptions	WITH_CTF=1		# Run ctfconvert(1) for DTrace support

options 	PRINTF_BUFR_SIZE=128	# Prevent printf output being interspersed.
options 	KDTRACE_FRAME		# Ensure frames are compiled in
options 	VFP			# Floating-point support
options 	RACCT_DEFAULT_TO_DISABLED # Set kern.racct.enable=0 by default

# SoC support
options 	SOC_ALLWINNER_A64
options 	SOC_ALLWINNER_H5
options 	SOC_ALLWINNER_H6
options 	SOC_BRCM_BCM2837
options 	SOC_BRCM_BCM2838
options 	SOC_BRCM_NS2
options 	SOC_CAVM_THUNDERX
options 	SOC_FREESCALE_IMX8
options 	SOC_HISI_HI6220
options 	SOC_INTEL_STRATIX10
options 	SOC_MARVELL_8K
options 	SOC_NVIDIA_TEGRA210
options 	SOC_NXP_LS
options 	SOC_ROCKCHIP
options 	SOC_ROCKCHIP_RK3328
options 	SOC_ROCKCHIP_RK3399
options 	SOC_ROCKCHIP_RK3568
options 	SOC_XILINX_ZYNQ

# Timer drivers
device		aw_timer

# Annapurna Alpine drivers
device		al_ccu			# Alpine Cache Coherency Unit
device		al_nb_service		# Alpine North Bridge Service
device		al_iofic		# I/O Fabric Interrupt Controller
device		al_serdes		# Serializer/Deserializer
device		al_udma			# Universal DMA

# Qualcomm Snapdragon drivers
device		qcom_gcc		# Global Clock Controller

# Google Virtual NIC
device		gve		# Google Virtual NIC (gVNIC) driver

# Microsoft Hyper-V
device		hyperv

# CPU frequency control
device		cpufreq

# Accelerated software crypto
device		armv8crypto		# ARMv8 OpenCrypto module
device		ossl			# OpenSSL OpenCrypto module

# Bus drivers
device		al_pci		# Annapurna Alpine PCI-E
options 	PCI_HP			# PCI-Express native HotPlug
options 	PCI_IOV		# PCI SR-IOV support

# Ethernet NICs
device		mdio
device		awg		# Allwinner EMAC Gigabit Ethernet
device		axa		# AMD Opteron A1100 integrated NIC
device		neta		# Marvell Armada 370/38x/XP/3700 NIC
device  	smc		# SMSC LAN91C111
device		vnic		# Cavium ThunderX NIC
device		al_eth		# Annapurna Alpine Ethernet NIC
device  	dwc		# Synopsys Designware GMAC Ethernet
device		dwc_rk		# Rockchip Designware
device		dwc_socfpga	# Altera SOCFPGA Ethernet MAC
device		ice		# Intel 800 Series Physical Function
device		ice_ddp		# Intel 800 Series DDP Package

# Etherswitch devices
device		e6000sw		# Marvell mv88e6085 based switches

# Storage
# Broadcom MPT Fusion, version 4, is 64-bit only
device		mpi3mr			# LSI-Logic MPT-Fusion 4

# MMC/SD/SDIO Card slot support
device		sdhci_xenon		# Marvell Xenon SD/MMC controller
device		aw_mmc			# Allwinner SD/MMC controller
device		dwmmc
device		dwmmc_altera
device		rk_emmcphy

# Serial (COM) ports
device		uart_msm	# Qualcomm MSM UART driver
device		uart_mu		# RPI3 aux port
device		uart_mvebu	# Armada 3700 UART driver
device		uart_ns8250	# ns8250-type UART driver
device		uart_snps
device		pl011

# Early printf using the pl011 uart under the Arm FVP
options 	SOCDEV_PA=0x1c090000
options 	EARLY_PRINTF=pl011

# USB support
device		aw_usbphy		# Allwinner USB PHY
device		dwcotg			# DWC OTG controller
device		ehci_mv			# Marvell EHCI USB interface

# USB ethernet support
device		muge
device		smsc

# Sound support
device a10_codec

# DMA controller
device		a31_dmac

# GPIO / PINCTRL
device		a37x0_gpio	# Marvell Armada 37x0 GPIO controller
device		aw_gpio		# Allwinner GPIO controller
device		fdt_pinctrl
device		mv_gpio		# Marvell GPIO controller
device		mvebu_pinctrl	# Marvell Pinmux Controller
device		rk_gpio		# RockChip GPIO Controller
device		rk_pinctrl	# RockChip Pinmux Controller

# I2C
device		aw_rsb		# Allwinner Reduced Serial Bus
device		bcm2835_bsc	# Broadcom BCM283x I2C bus
device		twsi		# Allwinner I2C controller
device		rk_i2c		# RockChip I2C controller

# Clock and reset controllers
device		aw_ccu		# Allwinner clock controller

# Interrupt controllers
device		aw_nmi		# Allwinner NMI support
device		mv_cp110_icu	# Marvell CP110 ICU
device		mv_ap806_gicp	# Marvell AP806 GICP

# Real-time clock support
device		aw_rtc		# Allwinner Real-time Clock
device		mv_rtc		# Marvell Real-time Clock

# Watchdog controllers
device		aw_wdog		# Allwinner Watchdog

# Power management controllers
device		axp81x		# X-Powers AXP81x PMIC
device		rk8xx		# RockChip RK8XX base support
device		rk805		# RockChip RK805 PMIC
device		rk808		# RockChip RK808 PMIC
device		rk817		# RockChip RK817 PMIC

# EFUSE
device		aw_sid		# Allwinner Secure ID EFUSE

# Thermal sensors
device		aw_thermal	# Allwinner Thermal Sensor Controller
device		mv_thermal	# Marvell Thermal Sensor Controller

# SPI
device		bcm2835_spi	# Broadcom BCM283x SPI bus

# PWM
device		pwm
device		aw_pwm

device		vt_efifb
device		vt_simplefb

# EVDEV support
options 	EVDEV_SUPPORT		# evdev support in legacy drivers
device		aw_cir

# Pseudo devices.
device		clk
device		efidev		# EFI pseudo-device
device		efirtc		# EFI RTC
device		phy
device		hwreset
device		nvmem
device		regulator
device		syscon
device		aw_syscon

# Backlight subsystem
device		backlight

# Misc devices.
device		pl330		# ARM PL330 dma controller
device		xdma		# xDMA framework for SoC on-chip dma controllers

# Chip-specific errata
options 	THUNDERX_PASS_1_1_ERRATA

options 	EFIRT		# EFI Runtime Services
options 	FDT
device		acpi

# DTBs
makeoptions	MODULES_EXTRA="dtb/allwinner dtb/rockchip dtb/rpi"

# Add CAMDEBUG stuff
options 	CAMDEBUG
options 	CAM_DEBUG_FLAGS=(CAM_DEBUG_INFO|CAM_DEBUG_PROBE|CAM_DEBUG_PERIPH)

# bring in camified MMC too
options 	MMCCAM

# arm64 doesn't support inb/outb, so disable chipset probing which needs it
nooptions 	PPC_PROBE_CHIPSET

# These cause weird issues, not sure why
nooptions 	DEBUG

# Makes assumptions about bus tags that aren't true on arm64
nodevice	snd_cmi

# arm64 didn't exist for these releases, so doesn't have the required compat
# support. Just disable them because they are meaningless.
nooptions 	COMPAT_FREEBSD4
nooptions 	COMPAT_FREEBSD5
nooptions 	COMPAT_FREEBSD6
nooptions 	COMPAT_FREEBSD7
nooptions 	COMPAT_FREEBSD9
nooptions 	COMPAT_FREEBSD10

# arm64 supports 32-bit FreeBSD/arm binaries (armv[67] ABIs)
options 	COMPAT_FREEBSD32	# Compatible with FreeBSD/arm

options		IOMMU # ARM64 SMMU/IOMMU

#####################################################################
# ZFS support

options 	ZFS

#
# HID-over-I2C support
#
device		iichid		# HID-over-I2C support
options 	IICHID_DEBUG	# Enable HID-over-I2C debug messages
options 	IICHID_SAMPLING	# Workaround missing GPIO INTR support
