#
#       $NetBSD: BCM56340,v 1.23 2024/02/16 16:28:50 skrll Exp $
#
#       BCM5301X -- Broadcom BCM5301X Eval Board Kernel
#

include "arch/evbarm/conf/std.bcm53xx"

# estimated number of users

maxusers        32

# Standard system options

options         RTC_OFFSET=0    # hardware clock is this many mins. west of GMT
#options        NTP             # NTP phase/frequency locked loop

# CPU options

#makeoptions    DEFCOPTS="-O0"
options         UVMHIST
#options        UVMHIST_PRINT,A9WDT_PERIOD_DEFAULT=30
options         BCMETH_COUNTERS
#options        MULTIPROCESSOR
options         CPU_CORTEX
#options        MEMSIZE=256
options         BCM563XX
options         PMAPCOUNTERS
options         BUSDMA_COUNTERS
makeoptions     KERNEL_BASE_PHYS="0x60100000"
#options        VERBOSE_INIT_ARM
options         EARLYCONS=bcm53xx,CONSADDR=0x18000300

# Architecture options

# File systems

file-system     FFS             # UFS
#file-system    LFS             # log-structured file system
file-system     MFS             # memory file system
file-system     NFS             # Network file system
#file-system    ADOSFS          # AmigaDOS-compatible file system
#file-system    EXT2FS          # second extended file system (linux)
file-system     CD9660          # ISO 9660 + Rock Ridge file system
file-system     MSDOSFS         # MS-DOS file system
#file-system    FDESC           # /dev/fd
file-system     KERNFS          # /kern
#file-system    NULLFS          # loopback file system
#file-system    PROCFS          # /proc
#file-system    PUFFS           # Userspace file systems (e.g. ntfs-3g & sshfs)
#file-system    UMAPFS          # NULLFS + uid and gid remapping
#file-system    UNION           # union file system
file-system     TMPFS           # memory file system
file-system     PTYFS           # /dev/pts/N support

# File system options
#options        FFS_EI          # FFS Endian Independent support
#options        FFS_NO_SNAPSHOT # No FFS snapshot support
#options        QUOTA           # legacy UFS quotas
#options        QUOTA2          # new, in-filesystem UFS quotas
options         UFS_DIRHASH     # UFS Large Directory Hashing
options         UFS_EXTATTR     # Extended attribute support for UFS1
options         WAPBL           # File system journaling support
#options        DISKLABEL_EI    # disklabel Endian Independent support
#options        NFSSERVER       # Network File System server

# Networking options

#options        GATEWAY         # packet forwarding
options         INET            # IP + ICMP + TCP + UDP
options         INET6           # IPV6
#options        IPSEC           # IP security
#options        IPSEC_DEBUG     # debug for IP security
#options        MROUTING        # IP multicast routing
#options        PIM             # Protocol Independent Multicast
#options        NETATALK        # AppleTalk networking
#options        PPP_BSDCOMP     # BSD-Compress compression support for PPP
#options        PPP_DEFLATE     # Deflate compression support for PPP
#options        PPP_FILTER      # Active filter support for PPP (requires bpf)
#options        TCP_DEBUG       # Record last TCP_NDEBUG packets with SO_DEBUG

options         NFS_BOOT_BOOTP
options         NFS_BOOT_DHCP
#options                NFS_BOOT_BOOTSTATIC
#options                NFS_BOOTSTATIC_MYIP="\"192.168.1.4\""
#options                NFS_BOOTSTATIC_GWIP="\"192.168.1.1\""
#options                NFS_BOOTSTATIC_MASK="\"255.255.255.0\""
#options                NFS_BOOTSTATIC_SERVADDR="\"192.168.1.1\""
#options                NFS_BOOTSTATIC_SERVER="\"192.168.1.1:/nfs/sdp2430\""

options         NFS_BOOT_RWSIZE=1024

# Compatibility options
include         "conf/compat_netbsd30.config"
options         COMPAT_NETBSD32 # allow running arm (e.g. non-earm) binaries

# Shared memory options

options         SYSVMSG         # System V-like message queues
options         SYSVSEM         # System V-like semaphores
options         SYSVSHM         # System V-like memory sharing

# Device options

#options        MEMORY_DISK_HOOKS       # boottime setup of ramdisk
#options        MEMORY_DISK_ROOT_SIZE=8192      # Size in blocks
#options        MEMORY_DISK_DYNAMIC
#options        MINIROOTSIZE=1000       # Size in blocks
#options        MEMORY_DISK_IS_ROOT     # use memory disk as root

# Wedge support
options         DKWEDGE_AUTODISCOVER    # Automatically add dk(4) instances
options         DKWEDGE_METHOD_GPT      # Supports GPT partitions as wedges

