#       $NetBSD: NETWALKER,v 1.43 2023/02/09 14:09:48 abs Exp $
#
#       NETWALKER -- http://www.sharp.co.jp/netwalker/
#

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

# CPU options
options         CPU_CORTEX      # Support the ARM-v7a core
options         IMX51

# Device options

# Console options.    also need IMXUARTCONSOLE
options         CONSDEVNAME="\"imxuart\"",CONADDR=0x73fbc000
options         CONSPEED=115200 # Console speed

# Development and Debugging options
#options        DEBUG
#options        KGDB
makeoptions     DEBUG="-g"      # compile full symbol table
makeoptions     COPY_SYMTAB=1

# 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
#  console=(fb|serial)  Select console device
options         BOOT_ARGS="\"verbose console=fb\""
#options        BOOT_ARGS="\"verbose\""

# Kernel root file system and dump configuration.
config          netbsd          root on ? type ?
config          netbsd-ld0      root on ld0 type ffs

# The main bus device
mainbus0        at root

# The boot cpu
cpu0            at mainbus?

# Devices
# On-chip
# On-chip bus
axi0            at mainbus?

# Interrupt Controller
tzic0           at axi? addr 0xe0000000 size 0x4000 irqbase 0

# Serial
imxuart0        at axi? addr 0x73fbc000 irq 31          # UART1
#imxuart1       at axi? addr 0x73fc0000 irq 32
#imxuart2       at axi? addr 0x7000c000 irq 33
#options        IMXUARTCONSOLE

# Clock Control
imxccm0         at axi? addr 0x73fd4000
options         IMX51_CKIL_FREQ=32768
#options        IMXCCMDEBUG

# Enhanced Periodic Interrupt Timer
imxclock0       at axi? addr 0x73fac000 size 0x4000 irq 40
imxclock1       at axi? addr 0x73fb0000 size 0x4000 irq 41

# IOMUX
imxiomux0       at axi? addr 0x73fa8000

# WatchDog
imxwdog0        at axi? addr 0x73f98000 irq 58 flags 0

# GPIO
imxgpio0        at axi? addr 0x73f84000 irqbase 128 irq 50
imxgpio1        at axi? addr 0x73f88000 irqbase 160 irq 52
imxgpio2        at axi? addr 0x73f8c000 irqbase 192 irq 54
imxgpio3        at axi? addr 0x73f90000 irqbase 224 irq 56
gpio*           at imxgpio?

# I2C
imxi2c0         at axi? addr 0x83fc8000 irq 62
imxi2c1         at axi? addr 0x83fc4000 irq 63

# IIC
iic*            at imxi2c?

# SPI bus
imxspi0         at axi? addr 0x70010000 irq 36 flags 1
#imxspi1        at axi? addr 0x83fac000 irq 37 flags 1
#imxspi2        at axi? addr 0x83fc0000 irq 38 flags 0
spi0            at imxspi0 # eCSPI1
#spi1           at imxspi1 # eCSPI2
#spi2           at imxspi2 # CSPI1
options         IMXSPINSLAVES=3
#options        IMXSPI_DEBUG=10

# Optical Joystick
oj6sh0          at spi0 slave 2
#options        OJ6SH_DEBUG=4
options         OJ6SH_UP_X_LEFT_Y
wsmouse*        at oj6sh? mux 0

mousebtn0       at gpio1 offset 22 mask 0x03 # intr 182, 183
#options        MOUSEBTN_POLLING
wsmouse*        at mousebtn? mux 0

pwrbtn0         at gpio1 offset 21 mask 0x01 # intr 181
lidsw0          at gpio3 offset 12 mask 0x01 # intr 236
imxpwm0         at axi? addr 0x73FB4000 irq 61

# SPI NOR-Flash
spiflash0       at spiflashbus?
m25p0           at spi0 slave 1

# SD/MMC
sdhc0           at axi? addr 0x70004000 irq 1        # eSDHC1
#sdhc1          at axi? addr 0x70008000 irq 2        # eSDHC2
sdmmc*          at sdhc?
ld*             at sdmmc?                       # MMC/SD card
#options        SDHC_DEBUG
#options        SDMMC_DEBUG

# USB
imxusbc0  at axi?  addr 0x73f80000
ehci0     at imxusbc0   unit 0  irq 18 # OTG
ehci1     at imxusbc0   unit 1  irq 14 # Host1
#ehci2    at imxusbc0   unit 2  irq 16 # Host2
#ehci3    at imxusbc0   unit 3  irq 17 # Host3

usb*            at ehci?

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

midi*           at midibus?

rgephy*         at mii? phy ?
rlphy*          at mii? phy ?
ukphy*          at mii? phy ?

# IPUv3 LCD Controller
ipu0            at axi?
#options        IPUV3_DEBUG=1
#options        LCD_DEBUG

# Framebuffer console
genfb*          at ipu?
wsdisplay*      at genfb?
#options        GENFB_SHADOWFB

# various options for wscons - we try to look as much like a standard
# sun console as possible
options         VCONS_DRAW_INTR
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

# Pseudo-Devices

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

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