#
#       $NetBSD: RPI,v 1.96 2023/02/09 14:09:48 abs Exp $
#
#       RPi -- Raspberry Pi
#

include "arch/evbarm/conf/std.rpi"
include "arch/evbarm/conf/GENERIC.common"

options         CPU_ARM1176
options         SOC_BCM2835
options         TPIDRPRW_IS_CURLWP
options         ARM11_COMPAT_MMU
options         __HAVE_MM_MD_CACHE_ALIASING
makeoptions     CPUFLAGS="-march=armv6z -mtune=arm1176jzf-s -mfpu=vfp"

# Architecture options

# Development and Debugging options
#options        KGDB,KGDB_PLCOMUNIT=0,KGDB_DEVRATE=115200,KGDB_CONMODE=0xB00
#options        VERBOSE_INIT_ARM
#options        EARLYCONS=bcm2835,CONSADDR=0x20201000           # RPI1, RPI0
#options        EARLYCONS=bcm2835_aux,CONSADDR=0x20215040       # RPI0W
makeoptions     DEBUG="-g"      # compile full symbol table
makeoptions     COPY_SYMTAB=1
options         PLCONSOLE
#options        PLCONSOLE,PLCOMCNUNIT=0,PLCONSPEED=115200,PLCONMODE=0xB00

## USB Debugging options
#options USB_DEBUG
#options DWC2_DEBUG
#options UHUB_DEBUG


# Valid options for BOOT_ARGS:
#  single               Boot to single user only
#  kdb                  Give control to kernel debugger
#  ask                  Ask for file name to reboot from
#  memorydisk=<n>       Set memorydisk size to <n> KB
#  quiet                Show aprint_naive output
#  verbose              Show aprint_normal and aprint_verbose output
#options                BOOT_ARGS="\"\""

config          netbsd          root on ? type ?

# Device tree support
armfdt0         at root
simplebus*      at fdt? pass 0

# The CPU(s)
cpus*           at fdt? pass 0
cpu*            at fdt? pass 0

fclock*         at fdt? pass 0

# Interrupt Controller
bcmicu*         at fdt? pass 1

# System timer
bcmtmr0         at fdt? pass 1

# Clock manager
bcmcprman0      at fdt? pass 1

# AUX
bcmaux0         at fdt? pass 2

# pulse width modulator manager
#bcmpwm0        at fdt?

fregulator*     at fdt?
gpiokeys*       at fdt?

# GPIO LEDs
gpioleds*       at fdt?

# VC Mailbox
bcmmbox*        at fdt?
vcmbox*         at bcmmbox?

# DMA Controller
bcmdmac0        at fdt?

# VCHIQ
vchiq0          at fdt?

# AUDS
vcaudio0        at vchiq0
audio*          at audiobus?

spkr*           at audio?               # PC speaker (synthesized)

# PL011 uart
plcom*          at fdt?

# AUX UART
com0            at fdt?

# Framebuffer console
genfb0          at fdt?
wsdisplay*      at genfb?
options         VCONS_DRAW_INTR
#options        RPI_HWCURSOR

# Power management, Reset controller and Watchdog registers
bcmpmwdog*      at fdt?

# Random number generator
bcmrng0         at fdt?

# GPIO
bcmgpio*        at fdt?

# Arasan SD/MMC Interface
sdhc*           at fdt?
sdmmc*          at sdhc?

# SD host controller
bcmsdhost*      at fdt?
sdmmc*          at bcmsdhost?

ld*     at sdmmc?
bwfm*   at      sdmmc?

# On-board USB
dwctwo*         at fdt?
usb*            at dwctwo?

# USB device drivers
include "dev/usb/usbdevices.config"

midi*           at midibus?