# Miscellaneous kernel options
options         MODULAR         # support dynamically loaded kernel modules
options         MODULAR_DEFAULT_AUTOLOAD
options         KTRACE          # system call tracing, a la ktrace(1)
options         PCIVERBOSE      # Verbose PCI autoconfiguration messages
#options        PCI_CONFIG_DUMP # Verbose PCI autoconfiguration messages
options         PCI_NETBSD_CONFIGURE # perform PCI configuration
options         RNDVERBOSE      # Verbose rnd messages
#options        SCSIVERBOSE     # Verbose SCSI errors
#options        MIIVERBOSE      # Verbose MII autoconfiguration messages
#options        DDB_KEYCODE=0x40
#options        USERCONF        # userconf(4) support
#options        PIPE_SOCKETPAIR # smaller, but slower pipe(2)

# Development and Debugging options

options         DIAGNOSTIC      # internal consistency checks
options         DEBUG
#options        LOCKDEBUG       # Enable lock debugging
#options        UVMHIST         # kernhist for uvm/pmap subsystems
options         VERBOSE_INIT_ARM # verbose bootstraping messages
options         DDB             # in-kernel debugger
options         DDB_ONPANIC=1
options         DDB_HISTORY_SIZE=100    # Enable history editing in DDB
options         DDB_COMMANDONENTER="show event"
options         DB_MAX_LINE=INT_MAX
#options        KGDB
makeoptions     DEBUG="-g"      # compile full symbol table
makeoptions     COPY_SYMTAB=1

## USB Debugging options
options USB_DEBUG
options EHCI_DEBUG
options OHCI_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 ?

# The main bus device
mainbus0        at root

# The boot cpu
cpu0            at mainbus?
#cpu*           at mainbus?

# The MPCore interrupt controller and global timer
armperiph0      at mainbus?             # A9 On-Chip Peripherals
armgic0         at armperiph?           # ARM Generic Interrupt Controller
arml2cc0        at armperiph? flags 0   # ARM PL310 L2CC
arma9tmr0       at armperiph?           # A9 Global Timer
arma9wdt0       at armperiph? flags 1   # A9 Watchdog Timer

# ChipCommonA Peripherals
bcmcca0         at mainbus?             # ChipCommonA
#options        CONADDR=0x18000300, CONSPEED=115200
options         CONSPEED=9600
com0            at bcmcca? channel 0
com*            at bcmcca? channel 1

# ChipCommonB Peripherals
bcmccb0         at mainbus?             # ChipCommonB
bcmpax*         at bcmccb? port ? flags 2 # use bounce buffers
pci*            at bcmpax?
ppb*            at pci? dev ? function ?
pci*            at ppb?

ahcisata*       at pci? dev ? function ?
atabus*         at ahcisata? channel ?
#options        ATADEBUG
wd*             at atabus? drive ?
wm*             at pci? dev ? function ?
makphy*         at mii?
ukphy*          at mii?

bcmmdio0        at bcmccb0
bcmeth*         at bcmccb? port ?

# SDHC controllers
sdhc0           at bcmccb0
sdmmc*          at sdhc?                # SD/MMC bus
ld*             at sdmmc?

# Random Number Generator
bcmrng0         at bcmccb0

# NAND controller
#bcmnand0       at bcmccb0

# NAND layer
#nand0          at nandbus?

# use the bad block table
#options NAND_BBT

# Define flash partitions for board
#flash0         at nand0 offset 0x000000 size 0x080000 readonly 1 # X-Loader
#flash1         at nand0 offset 0x080000 size 0x1e0000 readonly 1 # U-Boot
#flash2         at nand0 offset 0x260000 size 0x020000 readonly 1 # UB Env
#flash3         at nand0 offset 0x280000 size 0x400000          # kernel
#flash4         at nand0 offset 0x680000 size 0                 # filesystem

# I2C Controller
bcmi2c0         at bcmccb0
iic*            at bcmi2c?

# NAND Controller
bcmnand0        at bcmccb0
nand*           at nandbus?
flash*          at nand?

# Watchdog timers
#bcmwdt*        at bcmccb0

# On-board USB
bcmusb*         at bcmccb0
ohci*           at bcmusb0
usb*            at ohci?
ehci*           at bcmusb0
usb*            at ehci?
uhub*           at usb?
uhub*           at uhub? port ?
umass*          at uhub? port ? configuration ? interface ?
scsibus*        at scsi?
sd*             at scsibus? target ? lun ?

# USB Ethernet adapters
axe*            at uhub? port ? configuration ? interface ?

# Hardware clocking and power management

# Pseudo-Devices

# disk/mass storage pseudo-devices
#pseudo-device  md                      # memory disk device (ramdisk)
#pseudo-device  vnd                     # disk-like interface to files
#pseudo-device  fss                     # file system snapshot device
#pseudo-device  putter                  # for puffs and pud

# network pseudo-devices
pseudo-device   bpfilter                # Berkeley packet filter
pseudo-device   loop                    # network loopback
#pseudo-device  kttcp                   # network loopback
pseudo-device   vlan
pseudo-device   bridge

# miscellaneous pseudo-devices
pseudo-device   pty                     # pseudo-terminals
#options        RND_COM
#pseudo-device  clockctl                # user control of clock subsystem
pseudo-device   ksyms                   # /dev/ksyms
pseudo-device   drvctl                  # device control
pseudo-device   lockstat                # lock profiling