Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / obp / obp / arch / sun4v / niagara1-hw / release / dropins.src
# ========== Copyright Header Begin ==========================================
#
# Hypervisor Software File: dropins.src
#
# Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
#
# - Do no alter or remove copyright notices
#
# - Redistribution and use of this software in source and binary forms, with
# or without modification, are permitted provided that the following
# conditions are met:
#
# - Redistribution of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# - Redistribution 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.
#
# Neither the name of Sun Microsystems, Inc. or the names of contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# This software is provided "AS IS," without a warranty of any kind.
# ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
# INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
# PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
# MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
# ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
# DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN
# OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR
# FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
# DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
# ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
# SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
#
# You acknowledge that this software is not designed, licensed or
# intended for use in the design, construction, operation or maintenance of
# any nuclear facility.
#
# ========== Copyright Header End ============================================
# id: @(#)dropins.src 1.1 07/06/22
# purpose:
# copyright: Copyright 2007 Sun Microsystems, Inc. All rights reserved.
# copyright: Use is subject to license terms.
#
#
# Format: key <data>
# build <command to run>
# depend <file>
# target <dropin-src> <dropin-name>
# source{ [code] terminated by }source
# include <file>
#
version2
# create the code to execute fcode dropins
source{
caps off
" /packages/SUNW,builtin-drivers" find-device
headerless
: load-driver ( str$ -- )
find-drop-in if ( adr,len )
>r dup >r 1 byte-load ( )
r> r> free-drop-in ( )
then ( )
;
headers
: interrupt-property ( n -- ) " interrupts" integer-property ;
: get-fcode ( adr1 len1 adr2 len2 -- true | false )
find-drop-in if
2dup >r >r
rot min rot swap move
r> r> free-drop-in
true
else 2drop false
then
;
headers
}source
build ${MAKEDI}
target bootprom.bin bootprom
depend ${BP}/dev/southbridge/ontario/isa/depend.mk
target isa.fc SUNW,isa
source{
\ Load the ISA bridge driver
: class060100 ( -- )
" SUNW,isa" load-driver
" /pci@7c0/pci@0/pci@2/pci@0,2/sound@1" find-package if
delete-device drop
then
" /pci@7c0/pci@0/pci@1/pci@0/sound@1" find-package if
delete-device drop
then
\ Per HW evaluation the bridge needs to be 'tuned' to increase the
\ throughput of DMA writes to Southbridge devices. The fix is to
\ program 0x031C91CA00451870 into the pci@0 side of the bridge at offset 0x178.
\ Reference cr 6400117.
my-parent ihandle>phandle ( phandle )
" reg" rot get-package-property drop ( prop,len )
decode-int nip nip
h# 00451870 over h# 178 wbsplit d# 28 << + + " config-l!" $call-parent
h# 031C91CA swap h# 17c wbsplit d# 28 << + + " config-l!" $call-parent
;
}source
depend ${BP}/dev/sun4v-devices/vnexus/depend.mk
target vnexus.fc SUNW,vnexus
source{
: onboard-devices ( -- )
diagnostic-mode? if
." Loading onboard drivers: "
then
0 0 " 100" " /" begin-package
" SUNW,vnexus" load-driver
end-package
;
}source
# Fonts
depend ${BP}/pkg/termemu/fonts.mk
external font.di
# Sunlogo
depend ${BP}/pkg/sunlogo/logo.mk
external sun-logo.di
# Keyboard Translator Package
depend ${BP}/pkg/keyboard/translator/kbdtrans.mk
external kbdtrans.di
# Sun USB Keyboard Tables
depend ${BP}/pkg/keyboard/tables/usb/keyboard.mk
external usbkbds.di
# vchannel support
depend ${BP}/dev/sun4v-devices/vchannel/depend.mk
target vchannel.fc sun4v-chan-dev
source{
: SUNW,sun4v-channel-devices ( -- ) " sun4v-chan-dev" load-driver ;
}source
# vNET support
depend ${BP}/dev/sun4v-devices/vnet/depend.mk
target vnet.fc sun4v-vnet
source{
: SUNW,sun4v-network ( -- ) " sun4v-vnet" load-driver ;
}source
# vDisk support
depend ${BP}/dev/sun4v-devices/vdisk/depend.mk
target vdisk.fc sun4v-vdisk
source{
: SUNW,sun4v-disk ( -- ) " sun4v-vdisk" load-driver ;
}source
# Virtual console
depend ${BP}/dev/sun4v-devices/console/depend.mk
target console.fc sun4v-console
source{
: SUNW,sun4v-console ( -- ) " sun4v-console" load-driver ;
}source
# Network boot support package
depend ${BP}/pkg/netinet/obptftp.mk
external obptftp.di
# Sun4v PCI driver
depend ${BP}/dev/sun4v-devices/vpci/depend.mk
target vpci.fc sun4v-vpci
buildoptions vpci.fc:= FTHFLAGS += [define] 64BIT-ASSIGNED?
source{
: pciex ( -- )
" sun4v-vpci" load-driver
;
}source
# vebus on fire
depend ${BP}/dev/sun4v-devices/vebus/depend.mk
target vebus.fc sun4v-ebus
source{
: vebus ( -- )
" sun4v-ebus" load-driver
;
}source
# Intel Gigabit Ethernet
depend ${BP}/dev/network/ophir/depend.mk
target ophir.fc ophir
source{
\ Use the subsystem vendor id 0x108e for Sun so we ensure that
\ we don't attach the Ophir driver to PCI-E cards. If we do,
\ it's possible that the Ophir driver could blow away the EEPROM
\ MAC, and the system wouldn't be able to recover the MAC.
: pciex8086,105e.108e.105e ( -- )
" ophir" load-driver
;
\ Also attach to SERDES part. We are not concerned about
\ corrupting the EEPROM for the SERDES version, since it's
\ not used on plugin cards.
alias pciex8086,1060.8086.105e pciex8086,105e.108e.105e
}source
# Serial ttya
depend ${BP}/dev/ebus-devices/su-serial/depend.mk
target su-serial.fc su-serial
source{
: ebus-serial ( -- )
" serial" device-name
1 interrupt-property
" su16550" encode-string
" su" encode-string encode+ " compatible" property
" su-serial" load-driver
;
alias ebus-0,c2c000 ebus-serial
alias ebus-0,3fffff8 ebus-serial
}source
# Broadcom Gigabit Ethernet
depend ${BP}/dev/network/bge/depend.mk
target bge.fc bge
source{
: pci14e4,1659 ( -- )
" bge" load-driver
;
alias pci14e4,1659.14e4.1659 pci14e4,1659 \ BCM5703
alias pci14e4,16a7.14e4.9 pci14e4,1659 \ BCM5703?
alias pci14e4,1648.108e.1648 pci14e4,1659 \ BCM5704
alias pci14e4,1648.14e4.1648 pci14e4,1659 \ BCM5704
alias pci14e4,1668.108e.1668 pci14e4,1659 \ BCM5714
alias pci14e4,1668.14e4.1668 pci14e4,1659 \ BCM5714
}source
# virtual flashprom support
# WARNING - BINDING ON A "name" PROPERTY
depend ${BP}/dev/sun4v-devices/flashprom/depend.mk
target flashprom.fc sun4v-flashprom
source{
: flashprom ( -- ) " sun4v-flashprom" load-driver ;
}source
# hypervisor TOD
depend ${BP}/dev/sun4v-devices/tod/depend.mk
target tod.fc sun4v-tod
source{
: SUNW,sun4v-tod ( -- ) " sun4v-tod" load-driver ;
}source
# SAS LSI 1064 driver (PCI-E version)
# depend ${BP}/dev/scsi/adapters/lsi1064/depend.mk
# buildoptions lsi1064.di:= MAKEDI = ${ROOT}/bin/makedi
# target lsi1064.fc pci1000,56
# source{
# : pci1000,56 ( -- )
# " pci1000,56" load-driver
# ;
# alias pci1000,50.1000.1000 pci1000,56
# alias pci1000,56.1000.1000 pci1000,56
# alias pciex1000,50.1000.1000 pci1000,56
# alias pciex1000,50.1000.3010 pci1000,56
# alias pciex1000,56.1000.1000 pci1000,56
# alias pciex1000,56.1000.3010 pci1000,56
# alias pciex1000,58.1000.1000 pci1000,56
# alias pciex1000,58.1000.3010 pci1000,56
# alias pci1000,50.1000.3020 pci1000,56
# }source
# Dec bridge
depend ${BP}/dev/pci-bridge/dec21152/depend.mk
target dec21152.fc class060400
source{
: class060400 ( -- )
" class060400" load-driver
\ broadcom magic
\ Lots of spurrious interrupts generated by broadcom when booting.
\ Broadcom said well, why don't you try clearing this undocumented
\ vendor specific config register, and it worked...
my-space " config-l@" $call-self h# 1041166 = if
0 my-space h# b4 + " config-l!" $call-self
then
;
}source
# Legacy Southbridge Support below
# Serial line A
depend ${BP}/dev/southbridge/isa-devices/serial/depend.mk
target serial.fc SUNW,tty
source{
: isa-0,3f8 ( -- )
" ttya" encode-string " console" property
" SUNW,tty" load-driver
" console" delete-property
;
}source
# an IDE controller
depend ${BP}/dev/ide/pci/depend.mk
target ide.fc class010100
source{
: class010100 ( -- ) " class010100" load-driver ;
alias class01018a class010100
alias class01018f class010100
alias class0101ff class010100
}source
# onboard USB driver
depend ${BP}/dev/southbridge/usb/depend.mk
target southusb.fc usb
source{
: pci10b9,5237 ( -- )
1 interrupt-property
" usb" load-driver
;
}source
depend ${BP}/dev/usb-devices/device/depend.mk
target device.fc device
source{
: device ( -- adr len true | false ) " device" get-fcode ;
}source
depend ${BP}/dev/usb-devices/combined/depend.mk
target combined.fc combined
source{
: combined ( -- adr len true | false ) " combined" get-fcode ;
}source
depend ${BP}/dev/usb-devices/interface/depend.mk
target interface.fc interface
source{
: interface ( -- adr len true | false ) " interface" get-fcode ;
}source
depend ${BP}/dev/usb-devices/hub/depend.mk
target hub.fc hub
source{
: hub ( -- adr len true | false ) " hub" get-fcode ;
}source
depend ${BP}/dev/usb-devices/kbd/depend.mk
target usbkbd.fc kbd
source{
: kbd ( -- adr len true | false ) " kbd" get-fcode ;
}source
# finish the dropins
source{
device-end
caps on
}source