# MII/PHY support
exphy*          at mii? phy ?           # 3Com internal PHYs
gentbi*         at mii? phy ?           # Generic Ten-Bit 1000BASE-[CLS]X PHYs
glxtphy*        at mii? phy ?           # Level One LXT-1000 PHYs
gphyter*        at mii? phy ?           # NS83861 Gig-E PHY
icsphy*         at mii? phy ?           # Integrated Circuit Systems ICS189x
igphy*          at mii? phy ?           # Intel IGP01E1000
ihphy*          at mii? phy ?           # Intel 82577 PHYs
ikphy*          at mii? phy ?           # Intel 82563 PHYs
inphy*          at mii? phy ?           # Intel 82555 PHYs
iophy*          at mii? phy ?           # Intel 82553 PHYs
lxtphy*         at mii? phy ?           # Level One LXT-970 PHYs
makphy*         at mii? phy ?           # Marvell Semiconductor 88E1000 PHYs
nsphy*          at mii? phy ?           # NS83840 PHYs
nsphyter*       at mii? phy ?           # NS83843 PHYs
pnaphy*         at mii? phy ?           # generic HomePNA PHYs
qsphy*          at mii? phy ?           # Quality Semiconductor QS6612 PHYs
rdcphy*         at mii? phy ?           # RDC R6040 10/100 PHY
rgephy*         at mii? phy ?           # Realtek 8169S/8110S internal PHYs
rlphy*          at mii? phy ?           # Realtek 8139/8201L PHYs
smscphy*        at mii? phy ?           # SMSC LAN87xx PHYs
sqphy*          at mii? phy ?           # Seeq 80220/80221/80223 PHYs
tlphy*          at mii? phy ?           # ThunderLAN PHYs
tqphy*          at mii? phy ?           # TDK Semiconductor PHYs
urlphy*         at mii? phy ?           # Realtek RTL8150L internal PHYs
ukphy*          at mii? phy ?           # generic unknown PHYs

# Broadcom Serial Control (I2C)
bsciic* at fdt?
iic* at i2cbus?

# 'DS3231 Raspberry Pi RTC Board Real Time Clock Module for Arduino'
# sold by linksprite.com
#dsrtc* at iic1 addr 0x68 flags 3231

# MCP7940 based PiFace Real Time Clock
#dsrtc* at iic1 addr 0x6f flags 7940

# SPI controller
bcmspi* at fdt?
spi* at spibus?

# MCP3x0x ADC
# flags selects the actual chip, refer to mcp3kadc(4)
#mcp3kadc0 at spi? slave 0 flags 0

# PIFace or other boards using that chip (needs gpio)
#mcpgpio0 at spi? slave 0 flags 0
#mcpgpio1 at spi? slave 0 flags 1
#mcpgpio2 at spi? slave 0 flags 2
#mcpgpio3 at spi? slave 0 flags 3

# MCP230xx GPIO on I2C.
mcpgpio* at iic? addr ?

# gpio support (e. g. mcpgpio, bcmgpio)
gpio*           at gpiobus?

# various options for wscons - we try to look as much like a standard
# sun console as possible
options         WSEMUL_VT100            # sun terminal emulation
options         WS_DEFAULT_FG=WSCOL_WHITE
options         WS_DEFAULT_BG=WSCOL_BLACK
options         WS_KERNEL_FG=WSCOL_GREEN
options         WS_KERNEL_BG=WSCOL_BLACK
options         WSDISPLAY_COMPAT_PCVT           # emulate some ioctls
options         WSDISPLAY_COMPAT_SYSCONS        # emulate some more ioctls
options         WSDISPLAY_COMPAT_USL            # wsconscfg VT handling
options         WSDISPLAY_COMPAT_RAWKBD         # can get raw scancodes
options         WSDISPLAY_DEFAULTSCREENS=4

options         FONT_BOLD8x16
options         FONT_BOLD16x32

#options        FONT_QVSS8x15
#options        FONT_GALLANT12x22       # the console font

# Pseudo-Devices

# network pseudo-devices
#pseudo-device  carp                    # Common Address Redundancy Protocol
#pseudo-device  npf                     # NPF packet filter
#pseudo-device  kttcp                   # network loopback
#pseudo-device  sl                      # Serial Line IP
#pseudo-device  irframetty              # IrDA frame line discipline
#pseudo-device  faith                   # IPv[46] TCP relay translation i/f
#pseudo-device  stf                     # 6to4 IPv6 over IPv4 encapsulation
#pseudo-device  agr                     # IEEE 802.3ad link aggregation

# miscellaneous pseudo-devices
pseudo-device   openfirm

# wscons pseudo-devices
pseudo-device   wsmux                   # mouse & keyboard multiplexor
pseudo-device   wsfont

# userland interface to drivers, including autoconf and properties retrieval

# Bluetooth devices
include "dev/bluetooth/bluetoothdevices.config"

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