Add support for the Certance CP-3100.
"The Certance CP3100 product family provides high-end disk-to-disk-to-tape (D2D2T) functionality for small-to-medium businesses." To software, the unit is very similar to the IQ80321 and IQ31244 eval boards from Intel. As such, we share almost all of their code. Onboard hardware: - IOP321 XScale CPU. Core clock is 600MHz. - 256MB SDRAM (not sure if that's true for all) - Four-port Intel i31244 SATA controller. One port is connected to the internal disk. The remaining three are available on the back-panel. - Dual GigE ports on the back panel, using an Intel i82546EB controller. - Two Symbios Logic 53c1010 SCSI controllers, one in host mode the other in target mode. Both SCSI busses are available on the back panel. Note that NetBSD does not support SCSI target mode. - 8MB of NOR Flash, containing a fairly vanilla Redboot together with a minimal compressed Linux image. - Some front-panel LEDS (not supported). - Serial console. Contributed by Wasabi Systems, Inc.
This commit is contained in:
parent
d3089a454e
commit
5bfa580df1
254
sys/arch/evbarm/conf/CP3100
Normal file
254
sys/arch/evbarm/conf/CP3100
Normal file
@ -0,0 +1,254 @@
|
||||
# $NetBSD: CP3100,v 1.1 2006/11/08 23:49:02 scw Exp $
|
||||
#
|
||||
# CP3100 -- Certance CP3100 Kernel
|
||||
#
|
||||
|
||||
include "arch/evbarm/conf/std.cp3100"
|
||||
|
||||
#options INCLUDE_CONFIG_FILE # embed config file in kernel binary
|
||||
|
||||
# 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
|
||||
#options NMBCLUSTERS=1024
|
||||
|
||||
# CPU options
|
||||
|
||||
# For XScale systems
|
||||
options CPU_XSCALE_80321 # Support the XScale core
|
||||
makeoptions CPUFLAGS="-mcpu=xscale"
|
||||
|
||||
# Architecture options
|
||||
options XSCALE_CACHE_READ_WRITE_ALLOCATE
|
||||
#options HZ=512
|
||||
|
||||
# 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 PORTAL # portal filesystem (still experimental)
|
||||
file-system PROCFS # /proc
|
||||
#file-system UMAPFS # NULLFS + uid and gid remapping
|
||||
#file-system UNION # union file system
|
||||
file-system PTYFS # /dev/pts/N support
|
||||
|
||||
# File system options
|
||||
#options QUOTA # UFS quotas
|
||||
#options FFS_EI # FFS Endian Independant support
|
||||
options NFSSERVER
|
||||
options SOFTDEP
|
||||
#options FFS_NO_SNAPSHOT # No FFS snapshot support
|
||||
|
||||
# Networking options
|
||||
|
||||
options GATEWAY # packet forwarding
|
||||
options INET # IP + ICMP + TCP + UDP
|
||||
options INET6 # IPV6
|
||||
#options IPSEC # IP security
|
||||
#options IPSEC_ESP # IP security (encryption part; define w/ IPSEC)
|
||||
#options IPSEC_NAT_T # IPsec NAT traversal (NAT-T)
|
||||
#options IPSEC_DEBUG # debug for IP security
|
||||
#options MROUTING # IP multicast routing
|
||||
#options PIM # Protocol Independent Multicast
|
||||
#options NS # XNS
|
||||
#options NSIP # XNS tunneling over IP
|
||||
#options ISO,TPIP # OSI
|
||||
#options EON # OSI tunneling over IP
|
||||
#options CCITT,LLC,HDLC # X.25
|
||||
#options NETATALK # AppleTalk networking
|
||||
#options PFIL_HOOKS # pfil(9) packet filter hooks
|
||||
#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 IPFILTER_LOG # ipmon(8) log support
|
||||
options IPFILTER_LOOKUP # ippool(8) support
|
||||
#options TCP_DEBUG # Record last TCP_NDEBUG packets with SO_DEBUG
|
||||
|
||||
options NFS_BOOT_BOOTP
|
||||
options NFS_BOOT_DHCP
|
||||
#options NFS_BOOT_BOOTPARAM
|
||||
|
||||
# Compatibility options
|
||||
|
||||
#options COMPAT_43 # 4.3BSD compatibility.
|
||||
#options COMPAT_30 # NetBSD 3.0 compatibility.
|
||||
#options COMPAT_20 # NetBSD 2.0 compatibility.
|
||||
#options COMPAT_16 # NetBSD 1.6 compatibility.
|
||||
#options COMPAT_15 # NetBSD 1.5 compatibility.
|
||||
#options COMPAT_14 # NetBSD 1.4 compatibility.
|
||||
#options COMPAT_13 # NetBSD 1.3 compatibility.
|
||||
#options COMPAT_12 # NetBSD 1.2 compatibility.
|
||||
#options COMPAT_11 # NetBSD 1.1 compatibility.
|
||||
#options COMPAT_10 # NetBSD 1.0 compatibility.
|
||||
#options COMPAT_09 # NetBSD 0.9 compatibility.
|
||||
#options TCP_COMPAT_42 # 4.2BSD TCP/IP bug compat. Not recommended.
|
||||
options COMPAT_BSDPTY # /dev/[pt]ty?? ptys.
|
||||
|
||||
# Shared memory options
|
||||
|
||||
options SYSVMSG # System V-like message queues
|
||||
options SYSVSEM # System V-like semaphores
|
||||
#options SEMMNI=10 # number of semaphore identifiers
|
||||
#options SEMMNS=60 # number of semaphores in system
|
||||
#options SEMUME=10 # max number of undo entries per process
|
||||
#options SEMMNU=30 # number of undo structures in system
|
||||
options SYSVSHM # System V-like memory sharing
|
||||
options SHMMAXPGS=2048 # 2048 pages is the default
|
||||
options P1003_1B_SEMAPHORE # p1003.1b semaphore support
|
||||
|
||||
# Device options
|
||||
|
||||
#options MEMORY_DISK_HOOKS # boottime setup of ramdisk
|
||||
#options MEMORY_DISK_ROOT_SIZE=3400 # Size in blocks
|
||||
#options MEMORY_DISK_IS_ROOT # use memory disk as root
|
||||
|
||||
# Console options. The default console is speed is 115200 baud.
|
||||
options CONSPEED=115200 # Console speed
|
||||
|
||||
# Miscellaneous kernel options
|
||||
options KTRACE # system call tracing, a la ktrace(1)
|
||||
options IRQSTATS # manage IRQ statistics
|
||||
#options LKM # loadable kernel modules
|
||||
#options KMEMSTATS # kernel memory statistics
|
||||
#options SCSIVERBOSE # Verbose SCSI errors
|
||||
#options PCIVERBOSE # Verbose PCI descriptions
|
||||
#options MIIVERBOSE # Verbose MII autoconfuration messages
|
||||
#options PCI_CONFIG_DUMP # verbosely dump PCI config space
|
||||
#options DDB_KEYCODE=0x40
|
||||
options USERCONF # userconf(4) support
|
||||
#options PIPE_SOCKETPAIR # smaller, but slower pipe(2)
|
||||
#options SYSCTL_INCLUDE_DESCR # Include sysctl descriptions in kernel
|
||||
|
||||
# Development and Debugging options
|
||||
|
||||
options PERFCTRS # performance counters
|
||||
options DIAGNOSTIC # internally consistency checks
|
||||
#options DEBUG
|
||||
#options PMAP_DEBUG # Enable pmap_debug_level code
|
||||
#options IPKDB # remote kernel debugging
|
||||
#options VERBOSE_INIT_ARM # verbose bootstraping messages
|
||||
options DDB # in-kernel debugger
|
||||
options DDB_HISTORY_SIZE=100 # Enable history editing in DDB
|
||||
#makeoptions DEBUG="-g" # compile full symbol table
|
||||
options SYMTAB_SPACE=310000
|
||||
|
||||
config netbsd root on ? type ?
|
||||
config netbsd-wm0 root on wm0 type nfs
|
||||
config netbsd-wd0 root on wd0a type ffs
|
||||
|
||||
# The main bus device
|
||||
mainbus0 at root
|
||||
|
||||
# The boot CPU
|
||||
cpu0 at mainbus?
|
||||
|
||||
# On-board device support
|
||||
obio* at mainbus?
|
||||
|
||||
# Console UART.
|
||||
# Note: "xint 4" is actually the HPI# pin
|
||||
com0 at obio? addr 0xfe800000 xint 4
|
||||
|
||||
# i80321 I/O Processor peripheral support
|
||||
iopxs* at mainbus?
|
||||
|
||||
iopaau* at iopxs? # Application Accelerator Unit
|
||||
iopiic* at iopxs? # I2C Controller Unit(s)
|
||||
iic0 at iopiic?
|
||||
iic1 at iopiic?
|
||||
iopwdog* at iopxs? # Watchdog timer
|
||||
pci0 at iopxs? bus ? # PCI/PCI-X support
|
||||
|
||||
# IIC Devices
|
||||
m41trtc0 at iic1 addr 0x68 # M41T11 Realtime Clock
|
||||
|
||||
#
|
||||
# Storage devices
|
||||
#
|
||||
|
||||
# Serial ATA: i31244
|
||||
artsata* at pci? dev ? function ? # Intel i31244 SATA controller
|
||||
atabus* at ata?
|
||||
|
||||
# ATA Disks
|
||||
wd* at atabus? drive ? flags 0x0000
|
||||
|
||||
# SCSI: Symbios Logic 53c1010
|
||||
#
|
||||
# Wire down the Target/Host instances. Disable the target contoller for
|
||||
# now as we don't currently support SCSI target mode.
|
||||
siop0 at pci0 dev 2 function 1 # Host controller
|
||||
#siop1 at pci0 dev 2 function 0 # Target controller
|
||||
scsibus* at scsi?
|
||||
|
||||
# SCSI Devices
|
||||
sd* at scsibus? target ? lun ? # SCSI disk drives
|
||||
st* at scsibus? target ? lun ? # SCSI tape drives
|
||||
cd* at scsibus? target ? lun ? # SCSI CD-ROM drives
|
||||
ch* at scsibus? target ? lun ? # SCSI autochangers
|
||||
ses* at scsibus? target ? lun ? # SCSI Enclosure Services devices
|
||||
ss* at scsibus? target ? lun ? # SCSI Scanners
|
||||
uk* at scsibus? target ? lun ? # SCSI unknown
|
||||
|
||||
#
|
||||
# Networking devices
|
||||
#
|
||||
|
||||
# PCI network devices
|
||||
wm* at pci? dev ? function ? # Intel i82546EB Gig-E
|
||||
|
||||
# MII/PHY support
|
||||
makphy* at mii? phy ? # Marvell 88E1000 PHYs
|
||||
|
||||
# Pseudo-Devices
|
||||
|
||||
# disk/mass storage pseudo-devices
|
||||
pseudo-device ccd 4 # concatenated/striped disk devices
|
||||
#pseudo-device cgd 4 # cryptographic disk devices
|
||||
pseudo-device raid 8 # RAIDframe disk driver
|
||||
options RAID_AUTOCONFIG # auto-configuration of RAID components
|
||||
# Options to enable various other RAIDframe RAID types.
|
||||
#options RF_INCLUDE_EVENODD=1
|
||||
#options RF_INCLUDE_RAID5_RS=1
|
||||
#options RF_INCLUDE_PARITYLOGGING=1
|
||||
#options RF_INCLUDE_CHAINDECLUSTER=1
|
||||
#options RF_INCLUDE_INTERDECLUSTER=1
|
||||
#options RF_INCLUDE_PARITY_DECLUSTERING=1
|
||||
#options RF_INCLUDE_PARITY_DECLUSTERING_DS=1
|
||||
#pseudo-device fss 4 # file system snapshot device
|
||||
|
||||
#pseudo-device md 1 # memory disk device (ramdisk)
|
||||
pseudo-device vnd # disk-like interface to files
|
||||
options VND_COMPRESSION # compressed vnd(4)
|
||||
|
||||
# network pseudo-devices
|
||||
pseudo-device bpfilter # Berkeley packet filter
|
||||
pseudo-device ipfilter # IP filter (firewall) and NAT
|
||||
pseudo-device loop # network loopback
|
||||
#pseudo-device tun # network tunneling over tty
|
||||
#pseudo-device vlan # IEEE 802.1q encapsulation
|
||||
#pseudo-device bridge # simple inter-network bridging
|
||||
|
||||
# miscellaneous pseudo-devices
|
||||
pseudo-device pty # pseudo-terminals
|
||||
pseudo-device rnd # /dev/random and in-kernel generator
|
||||
pseudo-device clockctl # user control of clock subsystem
|
||||
pseudo-device ksyms # /dev/ksyms
|
||||
|
||||
# data mover pseudo-devices
|
||||
#pseudo-device swdmover # softare dmover(9) back-end
|
||||
#pseudo-device dmoverio # /dev/dmover dmover(9) interface
|
27
sys/arch/evbarm/conf/files.cp3100
Normal file
27
sys/arch/evbarm/conf/files.cp3100
Normal file
@ -0,0 +1,27 @@
|
||||
# $NetBSD: files.cp3100,v 1.1 2006/11/08 23:49:02 scw Exp $
|
||||
#
|
||||
# Certance CP3100 configuration info
|
||||
#
|
||||
|
||||
# Use the generic ARM soft interrupt code.
|
||||
file arch/arm/arm/softintr.c
|
||||
|
||||
file arch/evbarm/iq80321/iq80321_machdep.c
|
||||
file arch/evbarm/cp3100/cp3100_pci.c
|
||||
file arch/evbarm/cp3100/cp3100_leds.c
|
||||
|
||||
# CP3100 on-board devices
|
||||
device obio {addr, [size = -1], [width = -1], [xint = -1]}: bus_space_generic
|
||||
attach obio at mainbus
|
||||
file arch/evbarm/iq80321/obio.c obio
|
||||
file arch/evbarm/iq80321/obio_space.c obio
|
||||
|
||||
# on-board TI 165C50 UART
|
||||
attach com at obio with com_obio
|
||||
file arch/evbarm/iq80321/com_obio.c com_obio
|
||||
|
||||
# i80321 I/O Processor CPU support
|
||||
include "arch/arm/xscale/files.i80321"
|
||||
|
||||
attach iopxs at mainbus with iopxs_mainbus
|
||||
file arch/evbarm/iq80321/i80321_mainbus.c iopxs_mainbus
|
27
sys/arch/evbarm/conf/std.cp3100
Normal file
27
sys/arch/evbarm/conf/std.cp3100
Normal file
@ -0,0 +1,27 @@
|
||||
# $NetBSD: std.cp3100,v 1.1 2006/11/08 23:49:02 scw Exp $
|
||||
#
|
||||
# Standard NetBSD/evbarm options for CP3100
|
||||
|
||||
machine evbarm arm
|
||||
include "conf/std" # MI standard options
|
||||
|
||||
# Pull in CP3100 config definitions.
|
||||
include "arch/evbarm/conf/files.cp3100"
|
||||
|
||||
options EXEC_ELF32
|
||||
options EXEC_AOUT
|
||||
options EXEC_SCRIPT
|
||||
|
||||
# To support easy transit to ../arch/arm/arm32
|
||||
options ARM32
|
||||
|
||||
makeoptions BOARDTYPE="cp3100"
|
||||
makeoptions BOARDMKFRAG="${THISARM}/conf/mk.iq80321"
|
||||
|
||||
options ARM_INTR_IMPL="<arch/arm/xscale/i80321_intr.h>"
|
||||
|
||||
# Console UART is on HPI, so enable HPI-specific code
|
||||
options I80321_HPI_ENABLED
|
||||
|
||||
# We need to configure the PCI bus.
|
||||
options PCI_NETBSD_CONFIGURE
|
59
sys/arch/evbarm/cp3100/README
Normal file
59
sys/arch/evbarm/cp3100/README
Normal file
@ -0,0 +1,59 @@
|
||||
$NetBSD: README,v 1.1 2006/11/08 23:49:02 scw Exp $
|
||||
|
||||
"The Certance CP3100 product family provides high-end disk-to-disk-to-tape
|
||||
(D2D2T) functionality for small-to-medium businesses."
|
||||
|
||||
Physically, the CP3100 is designed to fit in a single 5.25" half-height
|
||||
drive bay. Storage is provided by a removable SATA disk integral to the unit.
|
||||
|
||||
To software, the hardware is very similar to the IQ80321 and IQ31244 eval
|
||||
boards from Intel. As such, we share almost all of their code.
|
||||
|
||||
Onboard hardware:
|
||||
|
||||
- IOP321 XScale CPU. Core clock is 600MHz.
|
||||
- 256MB SDRAM (not sure if that's true for all)
|
||||
- Four-port Intel i31244 SATA controller. One port is connected to the
|
||||
internal disk. The remaining three are available on the back-panel.
|
||||
- Dual GigE ports on the back panel, using an Intel i82546EB controller.
|
||||
- Two Symbios Logic 53c1010 SCSI controllers, one in host mode the other
|
||||
in target mode. Both SCSI busses are available on the back panel.
|
||||
Note that NetBSD does not support SCSI target mode.
|
||||
- 8MB of NOR Flash, containing a fairly vanilla Redboot together with
|
||||
a minimal compressed Linux image.
|
||||
- Some front-panel LEDS (not yet supported).
|
||||
- Serial console.
|
||||
|
||||
Power is provided via a standard 4-pin Molex connector (5v/Gnd/Gnd/12v).
|
||||
|
||||
The serial console is available on the back-panel "MISC" pins. Looking
|
||||
at the back-panel, with the Molex power connector at the bottom left,
|
||||
the MISC connector pin-out is:
|
||||
|
||||
M I S C
|
||||
1 3 5 7 9 11
|
||||
. . . . . .
|
||||
|
||||
. . . . . .
|
||||
2 4 6 8 10 12
|
||||
|
||||
There should be a jumper between pins 11-12. The serial console is
|
||||
available on pins 8, 9, and 10:
|
||||
|
||||
8 - Gnd
|
||||
9 - Tx
|
||||
10 - Rx
|
||||
|
||||
No TTL-RS232 level conversion is needed. Serial parameters are 115200 8N1.
|
||||
|
||||
|
||||
Getting NetBSD onto the CP3100 is a breeze. Simply break into Redboot by
|
||||
sending ^C before it loads the Linux kernel. Run "fconfig" to set the
|
||||
network parameters to suit your set up (and set "Run script" to "false"
|
||||
while you're in there). Drop "netbsd.bin" onto your TFTP server, and
|
||||
load it onto the CP3100 using "load -r -b 0x200000 netbsd.bin" followed
|
||||
by "go".
|
||||
|
||||
The IQ80321 version of gzboot works fine with the CP3100, so you can use
|
||||
Redboot to program a gzboot/kernel image into onboard Flash and have it
|
||||
boot NetBSD on power-up.
|
60
sys/arch/evbarm/cp3100/cp3100_leds.c
Normal file
60
sys/arch/evbarm/cp3100/cp3100_leds.c
Normal file
@ -0,0 +1,60 @@
|
||||
/* $NetBSD: cp3100_leds.c,v 1.1 2006/11/08 23:49:02 scw Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 2006 Wasabi Systems, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Written by Steve C. Woodford for Wasabi Systems, Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed for the NetBSD Project by
|
||||
* Wasabi Systems, Inc.
|
||||
* 4. The name of Wasabi Systems, Inc. may not be used to endorse
|
||||
* or promote products derived from this software without specific prior
|
||||
* written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL WASABI SYSTEMS, INC
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: cp3100_leds.c,v 1.1 2006/11/08 23:49:02 scw Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
|
||||
#include <machine/bus.h>
|
||||
|
||||
#include <evbarm/iq80321/iq80321reg.h>
|
||||
#include <evbarm/iq80321/iq80321var.h>
|
||||
|
||||
/*
|
||||
* Empty functions to keep the iq80321 code happy
|
||||
*/
|
||||
void
|
||||
iq80321_7seg(char a, char b)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
iq80321_7seg_snake(void)
|
||||
{
|
||||
}
|
160
sys/arch/evbarm/cp3100/cp3100_pci.c
Normal file
160
sys/arch/evbarm/cp3100/cp3100_pci.c
Normal file
@ -0,0 +1,160 @@
|
||||
/* $NetBSD: cp3100_pci.c,v 1.1 2006/11/08 23:49:02 scw Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 2006 Wasabi Systems, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Written by Steve C. Woodford for Wasabi Systems, Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed for the NetBSD Project by
|
||||
* Wasabi Systems, Inc.
|
||||
* 4. The name of Wasabi Systems, Inc. may not be used to endorse
|
||||
* or promote products derived from this software without specific prior
|
||||
* written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL WASABI SYSTEMS, INC
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* CP3100 PCI interrupt support.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: cp3100_pci.c,v 1.1 2006/11/08 23:49:02 scw Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
#include <sys/device.h>
|
||||
|
||||
#include <machine/autoconf.h>
|
||||
#include <machine/bus.h>
|
||||
|
||||
#include <evbarm/iq80321/iq80321reg.h>
|
||||
#include <evbarm/iq80321/iq80321var.h>
|
||||
|
||||
#include <arm/xscale/i80321reg.h>
|
||||
#include <arm/xscale/i80321var.h>
|
||||
|
||||
#include <dev/pci/pcidevs.h>
|
||||
#include <dev/pci/ppbreg.h>
|
||||
|
||||
int iq80321_pci_intr_map(struct pci_attach_args *, pci_intr_handle_t *);
|
||||
const char *iq80321_pci_intr_string(void *, pci_intr_handle_t);
|
||||
const struct evcnt *iq80321_pci_intr_evcnt(void *, pci_intr_handle_t);
|
||||
void *iq80321_pci_intr_establish(void *, pci_intr_handle_t,
|
||||
int, int (*func)(void *), void *);
|
||||
void iq80321_pci_intr_disestablish(void *, void *);
|
||||
|
||||
void
|
||||
iq80321_pci_init(pci_chipset_tag_t pc, void *cookie)
|
||||
{
|
||||
|
||||
pc->pc_intr_v = cookie; /* the i80321 softc */
|
||||
pc->pc_intr_map = iq80321_pci_intr_map;
|
||||
pc->pc_intr_string = iq80321_pci_intr_string;
|
||||
pc->pc_intr_evcnt = iq80321_pci_intr_evcnt;
|
||||
pc->pc_intr_establish = iq80321_pci_intr_establish;
|
||||
pc->pc_intr_disestablish = iq80321_pci_intr_disestablish;
|
||||
}
|
||||
|
||||
int
|
||||
iq80321_pci_intr_map(struct pci_attach_args *pa, pci_intr_handle_t *ihp)
|
||||
{
|
||||
struct i80321_softc *sc = pa->pa_pc->pc_intr_v;
|
||||
int b, d, f;
|
||||
uint32_t busno;
|
||||
|
||||
busno = bus_space_read_4(sc->sc_st, sc->sc_atu_sh, ATU_PCIXSR);
|
||||
busno = PCIXSR_BUSNO(busno);
|
||||
if (busno == 0xff)
|
||||
busno = 0;
|
||||
|
||||
pci_decompose_tag(pa->pa_pc, pa->pa_intrtag, &b, &d, &f);
|
||||
|
||||
/* No mappings for devices not on our bus. */
|
||||
if (b != busno)
|
||||
goto no_mapping;
|
||||
|
||||
switch (d) {
|
||||
case 0: /* i82546EB Dual GigE */
|
||||
/*
|
||||
* This is a dual-function chip which uses INTA and INTB,
|
||||
* connected to XINT0 and XINT1 respectively.
|
||||
*/
|
||||
if (f != 0 && f != 1)
|
||||
goto no_mapping;
|
||||
*ihp = ICU_INT_XINT(f);
|
||||
return (0);
|
||||
|
||||
case 1: /* i31244 S-ATA Interface */
|
||||
*ihp = ICU_INT_XINT(2);
|
||||
return (0);
|
||||
|
||||
case 2: /* Symbios Logic 53c1010 SCSI Controllers */
|
||||
case 3:
|
||||
/*
|
||||
* Both controllers share a single pin
|
||||
*/
|
||||
*ihp = ICU_INT_XINT(3);
|
||||
return (0);
|
||||
|
||||
default:
|
||||
no_mapping:
|
||||
printf("iq80321_pci_intr_map: no mapping for %d/%d/%d/%c\n",
|
||||
pa->pa_bus, pa->pa_device, pa->pa_function,
|
||||
'@' + pa->pa_intrpin);
|
||||
return (1);
|
||||
}
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
const char *
|
||||
iq80321_pci_intr_string(void *v, pci_intr_handle_t ih)
|
||||
{
|
||||
|
||||
return (i80321_irqnames[ih]);
|
||||
}
|
||||
|
||||
const struct evcnt *
|
||||
iq80321_pci_intr_evcnt(void *v, pci_intr_handle_t ih)
|
||||
{
|
||||
|
||||
/* XXX For now. */
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
void *
|
||||
iq80321_pci_intr_establish(void *v, pci_intr_handle_t ih, int ipl,
|
||||
int (*func)(void *), void *arg)
|
||||
{
|
||||
|
||||
return (i80321_intr_establish(ih, ipl, func, arg));
|
||||
}
|
||||
|
||||
void
|
||||
iq80321_pci_intr_disestablish(void *v, void *cookie)
|
||||
{
|
||||
|
||||
i80321_intr_disestablish(cookie);
|
||||
}
|
Loading…
Reference in New Issue
Block a user