# $NetBSD: GENERIC64,v 1.21 2025/02/08 16:12:20 skrll Exp $
#
# GENERIC machine description file
#
# This machine description file is used to generate the default NetBSD
# kernel for RV64.  The generic kernel does not include all options,
# subsystems and device drivers, but should be useful for most applications.
#
# The machine description file can be customised for your specific
# machine to reduce the kernel size and improve its performance.
#
# For further information on compiling NetBSD kernels, see the config(8)
# man page.
#
# For further information on hardware support for this architecture, see
# the intro(4) man page.  For further information about kernel options
# for this architecture, see the options(4) man page.  For an explanation
# of each device driver in this file see the section 4 man page for the
# device.

include "arch/riscv/conf/std.riscv64"
include "arch/riscv/conf/files.generic64"
include "arch/riscv/conf/GENERIC.common"

#options        EARLYCONS=com, CONSADDR=0x10000000      # qemu virt
options         VERBOSE_INIT_RISCV

# Diagnostic/debugging support options
options         DIAGNOSTIC      # inexpensive kernel consistency checks
                               # XXX to be commented out on release branch
options         DEBUG           # expensive debugging checks/support
#options        LOCKDEBUG       # expensive locking checks/support
#options        KERNHIST
#options        KERNHIST_PRINT
#options        UVMHIST
#options        UVMHIST_PRINT
#options        PMAPHIST
#options        PMAPHIST_PRINT
#options        SYSCTL_DEBUG
#options        SYSCTL_DEBUG_SETUP
#options        SYSCTL_DEBUG_CREATE
#options        PMAP_FAULTINFO
#options        RISCV_SYSCALL_DEBUG
#options        SYSCALL_DEBUG

#options        COMPAT_NETBSD32
#options        EXEC_ELF32

# Cache controller
ccache*         at fdt?                 # SiFive FU[57]40 L2 Cache

# Fixed Voltage/Current Regulators
fregulator*     at fdt? pass 4

# Clock and reset controller
jh7100clkc*     at fdt? pass 2          # StarFive JH7100 clock controller
jh7110clkc*     at fdt? pass 2          # StarFive JH7110 clock controller
sun20id1ccu*    at fdt? pass 2          # Allwinner D1/D1s CCU

# Security ID EFUSE
sunxisid*       at fdt? pass 4          # Allwinner SID

# DMA
sun6idma*       at fdt? pass 4          # Allwinner DMA controller (sun6i)

# PCIe PHY
jh7110pciephy*  at fdt? pass 3          # StarFive JH7110 PCIe PHY

# PCIe
jh7110pcie*     at fdt?                 # StarFive JH7110 PCIe

# Pin control
jh7100pinctrl*  at fdt? pass 2          # StarFive JH7100 pinctrl driver
jh7110pinctrl*  at fdt? pass 2          # StarFive JH7110 pinctrl driver
sunxigpio*      at fdt? pass 2          # Allwinner GPIO
gpio*           at gpiobus?

# System control
jh7110syscon*   at fdt? pass 1

# SDMMC
dwcmmc*         at fdt?                 # DesignWare SD/MMC
sdmmc*          at sdmmcbus?
ld0             at sdmmc0
ld1             at sdmmc1
ld2             at sdmmc2
ld3             at sdmmc3
ld*             at sdmmc?
bwfm*           at sdmmc?               # Broadcom BCM43xxx WiFi Interface

# USB PHY
sunxiusbphy*    at fdt?                 # Allwinner USB PHY

# USB
jh71x0usb*      at fdt?                 # StarFive JH71x0 usb

# Ethernet
#awge*          at fdt?                 # DesignWare Gigabit Ethernet
eqos*           at fdt?                 # DesignWare Ethernet QoS

# MII/PHY support
micphy*         at mii? phy ?           # Micrel KSZ[89]xxx PHYs
mcommphy*       at mii? phy ?           # Motorcomm YT8511C/YT8511H PHYs
ukphy*          at mii? phy ?           # generic unknown PHYs

# Temperature sensor
jh71x0temp*     at fdt?                 # StarFive JH71x0 Temperature sensor

# Random number generators
jh7110trng*     at fdt?                 # StarFive JH7110 True RNG

# Pull in optional local configuration - always at end
cinclude        "arch/riscv/conf/GENERIC64.local"