Linux-2.6.12-rc2
Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
This commit is contained in:
448
drivers/atm/Kconfig
Normal file
448
drivers/atm/Kconfig
Normal file
@@ -0,0 +1,448 @@
|
||||
#
|
||||
# ATM device configuration
|
||||
#
|
||||
|
||||
menu "ATM drivers"
|
||||
depends on NETDEVICES && ATM
|
||||
|
||||
config ATM_TCP
|
||||
tristate "ATM over TCP"
|
||||
depends on INET && ATM
|
||||
help
|
||||
ATM over TCP driver. Useful mainly for development and for
|
||||
experiments. If unsure, say N.
|
||||
|
||||
config ATM_LANAI
|
||||
tristate "Efficient Networks Speedstream 3010"
|
||||
depends on PCI && ATM
|
||||
help
|
||||
Supports ATM cards based on the Efficient Networks "Lanai"
|
||||
chipset such as the Speedstream 3010 and the ENI-25p. The
|
||||
Speedstream 3060 is currently not supported since we don't
|
||||
have the code to drive the on-board Alcatel DSL chipset (yet).
|
||||
|
||||
config ATM_ENI
|
||||
tristate "Efficient Networks ENI155P"
|
||||
depends on PCI && ATM
|
||||
---help---
|
||||
Driver for the Efficient Networks ENI155p series and SMC ATM
|
||||
Power155 155 Mbps ATM adapters. Both, the versions with 512KB and
|
||||
2MB on-board RAM (Efficient calls them "C" and "S", respectively),
|
||||
and the FPGA and the ASIC Tonga versions of the board are supported.
|
||||
The driver works with MMF (-MF or ...F) and UTP-5 (-U5 or ...D)
|
||||
adapters.
|
||||
|
||||
To compile this driver as a module, choose M here: the module will
|
||||
be called eni.
|
||||
|
||||
config ATM_ENI_DEBUG
|
||||
bool "Enable extended debugging"
|
||||
depends on ATM_ENI
|
||||
help
|
||||
Extended debugging records various events and displays that list
|
||||
when an inconsistency is detected. This mechanism is faster than
|
||||
generally using printks, but still has some impact on performance.
|
||||
Note that extended debugging may create certain race conditions
|
||||
itself. Enable this ONLY if you suspect problems with the driver.
|
||||
|
||||
config ATM_ENI_TUNE_BURST
|
||||
bool "Fine-tune burst settings"
|
||||
depends on ATM_ENI
|
||||
---help---
|
||||
In order to obtain good throughput, the ENI NIC can transfer
|
||||
multiple words of data per PCI bus access cycle. Such a multi-word
|
||||
transfer is called a burst.
|
||||
|
||||
The default settings for the burst sizes are suitable for most PCI
|
||||
chipsets. However, in some cases, large bursts may overrun buffers
|
||||
in the PCI chipset and cause data corruption. In such cases, large
|
||||
bursts must be disabled and only (slower) small bursts can be used.
|
||||
The burst sizes can be set independently in the send (TX) and
|
||||
receive (RX) direction.
|
||||
|
||||
Note that enabling many different burst sizes in the same direction
|
||||
may increase the cost of setting up a transfer such that the
|
||||
resulting throughput is lower than when using only the largest
|
||||
available burst size.
|
||||
|
||||
Also, sometimes larger bursts lead to lower throughput, e.g. on an
|
||||
Intel 440FX board, a drop from 135 Mbps to 103 Mbps was observed
|
||||
when going from 8W to 16W bursts.
|
||||
|
||||
config ATM_ENI_BURST_TX_16W
|
||||
bool "Enable 16W TX bursts (discouraged)"
|
||||
depends on ATM_ENI_TUNE_BURST
|
||||
help
|
||||
Burst sixteen words at once in the send direction. This may work
|
||||
with recent PCI chipsets, but is known to fail with older chipsets.
|
||||
|
||||
config ATM_ENI_BURST_TX_8W
|
||||
bool "Enable 8W TX bursts (recommended)"
|
||||
depends on ATM_ENI_TUNE_BURST
|
||||
help
|
||||
Burst eight words at once in the send direction. This is the default
|
||||
setting.
|
||||
|
||||
config ATM_ENI_BURST_TX_4W
|
||||
bool "Enable 4W TX bursts (optional)"
|
||||
depends on ATM_ENI_TUNE_BURST
|
||||
help
|
||||
Burst four words at once in the send direction. You may want to try
|
||||
this if you have disabled 8W bursts. Enabling 4W if 8W is also set
|
||||
may or may not improve throughput.
|
||||
|
||||
config ATM_ENI_BURST_TX_2W
|
||||
bool "Enable 2W TX bursts (optional)"
|
||||
depends on ATM_ENI_TUNE_BURST
|
||||
help
|
||||
Burst two words at once in the send direction. You may want to try
|
||||
this if you have disabled 4W and 8W bursts. Enabling 2W if 4W or 8W
|
||||
are also set may or may not improve throughput.
|
||||
|
||||
config ATM_ENI_BURST_RX_16W
|
||||
bool "Enable 16W RX bursts (discouraged)"
|
||||
depends on ATM_ENI_TUNE_BURST
|
||||
help
|
||||
Burst sixteen words at once in the receive direction. This may work
|
||||
with recent PCI chipsets, but is known to fail with older chipsets.
|
||||
|
||||
config ATM_ENI_BURST_RX_8W
|
||||
bool "Enable 8W RX bursts (discouraged)"
|
||||
depends on ATM_ENI_TUNE_BURST
|
||||
help
|
||||
Burst eight words at once in the receive direction. This may work
|
||||
with recent PCI chipsets, but is known to fail with older chipsets,
|
||||
such as the Intel Neptune series.
|
||||
|
||||
config ATM_ENI_BURST_RX_4W
|
||||
bool "Enable 4W RX bursts (recommended)"
|
||||
depends on ATM_ENI_TUNE_BURST
|
||||
help
|
||||
Burst four words at once in the receive direction. This is the
|
||||
default setting. Enabling 4W if 8W is also set may or may not
|
||||
improve throughput.
|
||||
|
||||
config ATM_ENI_BURST_RX_2W
|
||||
bool "Enable 2W RX bursts (optional)"
|
||||
depends on ATM_ENI_TUNE_BURST
|
||||
help
|
||||
Burst two words at once in the receive direction. You may want to
|
||||
try this if you have disabled 4W and 8W bursts. Enabling 2W if 4W or
|
||||
8W are also set may or may not improve throughput.
|
||||
|
||||
config ATM_FIRESTREAM
|
||||
tristate "Fujitsu FireStream (FS50/FS155) "
|
||||
depends on PCI && ATM
|
||||
help
|
||||
Driver for the Fujitsu FireStream 155 (MB86697) and
|
||||
FireStream 50 (MB86695) ATM PCI chips.
|
||||
|
||||
To compile this driver as a module, choose M here: the module will
|
||||
be called firestream.
|
||||
|
||||
config ATM_ZATM
|
||||
tristate "ZeitNet ZN1221/ZN1225"
|
||||
depends on PCI && ATM
|
||||
help
|
||||
Driver for the ZeitNet ZN1221 (MMF) and ZN1225 (UTP-5) 155 Mbps ATM
|
||||
adapters.
|
||||
|
||||
To compile this driver as a module, choose M here: the module will
|
||||
be called zatm.
|
||||
|
||||
config ATM_ZATM_DEBUG
|
||||
bool "Enable extended debugging"
|
||||
depends on ATM_ZATM
|
||||
help
|
||||
Extended debugging records various events and displays that list
|
||||
when an inconsistency is detected. This mechanism is faster than
|
||||
generally using printks, but still has some impact on performance.
|
||||
Note that extended debugging may create certain race conditions
|
||||
itself. Enable this ONLY if you suspect problems with the driver.
|
||||
|
||||
# bool 'Rolfs TI TNETA1570' CONFIG_ATM_TNETA1570 y
|
||||
# if [ "$CONFIG_ATM_TNETA1570" = "y" ]; then
|
||||
# bool ' Enable extended debugging' CONFIG_ATM_TNETA1570_DEBUG n
|
||||
# fi
|
||||
config ATM_NICSTAR
|
||||
tristate "IDT 77201 (NICStAR) (ForeRunnerLE)"
|
||||
depends on PCI && ATM && !64BIT
|
||||
help
|
||||
The NICStAR chipset family is used in a large number of ATM NICs for
|
||||
25 and for 155 Mbps, including IDT cards and the Fore ForeRunnerLE
|
||||
series. Say Y if you have one of those.
|
||||
|
||||
To compile this driver as a module, choose M here: the module will
|
||||
be called nicstar.
|
||||
|
||||
config ATM_NICSTAR_USE_SUNI
|
||||
bool "Use suni PHY driver (155Mbps)"
|
||||
depends on ATM_NICSTAR
|
||||
help
|
||||
Support for the S-UNI and compatible PHYsical layer chips. These are
|
||||
found in most 155Mbps NICStAR based ATM cards, namely in the
|
||||
ForeRunner LE155 cards. This driver provides detection of cable~
|
||||
removal and reinsertion and provides some statistics. This driver
|
||||
doesn't have removal capability when compiled as a module, so if you
|
||||
need that capability don't include S-UNI support (it's not needed to
|
||||
make the card work).
|
||||
|
||||
config ATM_NICSTAR_USE_IDT77105
|
||||
bool "Use IDT77015 PHY driver (25Mbps)"
|
||||
depends on ATM_NICSTAR
|
||||
help
|
||||
Support for the PHYsical layer chip in ForeRunner LE25 cards. In
|
||||
addition to cable removal/reinsertion detection, this driver allows
|
||||
you to control the loopback mode of the chip via a dedicated IOCTL.
|
||||
This driver is required for proper handling of temporary carrier
|
||||
loss, so if you have a 25Mbps NICStAR based ATM card you must say Y.
|
||||
|
||||
config ATM_IDT77252
|
||||
tristate "IDT 77252 (NICStAR II)"
|
||||
depends on PCI && ATM
|
||||
help
|
||||
Driver for the IDT 77252 ATM PCI chips.
|
||||
|
||||
To compile this driver as a module, choose M here: the module will
|
||||
be called idt77252.
|
||||
|
||||
config ATM_IDT77252_DEBUG
|
||||
bool "Enable debugging messages"
|
||||
depends on ATM_IDT77252
|
||||
help
|
||||
Somewhat useful debugging messages are available. The choice of
|
||||
messages is controlled by a bitmap. This may be specified as a
|
||||
module argument. See the file <file:drivers/atm/idt77252.h> for
|
||||
the meanings of the bits in the mask.
|
||||
|
||||
When active, these messages can have a significant impact on the
|
||||
speed of the driver, and the size of your syslog files! When
|
||||
inactive, they will have only a modest impact on performance.
|
||||
|
||||
config ATM_IDT77252_RCV_ALL
|
||||
bool "Receive ALL cells in raw queue"
|
||||
depends on ATM_IDT77252
|
||||
help
|
||||
Enable receiving of all cells on the ATM link, that do not match
|
||||
an open connection in the raw cell queue of the driver. Useful
|
||||
for debugging or special applications only, so the safe answer is N.
|
||||
|
||||
config ATM_IDT77252_USE_SUNI
|
||||
bool
|
||||
depends on ATM_IDT77252
|
||||
default y
|
||||
|
||||
config ATM_AMBASSADOR
|
||||
tristate "Madge Ambassador (Collage PCI 155 Server)"
|
||||
depends on PCI && ATM
|
||||
help
|
||||
This is a driver for ATMizer based ATM card produced by Madge
|
||||
Networks Ltd. Say Y (or M to compile as a module named ambassador)
|
||||
here if you have one of these cards.
|
||||
|
||||
config ATM_AMBASSADOR_DEBUG
|
||||
bool "Enable debugging messages"
|
||||
depends on ATM_AMBASSADOR
|
||||
---help---
|
||||
Somewhat useful debugging messages are available. The choice of
|
||||
messages is controlled by a bitmap. This may be specified as a
|
||||
module argument (kernel command line argument as well?), changed
|
||||
dynamically using an ioctl (not yet) or changed by sending the
|
||||
string "Dxxxx" to VCI 1023 (where x is a hex digit). See the file
|
||||
<file:drivers/atm/ambassador.h> for the meanings of the bits in the
|
||||
mask.
|
||||
|
||||
When active, these messages can have a significant impact on the
|
||||
speed of the driver, and the size of your syslog files! When
|
||||
inactive, they will have only a modest impact on performance.
|
||||
|
||||
config ATM_HORIZON
|
||||
tristate "Madge Horizon [Ultra] (Collage PCI 25 and Collage PCI 155 Client)"
|
||||
depends on PCI && ATM
|
||||
help
|
||||
This is a driver for the Horizon chipset ATM adapter cards once
|
||||
produced by Madge Networks Ltd. Say Y (or M to compile as a module
|
||||
named horizon) here if you have one of these cards.
|
||||
|
||||
config ATM_HORIZON_DEBUG
|
||||
bool "Enable debugging messages"
|
||||
depends on ATM_HORIZON
|
||||
---help---
|
||||
Somewhat useful debugging messages are available. The choice of
|
||||
messages is controlled by a bitmap. This may be specified as a
|
||||
module argument (kernel command line argument as well?), changed
|
||||
dynamically using an ioctl (not yet) or changed by sending the
|
||||
string "Dxxxx" to VCI 1023 (where x is a hex digit). See the file
|
||||
<file:drivers/atm/horizon.h> for the meanings of the bits in the
|
||||
mask.
|
||||
|
||||
When active, these messages can have a significant impact on the
|
||||
speed of the driver, and the size of your syslog files! When
|
||||
inactive, they will have only a modest impact on performance.
|
||||
|
||||
config ATM_IA
|
||||
tristate "Interphase ATM PCI x575/x525/x531"
|
||||
depends on PCI && ATM && !64BIT
|
||||
---help---
|
||||
This is a driver for the Interphase (i)ChipSAR adapter cards
|
||||
which include a variety of variants in term of the size of the
|
||||
control memory (128K-1KVC, 512K-4KVC), the size of the packet
|
||||
memory (128K, 512K, 1M), and the PHY type (Single/Multi mode OC3,
|
||||
UTP155, UTP25, DS3 and E3). Go to:
|
||||
<http://www.iphase.com/products/ClassSheet.cfm?ClassID=ATM>
|
||||
for more info about the cards. Say Y (or M to compile as a module
|
||||
named iphase) here if you have one of these cards.
|
||||
|
||||
See the file <file:Documentation/networking/iphase.txt> for further
|
||||
details.
|
||||
|
||||
config ATM_IA_DEBUG
|
||||
bool "Enable debugging messages"
|
||||
depends on ATM_IA
|
||||
---help---
|
||||
Somewhat useful debugging messages are available. The choice of
|
||||
messages is controlled by a bitmap. This may be specified as a
|
||||
module argument (kernel command line argument as well?), changed
|
||||
dynamically using an ioctl (Get the debug utility, iadbg, from
|
||||
<ftp://ftp.iphase.com/pub/atm/pci/>).
|
||||
|
||||
See the file <file:drivers/atm/iphase.h> for the meanings of the
|
||||
bits in the mask.
|
||||
|
||||
When active, these messages can have a significant impact on the
|
||||
speed of the driver, and the size of your syslog files! When
|
||||
inactive, they will have only a modest impact on performance.
|
||||
|
||||
config ATM_FORE200E_MAYBE
|
||||
tristate "FORE Systems 200E-series"
|
||||
depends on (PCI || SBUS) && ATM
|
||||
---help---
|
||||
This is a driver for the FORE Systems 200E-series ATM adapter
|
||||
cards. It simultaneously supports PCA-200E and SBA-200E models
|
||||
on PCI and SBUS hosts. Say Y (or M to compile as a module
|
||||
named fore_200e) here if you have one of these ATM adapters.
|
||||
|
||||
Note that the driver will actually be compiled only if you
|
||||
additionally enable the support for PCA-200E and/or SBA-200E
|
||||
cards.
|
||||
|
||||
See the file <file:Documentation/networking/fore200e.txt> for
|
||||
further details.
|
||||
|
||||
config ATM_FORE200E_PCA
|
||||
bool "PCA-200E support"
|
||||
depends on ATM_FORE200E_MAYBE && PCI
|
||||
help
|
||||
Say Y here if you want your PCA-200E cards to be probed.
|
||||
|
||||
config ATM_FORE200E_PCA_DEFAULT_FW
|
||||
bool "Use default PCA-200E firmware (normally enabled)"
|
||||
depends on ATM_FORE200E_PCA
|
||||
help
|
||||
Use the default PCA-200E firmware data shipped with the driver.
|
||||
|
||||
Normal users do not have to deal with the firmware stuff, so
|
||||
they should say Y here.
|
||||
|
||||
config ATM_FORE200E_PCA_FW
|
||||
string "Pathname of user-supplied binary firmware"
|
||||
depends on ATM_FORE200E_PCA && !ATM_FORE200E_PCA_DEFAULT_FW
|
||||
default ""
|
||||
help
|
||||
This defines the pathname of an alternative PCA-200E binary
|
||||
firmware image supplied by the user. This pathname may be
|
||||
absolute or relative to the drivers/atm directory.
|
||||
|
||||
The driver comes with an adequate firmware image, so normal users do
|
||||
not have to supply an alternative one. They just say Y to "Use
|
||||
default PCA-200E firmware" instead.
|
||||
|
||||
config ATM_FORE200E_SBA
|
||||
bool "SBA-200E support"
|
||||
depends on ATM_FORE200E_MAYBE && SBUS
|
||||
help
|
||||
Say Y here if you want your SBA-200E cards to be probed.
|
||||
|
||||
config ATM_FORE200E_SBA_DEFAULT_FW
|
||||
bool "Use default SBA-200E firmware (normally enabled)"
|
||||
depends on ATM_FORE200E_SBA
|
||||
help
|
||||
Use the default SBA-200E firmware data shipped with the driver.
|
||||
|
||||
Normal users do not have to deal with the firmware stuff, so
|
||||
they should say Y here.
|
||||
|
||||
config ATM_FORE200E_SBA_FW
|
||||
string "Pathname of user-supplied binary firmware"
|
||||
depends on ATM_FORE200E_SBA && !ATM_FORE200E_SBA_DEFAULT_FW
|
||||
default ""
|
||||
help
|
||||
This defines the pathname of an alternative SBA-200E binary
|
||||
firmware image supplied by the user. This pathname may be
|
||||
absolute or relative to the drivers/atm directory.
|
||||
|
||||
The driver comes with an adequate firmware image, so normal users do
|
||||
not have to supply an alternative one. They just say Y to "Use
|
||||
default SBA-200E firmware", above.
|
||||
|
||||
config ATM_FORE200E_USE_TASKLET
|
||||
bool "Defer interrupt work to a tasklet"
|
||||
depends on (PCI || SBUS) && (ATM_FORE200E_PCA || ATM_FORE200E_SBA)
|
||||
default n
|
||||
help
|
||||
This defers work to be done by the interrupt handler to a
|
||||
tasklet instead of hanlding everything at interrupt time. This
|
||||
may improve the responsive of the host.
|
||||
|
||||
config ATM_FORE200E_TX_RETRY
|
||||
int "Maximum number of tx retries"
|
||||
depends on (PCI || SBUS) && (ATM_FORE200E_PCA || ATM_FORE200E_SBA)
|
||||
default "16"
|
||||
---help---
|
||||
Specifies the number of times the driver attempts to transmit
|
||||
a message before giving up, if the transmit queue of the ATM card
|
||||
is transiently saturated.
|
||||
|
||||
Saturation of the transmit queue may occur only under extreme
|
||||
conditions, e.g. when a fast host continuously submits very small
|
||||
frames (<64 bytes) or raw AAL0 cells (48 bytes) to the ATM adapter.
|
||||
|
||||
Note that under common conditions, it is unlikely that you encounter
|
||||
a saturation of the transmit queue, so the retry mechanism never
|
||||
comes into play.
|
||||
|
||||
config ATM_FORE200E_DEBUG
|
||||
int "Debugging level (0-3)"
|
||||
depends on (PCI || SBUS) && (ATM_FORE200E_PCA || ATM_FORE200E_SBA)
|
||||
default "0"
|
||||
help
|
||||
Specifies the level of debugging messages issued by the driver.
|
||||
The verbosity of the driver increases with the value of this
|
||||
parameter.
|
||||
|
||||
When active, these messages can have a significant impact on
|
||||
the performances of the driver, and the size of your syslog files!
|
||||
Keep the debugging level to 0 during normal operations.
|
||||
|
||||
config ATM_FORE200E
|
||||
tristate
|
||||
depends on (PCI || SBUS) && (ATM_FORE200E_PCA || ATM_FORE200E_SBA)
|
||||
default m if ATM_FORE200E_MAYBE!=y
|
||||
default y if ATM_FORE200E_MAYBE=y
|
||||
|
||||
config ATM_HE
|
||||
tristate "ForeRunner HE Series"
|
||||
depends on PCI && ATM
|
||||
help
|
||||
This is a driver for the Marconi ForeRunner HE-series ATM adapter
|
||||
cards. It simultaneously supports the 155 and 622 versions.
|
||||
|
||||
config ATM_HE_USE_SUNI
|
||||
bool "Use S/UNI PHY driver"
|
||||
depends on ATM_HE
|
||||
help
|
||||
Support for the S/UNI-Ultra and S/UNI-622 found in the ForeRunner
|
||||
HE cards. This driver provides carrier detection some statistics.
|
||||
|
||||
endmenu
|
||||
|
||||
71
drivers/atm/Makefile
Normal file
71
drivers/atm/Makefile
Normal file
@@ -0,0 +1,71 @@
|
||||
#
|
||||
# Makefile for the Linux network (ATM) device drivers.
|
||||
#
|
||||
|
||||
fore_200e-objs := fore200e.o
|
||||
hostprogs-y := fore200e_mkfirm
|
||||
|
||||
# Files generated that shall be removed upon make clean
|
||||
clean-files := atmsar11.bin atmsar11.bin1 atmsar11.bin2 pca200e.bin \
|
||||
pca200e.bin1 pca200e.bin2 pca200e_ecd.bin pca200e_ecd.bin1 \
|
||||
pca200e_ecd.bin2 sba200e_ecd.bin sba200e_ecd.bin1 sba200e_ecd.bin2
|
||||
# Firmware generated that shall be removed upon make clean
|
||||
clean-files += fore200e_pca_fw.c fore200e_sba_fw.c
|
||||
|
||||
obj-$(CONFIG_ATM_ZATM) += zatm.o uPD98402.o
|
||||
obj-$(CONFIG_ATM_NICSTAR) += nicstar.o
|
||||
obj-$(CONFIG_ATM_AMBASSADOR) += ambassador.o
|
||||
obj-$(CONFIG_ATM_HORIZON) += horizon.o
|
||||
obj-$(CONFIG_ATM_IA) += iphase.o suni.o
|
||||
obj-$(CONFIG_ATM_FORE200E) += fore_200e.o
|
||||
obj-$(CONFIG_ATM_ENI) += eni.o suni.o
|
||||
obj-$(CONFIG_ATM_IDT77252) += idt77252.o
|
||||
|
||||
ifeq ($(CONFIG_ATM_NICSTAR_USE_SUNI),y)
|
||||
obj-$(CONFIG_ATM_NICSTAR) += suni.o
|
||||
endif
|
||||
ifeq ($(CONFIG_ATM_NICSTAR_USE_IDT77105),y)
|
||||
obj-$(CONFIG_ATM_NICSTAR) += idt77105.o
|
||||
endif
|
||||
ifeq ($(CONFIG_ATM_IDT77252_USE_SUNI),y)
|
||||
obj-$(CONFIG_ATM_IDT77252) += suni.o
|
||||
endif
|
||||
|
||||
obj-$(CONFIG_ATM_TCP) += atmtcp.o
|
||||
obj-$(CONFIG_ATM_FIRESTREAM) += firestream.o
|
||||
obj-$(CONFIG_ATM_LANAI) += lanai.o
|
||||
|
||||
ifeq ($(CONFIG_ATM_FORE200E_PCA),y)
|
||||
fore_200e-objs += fore200e_pca_fw.o
|
||||
# guess the target endianess to choose the right PCA-200E firmware image
|
||||
ifeq ($(CONFIG_ATM_FORE200E_PCA_DEFAULT_FW),y)
|
||||
CONFIG_ATM_FORE200E_PCA_FW = $(shell if test -n "`$(CC) -E -dM $(src)/../../include/asm/byteorder.h | grep ' __LITTLE_ENDIAN '`"; then echo $(obj)/pca200e.bin; else echo $(obj)/pca200e_ecd.bin2; fi)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_ATM_FORE200E_SBA),y)
|
||||
fore_200e-objs += fore200e_sba_fw.o
|
||||
ifeq ($(CONFIG_ATM_FORE200E_SBA_DEFAULT_FW),y)
|
||||
CONFIG_ATM_FORE200E_SBA_FW := $(obj)/sba200e_ecd.bin2
|
||||
endif
|
||||
endif
|
||||
obj-$(CONFIG_ATM_HE) += he.o
|
||||
ifeq ($(CONFIG_ATM_HE_USE_SUNI),y)
|
||||
obj-$(CONFIG_ATM_HE) += suni.o
|
||||
endif
|
||||
|
||||
# FORE Systems 200E-series firmware magic
|
||||
$(obj)/fore200e_pca_fw.c: $(patsubst "%", %, $(CONFIG_ATM_FORE200E_PCA_FW)) \
|
||||
$(obj)/fore200e_mkfirm
|
||||
$(obj)/fore200e_mkfirm -k -b _fore200e_pca_fw \
|
||||
-i $(CONFIG_ATM_FORE200E_PCA_FW) -o $@
|
||||
|
||||
$(obj)/fore200e_sba_fw.c: $(patsubst "%", %, $(CONFIG_ATM_FORE200E_SBA_FW)) \
|
||||
$(obj)/fore200e_mkfirm
|
||||
$(obj)/fore200e_mkfirm -k -b _fore200e_sba_fw \
|
||||
-i $(CONFIG_ATM_FORE200E_SBA_FW) -o $@
|
||||
|
||||
# deal with the various suffixes of the binary firmware images
|
||||
$(obj)/%.bin $(obj)/%.bin1 $(obj)/%.bin2: $(src)/%.data
|
||||
objcopy -Iihex $< -Obinary $@.gz
|
||||
gzip -n -df $@.gz
|
||||
2463
drivers/atm/ambassador.c
Normal file
2463
drivers/atm/ambassador.c
Normal file
File diff suppressed because it is too large
Load Diff
679
drivers/atm/ambassador.h
Normal file
679
drivers/atm/ambassador.h
Normal file
@@ -0,0 +1,679 @@
|
||||
/*
|
||||
Madge Ambassador ATM Adapter driver.
|
||||
Copyright (C) 1995-1999 Madge Networks Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
The GNU GPL is contained in /usr/doc/copyright/GPL on a Debian
|
||||
system and in the file COPYING in the Linux kernel source.
|
||||
*/
|
||||
|
||||
#ifndef AMBASSADOR_H
|
||||
#define AMBASSADOR_H
|
||||
|
||||
#include <linux/config.h>
|
||||
|
||||
#ifdef CONFIG_ATM_AMBASSADOR_DEBUG
|
||||
#define DEBUG_AMBASSADOR
|
||||
#endif
|
||||
|
||||
#define DEV_LABEL "amb"
|
||||
|
||||
#ifndef PCI_VENDOR_ID_MADGE
|
||||
#define PCI_VENDOR_ID_MADGE 0x10B6
|
||||
#endif
|
||||
#ifndef PCI_VENDOR_ID_MADGE_AMBASSADOR
|
||||
#define PCI_DEVICE_ID_MADGE_AMBASSADOR 0x1001
|
||||
#endif
|
||||
#ifndef PCI_VENDOR_ID_MADGE_AMBASSADOR_BAD
|
||||
#define PCI_DEVICE_ID_MADGE_AMBASSADOR_BAD 0x1002
|
||||
#endif
|
||||
|
||||
// diagnostic output
|
||||
|
||||
#define PRINTK(severity,format,args...) \
|
||||
printk(severity DEV_LABEL ": " format "\n" , ## args)
|
||||
|
||||
#ifdef DEBUG_AMBASSADOR
|
||||
|
||||
#define DBG_ERR 0x0001
|
||||
#define DBG_WARN 0x0002
|
||||
#define DBG_INFO 0x0004
|
||||
#define DBG_INIT 0x0008
|
||||
#define DBG_LOAD 0x0010
|
||||
#define DBG_VCC 0x0020
|
||||
#define DBG_QOS 0x0040
|
||||
#define DBG_CMD 0x0080
|
||||
#define DBG_TX 0x0100
|
||||
#define DBG_RX 0x0200
|
||||
#define DBG_SKB 0x0400
|
||||
#define DBG_POOL 0x0800
|
||||
#define DBG_IRQ 0x1000
|
||||
#define DBG_FLOW 0x2000
|
||||
#define DBG_REGS 0x4000
|
||||
#define DBG_DATA 0x8000
|
||||
#define DBG_MASK 0xffff
|
||||
|
||||
/* the ## prevents the annoying double expansion of the macro arguments */
|
||||
/* KERN_INFO is used since KERN_DEBUG often does not make it to the console */
|
||||
#define PRINTDB(bits,format,args...) \
|
||||
( (debug & (bits)) ? printk (KERN_INFO DEV_LABEL ": " format , ## args) : 1 )
|
||||
#define PRINTDM(bits,format,args...) \
|
||||
( (debug & (bits)) ? printk (format , ## args) : 1 )
|
||||
#define PRINTDE(bits,format,args...) \
|
||||
( (debug & (bits)) ? printk (format "\n" , ## args) : 1 )
|
||||
#define PRINTD(bits,format,args...) \
|
||||
( (debug & (bits)) ? printk (KERN_INFO DEV_LABEL ": " format "\n" , ## args) : 1 )
|
||||
|
||||
#else
|
||||
|
||||
#define PRINTD(bits,format,args...)
|
||||
#define PRINTDB(bits,format,args...)
|
||||
#define PRINTDM(bits,format,args...)
|
||||
#define PRINTDE(bits,format,args...)
|
||||
|
||||
#endif
|
||||
|
||||
#define PRINTDD(bits,format,args...)
|
||||
#define PRINTDDB(sec,fmt,args...)
|
||||
#define PRINTDDM(sec,fmt,args...)
|
||||
#define PRINTDDE(sec,fmt,args...)
|
||||
|
||||
// tunable values (?)
|
||||
|
||||
/* MUST be powers of two -- why ? */
|
||||
#define COM_Q_ENTRIES 8
|
||||
#define TX_Q_ENTRIES 32
|
||||
#define RX_Q_ENTRIES 64
|
||||
|
||||
// fixed values
|
||||
|
||||
// guessing
|
||||
#define AMB_EXTENT 0x80
|
||||
|
||||
// Minimum allowed size for an Ambassador queue
|
||||
#define MIN_QUEUE_SIZE 2
|
||||
|
||||
// Ambassador microcode allows 1 to 4 pools, we use 4 (simpler)
|
||||
#define NUM_RX_POOLS 4
|
||||
|
||||
// minimum RX buffers required to cope with replenishing delay
|
||||
#define MIN_RX_BUFFERS 1
|
||||
|
||||
// minimum PCI latency we will tolerate (32 IS TOO SMALL)
|
||||
#define MIN_PCI_LATENCY 64 // 255
|
||||
|
||||
// VCs supported by card (VPI always 0)
|
||||
#define NUM_VPI_BITS 0
|
||||
#define NUM_VCI_BITS 10
|
||||
#define NUM_VCS 1024
|
||||
|
||||
/* The status field bits defined so far. */
|
||||
#define RX_ERR 0x8000 // always present if there is an error (hmm)
|
||||
#define CRC_ERR 0x4000 // AAL5 CRC error
|
||||
#define LEN_ERR 0x2000 // overlength frame
|
||||
#define ABORT_ERR 0x1000 // zero length field in received frame
|
||||
#define UNUSED_ERR 0x0800 // buffer returned unused
|
||||
|
||||
// Adaptor commands
|
||||
|
||||
#define SRB_OPEN_VC 0
|
||||
/* par_0: dwordswap(VC_number) */
|
||||
/* par_1: dwordswap(flags<<16) or wordswap(flags)*/
|
||||
/* flags: */
|
||||
|
||||
/* LANE: 0x0004 */
|
||||
/* NOT_UBR: 0x0008 */
|
||||
/* ABR: 0x0010 */
|
||||
|
||||
/* RxPool0: 0x0000 */
|
||||
/* RxPool1: 0x0020 */
|
||||
/* RxPool2: 0x0040 */
|
||||
/* RxPool3: 0x0060 */
|
||||
|
||||
/* par_2: dwordswap(fp_rate<<16) or wordswap(fp_rate) */
|
||||
|
||||
#define SRB_CLOSE_VC 1
|
||||
/* par_0: dwordswap(VC_number) */
|
||||
|
||||
#define SRB_GET_BIA 2
|
||||
/* returns */
|
||||
/* par_0: dwordswap(half BIA) */
|
||||
/* par_1: dwordswap(half BIA) */
|
||||
|
||||
#define SRB_GET_SUNI_STATS 3
|
||||
/* par_0: dwordswap(physical_host_address) */
|
||||
|
||||
#define SRB_SET_BITS_8 4
|
||||
#define SRB_SET_BITS_16 5
|
||||
#define SRB_SET_BITS_32 6
|
||||
#define SRB_CLEAR_BITS_8 7
|
||||
#define SRB_CLEAR_BITS_16 8
|
||||
#define SRB_CLEAR_BITS_32 9
|
||||
/* par_0: dwordswap(ATMizer address) */
|
||||
/* par_1: dwordswap(mask) */
|
||||
|
||||
#define SRB_SET_8 10
|
||||
#define SRB_SET_16 11
|
||||
#define SRB_SET_32 12
|
||||
/* par_0: dwordswap(ATMizer address) */
|
||||
/* par_1: dwordswap(data) */
|
||||
|
||||
#define SRB_GET_32 13
|
||||
/* par_0: dwordswap(ATMizer address) */
|
||||
/* returns */
|
||||
/* par_1: dwordswap(ATMizer data) */
|
||||
|
||||
#define SRB_GET_VERSION 14
|
||||
/* returns */
|
||||
/* par_0: dwordswap(Major Version) */
|
||||
/* par_1: dwordswap(Minor Version) */
|
||||
|
||||
#define SRB_FLUSH_BUFFER_Q 15
|
||||
/* Only flags to define which buffer pool; all others must be zero */
|
||||
/* par_0: dwordswap(flags<<16) or wordswap(flags)*/
|
||||
|
||||
#define SRB_GET_DMA_SPEEDS 16
|
||||
/* returns */
|
||||
/* par_0: dwordswap(Read speed (bytes/sec)) */
|
||||
/* par_1: dwordswap(Write speed (bytes/sec)) */
|
||||
|
||||
#define SRB_MODIFY_VC_RATE 17
|
||||
/* par_0: dwordswap(VC_number) */
|
||||
/* par_1: dwordswap(fp_rate<<16) or wordswap(fp_rate) */
|
||||
|
||||
#define SRB_MODIFY_VC_FLAGS 18
|
||||
/* par_0: dwordswap(VC_number) */
|
||||
/* par_1: dwordswap(flags<<16) or wordswap(flags)*/
|
||||
|
||||
/* flags: */
|
||||
|
||||
/* LANE: 0x0004 */
|
||||
/* NOT_UBR: 0x0008 */
|
||||
/* ABR: 0x0010 */
|
||||
|
||||
/* RxPool0: 0x0000 */
|
||||
/* RxPool1: 0x0020 */
|
||||
/* RxPool2: 0x0040 */
|
||||
/* RxPool3: 0x0060 */
|
||||
|
||||
#define SRB_RATE_SHIFT 16
|
||||
#define SRB_POOL_SHIFT (SRB_FLAGS_SHIFT+5)
|
||||
#define SRB_FLAGS_SHIFT 16
|
||||
|
||||
#define SRB_STOP_TASKING 19
|
||||
#define SRB_START_TASKING 20
|
||||
#define SRB_SHUT_DOWN 21
|
||||
#define MAX_SRB 21
|
||||
|
||||
#define SRB_COMPLETE 0xffffffff
|
||||
|
||||
#define TX_FRAME 0x80000000
|
||||
|
||||
// number of types of SRB MUST be a power of two -- why?
|
||||
#define NUM_OF_SRB 32
|
||||
|
||||
// number of bits of period info for rate
|
||||
#define MAX_RATE_BITS 6
|
||||
|
||||
#define TX_UBR 0x0000
|
||||
#define TX_UBR_CAPPED 0x0008
|
||||
#define TX_ABR 0x0018
|
||||
#define TX_FRAME_NOTCAP 0x0000
|
||||
#define TX_FRAME_CAPPED 0x8000
|
||||
|
||||
#define FP_155_RATE 0x24b1
|
||||
#define FP_25_RATE 0x1f9d
|
||||
|
||||
/* #define VERSION_NUMBER 0x01000000 // initial release */
|
||||
/* #define VERSION_NUMBER 0x01010000 // fixed startup probs PLX MB0 not cleared */
|
||||
/* #define VERSION_NUMBER 0x01020000 // changed SUNI reset timings; allowed r/w onchip */
|
||||
|
||||
/* #define VERSION_NUMBER 0x01030000 // clear local doorbell int reg on reset */
|
||||
/* #define VERSION_NUMBER 0x01040000 // PLX bug work around version PLUS */
|
||||
/* remove race conditions on basic interface */
|
||||
/* indicate to the host that diagnostics */
|
||||
/* have finished; if failed, how and what */
|
||||
/* failed */
|
||||
/* fix host memory test to fix PLX bug */
|
||||
/* allow flash upgrade and BIA upgrade directly */
|
||||
/* */
|
||||
#define VERSION_NUMBER 0x01050025 /* Jason's first hacked version. */
|
||||
/* Change in download algorithm */
|
||||
|
||||
#define DMA_VALID 0xb728e149 /* completely random */
|
||||
|
||||
#define FLASH_BASE 0xa0c00000
|
||||
#define FLASH_SIZE 0x00020000 /* 128K */
|
||||
#define BIA_BASE (FLASH_BASE+0x0001c000) /* Flash Sector 7 */
|
||||
#define BIA_ADDRESS ((void *)0xa0c1c000)
|
||||
#define PLX_BASE 0xe0000000
|
||||
|
||||
typedef enum {
|
||||
host_memory_test = 1,
|
||||
read_adapter_memory,
|
||||
write_adapter_memory,
|
||||
adapter_start,
|
||||
get_version_number,
|
||||
interrupt_host,
|
||||
flash_erase_sector,
|
||||
adap_download_block = 0x20,
|
||||
adap_erase_flash,
|
||||
adap_run_in_iram,
|
||||
adap_end_download
|
||||
} loader_command;
|
||||
|
||||
#define BAD_COMMAND (-1)
|
||||
#define COMMAND_IN_PROGRESS 1
|
||||
#define COMMAND_PASSED_TEST 2
|
||||
#define COMMAND_FAILED_TEST 3
|
||||
#define COMMAND_READ_DATA_OK 4
|
||||
#define COMMAND_READ_BAD_ADDRESS 5
|
||||
#define COMMAND_WRITE_DATA_OK 6
|
||||
#define COMMAND_WRITE_BAD_ADDRESS 7
|
||||
#define COMMAND_WRITE_FLASH_FAILURE 8
|
||||
#define COMMAND_COMPLETE 9
|
||||
#define COMMAND_FLASH_ERASE_FAILURE 10
|
||||
#define COMMAND_WRITE_BAD_DATA 11
|
||||
|
||||
/* bit fields for mailbox[0] return values */
|
||||
|
||||
#define GPINT_TST_FAILURE 0x00000001
|
||||
#define SUNI_DATA_PATTERN_FAILURE 0x00000002
|
||||
#define SUNI_DATA_BITS_FAILURE 0x00000004
|
||||
#define SUNI_UTOPIA_FAILURE 0x00000008
|
||||
#define SUNI_FIFO_FAILURE 0x00000010
|
||||
#define SRAM_FAILURE 0x00000020
|
||||
#define SELF_TEST_FAILURE 0x0000003f
|
||||
|
||||
/* mailbox[1] = 0 in progress, -1 on completion */
|
||||
/* mailbox[2] = current test 00 00 test(8 bit) phase(8 bit) */
|
||||
/* mailbox[3] = last failure, 00 00 test(8 bit) phase(8 bit) */
|
||||
/* mailbox[4],mailbox[5],mailbox[6] random failure values */
|
||||
|
||||
/* PLX/etc. memory map including command structure */
|
||||
|
||||
/* These registers may also be memory mapped in PCI memory */
|
||||
|
||||
#define UNUSED_LOADER_MAILBOXES 6
|
||||
|
||||
typedef struct {
|
||||
u32 stuff[16];
|
||||
union {
|
||||
struct {
|
||||
u32 result;
|
||||
u32 ready;
|
||||
u32 stuff[UNUSED_LOADER_MAILBOXES];
|
||||
} loader;
|
||||
struct {
|
||||
u32 cmd_address;
|
||||
u32 tx_address;
|
||||
u32 rx_address[NUM_RX_POOLS];
|
||||
u32 gen_counter;
|
||||
u32 spare;
|
||||
} adapter;
|
||||
} mb;
|
||||
u32 doorbell;
|
||||
u32 interrupt;
|
||||
u32 interrupt_control;
|
||||
u32 reset_control;
|
||||
} amb_mem;
|
||||
|
||||
/* RESET bit, IRQ (card to host) and doorbell (host to card) enable bits */
|
||||
#define AMB_RESET_BITS 0x40000000
|
||||
#define AMB_INTERRUPT_BITS 0x00000300
|
||||
#define AMB_DOORBELL_BITS 0x00030000
|
||||
|
||||
/* loader commands */
|
||||
|
||||
#define MAX_COMMAND_DATA 13
|
||||
#define MAX_TRANSFER_DATA 11
|
||||
|
||||
typedef struct {
|
||||
__be32 address;
|
||||
__be32 count;
|
||||
__be32 data[MAX_TRANSFER_DATA];
|
||||
} transfer_block;
|
||||
|
||||
typedef struct {
|
||||
__be32 result;
|
||||
__be32 command;
|
||||
union {
|
||||
transfer_block transfer;
|
||||
__be32 version;
|
||||
__be32 start;
|
||||
__be32 data[MAX_COMMAND_DATA];
|
||||
} payload;
|
||||
__be32 valid;
|
||||
} loader_block;
|
||||
|
||||
/* command queue */
|
||||
|
||||
/* Again all data are BIG ENDIAN */
|
||||
|
||||
typedef struct {
|
||||
union {
|
||||
struct {
|
||||
__be32 vc;
|
||||
__be32 flags;
|
||||
__be32 rate;
|
||||
} open;
|
||||
struct {
|
||||
__be32 vc;
|
||||
__be32 rate;
|
||||
} modify_rate;
|
||||
struct {
|
||||
__be32 vc;
|
||||
__be32 flags;
|
||||
} modify_flags;
|
||||
struct {
|
||||
__be32 vc;
|
||||
} close;
|
||||
struct {
|
||||
__be32 lower4;
|
||||
__be32 upper2;
|
||||
} bia;
|
||||
struct {
|
||||
__be32 address;
|
||||
} suni;
|
||||
struct {
|
||||
__be32 major;
|
||||
__be32 minor;
|
||||
} version;
|
||||
struct {
|
||||
__be32 read;
|
||||
__be32 write;
|
||||
} speed;
|
||||
struct {
|
||||
__be32 flags;
|
||||
} flush;
|
||||
struct {
|
||||
__be32 address;
|
||||
__be32 data;
|
||||
} memory;
|
||||
__be32 par[3];
|
||||
} args;
|
||||
__be32 request;
|
||||
} command;
|
||||
|
||||
/* transmit queues and associated structures */
|
||||
|
||||
/* The hosts transmit structure. All BIG ENDIAN; host address
|
||||
restricted to first 1GByte, but address passed to the card must
|
||||
have the top MS bit or'ed in. -- check this */
|
||||
|
||||
/* TX is described by 1+ tx_frags followed by a tx_frag_end */
|
||||
|
||||
typedef struct {
|
||||
__be32 bytes;
|
||||
__be32 address;
|
||||
} tx_frag;
|
||||
|
||||
/* apart from handle the fields here are for the adapter to play with
|
||||
and should be set to zero */
|
||||
|
||||
typedef struct {
|
||||
u32 handle;
|
||||
u16 vc;
|
||||
u16 next_descriptor_length;
|
||||
u32 next_descriptor;
|
||||
#ifdef AMB_NEW_MICROCODE
|
||||
u8 cpcs_uu;
|
||||
u8 cpi;
|
||||
u16 pad;
|
||||
#endif
|
||||
} tx_frag_end;
|
||||
|
||||
typedef struct {
|
||||
tx_frag tx_frag;
|
||||
tx_frag_end tx_frag_end;
|
||||
struct sk_buff * skb;
|
||||
} tx_simple;
|
||||
|
||||
#if 0
|
||||
typedef union {
|
||||
tx_frag fragment;
|
||||
tx_frag_end end_of_list;
|
||||
} tx_descr;
|
||||
#endif
|
||||
|
||||
/* this "points" to the sequence of fragments and trailer */
|
||||
|
||||
typedef struct {
|
||||
__be16 vc;
|
||||
__be16 tx_descr_length;
|
||||
__be32 tx_descr_addr;
|
||||
} tx_in;
|
||||
|
||||
/* handle is the handle from tx_in */
|
||||
|
||||
typedef struct {
|
||||
u32 handle;
|
||||
} tx_out;
|
||||
|
||||
/* receive frame structure */
|
||||
|
||||
/* All BIG ENDIAN; handle is as passed from host; length is zero for
|
||||
aborted frames, and frames with errors. Header is actually VC
|
||||
number, lec-id is NOT yet supported. */
|
||||
|
||||
typedef struct {
|
||||
u32 handle;
|
||||
__be16 vc;
|
||||
__be16 lec_id; // unused
|
||||
__be16 status;
|
||||
__be16 length;
|
||||
} rx_out;
|
||||
|
||||
/* buffer supply structure */
|
||||
|
||||
typedef struct {
|
||||
u32 handle;
|
||||
__be32 host_address;
|
||||
} rx_in;
|
||||
|
||||
/* This first structure is the area in host memory where the adapter
|
||||
writes its pointer values. These pointer values are BIG ENDIAN and
|
||||
reside in the same 4MB 'page' as this structure. The host gives the
|
||||
adapter the address of this block by sending a doorbell interrupt
|
||||
to the adapter after downloading the code and setting it going. The
|
||||
addresses have the top 10 bits set to 1010000010b -- really?
|
||||
|
||||
The host must initialise these before handing the block to the
|
||||
adapter. */
|
||||
|
||||
typedef struct {
|
||||
__be32 command_start; /* SRB commands completions */
|
||||
__be32 command_end; /* SRB commands completions */
|
||||
__be32 tx_start;
|
||||
__be32 tx_end;
|
||||
__be32 txcom_start; /* tx completions */
|
||||
__be32 txcom_end; /* tx completions */
|
||||
struct {
|
||||
__be32 buffer_start;
|
||||
__be32 buffer_end;
|
||||
u32 buffer_q_get;
|
||||
u32 buffer_q_end;
|
||||
u32 buffer_aptr;
|
||||
__be32 rx_start; /* rx completions */
|
||||
__be32 rx_end;
|
||||
u32 rx_ptr;
|
||||
__be32 buffer_size; /* size of host buffer */
|
||||
} rec_struct[NUM_RX_POOLS];
|
||||
#ifdef AMB_NEW_MICROCODE
|
||||
u16 init_flags;
|
||||
u16 talk_block_spare;
|
||||
#endif
|
||||
} adap_talk_block;
|
||||
|
||||
/* This structure must be kept in line with the vcr image in sarmain.h
|
||||
|
||||
This is the structure in the host filled in by the adapter by
|
||||
GET_SUNI_STATS */
|
||||
|
||||
typedef struct {
|
||||
u8 racp_chcs;
|
||||
u8 racp_uhcs;
|
||||
u16 spare;
|
||||
u32 racp_rcell;
|
||||
u32 tacp_tcell;
|
||||
u32 flags;
|
||||
u32 dropped_cells;
|
||||
u32 dropped_frames;
|
||||
} suni_stats;
|
||||
|
||||
typedef enum {
|
||||
dead
|
||||
} amb_flags;
|
||||
|
||||
#define NEXTQ(current,start,limit) \
|
||||
( (current)+1 < (limit) ? (current)+1 : (start) )
|
||||
|
||||
typedef struct {
|
||||
command * start;
|
||||
command * in;
|
||||
command * out;
|
||||
command * limit;
|
||||
} amb_cq_ptrs;
|
||||
|
||||
typedef struct {
|
||||
spinlock_t lock;
|
||||
unsigned int pending;
|
||||
unsigned int high;
|
||||
unsigned int filled;
|
||||
unsigned int maximum; // size - 1 (q implementation)
|
||||
amb_cq_ptrs ptrs;
|
||||
} amb_cq;
|
||||
|
||||
typedef struct {
|
||||
spinlock_t lock;
|
||||
unsigned int pending;
|
||||
unsigned int high;
|
||||
unsigned int filled;
|
||||
unsigned int maximum; // size - 1 (q implementation)
|
||||
struct {
|
||||
tx_in * start;
|
||||
tx_in * ptr;
|
||||
tx_in * limit;
|
||||
} in;
|
||||
struct {
|
||||
tx_out * start;
|
||||
tx_out * ptr;
|
||||
tx_out * limit;
|
||||
} out;
|
||||
} amb_txq;
|
||||
|
||||
typedef struct {
|
||||
spinlock_t lock;
|
||||
unsigned int pending;
|
||||
unsigned int low;
|
||||
unsigned int emptied;
|
||||
unsigned int maximum; // size - 1 (q implementation)
|
||||
struct {
|
||||
rx_in * start;
|
||||
rx_in * ptr;
|
||||
rx_in * limit;
|
||||
} in;
|
||||
struct {
|
||||
rx_out * start;
|
||||
rx_out * ptr;
|
||||
rx_out * limit;
|
||||
} out;
|
||||
unsigned int buffers_wanted;
|
||||
unsigned int buffer_size;
|
||||
} amb_rxq;
|
||||
|
||||
typedef struct {
|
||||
unsigned long tx_ok;
|
||||
struct {
|
||||
unsigned long ok;
|
||||
unsigned long error;
|
||||
unsigned long badcrc;
|
||||
unsigned long toolong;
|
||||
unsigned long aborted;
|
||||
unsigned long unused;
|
||||
} rx;
|
||||
} amb_stats;
|
||||
|
||||
// a single struct pointed to by atm_vcc->dev_data
|
||||
|
||||
typedef struct {
|
||||
u8 tx_vc_bits:7;
|
||||
u8 tx_present:1;
|
||||
} amb_tx_info;
|
||||
|
||||
typedef struct {
|
||||
unsigned char pool;
|
||||
} amb_rx_info;
|
||||
|
||||
typedef struct {
|
||||
amb_rx_info rx_info;
|
||||
u16 tx_frame_bits;
|
||||
unsigned int tx_rate;
|
||||
unsigned int rx_rate;
|
||||
} amb_vcc;
|
||||
|
||||
struct amb_dev {
|
||||
u8 irq;
|
||||
long flags;
|
||||
u32 iobase;
|
||||
u32 * membase;
|
||||
|
||||
#ifdef FILL_RX_POOLS_IN_BH
|
||||
struct work_struct bh;
|
||||
#endif
|
||||
|
||||
amb_cq cq;
|
||||
amb_txq txq;
|
||||
amb_rxq rxq[NUM_RX_POOLS];
|
||||
|
||||
struct semaphore vcc_sf;
|
||||
amb_tx_info txer[NUM_VCS];
|
||||
struct atm_vcc * rxer[NUM_VCS];
|
||||
unsigned int tx_avail;
|
||||
unsigned int rx_avail;
|
||||
|
||||
amb_stats stats;
|
||||
|
||||
struct atm_dev * atm_dev;
|
||||
struct pci_dev * pci_dev;
|
||||
struct timer_list housekeeping;
|
||||
};
|
||||
|
||||
typedef struct amb_dev amb_dev;
|
||||
|
||||
#define AMB_DEV(atm_dev) ((amb_dev *) (atm_dev)->dev_data)
|
||||
#define AMB_VCC(atm_vcc) ((amb_vcc *) (atm_vcc)->dev_data)
|
||||
|
||||
/* the microcode */
|
||||
|
||||
typedef struct {
|
||||
u32 start;
|
||||
unsigned int count;
|
||||
} region;
|
||||
|
||||
static region ucode_regions[];
|
||||
static u32 ucode_data[];
|
||||
static u32 ucode_start;
|
||||
|
||||
/* rate rounding */
|
||||
|
||||
typedef enum {
|
||||
round_up,
|
||||
round_down,
|
||||
round_nearest
|
||||
} rounding;
|
||||
|
||||
#endif
|
||||
54
drivers/atm/atmdev_init.c
Normal file
54
drivers/atm/atmdev_init.c
Normal file
@@ -0,0 +1,54 @@
|
||||
/* drivers/atm/atmdev_init.c - ATM device driver initialization */
|
||||
|
||||
/* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */
|
||||
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <linux/init.h>
|
||||
|
||||
|
||||
#ifdef CONFIG_ATM_ZATM
|
||||
extern int zatm_detect(void);
|
||||
#endif
|
||||
#ifdef CONFIG_ATM_AMBASSADOR
|
||||
extern int amb_detect(void);
|
||||
#endif
|
||||
#ifdef CONFIG_ATM_HORIZON
|
||||
extern int hrz_detect(void);
|
||||
#endif
|
||||
#ifdef CONFIG_ATM_FORE200E
|
||||
extern int fore200e_detect(void);
|
||||
#endif
|
||||
#ifdef CONFIG_ATM_LANAI
|
||||
extern int lanai_detect(void);
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* For historical reasons, atmdev_init returns the number of devices found.
|
||||
* Note that some detections may not go via atmdev_init (e.g. eni.c), so this
|
||||
* number is meaningless.
|
||||
*/
|
||||
|
||||
int __init atmdev_init(void)
|
||||
{
|
||||
int devs;
|
||||
|
||||
devs = 0;
|
||||
#ifdef CONFIG_ATM_ZATM
|
||||
devs += zatm_detect();
|
||||
#endif
|
||||
#ifdef CONFIG_ATM_AMBASSADOR
|
||||
devs += amb_detect();
|
||||
#endif
|
||||
#ifdef CONFIG_ATM_HORIZON
|
||||
devs += hrz_detect();
|
||||
#endif
|
||||
#ifdef CONFIG_ATM_FORE200E
|
||||
devs += fore200e_detect();
|
||||
#endif
|
||||
#ifdef CONFIG_ATM_LANAI
|
||||
devs += lanai_detect();
|
||||
#endif
|
||||
return devs;
|
||||
}
|
||||
2063
drivers/atm/atmsar11.data
Normal file
2063
drivers/atm/atmsar11.data
Normal file
File diff suppressed because it is too large
Load Diff
6
drivers/atm/atmsar11.regions
Normal file
6
drivers/atm/atmsar11.regions
Normal file
@@ -0,0 +1,6 @@
|
||||
/*
|
||||
See copyright and licensing conditions in ambassador.* files.
|
||||
*/
|
||||
{ 0x00000080, 993, },
|
||||
{ 0xa0d0d500, 80, },
|
||||
{ 0xa0d0f000, 978, },
|
||||
4
drivers/atm/atmsar11.start
Normal file
4
drivers/atm/atmsar11.start
Normal file
@@ -0,0 +1,4 @@
|
||||
/*
|
||||
See copyright and licensing conditions in ambassador.* files.
|
||||
*/
|
||||
0xa0d0f000
|
||||
505
drivers/atm/atmtcp.c
Normal file
505
drivers/atm/atmtcp.c
Normal file
@@ -0,0 +1,505 @@
|
||||
/* drivers/atm/atmtcp.c - ATM over TCP "device" driver */
|
||||
|
||||
/* Written 1997-2000 by Werner Almesberger, EPFL LRC/ICA */
|
||||
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/wait.h>
|
||||
#include <linux/atmdev.h>
|
||||
#include <linux/atm_tcp.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/init.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/atomic.h>
|
||||
|
||||
|
||||
extern int atm_init_aal5(struct atm_vcc *vcc); /* "raw" AAL5 transport */
|
||||
|
||||
|
||||
#define PRIV(dev) ((struct atmtcp_dev_data *) ((dev)->dev_data))
|
||||
|
||||
|
||||
struct atmtcp_dev_data {
|
||||
struct atm_vcc *vcc; /* control VCC; NULL if detached */
|
||||
int persist; /* non-zero if persistent */
|
||||
};
|
||||
|
||||
|
||||
#define DEV_LABEL "atmtcp"
|
||||
|
||||
#define MAX_VPI_BITS 8 /* simplifies life */
|
||||
#define MAX_VCI_BITS 16
|
||||
|
||||
|
||||
/*
|
||||
* Hairy code ahead: the control VCC may be closed while we're still
|
||||
* waiting for an answer, so we need to re-validate out_vcc every once
|
||||
* in a while.
|
||||
*/
|
||||
|
||||
|
||||
static int atmtcp_send_control(struct atm_vcc *vcc,int type,
|
||||
const struct atmtcp_control *msg,int flag)
|
||||
{
|
||||
DECLARE_WAITQUEUE(wait,current);
|
||||
struct atm_vcc *out_vcc;
|
||||
struct sk_buff *skb;
|
||||
struct atmtcp_control *new_msg;
|
||||
int old_test;
|
||||
int error = 0;
|
||||
|
||||
out_vcc = PRIV(vcc->dev) ? PRIV(vcc->dev)->vcc : NULL;
|
||||
if (!out_vcc) return -EUNATCH;
|
||||
skb = alloc_skb(sizeof(*msg),GFP_KERNEL);
|
||||
if (!skb) return -ENOMEM;
|
||||
mb();
|
||||
out_vcc = PRIV(vcc->dev) ? PRIV(vcc->dev)->vcc : NULL;
|
||||
if (!out_vcc) {
|
||||
dev_kfree_skb(skb);
|
||||
return -EUNATCH;
|
||||
}
|
||||
atm_force_charge(out_vcc,skb->truesize);
|
||||
new_msg = (struct atmtcp_control *) skb_put(skb,sizeof(*new_msg));
|
||||
*new_msg = *msg;
|
||||
new_msg->hdr.length = ATMTCP_HDR_MAGIC;
|
||||
new_msg->type = type;
|
||||
memset(&new_msg->vcc,0,sizeof(atm_kptr_t));
|
||||
*(struct atm_vcc **) &new_msg->vcc = vcc;
|
||||
old_test = test_bit(flag,&vcc->flags);
|
||||
out_vcc->push(out_vcc,skb);
|
||||
add_wait_queue(sk_atm(vcc)->sk_sleep, &wait);
|
||||
while (test_bit(flag,&vcc->flags) == old_test) {
|
||||
mb();
|
||||
out_vcc = PRIV(vcc->dev) ? PRIV(vcc->dev)->vcc : NULL;
|
||||
if (!out_vcc) {
|
||||
error = -EUNATCH;
|
||||
break;
|
||||
}
|
||||
set_current_state(TASK_UNINTERRUPTIBLE);
|
||||
schedule();
|
||||
}
|
||||
set_current_state(TASK_RUNNING);
|
||||
remove_wait_queue(sk_atm(vcc)->sk_sleep, &wait);
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
static int atmtcp_recv_control(const struct atmtcp_control *msg)
|
||||
{
|
||||
struct atm_vcc *vcc = *(struct atm_vcc **) &msg->vcc;
|
||||
|
||||
vcc->vpi = msg->addr.sap_addr.vpi;
|
||||
vcc->vci = msg->addr.sap_addr.vci;
|
||||
vcc->qos = msg->qos;
|
||||
sk_atm(vcc)->sk_err = -msg->result;
|
||||
switch (msg->type) {
|
||||
case ATMTCP_CTRL_OPEN:
|
||||
change_bit(ATM_VF_READY,&vcc->flags);
|
||||
break;
|
||||
case ATMTCP_CTRL_CLOSE:
|
||||
change_bit(ATM_VF_ADDR,&vcc->flags);
|
||||
break;
|
||||
default:
|
||||
printk(KERN_ERR "atmtcp_recv_control: unknown type %d\n",
|
||||
msg->type);
|
||||
return -EINVAL;
|
||||
}
|
||||
wake_up(sk_atm(vcc)->sk_sleep);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static void atmtcp_v_dev_close(struct atm_dev *dev)
|
||||
{
|
||||
/* Nothing.... Isn't this simple :-) -- REW */
|
||||
}
|
||||
|
||||
|
||||
static int atmtcp_v_open(struct atm_vcc *vcc)
|
||||
{
|
||||
struct atmtcp_control msg;
|
||||
int error;
|
||||
short vpi = vcc->vpi;
|
||||
int vci = vcc->vci;
|
||||
|
||||
memset(&msg,0,sizeof(msg));
|
||||
msg.addr.sap_family = AF_ATMPVC;
|
||||
msg.hdr.vpi = htons(vpi);
|
||||
msg.addr.sap_addr.vpi = vpi;
|
||||
msg.hdr.vci = htons(vci);
|
||||
msg.addr.sap_addr.vci = vci;
|
||||
if (vpi == ATM_VPI_UNSPEC || vci == ATM_VCI_UNSPEC) return 0;
|
||||
msg.type = ATMTCP_CTRL_OPEN;
|
||||
msg.qos = vcc->qos;
|
||||
set_bit(ATM_VF_ADDR,&vcc->flags);
|
||||
clear_bit(ATM_VF_READY,&vcc->flags); /* just in case ... */
|
||||
error = atmtcp_send_control(vcc,ATMTCP_CTRL_OPEN,&msg,ATM_VF_READY);
|
||||
if (error) return error;
|
||||
return -sk_atm(vcc)->sk_err;
|
||||
}
|
||||
|
||||
|
||||
static void atmtcp_v_close(struct atm_vcc *vcc)
|
||||
{
|
||||
struct atmtcp_control msg;
|
||||
|
||||
memset(&msg,0,sizeof(msg));
|
||||
msg.addr.sap_family = AF_ATMPVC;
|
||||
msg.addr.sap_addr.vpi = vcc->vpi;
|
||||
msg.addr.sap_addr.vci = vcc->vci;
|
||||
clear_bit(ATM_VF_READY,&vcc->flags);
|
||||
(void) atmtcp_send_control(vcc,ATMTCP_CTRL_CLOSE,&msg,ATM_VF_ADDR);
|
||||
}
|
||||
|
||||
|
||||
static int atmtcp_v_ioctl(struct atm_dev *dev,unsigned int cmd,void __user *arg)
|
||||
{
|
||||
struct atm_cirange ci;
|
||||
struct atm_vcc *vcc;
|
||||
struct hlist_node *node;
|
||||
struct sock *s;
|
||||
int i;
|
||||
|
||||
if (cmd != ATM_SETCIRANGE) return -ENOIOCTLCMD;
|
||||
if (copy_from_user(&ci, arg,sizeof(ci))) return -EFAULT;
|
||||
if (ci.vpi_bits == ATM_CI_MAX) ci.vpi_bits = MAX_VPI_BITS;
|
||||
if (ci.vci_bits == ATM_CI_MAX) ci.vci_bits = MAX_VCI_BITS;
|
||||
if (ci.vpi_bits > MAX_VPI_BITS || ci.vpi_bits < 0 ||
|
||||
ci.vci_bits > MAX_VCI_BITS || ci.vci_bits < 0) return -EINVAL;
|
||||
read_lock(&vcc_sklist_lock);
|
||||
for(i = 0; i < VCC_HTABLE_SIZE; ++i) {
|
||||
struct hlist_head *head = &vcc_hash[i];
|
||||
|
||||
sk_for_each(s, node, head) {
|
||||
vcc = atm_sk(s);
|
||||
if (vcc->dev != dev)
|
||||
continue;
|
||||
if ((vcc->vpi >> ci.vpi_bits) ||
|
||||
(vcc->vci >> ci.vci_bits)) {
|
||||
read_unlock(&vcc_sklist_lock);
|
||||
return -EBUSY;
|
||||
}
|
||||
}
|
||||
}
|
||||
read_unlock(&vcc_sklist_lock);
|
||||
dev->ci_range = ci;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int atmtcp_v_send(struct atm_vcc *vcc,struct sk_buff *skb)
|
||||
{
|
||||
struct atmtcp_dev_data *dev_data;
|
||||
struct atm_vcc *out_vcc=NULL; /* Initializer quietens GCC warning */
|
||||
struct sk_buff *new_skb;
|
||||
struct atmtcp_hdr *hdr;
|
||||
int size;
|
||||
|
||||
if (vcc->qos.txtp.traffic_class == ATM_NONE) {
|
||||
if (vcc->pop) vcc->pop(vcc,skb);
|
||||
else dev_kfree_skb(skb);
|
||||
return -EINVAL;
|
||||
}
|
||||
dev_data = PRIV(vcc->dev);
|
||||
if (dev_data) out_vcc = dev_data->vcc;
|
||||
if (!dev_data || !out_vcc) {
|
||||
if (vcc->pop) vcc->pop(vcc,skb);
|
||||
else dev_kfree_skb(skb);
|
||||
if (dev_data) return 0;
|
||||
atomic_inc(&vcc->stats->tx_err);
|
||||
return -ENOLINK;
|
||||
}
|
||||
size = skb->len+sizeof(struct atmtcp_hdr);
|
||||
new_skb = atm_alloc_charge(out_vcc,size,GFP_ATOMIC);
|
||||
if (!new_skb) {
|
||||
if (vcc->pop) vcc->pop(vcc,skb);
|
||||
else dev_kfree_skb(skb);
|
||||
atomic_inc(&vcc->stats->tx_err);
|
||||
return -ENOBUFS;
|
||||
}
|
||||
hdr = (void *) skb_put(new_skb,sizeof(struct atmtcp_hdr));
|
||||
hdr->vpi = htons(vcc->vpi);
|
||||
hdr->vci = htons(vcc->vci);
|
||||
hdr->length = htonl(skb->len);
|
||||
memcpy(skb_put(new_skb,skb->len),skb->data,skb->len);
|
||||
if (vcc->pop) vcc->pop(vcc,skb);
|
||||
else dev_kfree_skb(skb);
|
||||
out_vcc->push(out_vcc,new_skb);
|
||||
atomic_inc(&vcc->stats->tx);
|
||||
atomic_inc(&out_vcc->stats->rx);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int atmtcp_v_proc(struct atm_dev *dev,loff_t *pos,char *page)
|
||||
{
|
||||
struct atmtcp_dev_data *dev_data = PRIV(dev);
|
||||
|
||||
if (*pos) return 0;
|
||||
if (!dev_data->persist) return sprintf(page,"ephemeral\n");
|
||||
return sprintf(page,"persistent, %sconnected\n",
|
||||
dev_data->vcc ? "" : "dis");
|
||||
}
|
||||
|
||||
|
||||
static void atmtcp_c_close(struct atm_vcc *vcc)
|
||||
{
|
||||
struct atm_dev *atmtcp_dev;
|
||||
struct atmtcp_dev_data *dev_data;
|
||||
struct sock *s;
|
||||
struct hlist_node *node;
|
||||
struct atm_vcc *walk;
|
||||
int i;
|
||||
|
||||
atmtcp_dev = (struct atm_dev *) vcc->dev_data;
|
||||
dev_data = PRIV(atmtcp_dev);
|
||||
dev_data->vcc = NULL;
|
||||
if (dev_data->persist) return;
|
||||
atmtcp_dev->dev_data = NULL;
|
||||
kfree(dev_data);
|
||||
shutdown_atm_dev(atmtcp_dev);
|
||||
vcc->dev_data = NULL;
|
||||
read_lock(&vcc_sklist_lock);
|
||||
for(i = 0; i < VCC_HTABLE_SIZE; ++i) {
|
||||
struct hlist_head *head = &vcc_hash[i];
|
||||
|
||||
sk_for_each(s, node, head) {
|
||||
walk = atm_sk(s);
|
||||
if (walk->dev != atmtcp_dev)
|
||||
continue;
|
||||
wake_up(s->sk_sleep);
|
||||
}
|
||||
}
|
||||
read_unlock(&vcc_sklist_lock);
|
||||
module_put(THIS_MODULE);
|
||||
}
|
||||
|
||||
|
||||
static struct atm_vcc *find_vcc(struct atm_dev *dev, short vpi, int vci)
|
||||
{
|
||||
struct hlist_head *head;
|
||||
struct atm_vcc *vcc;
|
||||
struct hlist_node *node;
|
||||
struct sock *s;
|
||||
|
||||
head = &vcc_hash[vci & (VCC_HTABLE_SIZE -1)];
|
||||
|
||||
sk_for_each(s, node, head) {
|
||||
vcc = atm_sk(s);
|
||||
if (vcc->dev == dev &&
|
||||
vcc->vci == vci && vcc->vpi == vpi &&
|
||||
vcc->qos.rxtp.traffic_class != ATM_NONE) {
|
||||
return vcc;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
static int atmtcp_c_send(struct atm_vcc *vcc,struct sk_buff *skb)
|
||||
{
|
||||
struct atm_dev *dev;
|
||||
struct atmtcp_hdr *hdr;
|
||||
struct atm_vcc *out_vcc;
|
||||
struct sk_buff *new_skb;
|
||||
int result = 0;
|
||||
|
||||
if (!skb->len) return 0;
|
||||
dev = vcc->dev_data;
|
||||
hdr = (struct atmtcp_hdr *) skb->data;
|
||||
if (hdr->length == ATMTCP_HDR_MAGIC) {
|
||||
result = atmtcp_recv_control(
|
||||
(struct atmtcp_control *) skb->data);
|
||||
goto done;
|
||||
}
|
||||
read_lock(&vcc_sklist_lock);
|
||||
out_vcc = find_vcc(dev, ntohs(hdr->vpi), ntohs(hdr->vci));
|
||||
read_unlock(&vcc_sklist_lock);
|
||||
if (!out_vcc) {
|
||||
atomic_inc(&vcc->stats->tx_err);
|
||||
goto done;
|
||||
}
|
||||
skb_pull(skb,sizeof(struct atmtcp_hdr));
|
||||
new_skb = atm_alloc_charge(out_vcc,skb->len,GFP_KERNEL);
|
||||
if (!new_skb) {
|
||||
result = -ENOBUFS;
|
||||
goto done;
|
||||
}
|
||||
do_gettimeofday(&new_skb->stamp);
|
||||
memcpy(skb_put(new_skb,skb->len),skb->data,skb->len);
|
||||
out_vcc->push(out_vcc,new_skb);
|
||||
atomic_inc(&vcc->stats->tx);
|
||||
atomic_inc(&out_vcc->stats->rx);
|
||||
done:
|
||||
if (vcc->pop) vcc->pop(vcc,skb);
|
||||
else dev_kfree_skb(skb);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Device operations for the virtual ATM devices created by ATMTCP.
|
||||
*/
|
||||
|
||||
|
||||
static struct atmdev_ops atmtcp_v_dev_ops = {
|
||||
.dev_close = atmtcp_v_dev_close,
|
||||
.open = atmtcp_v_open,
|
||||
.close = atmtcp_v_close,
|
||||
.ioctl = atmtcp_v_ioctl,
|
||||
.send = atmtcp_v_send,
|
||||
.proc_read = atmtcp_v_proc,
|
||||
.owner = THIS_MODULE
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Device operations for the ATMTCP control device.
|
||||
*/
|
||||
|
||||
|
||||
static struct atmdev_ops atmtcp_c_dev_ops = {
|
||||
.close = atmtcp_c_close,
|
||||
.send = atmtcp_c_send
|
||||
};
|
||||
|
||||
|
||||
static struct atm_dev atmtcp_control_dev = {
|
||||
.ops = &atmtcp_c_dev_ops,
|
||||
.type = "atmtcp",
|
||||
.number = 999,
|
||||
.lock = SPIN_LOCK_UNLOCKED
|
||||
};
|
||||
|
||||
|
||||
static int atmtcp_create(int itf,int persist,struct atm_dev **result)
|
||||
{
|
||||
struct atmtcp_dev_data *dev_data;
|
||||
struct atm_dev *dev;
|
||||
|
||||
dev_data = kmalloc(sizeof(*dev_data),GFP_KERNEL);
|
||||
if (!dev_data)
|
||||
return -ENOMEM;
|
||||
|
||||
dev = atm_dev_register(DEV_LABEL,&atmtcp_v_dev_ops,itf,NULL);
|
||||
if (!dev) {
|
||||
kfree(dev_data);
|
||||
return itf == -1 ? -ENOMEM : -EBUSY;
|
||||
}
|
||||
dev->ci_range.vpi_bits = MAX_VPI_BITS;
|
||||
dev->ci_range.vci_bits = MAX_VCI_BITS;
|
||||
dev->dev_data = dev_data;
|
||||
PRIV(dev)->vcc = NULL;
|
||||
PRIV(dev)->persist = persist;
|
||||
if (result) *result = dev;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int atmtcp_attach(struct atm_vcc *vcc,int itf)
|
||||
{
|
||||
struct atm_dev *dev;
|
||||
|
||||
dev = NULL;
|
||||
if (itf != -1) dev = atm_dev_lookup(itf);
|
||||
if (dev) {
|
||||
if (dev->ops != &atmtcp_v_dev_ops) {
|
||||
atm_dev_put(dev);
|
||||
return -EMEDIUMTYPE;
|
||||
}
|
||||
if (PRIV(dev)->vcc) return -EBUSY;
|
||||
}
|
||||
else {
|
||||
int error;
|
||||
|
||||
error = atmtcp_create(itf,0,&dev);
|
||||
if (error) return error;
|
||||
}
|
||||
PRIV(dev)->vcc = vcc;
|
||||
vcc->dev = &atmtcp_control_dev;
|
||||
vcc_insert_socket(sk_atm(vcc));
|
||||
set_bit(ATM_VF_META,&vcc->flags);
|
||||
set_bit(ATM_VF_READY,&vcc->flags);
|
||||
vcc->dev_data = dev;
|
||||
(void) atm_init_aal5(vcc); /* @@@ losing AAL in transit ... */
|
||||
vcc->stats = &atmtcp_control_dev.stats.aal5;
|
||||
return dev->number;
|
||||
}
|
||||
|
||||
|
||||
static int atmtcp_create_persistent(int itf)
|
||||
{
|
||||
return atmtcp_create(itf,1,NULL);
|
||||
}
|
||||
|
||||
|
||||
static int atmtcp_remove_persistent(int itf)
|
||||
{
|
||||
struct atm_dev *dev;
|
||||
struct atmtcp_dev_data *dev_data;
|
||||
|
||||
dev = atm_dev_lookup(itf);
|
||||
if (!dev) return -ENODEV;
|
||||
if (dev->ops != &atmtcp_v_dev_ops) {
|
||||
atm_dev_put(dev);
|
||||
return -EMEDIUMTYPE;
|
||||
}
|
||||
dev_data = PRIV(dev);
|
||||
if (!dev_data->persist) return 0;
|
||||
dev_data->persist = 0;
|
||||
if (PRIV(dev)->vcc) return 0;
|
||||
kfree(dev_data);
|
||||
atm_dev_put(dev);
|
||||
shutdown_atm_dev(dev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int atmtcp_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
int err = 0;
|
||||
struct atm_vcc *vcc = ATM_SD(sock);
|
||||
|
||||
if (cmd != SIOCSIFATMTCP && cmd != ATMTCP_CREATE && cmd != ATMTCP_REMOVE)
|
||||
return -ENOIOCTLCMD;
|
||||
|
||||
if (!capable(CAP_NET_ADMIN))
|
||||
return -EPERM;
|
||||
|
||||
switch (cmd) {
|
||||
case SIOCSIFATMTCP:
|
||||
err = atmtcp_attach(vcc, (int) arg);
|
||||
if (err >= 0) {
|
||||
sock->state = SS_CONNECTED;
|
||||
__module_get(THIS_MODULE);
|
||||
}
|
||||
break;
|
||||
case ATMTCP_CREATE:
|
||||
err = atmtcp_create_persistent((int) arg);
|
||||
break;
|
||||
case ATMTCP_REMOVE:
|
||||
err = atmtcp_remove_persistent((int) arg);
|
||||
break;
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
static struct atm_ioctl atmtcp_ioctl_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.ioctl = atmtcp_ioctl,
|
||||
};
|
||||
|
||||
static __init int atmtcp_init(void)
|
||||
{
|
||||
register_atm_ioctl(&atmtcp_ioctl_ops);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static void __exit atmtcp_exit(void)
|
||||
{
|
||||
deregister_atm_ioctl(&atmtcp_ioctl_ops);
|
||||
}
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
module_init(atmtcp_init);
|
||||
module_exit(atmtcp_exit);
|
||||
2299
drivers/atm/eni.c
Normal file
2299
drivers/atm/eni.c
Normal file
File diff suppressed because it is too large
Load Diff
130
drivers/atm/eni.h
Normal file
130
drivers/atm/eni.h
Normal file
@@ -0,0 +1,130 @@
|
||||
/* drivers/atm/eni.h - Efficient Networks ENI155P device driver declarations */
|
||||
|
||||
/* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */
|
||||
|
||||
|
||||
#ifndef DRIVER_ATM_ENI_H
|
||||
#define DRIVER_ATM_ENI_H
|
||||
|
||||
#include <linux/atm.h>
|
||||
#include <linux/atmdev.h>
|
||||
#include <linux/sonet.h>
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/time.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <asm/atomic.h>
|
||||
|
||||
#include "midway.h"
|
||||
|
||||
|
||||
#define KERNEL_OFFSET 0xC0000000 /* kernel 0x0 is at phys 0xC0000000 */
|
||||
#define DEV_LABEL "eni"
|
||||
|
||||
#define UBR_BUFFER (128*1024) /* UBR buffer size */
|
||||
|
||||
#define RX_DMA_BUF 8 /* burst and skip a few things */
|
||||
#define TX_DMA_BUF 100 /* should be enough for 64 kB */
|
||||
|
||||
#define DEFAULT_RX_MULT 300 /* max_sdu*3 */
|
||||
#define DEFAULT_TX_MULT 300 /* max_sdu*3 */
|
||||
|
||||
#define ENI_ZEROES_SIZE 4 /* need that many DMA-able zero bytes */
|
||||
|
||||
|
||||
struct eni_free {
|
||||
void __iomem *start; /* counting in bytes */
|
||||
int order;
|
||||
};
|
||||
|
||||
struct eni_tx {
|
||||
void __iomem *send; /* base, 0 if unused */
|
||||
int prescaler; /* shaping prescaler */
|
||||
int resolution; /* shaping divider */
|
||||
unsigned long tx_pos; /* current TX write position */
|
||||
unsigned long words; /* size of TX queue */
|
||||
int index; /* TX channel number */
|
||||
int reserved; /* reserved peak cell rate */
|
||||
int shaping; /* shaped peak cell rate */
|
||||
struct sk_buff_head backlog; /* queue of waiting TX buffers */
|
||||
};
|
||||
|
||||
struct eni_vcc {
|
||||
int (*rx)(struct atm_vcc *vcc); /* RX function, NULL if none */
|
||||
void __iomem *recv; /* receive buffer */
|
||||
unsigned long words; /* its size in words */
|
||||
unsigned long descr; /* next descriptor (RX) */
|
||||
unsigned long rx_pos; /* current RX descriptor pos */
|
||||
struct eni_tx *tx; /* TXer, NULL if none */
|
||||
int rxing; /* number of pending PDUs */
|
||||
int servicing; /* number of waiting VCs (0 or 1) */
|
||||
int txing; /* number of pending TX bytes */
|
||||
struct timeval timestamp; /* for RX timing */
|
||||
struct atm_vcc *next; /* next pending RX */
|
||||
struct sk_buff *last; /* last PDU being DMAed (used to carry
|
||||
discard information) */
|
||||
};
|
||||
|
||||
struct eni_dev {
|
||||
/*-------------------------------- spinlock */
|
||||
spinlock_t lock; /* sync with interrupt */
|
||||
struct tasklet_struct task; /* tasklet for interrupt work */
|
||||
u32 events; /* pending events */
|
||||
/*-------------------------------- base pointers into Midway address
|
||||
space */
|
||||
void __iomem *phy; /* PHY interface chip registers */
|
||||
void __iomem *reg; /* register base */
|
||||
void __iomem *ram; /* RAM base */
|
||||
void __iomem *vci; /* VCI table */
|
||||
void __iomem *rx_dma; /* RX DMA queue */
|
||||
void __iomem *tx_dma; /* TX DMA queue */
|
||||
void __iomem *service; /* service list */
|
||||
/*-------------------------------- TX part */
|
||||
struct eni_tx tx[NR_CHAN]; /* TX channels */
|
||||
struct eni_tx *ubr; /* UBR channel */
|
||||
struct sk_buff_head tx_queue; /* PDUs currently being TX DMAed*/
|
||||
wait_queue_head_t tx_wait; /* for close */
|
||||
int tx_bw; /* remaining bandwidth */
|
||||
u32 dma[TX_DMA_BUF*2]; /* DMA request scratch area */
|
||||
int tx_mult; /* buffer size multiplier (percent) */
|
||||
/*-------------------------------- RX part */
|
||||
u32 serv_read; /* host service read index */
|
||||
struct atm_vcc *fast,*last_fast;/* queues of VCCs with pending PDUs */
|
||||
struct atm_vcc *slow,*last_slow;
|
||||
struct atm_vcc **rx_map; /* for fast lookups */
|
||||
struct sk_buff_head rx_queue; /* PDUs currently being RX-DMAed */
|
||||
wait_queue_head_t rx_wait; /* for close */
|
||||
int rx_mult; /* buffer size multiplier (percent) */
|
||||
/*-------------------------------- statistics */
|
||||
unsigned long lost; /* number of lost cells (RX) */
|
||||
/*-------------------------------- memory management */
|
||||
unsigned long base_diff; /* virtual-real base address */
|
||||
int free_len; /* free list length */
|
||||
struct eni_free *free_list; /* free list */
|
||||
int free_list_size; /* maximum size of free list */
|
||||
/*-------------------------------- ENI links */
|
||||
struct atm_dev *more; /* other ENI devices */
|
||||
/*-------------------------------- general information */
|
||||
int mem; /* RAM on board (in bytes) */
|
||||
int asic; /* PCI interface type, 0 for FPGA */
|
||||
unsigned int irq; /* IRQ */
|
||||
struct pci_dev *pci_dev; /* PCI stuff */
|
||||
};
|
||||
|
||||
|
||||
#define ENI_DEV(d) ((struct eni_dev *) (d)->dev_data)
|
||||
#define ENI_VCC(d) ((struct eni_vcc *) (d)->dev_data)
|
||||
|
||||
|
||||
struct eni_skb_prv {
|
||||
struct atm_skb_data _; /* reserved */
|
||||
unsigned long pos; /* position of next descriptor */
|
||||
int size; /* PDU size in reassembly buffer */
|
||||
dma_addr_t paddr; /* DMA handle */
|
||||
};
|
||||
|
||||
#define ENI_PRV_SIZE(skb) (((struct eni_skb_prv *) (skb)->cb)->size)
|
||||
#define ENI_PRV_POS(skb) (((struct eni_skb_prv *) (skb)->cb)->pos)
|
||||
#define ENI_PRV_PADDR(skb) (((struct eni_skb_prv *) (skb)->cb)->paddr)
|
||||
|
||||
#endif
|
||||
2053
drivers/atm/firestream.c
Normal file
2053
drivers/atm/firestream.c
Normal file
File diff suppressed because it is too large
Load Diff
518
drivers/atm/firestream.h
Normal file
518
drivers/atm/firestream.h
Normal file
@@ -0,0 +1,518 @@
|
||||
/* drivers/atm/firestream.h - FireStream 155 (MB86697) and
|
||||
* FireStream 50 (MB86695) device driver
|
||||
*/
|
||||
|
||||
/* Written & (C) 2000 by R.E.Wolff@BitWizard.nl
|
||||
* Copied snippets from zatm.c by Werner Almesberger, EPFL LRC/ICA
|
||||
* and ambassador.c Copyright (C) 1995-1999 Madge Networks Ltd
|
||||
*/
|
||||
|
||||
/*
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
The GNU GPL is contained in /usr/doc/copyright/GPL on a Debian
|
||||
system and in the file COPYING in the Linux kernel source.
|
||||
*/
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* first the defines for the chip. *
|
||||
***********************************************************************/
|
||||
|
||||
|
||||
/********************* General chip parameters. ************************/
|
||||
|
||||
#define FS_NR_FREE_POOLS 8
|
||||
#define FS_NR_RX_QUEUES 4
|
||||
|
||||
|
||||
/********************* queues and queue access macros ******************/
|
||||
|
||||
|
||||
/* A queue entry. */
|
||||
struct FS_QENTRY {
|
||||
u32 cmd;
|
||||
u32 p0, p1, p2;
|
||||
};
|
||||
|
||||
|
||||
/* A freepool entry. */
|
||||
struct FS_BPENTRY {
|
||||
u32 flags;
|
||||
u32 next;
|
||||
u32 bsa;
|
||||
u32 aal_bufsize;
|
||||
|
||||
/* The hardware doesn't look at this, but we need the SKB somewhere... */
|
||||
struct sk_buff *skb;
|
||||
struct freepool *fp;
|
||||
struct fs_dev *dev;
|
||||
};
|
||||
|
||||
|
||||
#define STATUS_CODE(qe) ((qe->cmd >> 22) & 0x3f)
|
||||
|
||||
|
||||
/* OFFSETS against the base of a QUEUE... */
|
||||
#define QSA 0x00
|
||||
#define QEA 0x04
|
||||
#define QRP 0x08
|
||||
#define QWP 0x0c
|
||||
#define QCNF 0x10 /* Only for Release queues! */
|
||||
/* Not for the transmit pending queue. */
|
||||
|
||||
|
||||
/* OFFSETS against the base of a FREE POOL... */
|
||||
#define FPCNF 0x00
|
||||
#define FPSA 0x04
|
||||
#define FPEA 0x08
|
||||
#define FPCNT 0x0c
|
||||
#define FPCTU 0x10
|
||||
|
||||
#define Q_SA(b) (b + QSA )
|
||||
#define Q_EA(b) (b + QEA )
|
||||
#define Q_RP(b) (b + QRP )
|
||||
#define Q_WP(b) (b + QWP )
|
||||
#define Q_CNF(b) (b + QCNF)
|
||||
|
||||
#define FP_CNF(b) (b + FPCNF)
|
||||
#define FP_SA(b) (b + FPSA)
|
||||
#define FP_EA(b) (b + FPEA)
|
||||
#define FP_CNT(b) (b + FPCNT)
|
||||
#define FP_CTU(b) (b + FPCTU)
|
||||
|
||||
/* bits in a queue register. */
|
||||
#define Q_FULL 0x1
|
||||
#define Q_EMPTY 0x2
|
||||
#define Q_INCWRAP 0x4
|
||||
#define Q_ADDR_MASK 0xfffffff0
|
||||
|
||||
/* bits in a FreePool config register */
|
||||
#define RBFP_RBS (0x1 << 16)
|
||||
#define RBFP_RBSVAL (0x1 << 15)
|
||||
#define RBFP_CME (0x1 << 12)
|
||||
#define RBFP_DLP (0x1 << 11)
|
||||
#define RBFP_BFPWT (0x1 << 0)
|
||||
|
||||
|
||||
|
||||
|
||||
/* FireStream commands. */
|
||||
#define QE_CMD_NULL (0x00 << 22)
|
||||
#define QE_CMD_REG_RD (0x01 << 22)
|
||||
#define QE_CMD_REG_RDM (0x02 << 22)
|
||||
#define QE_CMD_REG_WR (0x03 << 22)
|
||||
#define QE_CMD_REG_WRM (0x04 << 22)
|
||||
#define QE_CMD_CONFIG_TX (0x05 << 22)
|
||||
#define QE_CMD_CONFIG_RX (0x06 << 22)
|
||||
#define QE_CMD_PRP_RD (0x07 << 22)
|
||||
#define QE_CMD_PRP_RDM (0x2a << 22)
|
||||
#define QE_CMD_PRP_WR (0x09 << 22)
|
||||
#define QE_CMD_PRP_WRM (0x2b << 22)
|
||||
#define QE_CMD_RX_EN (0x0a << 22)
|
||||
#define QE_CMD_RX_PURGE (0x0b << 22)
|
||||
#define QE_CMD_RX_PURGE_INH (0x0c << 22)
|
||||
#define QE_CMD_TX_EN (0x0d << 22)
|
||||
#define QE_CMD_TX_PURGE (0x0e << 22)
|
||||
#define QE_CMD_TX_PURGE_INH (0x0f << 22)
|
||||
#define QE_CMD_RST_CG (0x10 << 22)
|
||||
#define QE_CMD_SET_CG (0x11 << 22)
|
||||
#define QE_CMD_RST_CLP (0x12 << 22)
|
||||
#define QE_CMD_SET_CLP (0x13 << 22)
|
||||
#define QE_CMD_OVERRIDE (0x14 << 22)
|
||||
#define QE_CMD_ADD_BFP (0x15 << 22)
|
||||
#define QE_CMD_DUMP_TX (0x16 << 22)
|
||||
#define QE_CMD_DUMP_RX (0x17 << 22)
|
||||
#define QE_CMD_LRAM_RD (0x18 << 22)
|
||||
#define QE_CMD_LRAM_RDM (0x28 << 22)
|
||||
#define QE_CMD_LRAM_WR (0x19 << 22)
|
||||
#define QE_CMD_LRAM_WRM (0x29 << 22)
|
||||
#define QE_CMD_LRAM_BSET (0x1a << 22)
|
||||
#define QE_CMD_LRAM_BCLR (0x1b << 22)
|
||||
#define QE_CMD_CONFIG_SEGM (0x1c << 22)
|
||||
#define QE_CMD_READ_SEGM (0x1d << 22)
|
||||
#define QE_CMD_CONFIG_ROUT (0x1e << 22)
|
||||
#define QE_CMD_READ_ROUT (0x1f << 22)
|
||||
#define QE_CMD_CONFIG_TM (0x20 << 22)
|
||||
#define QE_CMD_READ_TM (0x21 << 22)
|
||||
#define QE_CMD_CONFIG_TXBM (0x22 << 22)
|
||||
#define QE_CMD_READ_TXBM (0x23 << 22)
|
||||
#define QE_CMD_CONFIG_RXBM (0x24 << 22)
|
||||
#define QE_CMD_READ_RXBM (0x25 << 22)
|
||||
#define QE_CMD_CONFIG_REAS (0x26 << 22)
|
||||
#define QE_CMD_READ_REAS (0x27 << 22)
|
||||
|
||||
#define QE_TRANSMIT_DE (0x0 << 30)
|
||||
#define QE_CMD_LINKED (0x1 << 30)
|
||||
#define QE_CMD_IMM (0x2 << 30)
|
||||
#define QE_CMD_IMM_INQ (0x3 << 30)
|
||||
|
||||
#define TD_EPI (0x1 << 27)
|
||||
#define TD_COMMAND (0x1 << 28)
|
||||
|
||||
#define TD_DATA (0x0 << 29)
|
||||
#define TD_RM_CELL (0x1 << 29)
|
||||
#define TD_OAM_CELL (0x2 << 29)
|
||||
#define TD_OAM_CELL_SEGMENT (0x3 << 29)
|
||||
|
||||
#define TD_BPI (0x1 << 20)
|
||||
|
||||
#define FP_FLAGS_EPI (0x1 << 27)
|
||||
|
||||
|
||||
#define TX_PQ(i) (0x00 + (i) * 0x10)
|
||||
#define TXB_RQ (0x20)
|
||||
#define ST_Q (0x48)
|
||||
#define RXB_FP(i) (0x90 + (i) * 0x14)
|
||||
#define RXB_RQ(i) (0x134 + (i) * 0x14)
|
||||
|
||||
|
||||
#define TXQ_HP 0
|
||||
#define TXQ_LP 1
|
||||
|
||||
/* Phew. You don't want to know how many revisions these simple queue
|
||||
* address macros went through before I got them nice and compact as
|
||||
* they are now. -- REW
|
||||
*/
|
||||
|
||||
|
||||
/* And now for something completely different:
|
||||
* The rest of the registers... */
|
||||
|
||||
|
||||
#define CMDR0 0x34
|
||||
#define CMDR1 0x38
|
||||
#define CMDR2 0x3c
|
||||
#define CMDR3 0x40
|
||||
|
||||
|
||||
#define SARMODE0 0x5c
|
||||
|
||||
#define SARMODE0_TXVCS_0 (0x0 << 0)
|
||||
#define SARMODE0_TXVCS_1k (0x1 << 0)
|
||||
#define SARMODE0_TXVCS_2k (0x2 << 0)
|
||||
#define SARMODE0_TXVCS_4k (0x3 << 0)
|
||||
#define SARMODE0_TXVCS_8k (0x4 << 0)
|
||||
#define SARMODE0_TXVCS_16k (0x5 << 0)
|
||||
#define SARMODE0_TXVCS_32k (0x6 << 0)
|
||||
#define SARMODE0_TXVCS_64k (0x7 << 0)
|
||||
#define SARMODE0_TXVCS_32 (0x8 << 0)
|
||||
|
||||
#define SARMODE0_ABRVCS_0 (0x0 << 4)
|
||||
#define SARMODE0_ABRVCS_512 (0x1 << 4)
|
||||
#define SARMODE0_ABRVCS_1k (0x2 << 4)
|
||||
#define SARMODE0_ABRVCS_2k (0x3 << 4)
|
||||
#define SARMODE0_ABRVCS_4k (0x4 << 4)
|
||||
#define SARMODE0_ABRVCS_8k (0x5 << 4)
|
||||
#define SARMODE0_ABRVCS_16k (0x6 << 4)
|
||||
#define SARMODE0_ABRVCS_32k (0x7 << 4)
|
||||
#define SARMODE0_ABRVCS_32 (0x9 << 4) /* The others are "8", this one really has to
|
||||
be 9. Tell me you don't believe me. -- REW */
|
||||
|
||||
#define SARMODE0_RXVCS_0 (0x0 << 8)
|
||||
#define SARMODE0_RXVCS_1k (0x1 << 8)
|
||||
#define SARMODE0_RXVCS_2k (0x2 << 8)
|
||||
#define SARMODE0_RXVCS_4k (0x3 << 8)
|
||||
#define SARMODE0_RXVCS_8k (0x4 << 8)
|
||||
#define SARMODE0_RXVCS_16k (0x5 << 8)
|
||||
#define SARMODE0_RXVCS_32k (0x6 << 8)
|
||||
#define SARMODE0_RXVCS_64k (0x7 << 8)
|
||||
#define SARMODE0_RXVCS_32 (0x8 << 8)
|
||||
|
||||
#define SARMODE0_CALSUP_1 (0x0 << 12)
|
||||
#define SARMODE0_CALSUP_2 (0x1 << 12)
|
||||
#define SARMODE0_CALSUP_3 (0x2 << 12)
|
||||
#define SARMODE0_CALSUP_4 (0x3 << 12)
|
||||
|
||||
#define SARMODE0_PRPWT_FS50_0 (0x0 << 14)
|
||||
#define SARMODE0_PRPWT_FS50_2 (0x1 << 14)
|
||||
#define SARMODE0_PRPWT_FS50_5 (0x2 << 14)
|
||||
#define SARMODE0_PRPWT_FS50_11 (0x3 << 14)
|
||||
|
||||
#define SARMODE0_PRPWT_FS155_0 (0x0 << 14)
|
||||
#define SARMODE0_PRPWT_FS155_1 (0x1 << 14)
|
||||
#define SARMODE0_PRPWT_FS155_2 (0x2 << 14)
|
||||
#define SARMODE0_PRPWT_FS155_3 (0x3 << 14)
|
||||
|
||||
#define SARMODE0_SRTS0 (0x1 << 23)
|
||||
#define SARMODE0_SRTS1 (0x1 << 24)
|
||||
|
||||
#define SARMODE0_RUN (0x1 << 25)
|
||||
|
||||
#define SARMODE0_UNLOCK (0x1 << 26)
|
||||
#define SARMODE0_CWRE (0x1 << 27)
|
||||
|
||||
|
||||
#define SARMODE0_INTMODE_READCLEAR (0x0 << 28)
|
||||
#define SARMODE0_INTMODE_READNOCLEAR (0x1 << 28)
|
||||
#define SARMODE0_INTMODE_READNOCLEARINHIBIT (0x2 << 28)
|
||||
#define SARMODE0_INTMODE_READCLEARINHIBIT (0x3 << 28) /* Tell me you don't believe me. */
|
||||
|
||||
#define SARMODE0_GINT (0x1 << 30)
|
||||
#define SARMODE0_SHADEN (0x1 << 31)
|
||||
|
||||
|
||||
#define SARMODE1 0x60
|
||||
|
||||
|
||||
#define SARMODE1_TRTL_SHIFT 0 /* Program to 0 */
|
||||
#define SARMODE1_RRTL_SHIFT 4 /* Program to 0 */
|
||||
|
||||
#define SARMODE1_TAGM (0x1 << 8) /* Program to 0 */
|
||||
|
||||
#define SARMODE1_HECM0 (0x1 << 9)
|
||||
#define SARMODE1_HECM1 (0x1 << 10)
|
||||
#define SARMODE1_HECM2 (0x1 << 11)
|
||||
|
||||
#define SARMODE1_GFCE (0x1 << 14)
|
||||
#define SARMODE1_GFCR (0x1 << 15)
|
||||
#define SARMODE1_PMS (0x1 << 18)
|
||||
#define SARMODE1_GPRI (0x1 << 19)
|
||||
#define SARMODE1_GPAS (0x1 << 20)
|
||||
#define SARMODE1_GVAS (0x1 << 21)
|
||||
#define SARMODE1_GNAM (0x1 << 22)
|
||||
#define SARMODE1_GPLEN (0x1 << 23)
|
||||
#define SARMODE1_DUMPE (0x1 << 24)
|
||||
#define SARMODE1_OAMCRC (0x1 << 25)
|
||||
#define SARMODE1_DCOAM (0x1 << 26)
|
||||
#define SARMODE1_DCRM (0x1 << 27)
|
||||
#define SARMODE1_TSTLP (0x1 << 28)
|
||||
#define SARMODE1_DEFHEC (0x1 << 29)
|
||||
|
||||
|
||||
#define ISR 0x64
|
||||
#define IUSR 0x68
|
||||
#define IMR 0x6c
|
||||
|
||||
#define ISR_LPCO (0x1 << 0)
|
||||
#define ISR_DPCO (0x1 << 1)
|
||||
#define ISR_RBRQ0_W (0x1 << 2)
|
||||
#define ISR_RBRQ1_W (0x1 << 3)
|
||||
#define ISR_RBRQ2_W (0x1 << 4)
|
||||
#define ISR_RBRQ3_W (0x1 << 5)
|
||||
#define ISR_RBRQ0_NF (0x1 << 6)
|
||||
#define ISR_RBRQ1_NF (0x1 << 7)
|
||||
#define ISR_RBRQ2_NF (0x1 << 8)
|
||||
#define ISR_RBRQ3_NF (0x1 << 9)
|
||||
#define ISR_BFP_SC (0x1 << 10)
|
||||
#define ISR_INIT (0x1 << 11)
|
||||
#define ISR_INIT_ERR (0x1 << 12) /* Documented as "reserved" */
|
||||
#define ISR_USCEO (0x1 << 13)
|
||||
#define ISR_UPEC0 (0x1 << 14)
|
||||
#define ISR_VPFCO (0x1 << 15)
|
||||
#define ISR_CRCCO (0x1 << 16)
|
||||
#define ISR_HECO (0x1 << 17)
|
||||
#define ISR_TBRQ_W (0x1 << 18)
|
||||
#define ISR_TBRQ_NF (0x1 << 19)
|
||||
#define ISR_CTPQ_E (0x1 << 20)
|
||||
#define ISR_GFC_C0 (0x1 << 21)
|
||||
#define ISR_PCI_FTL (0x1 << 22)
|
||||
#define ISR_CSQ_W (0x1 << 23)
|
||||
#define ISR_CSQ_NF (0x1 << 24)
|
||||
#define ISR_EXT_INT (0x1 << 25)
|
||||
#define ISR_RXDMA_S (0x1 << 26)
|
||||
|
||||
|
||||
#define TMCONF 0x78
|
||||
/* Bits? */
|
||||
|
||||
|
||||
#define CALPRESCALE 0x7c
|
||||
/* Bits? */
|
||||
|
||||
#define CELLOSCONF 0x84
|
||||
#define CELLOSCONF_COTS (0x1 << 28)
|
||||
#define CELLOSCONF_CEN (0x1 << 27)
|
||||
#define CELLOSCONF_SC8 (0x3 << 24)
|
||||
#define CELLOSCONF_SC4 (0x2 << 24)
|
||||
#define CELLOSCONF_SC2 (0x1 << 24)
|
||||
#define CELLOSCONF_SC1 (0x0 << 24)
|
||||
|
||||
#define CELLOSCONF_COBS (0x1 << 16)
|
||||
#define CELLOSCONF_COPK (0x1 << 8)
|
||||
#define CELLOSCONF_COST (0x1 << 0)
|
||||
/* Bits? */
|
||||
|
||||
#define RAS0 0x1bc
|
||||
#define RAS0_DCD_XHLT (0x1 << 31)
|
||||
|
||||
#define RAS0_VPSEL (0x1 << 16)
|
||||
#define RAS0_VCSEL (0x1 << 0)
|
||||
|
||||
#define RAS1 0x1c0
|
||||
#define RAS1_UTREG (0x1 << 5)
|
||||
|
||||
|
||||
#define DMAMR 0x1cc
|
||||
#define DMAMR_TX_MODE_FULL (0x0 << 0)
|
||||
#define DMAMR_TX_MODE_PART (0x1 << 0)
|
||||
#define DMAMR_TX_MODE_NONE (0x2 << 0) /* And 3 */
|
||||
|
||||
|
||||
|
||||
#define RAS2 0x280
|
||||
|
||||
#define RAS2_NNI (0x1 << 0)
|
||||
#define RAS2_USEL (0x1 << 1)
|
||||
#define RAS2_UBS (0x1 << 2)
|
||||
|
||||
|
||||
|
||||
struct fs_transmit_config {
|
||||
u32 flags;
|
||||
u32 atm_hdr;
|
||||
u32 TMC[4];
|
||||
u32 spec;
|
||||
u32 rtag[3];
|
||||
};
|
||||
|
||||
#define TC_FLAGS_AAL5 (0x0 << 29)
|
||||
#define TC_FLAGS_TRANSPARENT_PAYLOAD (0x1 << 29)
|
||||
#define TC_FLAGS_TRANSPARENT_CELL (0x2 << 29)
|
||||
#define TC_FLAGS_STREAMING (0x1 << 28)
|
||||
#define TC_FLAGS_PACKET (0x0)
|
||||
#define TC_FLAGS_TYPE_ABR (0x0 << 22)
|
||||
#define TC_FLAGS_TYPE_CBR (0x1 << 22)
|
||||
#define TC_FLAGS_TYPE_VBR (0x2 << 22)
|
||||
#define TC_FLAGS_TYPE_UBR (0x3 << 22)
|
||||
#define TC_FLAGS_CAL0 (0x0 << 20)
|
||||
#define TC_FLAGS_CAL1 (0x1 << 20)
|
||||
#define TC_FLAGS_CAL2 (0x2 << 20)
|
||||
#define TC_FLAGS_CAL3 (0x3 << 20)
|
||||
|
||||
|
||||
#define RC_FLAGS_NAM (0x1 << 13)
|
||||
#define RC_FLAGS_RXBM_PSB (0x0 << 14)
|
||||
#define RC_FLAGS_RXBM_CIF (0x1 << 14)
|
||||
#define RC_FLAGS_RXBM_PMB (0x2 << 14)
|
||||
#define RC_FLAGS_RXBM_STR (0x4 << 14)
|
||||
#define RC_FLAGS_RXBM_SAF (0x6 << 14)
|
||||
#define RC_FLAGS_RXBM_POS (0x6 << 14)
|
||||
#define RC_FLAGS_BFPS (0x1 << 17)
|
||||
|
||||
#define RC_FLAGS_BFPS_BFP (0x1 << 17)
|
||||
|
||||
#define RC_FLAGS_BFPS_BFP0 (0x0 << 17)
|
||||
#define RC_FLAGS_BFPS_BFP1 (0x1 << 17)
|
||||
#define RC_FLAGS_BFPS_BFP2 (0x2 << 17)
|
||||
#define RC_FLAGS_BFPS_BFP3 (0x3 << 17)
|
||||
#define RC_FLAGS_BFPS_BFP4 (0x4 << 17)
|
||||
#define RC_FLAGS_BFPS_BFP5 (0x5 << 17)
|
||||
#define RC_FLAGS_BFPS_BFP6 (0x6 << 17)
|
||||
#define RC_FLAGS_BFPS_BFP7 (0x7 << 17)
|
||||
#define RC_FLAGS_BFPS_BFP01 (0x8 << 17)
|
||||
#define RC_FLAGS_BFPS_BFP23 (0x9 << 17)
|
||||
#define RC_FLAGS_BFPS_BFP45 (0xa << 17)
|
||||
#define RC_FLAGS_BFPS_BFP67 (0xb << 17)
|
||||
#define RC_FLAGS_BFPS_BFP07 (0xc << 17)
|
||||
#define RC_FLAGS_BFPS_BFP27 (0xd << 17)
|
||||
#define RC_FLAGS_BFPS_BFP47 (0xe << 17)
|
||||
|
||||
#define RC_FLAGS_BFPS (0x1 << 17)
|
||||
#define RC_FLAGS_BFPP (0x1 << 21)
|
||||
#define RC_FLAGS_TEVC (0x1 << 22)
|
||||
#define RC_FLAGS_TEP (0x1 << 23)
|
||||
#define RC_FLAGS_AAL5 (0x0 << 24)
|
||||
#define RC_FLAGS_TRANSP (0x1 << 24)
|
||||
#define RC_FLAGS_TRANSC (0x2 << 24)
|
||||
#define RC_FLAGS_ML (0x1 << 27)
|
||||
#define RC_FLAGS_TRBRM (0x1 << 28)
|
||||
#define RC_FLAGS_PRI (0x1 << 29)
|
||||
#define RC_FLAGS_HOAM (0x1 << 30)
|
||||
#define RC_FLAGS_CRC10 (0x1 << 31)
|
||||
|
||||
|
||||
#define RAC 0x1c8
|
||||
#define RAM 0x1c4
|
||||
|
||||
|
||||
|
||||
/************************************************************************
|
||||
* Then the datastructures that the DRIVER uses. *
|
||||
************************************************************************/
|
||||
|
||||
#define TXQ_NENTRIES 32
|
||||
#define RXRQ_NENTRIES 1024
|
||||
|
||||
|
||||
struct fs_vcc {
|
||||
int channo;
|
||||
wait_queue_head_t close_wait;
|
||||
struct sk_buff *last_skb;
|
||||
};
|
||||
|
||||
|
||||
struct queue {
|
||||
struct FS_QENTRY *sa, *ea;
|
||||
int offset;
|
||||
};
|
||||
|
||||
struct freepool {
|
||||
int offset;
|
||||
int bufsize;
|
||||
int nr_buffers;
|
||||
int n;
|
||||
};
|
||||
|
||||
|
||||
struct fs_dev {
|
||||
struct fs_dev *next; /* other FS devices */
|
||||
int flags;
|
||||
|
||||
unsigned char irq; /* IRQ */
|
||||
struct pci_dev *pci_dev; /* PCI stuff */
|
||||
struct atm_dev *atm_dev;
|
||||
struct timer_list timer;
|
||||
|
||||
unsigned long hw_base; /* mem base address */
|
||||
void __iomem *base; /* Mapping of base address */
|
||||
int channo;
|
||||
unsigned long channel_mask;
|
||||
|
||||
struct queue hp_txq, lp_txq, tx_relq, st_q;
|
||||
struct freepool rx_fp[FS_NR_FREE_POOLS];
|
||||
struct queue rx_rq[FS_NR_RX_QUEUES];
|
||||
|
||||
int nchannels;
|
||||
struct atm_vcc **atm_vccs;
|
||||
void *tx_inuse;
|
||||
int ntxpckts;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
/* Number of channesl that the FS50 supports. */
|
||||
#define FS50_CHANNEL_BITS 5
|
||||
#define FS50_NR_CHANNELS (1 << FS50_CHANNEL_BITS)
|
||||
|
||||
|
||||
#define FS_DEV(atm_dev) ((struct fs_dev *) (atm_dev)->dev_data)
|
||||
#define FS_VCC(atm_vcc) ((struct fs_vcc *) (atm_vcc)->dev_data)
|
||||
|
||||
|
||||
#define FS_IS50 0x1
|
||||
#define FS_IS155 0x2
|
||||
|
||||
#define IS_FS50(dev) (dev->flags & FS_IS50)
|
||||
#define IS_FS155(dev) (dev->flags & FS_IS155)
|
||||
|
||||
/* Within limits this is user-configurable. */
|
||||
/* Note: Currently the sum (10 -> 1k channels) is hardcoded in the driver. */
|
||||
#define FS155_VPI_BITS 4
|
||||
#define FS155_VCI_BITS 6
|
||||
|
||||
#define FS155_CHANNEL_BITS (FS155_VPI_BITS + FS155_VCI_BITS)
|
||||
#define FS155_NR_CHANNELS (1 << FS155_CHANNEL_BITS)
|
||||
3249
drivers/atm/fore200e.c
Normal file
3249
drivers/atm/fore200e.c
Normal file
File diff suppressed because it is too large
Load Diff
985
drivers/atm/fore200e.h
Normal file
985
drivers/atm/fore200e.h
Normal file
@@ -0,0 +1,985 @@
|
||||
/* $Id: fore200e.h,v 1.4 2000/04/14 10:10:34 davem Exp $ */
|
||||
#ifndef _FORE200E_H
|
||||
#define _FORE200E_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/config.h>
|
||||
|
||||
/* rx buffer sizes */
|
||||
|
||||
#define SMALL_BUFFER_SIZE 384 /* size of small buffers (multiple of 48 (PCA) and 64 (SBA) bytes) */
|
||||
#define LARGE_BUFFER_SIZE 4032 /* size of large buffers (multiple of 48 (PCA) and 64 (SBA) bytes) */
|
||||
|
||||
|
||||
#define RBD_BLK_SIZE 32 /* nbr of supplied rx buffers per rbd */
|
||||
|
||||
|
||||
#define MAX_PDU_SIZE 65535 /* maximum PDU size supported by AALs */
|
||||
|
||||
|
||||
#define BUFFER_S1_SIZE SMALL_BUFFER_SIZE /* size of small buffers, scheme 1 */
|
||||
#define BUFFER_L1_SIZE LARGE_BUFFER_SIZE /* size of large buffers, scheme 1 */
|
||||
|
||||
#define BUFFER_S2_SIZE SMALL_BUFFER_SIZE /* size of small buffers, scheme 2 */
|
||||
#define BUFFER_L2_SIZE LARGE_BUFFER_SIZE /* size of large buffers, scheme 2 */
|
||||
|
||||
#define BUFFER_S1_NBR (RBD_BLK_SIZE * 6)
|
||||
#define BUFFER_L1_NBR (RBD_BLK_SIZE * 4)
|
||||
|
||||
#define BUFFER_S2_NBR (RBD_BLK_SIZE * 6)
|
||||
#define BUFFER_L2_NBR (RBD_BLK_SIZE * 4)
|
||||
|
||||
|
||||
#define QUEUE_SIZE_CMD 16 /* command queue capacity */
|
||||
#define QUEUE_SIZE_RX 64 /* receive queue capacity */
|
||||
#define QUEUE_SIZE_TX 256 /* transmit queue capacity */
|
||||
#define QUEUE_SIZE_BS 32 /* buffer supply queue capacity */
|
||||
|
||||
#define FORE200E_VPI_BITS 0
|
||||
#define FORE200E_VCI_BITS 10
|
||||
#define NBR_CONNECT (1 << (FORE200E_VPI_BITS + FORE200E_VCI_BITS)) /* number of connections */
|
||||
|
||||
|
||||
#define TSD_FIXED 2
|
||||
#define TSD_EXTENSION 0
|
||||
#define TSD_NBR (TSD_FIXED + TSD_EXTENSION)
|
||||
|
||||
|
||||
/* the cp starts putting a received PDU into one *small* buffer,
|
||||
then it uses a number of *large* buffers for the trailing data.
|
||||
we compute here the total number of receive segment descriptors
|
||||
required to hold the largest possible PDU */
|
||||
|
||||
#define RSD_REQUIRED (((MAX_PDU_SIZE - SMALL_BUFFER_SIZE + LARGE_BUFFER_SIZE) / LARGE_BUFFER_SIZE) + 1)
|
||||
|
||||
#define RSD_FIXED 3
|
||||
|
||||
/* RSD_REQUIRED receive segment descriptors are enough to describe a max-sized PDU,
|
||||
but we have to keep the size of the receive PDU descriptor multiple of 32 bytes,
|
||||
so we add one extra RSD to RSD_EXTENSION
|
||||
(WARNING: THIS MAY CHANGE IF BUFFER SIZES ARE MODIFIED) */
|
||||
|
||||
#define RSD_EXTENSION ((RSD_REQUIRED - RSD_FIXED) + 1)
|
||||
#define RSD_NBR (RSD_FIXED + RSD_EXTENSION)
|
||||
|
||||
|
||||
#define FORE200E_DEV(d) ((struct fore200e*)((d)->dev_data))
|
||||
#define FORE200E_VCC(d) ((struct fore200e_vcc*)((d)->dev_data))
|
||||
|
||||
/* bitfields endian games */
|
||||
|
||||
#if defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
#define BITFIELD2(b1, b2) b1; b2;
|
||||
#define BITFIELD3(b1, b2, b3) b1; b2; b3;
|
||||
#define BITFIELD4(b1, b2, b3, b4) b1; b2; b3; b4;
|
||||
#define BITFIELD5(b1, b2, b3, b4, b5) b1; b2; b3; b4; b5;
|
||||
#define BITFIELD6(b1, b2, b3, b4, b5, b6) b1; b2; b3; b4; b5; b6;
|
||||
#elif defined(__BIG_ENDIAN_BITFIELD)
|
||||
#define BITFIELD2(b1, b2) b2; b1;
|
||||
#define BITFIELD3(b1, b2, b3) b3; b2; b1;
|
||||
#define BITFIELD4(b1, b2, b3, b4) b4; b3; b2; b1;
|
||||
#define BITFIELD5(b1, b2, b3, b4, b5) b5; b4; b3; b2; b1;
|
||||
#define BITFIELD6(b1, b2, b3, b4, b5, b6) b6; b5; b4; b3; b2; b1;
|
||||
#else
|
||||
#error unknown bitfield endianess
|
||||
#endif
|
||||
|
||||
|
||||
/* ATM cell header (minus HEC byte) */
|
||||
|
||||
typedef struct atm_header {
|
||||
BITFIELD5(
|
||||
u32 clp : 1, /* cell loss priority */
|
||||
u32 plt : 3, /* payload type */
|
||||
u32 vci : 16, /* virtual channel identifier */
|
||||
u32 vpi : 8, /* virtual path identifier */
|
||||
u32 gfc : 4 /* generic flow control */
|
||||
)
|
||||
} atm_header_t;
|
||||
|
||||
|
||||
/* ATM adaptation layer id */
|
||||
|
||||
typedef enum fore200e_aal {
|
||||
FORE200E_AAL0 = 0,
|
||||
FORE200E_AAL34 = 4,
|
||||
FORE200E_AAL5 = 5,
|
||||
} fore200e_aal_t;
|
||||
|
||||
|
||||
/* transmit PDU descriptor specification */
|
||||
|
||||
typedef struct tpd_spec {
|
||||
BITFIELD4(
|
||||
u32 length : 16, /* total PDU length */
|
||||
u32 nseg : 8, /* number of transmit segments */
|
||||
enum fore200e_aal aal : 4, /* adaptation layer */
|
||||
u32 intr : 4 /* interrupt requested */
|
||||
)
|
||||
} tpd_spec_t;
|
||||
|
||||
|
||||
/* transmit PDU rate control */
|
||||
|
||||
typedef struct tpd_rate
|
||||
{
|
||||
BITFIELD2(
|
||||
u32 idle_cells : 16, /* number of idle cells to insert */
|
||||
u32 data_cells : 16 /* number of data cells to transmit */
|
||||
)
|
||||
} tpd_rate_t;
|
||||
|
||||
|
||||
/* transmit segment descriptor */
|
||||
|
||||
typedef struct tsd {
|
||||
u32 buffer; /* transmit buffer DMA address */
|
||||
u32 length; /* number of bytes in buffer */
|
||||
} tsd_t;
|
||||
|
||||
|
||||
/* transmit PDU descriptor */
|
||||
|
||||
typedef struct tpd {
|
||||
struct atm_header atm_header; /* ATM header minus HEC byte */
|
||||
struct tpd_spec spec; /* tpd specification */
|
||||
struct tpd_rate rate; /* tpd rate control */
|
||||
u32 pad; /* reserved */
|
||||
struct tsd tsd[ TSD_NBR ]; /* transmit segment descriptors */
|
||||
} tpd_t;
|
||||
|
||||
|
||||
/* receive segment descriptor */
|
||||
|
||||
typedef struct rsd {
|
||||
u32 handle; /* host supplied receive buffer handle */
|
||||
u32 length; /* number of bytes in buffer */
|
||||
} rsd_t;
|
||||
|
||||
|
||||
/* receive PDU descriptor */
|
||||
|
||||
typedef struct rpd {
|
||||
struct atm_header atm_header; /* ATM header minus HEC byte */
|
||||
u32 nseg; /* number of receive segments */
|
||||
struct rsd rsd[ RSD_NBR ]; /* receive segment descriptors */
|
||||
} rpd_t;
|
||||
|
||||
|
||||
/* buffer scheme */
|
||||
|
||||
typedef enum buffer_scheme {
|
||||
BUFFER_SCHEME_ONE,
|
||||
BUFFER_SCHEME_TWO,
|
||||
BUFFER_SCHEME_NBR /* always last */
|
||||
} buffer_scheme_t;
|
||||
|
||||
|
||||
/* buffer magnitude */
|
||||
|
||||
typedef enum buffer_magn {
|
||||
BUFFER_MAGN_SMALL,
|
||||
BUFFER_MAGN_LARGE,
|
||||
BUFFER_MAGN_NBR /* always last */
|
||||
} buffer_magn_t;
|
||||
|
||||
|
||||
/* receive buffer descriptor */
|
||||
|
||||
typedef struct rbd {
|
||||
u32 handle; /* host supplied handle */
|
||||
u32 buffer_haddr; /* host DMA address of host buffer */
|
||||
} rbd_t;
|
||||
|
||||
|
||||
/* receive buffer descriptor block */
|
||||
|
||||
typedef struct rbd_block {
|
||||
struct rbd rbd[ RBD_BLK_SIZE ]; /* receive buffer descriptor */
|
||||
} rbd_block_t;
|
||||
|
||||
|
||||
/* tpd DMA address */
|
||||
|
||||
typedef struct tpd_haddr {
|
||||
BITFIELD3(
|
||||
u32 size : 4, /* tpd size expressed in 32 byte blocks */
|
||||
u32 pad : 1, /* reserved */
|
||||
u32 haddr : 27 /* tpd DMA addr aligned on 32 byte boundary */
|
||||
)
|
||||
} tpd_haddr_t;
|
||||
|
||||
#define TPD_HADDR_SHIFT 5 /* addr aligned on 32 byte boundary */
|
||||
|
||||
/* cp resident transmit queue entry */
|
||||
|
||||
typedef struct cp_txq_entry {
|
||||
struct tpd_haddr tpd_haddr; /* host DMA address of tpd */
|
||||
u32 status_haddr; /* host DMA address of completion status */
|
||||
} cp_txq_entry_t;
|
||||
|
||||
|
||||
/* cp resident receive queue entry */
|
||||
|
||||
typedef struct cp_rxq_entry {
|
||||
u32 rpd_haddr; /* host DMA address of rpd */
|
||||
u32 status_haddr; /* host DMA address of completion status */
|
||||
} cp_rxq_entry_t;
|
||||
|
||||
|
||||
/* cp resident buffer supply queue entry */
|
||||
|
||||
typedef struct cp_bsq_entry {
|
||||
u32 rbd_block_haddr; /* host DMA address of rbd block */
|
||||
u32 status_haddr; /* host DMA address of completion status */
|
||||
} cp_bsq_entry_t;
|
||||
|
||||
|
||||
/* completion status */
|
||||
|
||||
typedef volatile enum status {
|
||||
STATUS_PENDING = (1<<0), /* initial status (written by host) */
|
||||
STATUS_COMPLETE = (1<<1), /* completion status (written by cp) */
|
||||
STATUS_FREE = (1<<2), /* initial status (written by host) */
|
||||
STATUS_ERROR = (1<<3) /* completion status (written by cp) */
|
||||
} status_t;
|
||||
|
||||
|
||||
/* cp operation code */
|
||||
|
||||
typedef enum opcode {
|
||||
OPCODE_INITIALIZE = 1, /* initialize board */
|
||||
OPCODE_ACTIVATE_VCIN, /* activate incoming VCI */
|
||||
OPCODE_ACTIVATE_VCOUT, /* activate outgoing VCI */
|
||||
OPCODE_DEACTIVATE_VCIN, /* deactivate incoming VCI */
|
||||
OPCODE_DEACTIVATE_VCOUT, /* deactivate incoing VCI */
|
||||
OPCODE_GET_STATS, /* get board statistics */
|
||||
OPCODE_SET_OC3, /* set OC-3 registers */
|
||||
OPCODE_GET_OC3, /* get OC-3 registers */
|
||||
OPCODE_RESET_STATS, /* reset board statistics */
|
||||
OPCODE_GET_PROM, /* get expansion PROM data (PCI specific) */
|
||||
OPCODE_SET_VPI_BITS, /* set x bits of those decoded by the
|
||||
firmware to be low order bits from
|
||||
the VPI field of the ATM cell header */
|
||||
OPCODE_REQUEST_INTR = (1<<7) /* request interrupt */
|
||||
} opcode_t;
|
||||
|
||||
|
||||
/* virtual path / virtual channel identifers */
|
||||
|
||||
typedef struct vpvc {
|
||||
BITFIELD3(
|
||||
u32 vci : 16, /* virtual channel identifier */
|
||||
u32 vpi : 8, /* virtual path identifier */
|
||||
u32 pad : 8 /* reserved */
|
||||
)
|
||||
} vpvc_t;
|
||||
|
||||
|
||||
/* activate VC command opcode */
|
||||
|
||||
typedef struct activate_opcode {
|
||||
BITFIELD4(
|
||||
enum opcode opcode : 8, /* cp opcode */
|
||||
enum fore200e_aal aal : 8, /* adaptation layer */
|
||||
enum buffer_scheme scheme : 8, /* buffer scheme */
|
||||
u32 pad : 8 /* reserved */
|
||||
)
|
||||
} activate_opcode_t;
|
||||
|
||||
|
||||
/* activate VC command block */
|
||||
|
||||
typedef struct activate_block {
|
||||
struct activate_opcode opcode; /* activate VC command opcode */
|
||||
struct vpvc vpvc; /* VPI/VCI */
|
||||
u32 mtu; /* for AAL0 only */
|
||||
|
||||
} activate_block_t;
|
||||
|
||||
|
||||
/* deactivate VC command opcode */
|
||||
|
||||
typedef struct deactivate_opcode {
|
||||
BITFIELD2(
|
||||
enum opcode opcode : 8, /* cp opcode */
|
||||
u32 pad : 24 /* reserved */
|
||||
)
|
||||
} deactivate_opcode_t;
|
||||
|
||||
|
||||
/* deactivate VC command block */
|
||||
|
||||
typedef struct deactivate_block {
|
||||
struct deactivate_opcode opcode; /* deactivate VC command opcode */
|
||||
struct vpvc vpvc; /* VPI/VCI */
|
||||
} deactivate_block_t;
|
||||
|
||||
|
||||
/* OC-3 registers */
|
||||
|
||||
typedef struct oc3_regs {
|
||||
u32 reg[ 128 ]; /* see the PMC Sierra PC5346 S/UNI-155-Lite
|
||||
Saturn User Network Interface documentation
|
||||
for a description of the OC-3 chip registers */
|
||||
} oc3_regs_t;
|
||||
|
||||
|
||||
/* set/get OC-3 regs command opcode */
|
||||
|
||||
typedef struct oc3_opcode {
|
||||
BITFIELD4(
|
||||
enum opcode opcode : 8, /* cp opcode */
|
||||
u32 reg : 8, /* register index */
|
||||
u32 value : 8, /* register value */
|
||||
u32 mask : 8 /* register mask that specifies which
|
||||
bits of the register value field
|
||||
are significant */
|
||||
)
|
||||
} oc3_opcode_t;
|
||||
|
||||
|
||||
/* set/get OC-3 regs command block */
|
||||
|
||||
typedef struct oc3_block {
|
||||
struct oc3_opcode opcode; /* set/get OC-3 regs command opcode */
|
||||
u32 regs_haddr; /* host DMA address of OC-3 regs buffer */
|
||||
} oc3_block_t;
|
||||
|
||||
|
||||
/* physical encoding statistics */
|
||||
|
||||
typedef struct stats_phy {
|
||||
u32 crc_header_errors; /* cells received with bad header CRC */
|
||||
u32 framing_errors; /* cells received with bad framing */
|
||||
u32 pad[ 2 ]; /* i960 padding */
|
||||
} stats_phy_t;
|
||||
|
||||
|
||||
/* OC-3 statistics */
|
||||
|
||||
typedef struct stats_oc3 {
|
||||
u32 section_bip8_errors; /* section 8 bit interleaved parity */
|
||||
u32 path_bip8_errors; /* path 8 bit interleaved parity */
|
||||
u32 line_bip24_errors; /* line 24 bit interleaved parity */
|
||||
u32 line_febe_errors; /* line far end block errors */
|
||||
u32 path_febe_errors; /* path far end block errors */
|
||||
u32 corr_hcs_errors; /* correctable header check sequence */
|
||||
u32 ucorr_hcs_errors; /* uncorrectable header check sequence */
|
||||
u32 pad[ 1 ]; /* i960 padding */
|
||||
} stats_oc3_t;
|
||||
|
||||
|
||||
/* ATM statistics */
|
||||
|
||||
typedef struct stats_atm {
|
||||
u32 cells_transmitted; /* cells transmitted */
|
||||
u32 cells_received; /* cells received */
|
||||
u32 vpi_bad_range; /* cell drops: VPI out of range */
|
||||
u32 vpi_no_conn; /* cell drops: no connection for VPI */
|
||||
u32 vci_bad_range; /* cell drops: VCI out of range */
|
||||
u32 vci_no_conn; /* cell drops: no connection for VCI */
|
||||
u32 pad[ 2 ]; /* i960 padding */
|
||||
} stats_atm_t;
|
||||
|
||||
/* AAL0 statistics */
|
||||
|
||||
typedef struct stats_aal0 {
|
||||
u32 cells_transmitted; /* cells transmitted */
|
||||
u32 cells_received; /* cells received */
|
||||
u32 cells_dropped; /* cells dropped */
|
||||
u32 pad[ 1 ]; /* i960 padding */
|
||||
} stats_aal0_t;
|
||||
|
||||
|
||||
/* AAL3/4 statistics */
|
||||
|
||||
typedef struct stats_aal34 {
|
||||
u32 cells_transmitted; /* cells transmitted from segmented PDUs */
|
||||
u32 cells_received; /* cells reassembled into PDUs */
|
||||
u32 cells_crc_errors; /* payload CRC error count */
|
||||
u32 cells_protocol_errors; /* SAR or CS layer protocol errors */
|
||||
u32 cells_dropped; /* cells dropped: partial reassembly */
|
||||
u32 cspdus_transmitted; /* CS PDUs transmitted */
|
||||
u32 cspdus_received; /* CS PDUs received */
|
||||
u32 cspdus_protocol_errors; /* CS layer protocol errors */
|
||||
u32 cspdus_dropped; /* reassembled PDUs drop'd (in cells) */
|
||||
u32 pad[ 3 ]; /* i960 padding */
|
||||
} stats_aal34_t;
|
||||
|
||||
|
||||
/* AAL5 statistics */
|
||||
|
||||
typedef struct stats_aal5 {
|
||||
u32 cells_transmitted; /* cells transmitted from segmented SDUs */
|
||||
u32 cells_received; /* cells reassembled into SDUs */
|
||||
u32 cells_dropped; /* reassembled PDUs dropped (in cells) */
|
||||
u32 congestion_experienced; /* CRC error and length wrong */
|
||||
u32 cspdus_transmitted; /* CS PDUs transmitted */
|
||||
u32 cspdus_received; /* CS PDUs received */
|
||||
u32 cspdus_crc_errors; /* CS PDUs CRC errors */
|
||||
u32 cspdus_protocol_errors; /* CS layer protocol errors */
|
||||
u32 cspdus_dropped; /* reassembled PDUs dropped */
|
||||
u32 pad[ 3 ]; /* i960 padding */
|
||||
} stats_aal5_t;
|
||||
|
||||
|
||||
/* auxiliary statistics */
|
||||
|
||||
typedef struct stats_aux {
|
||||
u32 small_b1_failed; /* receive BD allocation failures */
|
||||
u32 large_b1_failed; /* receive BD allocation failures */
|
||||
u32 small_b2_failed; /* receive BD allocation failures */
|
||||
u32 large_b2_failed; /* receive BD allocation failures */
|
||||
u32 rpd_alloc_failed; /* receive PDU allocation failures */
|
||||
u32 receive_carrier; /* no carrier = 0, carrier = 1 */
|
||||
u32 pad[ 2 ]; /* i960 padding */
|
||||
} stats_aux_t;
|
||||
|
||||
|
||||
/* whole statistics buffer */
|
||||
|
||||
typedef struct stats {
|
||||
struct stats_phy phy; /* physical encoding statistics */
|
||||
struct stats_oc3 oc3; /* OC-3 statistics */
|
||||
struct stats_atm atm; /* ATM statistics */
|
||||
struct stats_aal0 aal0; /* AAL0 statistics */
|
||||
struct stats_aal34 aal34; /* AAL3/4 statistics */
|
||||
struct stats_aal5 aal5; /* AAL5 statistics */
|
||||
struct stats_aux aux; /* auxiliary statistics */
|
||||
} stats_t;
|
||||
|
||||
|
||||
/* get statistics command opcode */
|
||||
|
||||
typedef struct stats_opcode {
|
||||
BITFIELD2(
|
||||
enum opcode opcode : 8, /* cp opcode */
|
||||
u32 pad : 24 /* reserved */
|
||||
)
|
||||
} stats_opcode_t;
|
||||
|
||||
|
||||
/* get statistics command block */
|
||||
|
||||
typedef struct stats_block {
|
||||
struct stats_opcode opcode; /* get statistics command opcode */
|
||||
u32 stats_haddr; /* host DMA address of stats buffer */
|
||||
} stats_block_t;
|
||||
|
||||
|
||||
/* expansion PROM data (PCI specific) */
|
||||
|
||||
typedef struct prom_data {
|
||||
u32 hw_revision; /* hardware revision */
|
||||
u32 serial_number; /* board serial number */
|
||||
u8 mac_addr[ 8 ]; /* board MAC address */
|
||||
} prom_data_t;
|
||||
|
||||
|
||||
/* get expansion PROM data command opcode */
|
||||
|
||||
typedef struct prom_opcode {
|
||||
BITFIELD2(
|
||||
enum opcode opcode : 8, /* cp opcode */
|
||||
u32 pad : 24 /* reserved */
|
||||
)
|
||||
} prom_opcode_t;
|
||||
|
||||
|
||||
/* get expansion PROM data command block */
|
||||
|
||||
typedef struct prom_block {
|
||||
struct prom_opcode opcode; /* get PROM data command opcode */
|
||||
u32 prom_haddr; /* host DMA address of PROM buffer */
|
||||
} prom_block_t;
|
||||
|
||||
|
||||
/* cp command */
|
||||
|
||||
typedef union cmd {
|
||||
enum opcode opcode; /* operation code */
|
||||
struct activate_block activate_block; /* activate VC */
|
||||
struct deactivate_block deactivate_block; /* deactivate VC */
|
||||
struct stats_block stats_block; /* get statistics */
|
||||
struct prom_block prom_block; /* get expansion PROM data */
|
||||
struct oc3_block oc3_block; /* get/set OC-3 registers */
|
||||
u32 pad[ 4 ]; /* i960 padding */
|
||||
} cmd_t;
|
||||
|
||||
|
||||
/* cp resident command queue */
|
||||
|
||||
typedef struct cp_cmdq_entry {
|
||||
union cmd cmd; /* command */
|
||||
u32 status_haddr; /* host DMA address of completion status */
|
||||
u32 pad[ 3 ]; /* i960 padding */
|
||||
} cp_cmdq_entry_t;
|
||||
|
||||
|
||||
/* host resident transmit queue entry */
|
||||
|
||||
typedef struct host_txq_entry {
|
||||
struct cp_txq_entry __iomem *cp_entry; /* addr of cp resident tx queue entry */
|
||||
enum status* status; /* addr of host resident status */
|
||||
struct tpd* tpd; /* addr of transmit PDU descriptor */
|
||||
u32 tpd_dma; /* DMA address of tpd */
|
||||
struct sk_buff* skb; /* related skb */
|
||||
void* data; /* copy of misaligned data */
|
||||
unsigned long incarn; /* vc_map incarnation when submitted for tx */
|
||||
struct fore200e_vc_map* vc_map;
|
||||
|
||||
} host_txq_entry_t;
|
||||
|
||||
|
||||
/* host resident receive queue entry */
|
||||
|
||||
typedef struct host_rxq_entry {
|
||||
struct cp_rxq_entry __iomem *cp_entry; /* addr of cp resident rx queue entry */
|
||||
enum status* status; /* addr of host resident status */
|
||||
struct rpd* rpd; /* addr of receive PDU descriptor */
|
||||
u32 rpd_dma; /* DMA address of rpd */
|
||||
} host_rxq_entry_t;
|
||||
|
||||
|
||||
/* host resident buffer supply queue entry */
|
||||
|
||||
typedef struct host_bsq_entry {
|
||||
struct cp_bsq_entry __iomem *cp_entry; /* addr of cp resident buffer supply queue entry */
|
||||
enum status* status; /* addr of host resident status */
|
||||
struct rbd_block* rbd_block; /* addr of receive buffer descriptor block */
|
||||
u32 rbd_block_dma; /* DMA address od rdb */
|
||||
} host_bsq_entry_t;
|
||||
|
||||
|
||||
/* host resident command queue entry */
|
||||
|
||||
typedef struct host_cmdq_entry {
|
||||
struct cp_cmdq_entry __iomem *cp_entry; /* addr of cp resident cmd queue entry */
|
||||
enum status *status; /* addr of host resident status */
|
||||
} host_cmdq_entry_t;
|
||||
|
||||
|
||||
/* chunk of memory */
|
||||
|
||||
typedef struct chunk {
|
||||
void* alloc_addr; /* base address of allocated chunk */
|
||||
void* align_addr; /* base address of aligned chunk */
|
||||
dma_addr_t dma_addr; /* DMA address of aligned chunk */
|
||||
int direction; /* direction of DMA mapping */
|
||||
u32 alloc_size; /* length of allocated chunk */
|
||||
u32 align_size; /* length of aligned chunk */
|
||||
} chunk_t;
|
||||
|
||||
#define dma_size align_size /* DMA useable size */
|
||||
|
||||
|
||||
/* host resident receive buffer */
|
||||
|
||||
typedef struct buffer {
|
||||
struct buffer* next; /* next receive buffer */
|
||||
enum buffer_scheme scheme; /* buffer scheme */
|
||||
enum buffer_magn magn; /* buffer magnitude */
|
||||
struct chunk data; /* data buffer */
|
||||
#ifdef FORE200E_BSQ_DEBUG
|
||||
unsigned long index; /* buffer # in queue */
|
||||
int supplied; /* 'buffer supplied' flag */
|
||||
#endif
|
||||
} buffer_t;
|
||||
|
||||
|
||||
#if (BITS_PER_LONG == 32)
|
||||
#define FORE200E_BUF2HDL(buffer) ((u32)(buffer))
|
||||
#define FORE200E_HDL2BUF(handle) ((struct buffer*)(handle))
|
||||
#else /* deal with 64 bit pointers */
|
||||
#define FORE200E_BUF2HDL(buffer) ((u32)((u64)(buffer)))
|
||||
#define FORE200E_HDL2BUF(handle) ((struct buffer*)(((u64)(handle)) | PAGE_OFFSET))
|
||||
#endif
|
||||
|
||||
|
||||
/* host resident command queue */
|
||||
|
||||
typedef struct host_cmdq {
|
||||
struct host_cmdq_entry host_entry[ QUEUE_SIZE_CMD ]; /* host resident cmd queue entries */
|
||||
int head; /* head of cmd queue */
|
||||
struct chunk status; /* array of completion status */
|
||||
} host_cmdq_t;
|
||||
|
||||
|
||||
/* host resident transmit queue */
|
||||
|
||||
typedef struct host_txq {
|
||||
struct host_txq_entry host_entry[ QUEUE_SIZE_TX ]; /* host resident tx queue entries */
|
||||
int head; /* head of tx queue */
|
||||
int tail; /* tail of tx queue */
|
||||
struct chunk tpd; /* array of tpds */
|
||||
struct chunk status; /* arry of completion status */
|
||||
int txing; /* number of pending PDUs in tx queue */
|
||||
} host_txq_t;
|
||||
|
||||
|
||||
/* host resident receive queue */
|
||||
|
||||
typedef struct host_rxq {
|
||||
struct host_rxq_entry host_entry[ QUEUE_SIZE_RX ]; /* host resident rx queue entries */
|
||||
int head; /* head of rx queue */
|
||||
struct chunk rpd; /* array of rpds */
|
||||
struct chunk status; /* array of completion status */
|
||||
} host_rxq_t;
|
||||
|
||||
|
||||
/* host resident buffer supply queues */
|
||||
|
||||
typedef struct host_bsq {
|
||||
struct host_bsq_entry host_entry[ QUEUE_SIZE_BS ]; /* host resident buffer supply queue entries */
|
||||
int head; /* head of buffer supply queue */
|
||||
struct chunk rbd_block; /* array of rbds */
|
||||
struct chunk status; /* array of completion status */
|
||||
struct buffer* buffer; /* array of rx buffers */
|
||||
struct buffer* freebuf; /* list of free rx buffers */
|
||||
volatile int freebuf_count; /* count of free rx buffers */
|
||||
} host_bsq_t;
|
||||
|
||||
|
||||
/* header of the firmware image */
|
||||
|
||||
typedef struct fw_header {
|
||||
u32 magic; /* magic number */
|
||||
u32 version; /* firmware version id */
|
||||
u32 load_offset; /* fw load offset in board memory */
|
||||
u32 start_offset; /* fw execution start address in board memory */
|
||||
} fw_header_t;
|
||||
|
||||
#define FW_HEADER_MAGIC 0x65726f66 /* 'fore' */
|
||||
|
||||
|
||||
/* receive buffer supply queues scheme specification */
|
||||
|
||||
typedef struct bs_spec {
|
||||
u32 queue_length; /* queue capacity */
|
||||
u32 buffer_size; /* host buffer size */
|
||||
u32 pool_size; /* number of rbds */
|
||||
u32 supply_blksize; /* num of rbds in I/O block (multiple
|
||||
of 4 between 4 and 124 inclusive) */
|
||||
} bs_spec_t;
|
||||
|
||||
|
||||
/* initialization command block (one-time command, not in cmd queue) */
|
||||
|
||||
typedef struct init_block {
|
||||
enum opcode opcode; /* initialize command */
|
||||
enum status status; /* related status word */
|
||||
u32 receive_threshold; /* not used */
|
||||
u32 num_connect; /* ATM connections */
|
||||
u32 cmd_queue_len; /* length of command queue */
|
||||
u32 tx_queue_len; /* length of transmit queue */
|
||||
u32 rx_queue_len; /* length of receive queue */
|
||||
u32 rsd_extension; /* number of extra 32 byte blocks */
|
||||
u32 tsd_extension; /* number of extra 32 byte blocks */
|
||||
u32 conless_vpvc; /* not used */
|
||||
u32 pad[ 2 ]; /* force quad alignment */
|
||||
struct bs_spec bs_spec[ BUFFER_SCHEME_NBR ][ BUFFER_MAGN_NBR ]; /* buffer supply queues spec */
|
||||
} init_block_t;
|
||||
|
||||
|
||||
typedef enum media_type {
|
||||
MEDIA_TYPE_CAT5_UTP = 0x06, /* unshielded twisted pair */
|
||||
MEDIA_TYPE_MM_OC3_ST = 0x16, /* multimode fiber ST */
|
||||
MEDIA_TYPE_MM_OC3_SC = 0x26, /* multimode fiber SC */
|
||||
MEDIA_TYPE_SM_OC3_ST = 0x36, /* single-mode fiber ST */
|
||||
MEDIA_TYPE_SM_OC3_SC = 0x46 /* single-mode fiber SC */
|
||||
} media_type_t;
|
||||
|
||||
#define FORE200E_MEDIA_INDEX(media_type) ((media_type)>>4)
|
||||
|
||||
|
||||
/* cp resident queues */
|
||||
|
||||
typedef struct cp_queues {
|
||||
u32 cp_cmdq; /* command queue */
|
||||
u32 cp_txq; /* transmit queue */
|
||||
u32 cp_rxq; /* receive queue */
|
||||
u32 cp_bsq[ BUFFER_SCHEME_NBR ][ BUFFER_MAGN_NBR ]; /* buffer supply queues */
|
||||
u32 imask; /* 1 enables cp to host interrupts */
|
||||
u32 istat; /* 1 for interrupt posted */
|
||||
u32 heap_base; /* offset form beginning of ram */
|
||||
u32 heap_size; /* space available for queues */
|
||||
u32 hlogger; /* non zero for host logging */
|
||||
u32 heartbeat; /* cp heartbeat */
|
||||
u32 fw_release; /* firmware version */
|
||||
u32 mon960_release; /* i960 monitor version */
|
||||
u32 tq_plen; /* transmit throughput measurements */
|
||||
/* make sure the init block remains on a quad word boundary */
|
||||
struct init_block init; /* one time cmd, not in cmd queue */
|
||||
enum media_type media_type; /* media type id */
|
||||
u32 oc3_revision; /* OC-3 revision number */
|
||||
} cp_queues_t;
|
||||
|
||||
|
||||
/* boot status */
|
||||
|
||||
typedef enum boot_status {
|
||||
BSTAT_COLD_START = (u32) 0xc01dc01d, /* cold start */
|
||||
BSTAT_SELFTEST_OK = (u32) 0x02201958, /* self-test ok */
|
||||
BSTAT_SELFTEST_FAIL = (u32) 0xadbadbad, /* self-test failed */
|
||||
BSTAT_CP_RUNNING = (u32) 0xce11feed, /* cp is running */
|
||||
BSTAT_MON_TOO_BIG = (u32) 0x10aded00 /* i960 monitor is too big */
|
||||
} boot_status_t;
|
||||
|
||||
|
||||
/* software UART */
|
||||
|
||||
typedef struct soft_uart {
|
||||
u32 send; /* write register */
|
||||
u32 recv; /* read register */
|
||||
} soft_uart_t;
|
||||
|
||||
#define FORE200E_CP_MONITOR_UART_FREE 0x00000000
|
||||
#define FORE200E_CP_MONITOR_UART_AVAIL 0x01000000
|
||||
|
||||
|
||||
/* i960 monitor */
|
||||
|
||||
typedef struct cp_monitor {
|
||||
struct soft_uart soft_uart; /* software UART */
|
||||
enum boot_status bstat; /* boot status */
|
||||
u32 app_base; /* application base offset */
|
||||
u32 mon_version; /* i960 monitor version */
|
||||
} cp_monitor_t;
|
||||
|
||||
|
||||
/* device state */
|
||||
|
||||
typedef enum fore200e_state {
|
||||
FORE200E_STATE_BLANK, /* initial state */
|
||||
FORE200E_STATE_REGISTER, /* device registered */
|
||||
FORE200E_STATE_CONFIGURE, /* bus interface configured */
|
||||
FORE200E_STATE_MAP, /* board space mapped in host memory */
|
||||
FORE200E_STATE_RESET, /* board resetted */
|
||||
FORE200E_STATE_LOAD_FW, /* firmware loaded */
|
||||
FORE200E_STATE_START_FW, /* firmware started */
|
||||
FORE200E_STATE_INITIALIZE, /* initialize command successful */
|
||||
FORE200E_STATE_INIT_CMDQ, /* command queue initialized */
|
||||
FORE200E_STATE_INIT_TXQ, /* transmit queue initialized */
|
||||
FORE200E_STATE_INIT_RXQ, /* receive queue initialized */
|
||||
FORE200E_STATE_INIT_BSQ, /* buffer supply queue initialized */
|
||||
FORE200E_STATE_ALLOC_BUF, /* receive buffers allocated */
|
||||
FORE200E_STATE_IRQ, /* host interrupt requested */
|
||||
FORE200E_STATE_COMPLETE /* initialization completed */
|
||||
} fore200e_state;
|
||||
|
||||
|
||||
/* PCA-200E registers */
|
||||
|
||||
typedef struct fore200e_pca_regs {
|
||||
volatile u32 __iomem * hcr; /* address of host control register */
|
||||
volatile u32 __iomem * imr; /* address of host interrupt mask register */
|
||||
volatile u32 __iomem * psr; /* address of PCI specific register */
|
||||
} fore200e_pca_regs_t;
|
||||
|
||||
|
||||
/* SBA-200E registers */
|
||||
|
||||
typedef struct fore200e_sba_regs {
|
||||
volatile u32 __iomem *hcr; /* address of host control register */
|
||||
volatile u32 __iomem *bsr; /* address of burst transfer size register */
|
||||
volatile u32 __iomem *isr; /* address of interrupt level selection register */
|
||||
} fore200e_sba_regs_t;
|
||||
|
||||
|
||||
/* model-specific registers */
|
||||
|
||||
typedef union fore200e_regs {
|
||||
struct fore200e_pca_regs pca; /* PCA-200E registers */
|
||||
struct fore200e_sba_regs sba; /* SBA-200E registers */
|
||||
} fore200e_regs;
|
||||
|
||||
|
||||
struct fore200e;
|
||||
|
||||
/* bus-dependent data */
|
||||
|
||||
typedef struct fore200e_bus {
|
||||
char* model_name; /* board model name */
|
||||
char* proc_name; /* board name under /proc/atm */
|
||||
int descr_alignment; /* tpd/rpd/rbd DMA alignment requirement */
|
||||
int buffer_alignment; /* rx buffers DMA alignment requirement */
|
||||
int status_alignment; /* status words DMA alignment requirement */
|
||||
const unsigned char* fw_data; /* address of firmware data start */
|
||||
const unsigned int* fw_size; /* address of firmware data size */
|
||||
u32 (*read)(volatile u32 __iomem *);
|
||||
void (*write)(u32, volatile u32 __iomem *);
|
||||
u32 (*dma_map)(struct fore200e*, void*, int, int);
|
||||
void (*dma_unmap)(struct fore200e*, u32, int, int);
|
||||
void (*dma_sync_for_cpu)(struct fore200e*, u32, int, int);
|
||||
void (*dma_sync_for_device)(struct fore200e*, u32, int, int);
|
||||
int (*dma_chunk_alloc)(struct fore200e*, struct chunk*, int, int, int);
|
||||
void (*dma_chunk_free)(struct fore200e*, struct chunk*);
|
||||
struct fore200e* (*detect)(const struct fore200e_bus*, int);
|
||||
int (*configure)(struct fore200e*);
|
||||
int (*map)(struct fore200e*);
|
||||
void (*reset)(struct fore200e*);
|
||||
int (*prom_read)(struct fore200e*, struct prom_data*);
|
||||
void (*unmap)(struct fore200e*);
|
||||
void (*irq_enable)(struct fore200e*);
|
||||
int (*irq_check)(struct fore200e*);
|
||||
void (*irq_ack)(struct fore200e*);
|
||||
int (*proc_read)(struct fore200e*, char*);
|
||||
} fore200e_bus_t;
|
||||
|
||||
/* vc mapping */
|
||||
|
||||
typedef struct fore200e_vc_map {
|
||||
struct atm_vcc* vcc; /* vcc entry */
|
||||
unsigned long incarn; /* vcc incarnation number */
|
||||
} fore200e_vc_map_t;
|
||||
|
||||
#define FORE200E_VC_MAP(fore200e, vpi, vci) \
|
||||
(& (fore200e)->vc_map[ ((vpi) << FORE200E_VCI_BITS) | (vci) ])
|
||||
|
||||
|
||||
/* per-device data */
|
||||
|
||||
typedef struct fore200e {
|
||||
struct list_head entry; /* next device */
|
||||
const struct fore200e_bus* bus; /* bus-dependent code and data */
|
||||
union fore200e_regs regs; /* bus-dependent registers */
|
||||
struct atm_dev* atm_dev; /* ATM device */
|
||||
|
||||
enum fore200e_state state; /* device state */
|
||||
|
||||
char name[16]; /* device name */
|
||||
void* bus_dev; /* bus-specific kernel data */
|
||||
int irq; /* irq number */
|
||||
unsigned long phys_base; /* physical base address */
|
||||
void __iomem * virt_base; /* virtual base address */
|
||||
|
||||
unsigned char esi[ ESI_LEN ]; /* end system identifier */
|
||||
|
||||
struct cp_monitor __iomem * cp_monitor; /* i960 monitor address */
|
||||
struct cp_queues __iomem * cp_queues; /* cp resident queues */
|
||||
struct host_cmdq host_cmdq; /* host resident cmd queue */
|
||||
struct host_txq host_txq; /* host resident tx queue */
|
||||
struct host_rxq host_rxq; /* host resident rx queue */
|
||||
/* host resident buffer supply queues */
|
||||
struct host_bsq host_bsq[ BUFFER_SCHEME_NBR ][ BUFFER_MAGN_NBR ];
|
||||
|
||||
u32 available_cell_rate; /* remaining pseudo-CBR bw on link */
|
||||
|
||||
int loop_mode; /* S/UNI loopback mode */
|
||||
|
||||
struct stats* stats; /* last snapshot of the stats */
|
||||
|
||||
struct semaphore rate_sf; /* protects rate reservation ops */
|
||||
spinlock_t q_lock; /* protects queue ops */
|
||||
#ifdef FORE200E_USE_TASKLET
|
||||
struct tasklet_struct tx_tasklet; /* performs tx interrupt work */
|
||||
struct tasklet_struct rx_tasklet; /* performs rx interrupt work */
|
||||
#endif
|
||||
unsigned long tx_sat; /* tx queue saturation count */
|
||||
|
||||
unsigned long incarn_count;
|
||||
struct fore200e_vc_map vc_map[ NBR_CONNECT ]; /* vc mapping */
|
||||
} fore200e_t;
|
||||
|
||||
|
||||
/* per-vcc data */
|
||||
|
||||
typedef struct fore200e_vcc {
|
||||
enum buffer_scheme scheme; /* rx buffer scheme */
|
||||
struct tpd_rate rate; /* tx rate control data */
|
||||
int rx_min_pdu; /* size of smallest PDU received */
|
||||
int rx_max_pdu; /* size of largest PDU received */
|
||||
int tx_min_pdu; /* size of smallest PDU transmitted */
|
||||
int tx_max_pdu; /* size of largest PDU transmitted */
|
||||
unsigned long tx_pdu; /* nbr of tx pdus */
|
||||
unsigned long rx_pdu; /* nbr of rx pdus */
|
||||
} fore200e_vcc_t;
|
||||
|
||||
|
||||
|
||||
/* 200E-series common memory layout */
|
||||
|
||||
#define FORE200E_CP_MONITOR_OFFSET 0x00000400 /* i960 monitor interface */
|
||||
#define FORE200E_CP_QUEUES_OFFSET 0x00004d40 /* cp resident queues */
|
||||
|
||||
|
||||
/* PCA-200E memory layout */
|
||||
|
||||
#define PCA200E_IOSPACE_LENGTH 0x00200000
|
||||
|
||||
#define PCA200E_HCR_OFFSET 0x00100000 /* board control register */
|
||||
#define PCA200E_IMR_OFFSET 0x00100004 /* host IRQ mask register */
|
||||
#define PCA200E_PSR_OFFSET 0x00100008 /* PCI specific register */
|
||||
|
||||
|
||||
/* PCA-200E host control register */
|
||||
|
||||
#define PCA200E_HCR_RESET (1<<0) /* read / write */
|
||||
#define PCA200E_HCR_HOLD_LOCK (1<<1) /* read / write */
|
||||
#define PCA200E_HCR_I960FAIL (1<<2) /* read */
|
||||
#define PCA200E_HCR_INTRB (1<<2) /* write */
|
||||
#define PCA200E_HCR_HOLD_ACK (1<<3) /* read */
|
||||
#define PCA200E_HCR_INTRA (1<<3) /* write */
|
||||
#define PCA200E_HCR_OUTFULL (1<<4) /* read */
|
||||
#define PCA200E_HCR_CLRINTR (1<<4) /* write */
|
||||
#define PCA200E_HCR_ESPHOLD (1<<5) /* read */
|
||||
#define PCA200E_HCR_INFULL (1<<6) /* read */
|
||||
#define PCA200E_HCR_TESTMODE (1<<7) /* read */
|
||||
|
||||
|
||||
/* PCA-200E PCI bus interface regs (offsets in PCI config space) */
|
||||
|
||||
#define PCA200E_PCI_LATENCY 0x40 /* maximum slave latenty */
|
||||
#define PCA200E_PCI_MASTER_CTRL 0x41 /* master control */
|
||||
#define PCA200E_PCI_THRESHOLD 0x42 /* burst / continous req threshold */
|
||||
|
||||
/* PBI master control register */
|
||||
|
||||
#define PCA200E_CTRL_DIS_CACHE_RD (1<<0) /* disable cache-line reads */
|
||||
#define PCA200E_CTRL_DIS_WRT_INVAL (1<<1) /* disable writes and invalidates */
|
||||
#define PCA200E_CTRL_2_CACHE_WRT_INVAL (1<<2) /* require 2 cache-lines for writes and invalidates */
|
||||
#define PCA200E_CTRL_IGN_LAT_TIMER (1<<3) /* ignore the latency timer */
|
||||
#define PCA200E_CTRL_ENA_CONT_REQ_MODE (1<<4) /* enable continuous request mode */
|
||||
#define PCA200E_CTRL_LARGE_PCI_BURSTS (1<<5) /* force large PCI bus bursts */
|
||||
#define PCA200E_CTRL_CONVERT_ENDIAN (1<<6) /* convert endianess of slave RAM accesses */
|
||||
|
||||
|
||||
|
||||
#define SBA200E_PROM_NAME "FORE,sba-200e" /* device name in openprom tree */
|
||||
|
||||
|
||||
/* size of SBA-200E registers */
|
||||
|
||||
#define SBA200E_HCR_LENGTH 4
|
||||
#define SBA200E_BSR_LENGTH 4
|
||||
#define SBA200E_ISR_LENGTH 4
|
||||
#define SBA200E_RAM_LENGTH 0x40000
|
||||
|
||||
|
||||
/* SBA-200E SBUS burst transfer size register */
|
||||
|
||||
#define SBA200E_BSR_BURST4 0x04
|
||||
#define SBA200E_BSR_BURST8 0x08
|
||||
#define SBA200E_BSR_BURST16 0x10
|
||||
|
||||
|
||||
/* SBA-200E host control register */
|
||||
|
||||
#define SBA200E_HCR_RESET (1<<0) /* read / write (sticky) */
|
||||
#define SBA200E_HCR_HOLD_LOCK (1<<1) /* read / write (sticky) */
|
||||
#define SBA200E_HCR_I960FAIL (1<<2) /* read */
|
||||
#define SBA200E_HCR_I960SETINTR (1<<2) /* write */
|
||||
#define SBA200E_HCR_OUTFULL (1<<3) /* read */
|
||||
#define SBA200E_HCR_INTR_CLR (1<<3) /* write */
|
||||
#define SBA200E_HCR_INTR_ENA (1<<4) /* read / write (sticky) */
|
||||
#define SBA200E_HCR_ESPHOLD (1<<5) /* read */
|
||||
#define SBA200E_HCR_INFULL (1<<6) /* read */
|
||||
#define SBA200E_HCR_TESTMODE (1<<7) /* read */
|
||||
#define SBA200E_HCR_INTR_REQ (1<<8) /* read */
|
||||
|
||||
#define SBA200E_HCR_STICKY (SBA200E_HCR_RESET | SBA200E_HCR_HOLD_LOCK | SBA200E_HCR_INTR_ENA)
|
||||
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* _FORE200E_H */
|
||||
31
drivers/atm/fore200e_firmware_copyright
Normal file
31
drivers/atm/fore200e_firmware_copyright
Normal file
@@ -0,0 +1,31 @@
|
||||
|
||||
These microcode data are placed under the terms of the GNU General Public License.
|
||||
|
||||
We would prefer you not to distribute modified versions of it and not to ask
|
||||
for assembly or other microcode source.
|
||||
|
||||
Copyright (c) 1995-2000 FORE Systems, Inc., as an unpublished work. This
|
||||
notice does not imply unrestricted or public access to these materials which
|
||||
are a trade secret of FORE Systems, Inc. or its subsidiaries or affiliates
|
||||
(together referred to as "FORE"), and which may not be reproduced, used, sold
|
||||
or transferred to any third party without FORE's prior written consent. All
|
||||
rights reserved.
|
||||
|
||||
U.S. Government Restricted Rights. If you are licensing the Software on
|
||||
behalf of the U.S. Government ("Government"), the following provisions apply
|
||||
to you. If the software is supplied to the Department of Defense ("DoD"), it
|
||||
is classified as "Commercial Computer Software" under paragraph 252.227-7014
|
||||
of the DoD Supplement to the Federal Acquisition Regulations ("DFARS") (or any
|
||||
successor regulations) and the Government is acquiring only the license
|
||||
rights granted herein (the license rights customarily provided to non-Government
|
||||
users). If the Software is supplied to any unit or agency of the Government
|
||||
other than the DoD, it is classified as "Restricted Computer Software" and
|
||||
the Government's rights in the Software are defined in paragraph 52.227-19 of
|
||||
the Federal Acquisition Regulations ("FAR") (or any successor regulations) or,
|
||||
in the cases of NASA, in paragraph 18.52.227-86 of the NASA Supplement to the FAR
|
||||
(or any successor regulations).
|
||||
|
||||
FORE Systems is a registered trademark, and ForeRunner, ForeRunnerLE, and
|
||||
ForeThought are trademarks of FORE Systems, Inc. All other brands or product
|
||||
names are trademarks or registered trademarks of their respective holders.
|
||||
|
||||
156
drivers/atm/fore200e_mkfirm.c
Normal file
156
drivers/atm/fore200e_mkfirm.c
Normal file
@@ -0,0 +1,156 @@
|
||||
/*
|
||||
$Id: fore200e_mkfirm.c,v 1.1 2000/02/21 16:04:32 davem Exp $
|
||||
|
||||
mkfirm.c: generates a C readable file from a binary firmware image
|
||||
|
||||
Christophe Lizzi (lizzi@{csti.fr, cnam.fr}), June 1999.
|
||||
|
||||
This software may be used and distributed according to the terms
|
||||
of the GNU General Public License, incorporated herein by reference.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/types.h>
|
||||
#include <time.h>
|
||||
|
||||
char* default_basename = "pca200e"; /* was initially written for the PCA-200E firmware */
|
||||
char* default_infname = "<stdin>";
|
||||
char* default_outfname = "<stdout>";
|
||||
|
||||
char* progname;
|
||||
int verbose = 0;
|
||||
int inkernel = 0;
|
||||
|
||||
|
||||
void usage(void)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"%s: [-v] [-k] [-b basename ] [-i firmware.bin] [-o firmware.c]\n",
|
||||
progname);
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
time_t now;
|
||||
char* infname = NULL;
|
||||
char* outfname = NULL;
|
||||
char* basename = NULL;
|
||||
FILE* infile;
|
||||
FILE* outfile;
|
||||
unsigned firmsize;
|
||||
int c;
|
||||
|
||||
progname = *(argv++);
|
||||
|
||||
while (argc > 1) {
|
||||
if ((*argv)[0] == '-') {
|
||||
switch ((*argv)[1]) {
|
||||
case 'i':
|
||||
if (argc-- < 3)
|
||||
usage();
|
||||
infname = *(++argv);
|
||||
break;
|
||||
case 'o':
|
||||
if (argc-- < 3)
|
||||
usage();
|
||||
outfname = *(++argv);
|
||||
break;
|
||||
case 'b':
|
||||
if (argc-- < 3)
|
||||
usage();
|
||||
basename = *(++argv);
|
||||
break;
|
||||
case 'v':
|
||||
verbose = 1;
|
||||
break;
|
||||
case 'k':
|
||||
inkernel = 1;
|
||||
break;
|
||||
default:
|
||||
usage();
|
||||
}
|
||||
}
|
||||
else {
|
||||
usage();
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
}
|
||||
|
||||
if (infname != NULL) {
|
||||
infile = fopen(infname, "r");
|
||||
if (infile == NULL) {
|
||||
fprintf(stderr, "%s: can't open %s for reading\n",
|
||||
progname, infname);
|
||||
exit(-2);
|
||||
}
|
||||
}
|
||||
else {
|
||||
infile = stdin;
|
||||
infname = default_infname;
|
||||
}
|
||||
|
||||
if (outfname) {
|
||||
outfile = fopen(outfname, "w");
|
||||
if (outfile == NULL) {
|
||||
fprintf(stderr, "%s: can't open %s for writing\n",
|
||||
progname, outfname);
|
||||
exit(-3);
|
||||
}
|
||||
}
|
||||
else {
|
||||
outfile = stdout;
|
||||
outfname = default_outfname;
|
||||
}
|
||||
|
||||
if (basename == NULL)
|
||||
basename = default_basename;
|
||||
|
||||
if (verbose) {
|
||||
fprintf(stderr, "%s: input file = %s\n", progname, infname );
|
||||
fprintf(stderr, "%s: output file = %s\n", progname, outfname );
|
||||
fprintf(stderr, "%s: firmware basename = %s\n", progname, basename );
|
||||
}
|
||||
|
||||
time(&now);
|
||||
fprintf(outfile, "/*\n generated by %s from %s on %s"
|
||||
" DO NOT EDIT!\n*/\n\n",
|
||||
progname, infname, ctime(&now));
|
||||
|
||||
if (inkernel)
|
||||
fprintf(outfile, "#include <linux/init.h>\n\n" );
|
||||
|
||||
/* XXX force 32 bit alignment? */
|
||||
fprintf(outfile, "const unsigned char%s %s_data[] = {\n",
|
||||
inkernel ? " __initdata" : "", basename );
|
||||
|
||||
c = getc(infile);
|
||||
fprintf(outfile,"\t0x%02x", c);
|
||||
firmsize = 1;
|
||||
|
||||
while ((c = getc(infile)) >= 0) {
|
||||
|
||||
if (firmsize++ % 8)
|
||||
fprintf(outfile,", 0x%02x", c);
|
||||
else
|
||||
fprintf(outfile,",\n\t0x%02x", c);
|
||||
}
|
||||
|
||||
fprintf(outfile, "\n};\n\n");
|
||||
|
||||
fprintf(outfile, "const unsigned int%s %s_size = %u;\n",
|
||||
inkernel ? " __initdata" : "", basename, firmsize );
|
||||
|
||||
if (infile != stdin)
|
||||
fclose(infile);
|
||||
if (outfile != stdout)
|
||||
fclose(outfile);
|
||||
|
||||
if(verbose)
|
||||
fprintf(stderr, "%s: firmware size = %u\n", progname, firmsize);
|
||||
|
||||
exit(0);
|
||||
}
|
||||
3091
drivers/atm/he.c
Normal file
3091
drivers/atm/he.c
Normal file
File diff suppressed because it is too large
Load Diff
895
drivers/atm/he.h
Normal file
895
drivers/atm/he.h
Normal file
@@ -0,0 +1,895 @@
|
||||
/* $Id: he.h,v 1.4 2003/05/06 22:48:00 chas Exp $ */
|
||||
|
||||
/*
|
||||
|
||||
he.h
|
||||
|
||||
ForeRunnerHE ATM Adapter driver for ATM on Linux
|
||||
Copyright (C) 1999-2001 Naval Research Laboratory
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
he.h
|
||||
|
||||
ForeRunnerHE ATM Adapter driver for ATM on Linux
|
||||
Copyright (C) 1999-2000 Naval Research Laboratory
|
||||
|
||||
Permission to use, copy, modify and distribute this software and its
|
||||
documentation is hereby granted, provided that both the copyright
|
||||
notice and this permission notice appear in all copies of the software,
|
||||
derivative works or modified versions, and any portions thereof, and
|
||||
that both notices appear in supporting documentation.
|
||||
|
||||
NRL ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" CONDITION AND
|
||||
DISCLAIMS ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER
|
||||
RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
|
||||
*/
|
||||
|
||||
#ifndef _HE_H_
|
||||
#define _HE_H_
|
||||
|
||||
#define DEV_LABEL "he"
|
||||
|
||||
#define CONFIG_DEFAULT_VCIBITS 12
|
||||
#define CONFIG_DEFAULT_VPIBITS 0
|
||||
|
||||
#define CONFIG_IRQ_SIZE 128
|
||||
#define CONFIG_IRQ_THRESH (CONFIG_IRQ_SIZE/2)
|
||||
|
||||
#define CONFIG_NUMTPDS 256
|
||||
|
||||
#define CONFIG_TPDRQ_SIZE 512
|
||||
#define TPDRQ_MASK(x) (((unsigned long)(x))&((CONFIG_TPDRQ_SIZE<<3)-1))
|
||||
|
||||
#define CONFIG_RBRQ_SIZE 512
|
||||
#define CONFIG_RBRQ_THRESH 400
|
||||
#define RBRQ_MASK(x) (((unsigned long)(x))&((CONFIG_RBRQ_SIZE<<3)-1))
|
||||
|
||||
#define CONFIG_TBRQ_SIZE 512
|
||||
#define CONFIG_TBRQ_THRESH 400
|
||||
#define TBRQ_MASK(x) (((unsigned long)(x))&((CONFIG_TBRQ_SIZE<<2)-1))
|
||||
|
||||
#define CONFIG_RBPL_SIZE 512
|
||||
#define CONFIG_RBPL_THRESH 64
|
||||
#define CONFIG_RBPL_BUFSIZE 4096
|
||||
#define RBPL_MASK(x) (((unsigned long)(x))&((CONFIG_RBPL_SIZE<<3)-1))
|
||||
|
||||
#define CONFIG_RBPS_SIZE 1024
|
||||
#define CONFIG_RBPS_THRESH 64
|
||||
#define CONFIG_RBPS_BUFSIZE 128
|
||||
#define RBPS_MASK(x) (((unsigned long)(x))&((CONFIG_RBPS_SIZE<<3)-1))
|
||||
|
||||
/* 5.1.3 initialize connection memory */
|
||||
|
||||
#define CONFIG_RSRA 0x00000
|
||||
#define CONFIG_RCMLBM 0x08000
|
||||
#define CONFIG_RCMABR 0x0d800
|
||||
#define CONFIG_RSRB 0x0e000
|
||||
|
||||
#define CONFIG_TSRA 0x00000
|
||||
#define CONFIG_TSRB 0x08000
|
||||
#define CONFIG_TSRC 0x0c000
|
||||
#define CONFIG_TSRD 0x0e000
|
||||
#define CONFIG_TMABR 0x0f000
|
||||
#define CONFIG_TPDBA 0x10000
|
||||
|
||||
#define HE_MAXCIDBITS 12
|
||||
|
||||
/* 2.9.3.3 interrupt encodings */
|
||||
|
||||
struct he_irq {
|
||||
volatile u32 isw;
|
||||
};
|
||||
|
||||
#define IRQ_ALIGNMENT 0x1000
|
||||
|
||||
#define NEXT_ENTRY(base, tail, mask) \
|
||||
(((unsigned long)base)|(((unsigned long)(tail+1))&mask))
|
||||
|
||||
#define ITYPE_INVALID 0xffffffff
|
||||
#define ITYPE_TBRQ_THRESH (0<<3)
|
||||
#define ITYPE_TPD_COMPLETE (1<<3)
|
||||
#define ITYPE_RBPS_THRESH (2<<3)
|
||||
#define ITYPE_RBPL_THRESH (3<<3)
|
||||
#define ITYPE_RBRQ_THRESH (4<<3)
|
||||
#define ITYPE_RBRQ_TIMER (5<<3)
|
||||
#define ITYPE_PHY (6<<3)
|
||||
#define ITYPE_OTHER 0x80
|
||||
#define ITYPE_PARITY 0x81
|
||||
#define ITYPE_ABORT 0x82
|
||||
|
||||
#define ITYPE_GROUP(x) (x & 0x7)
|
||||
#define ITYPE_TYPE(x) (x & 0xf8)
|
||||
|
||||
#define HE_NUM_GROUPS 8
|
||||
|
||||
/* 2.1.4 transmit packet descriptor */
|
||||
|
||||
struct he_tpd {
|
||||
|
||||
/* read by the adapter */
|
||||
|
||||
volatile u32 status;
|
||||
volatile u32 reserved;
|
||||
|
||||
#define TPD_MAXIOV 3
|
||||
struct {
|
||||
u32 addr, len;
|
||||
} iovec[TPD_MAXIOV];
|
||||
|
||||
#define address0 iovec[0].addr
|
||||
#define length0 iovec[0].len
|
||||
|
||||
/* linux-atm extensions */
|
||||
|
||||
struct sk_buff *skb;
|
||||
struct atm_vcc *vcc;
|
||||
|
||||
#ifdef USE_TPD_POOL
|
||||
struct list_head entry;
|
||||
#else
|
||||
u32 inuse;
|
||||
char padding[32 - sizeof(u32) - (2*sizeof(void*))];
|
||||
#endif
|
||||
};
|
||||
|
||||
#define TPD_ALIGNMENT 64
|
||||
#define TPD_LEN_MASK 0xffff
|
||||
|
||||
#define TPD_ADDR_SHIFT 6
|
||||
#define TPD_MASK 0xffffffc0
|
||||
#define TPD_ADDR(x) ((x) & TPD_MASK)
|
||||
#define TPD_INDEX(x) (TPD_ADDR(x) >> TPD_ADDR_SHIFT)
|
||||
|
||||
|
||||
/* table 2.3 transmit buffer return elements */
|
||||
|
||||
struct he_tbrq {
|
||||
volatile u32 tbre;
|
||||
};
|
||||
|
||||
#define TBRQ_ALIGNMENT CONFIG_TBRQ_SIZE
|
||||
|
||||
#define TBRQ_TPD(tbrq) ((tbrq)->tbre & 0xffffffc0)
|
||||
#define TBRQ_EOS(tbrq) ((tbrq)->tbre & (1<<3))
|
||||
#define TBRQ_MULTIPLE(tbrq) ((tbrq)->tbre & (1))
|
||||
|
||||
/* table 2.21 receive buffer return queue element field organization */
|
||||
|
||||
struct he_rbrq {
|
||||
volatile u32 addr;
|
||||
volatile u32 cidlen;
|
||||
};
|
||||
|
||||
#define RBRQ_ALIGNMENT CONFIG_RBRQ_SIZE
|
||||
|
||||
#define RBRQ_ADDR(rbrq) ((rbrq)->addr & 0xffffffc0)
|
||||
#define RBRQ_CRC_ERR(rbrq) ((rbrq)->addr & (1<<5))
|
||||
#define RBRQ_LEN_ERR(rbrq) ((rbrq)->addr & (1<<4))
|
||||
#define RBRQ_END_PDU(rbrq) ((rbrq)->addr & (1<<3))
|
||||
#define RBRQ_AAL5_PROT(rbrq) ((rbrq)->addr & (1<<2))
|
||||
#define RBRQ_CON_CLOSED(rbrq) ((rbrq)->addr & (1<<1))
|
||||
#define RBRQ_HBUF_ERR(rbrq) ((rbrq)->addr & 1)
|
||||
#define RBRQ_CID(rbrq) (((rbrq)->cidlen >> 16) & 0x1fff)
|
||||
#define RBRQ_BUFLEN(rbrq) ((rbrq)->cidlen & 0xffff)
|
||||
|
||||
/* figure 2.3 transmit packet descriptor ready queue */
|
||||
|
||||
struct he_tpdrq {
|
||||
volatile u32 tpd;
|
||||
volatile u32 cid;
|
||||
};
|
||||
|
||||
#define TPDRQ_ALIGNMENT CONFIG_TPDRQ_SIZE
|
||||
|
||||
/* table 2.30 host status page detail */
|
||||
|
||||
#define HSP_ALIGNMENT 0x400 /* must align on 1k boundary */
|
||||
|
||||
struct he_hsp {
|
||||
struct he_hsp_entry {
|
||||
volatile u32 tbrq_tail;
|
||||
volatile u32 reserved1[15];
|
||||
volatile u32 rbrq_tail;
|
||||
volatile u32 reserved2[15];
|
||||
} group[HE_NUM_GROUPS];
|
||||
};
|
||||
|
||||
/* figure 2.9 receive buffer pools */
|
||||
|
||||
struct he_rbp {
|
||||
volatile u32 phys;
|
||||
volatile u32 status;
|
||||
};
|
||||
|
||||
/* NOTE: it is suggested that virt be the virtual address of the host
|
||||
buffer. on a 64-bit machine, this would not work. Instead, we
|
||||
store the real virtual address in another list, and store an index
|
||||
(and buffer status) in the virt member.
|
||||
*/
|
||||
|
||||
#define RBP_INDEX_OFF 6
|
||||
#define RBP_INDEX(x) (((long)(x) >> RBP_INDEX_OFF) & 0xffff)
|
||||
#define RBP_LOANED 0x80000000
|
||||
#define RBP_SMALLBUF 0x40000000
|
||||
|
||||
struct he_virt {
|
||||
void *virt;
|
||||
};
|
||||
|
||||
#define RBPL_ALIGNMENT CONFIG_RBPL_SIZE
|
||||
#define RBPS_ALIGNMENT CONFIG_RBPS_SIZE
|
||||
|
||||
#ifdef notyet
|
||||
struct he_group {
|
||||
u32 rpbs_size, rpbs_qsize;
|
||||
struct he_rbp rbps_ba;
|
||||
|
||||
u32 rpbl_size, rpbl_qsize;
|
||||
struct he_rpb_entry *rbpl_ba;
|
||||
};
|
||||
#endif
|
||||
|
||||
#define HE_LOOKUP_VCC(dev, cid) ((dev)->he_vcc_table[(cid)].vcc)
|
||||
|
||||
struct he_vcc_table
|
||||
{
|
||||
struct atm_vcc *vcc;
|
||||
};
|
||||
|
||||
struct he_cs_stper
|
||||
{
|
||||
long pcr;
|
||||
int inuse;
|
||||
};
|
||||
|
||||
#define HE_NUM_CS_STPER 16
|
||||
|
||||
struct he_dev {
|
||||
unsigned int number;
|
||||
unsigned int irq;
|
||||
void __iomem *membase;
|
||||
|
||||
char prod_id[30];
|
||||
char mac_addr[6];
|
||||
int media; /*
|
||||
* 0x26 = HE155 MM
|
||||
* 0x27 = HE622 MM
|
||||
* 0x46 = HE155 SM
|
||||
* 0x47 = HE622 SM
|
||||
*/
|
||||
|
||||
|
||||
unsigned int vcibits, vpibits;
|
||||
unsigned int cells_per_row;
|
||||
unsigned int bytes_per_row;
|
||||
unsigned int cells_per_lbuf;
|
||||
unsigned int r0_numrows, r0_startrow, r0_numbuffs;
|
||||
unsigned int r1_numrows, r1_startrow, r1_numbuffs;
|
||||
unsigned int tx_numrows, tx_startrow, tx_numbuffs;
|
||||
unsigned int buffer_limit;
|
||||
|
||||
struct he_vcc_table *he_vcc_table;
|
||||
|
||||
#ifdef notyet
|
||||
struct he_group group[HE_NUM_GROUPS];
|
||||
#endif
|
||||
struct he_cs_stper cs_stper[HE_NUM_CS_STPER];
|
||||
unsigned total_bw;
|
||||
|
||||
dma_addr_t irq_phys;
|
||||
struct he_irq *irq_base, *irq_head, *irq_tail;
|
||||
volatile unsigned *irq_tailoffset;
|
||||
int irq_peak;
|
||||
|
||||
#ifdef USE_TASKLET
|
||||
struct tasklet_struct tasklet;
|
||||
#endif
|
||||
#ifdef USE_TPD_POOL
|
||||
struct pci_pool *tpd_pool;
|
||||
struct list_head outstanding_tpds;
|
||||
#else
|
||||
struct he_tpd *tpd_head, *tpd_base, *tpd_end;
|
||||
dma_addr_t tpd_base_phys;
|
||||
#endif
|
||||
|
||||
dma_addr_t tpdrq_phys;
|
||||
struct he_tpdrq *tpdrq_base, *tpdrq_tail, *tpdrq_head;
|
||||
|
||||
spinlock_t global_lock; /* 8.1.5 pci transaction ordering
|
||||
error problem */
|
||||
dma_addr_t rbrq_phys;
|
||||
struct he_rbrq *rbrq_base, *rbrq_head;
|
||||
int rbrq_peak;
|
||||
|
||||
#ifdef USE_RBPL_POOL
|
||||
struct pci_pool *rbpl_pool;
|
||||
#else
|
||||
void *rbpl_pages;
|
||||
dma_addr_t rbpl_pages_phys;
|
||||
#endif
|
||||
dma_addr_t rbpl_phys;
|
||||
struct he_rbp *rbpl_base, *rbpl_tail;
|
||||
struct he_virt *rbpl_virt;
|
||||
int rbpl_peak;
|
||||
|
||||
#ifdef USE_RBPS
|
||||
#ifdef USE_RBPS_POOL
|
||||
struct pci_pool *rbps_pool;
|
||||
#else
|
||||
void *rbps_pages;
|
||||
dma_addr_t rbps_pages_phys;
|
||||
#endif
|
||||
#endif
|
||||
dma_addr_t rbps_phys;
|
||||
struct he_rbp *rbps_base, *rbps_tail;
|
||||
struct he_virt *rbps_virt;
|
||||
int rbps_peak;
|
||||
|
||||
dma_addr_t tbrq_phys;
|
||||
struct he_tbrq *tbrq_base, *tbrq_head;
|
||||
int tbrq_peak;
|
||||
|
||||
dma_addr_t hsp_phys;
|
||||
struct he_hsp *hsp;
|
||||
|
||||
struct pci_dev *pci_dev;
|
||||
struct atm_dev *atm_dev;
|
||||
struct he_dev *next;
|
||||
};
|
||||
|
||||
struct he_iovec
|
||||
{
|
||||
u32 iov_base;
|
||||
u32 iov_len;
|
||||
};
|
||||
|
||||
#define HE_MAXIOV 20
|
||||
|
||||
struct he_vcc
|
||||
{
|
||||
struct he_iovec iov_head[HE_MAXIOV];
|
||||
struct he_iovec *iov_tail;
|
||||
int pdu_len;
|
||||
|
||||
int rc_index;
|
||||
|
||||
wait_queue_head_t rx_waitq;
|
||||
wait_queue_head_t tx_waitq;
|
||||
};
|
||||
|
||||
#define HE_VCC(vcc) ((struct he_vcc *)(vcc->dev_data))
|
||||
|
||||
#define PCI_VENDOR_ID_FORE 0x1127
|
||||
#define PCI_DEVICE_ID_FORE_HE 0x400
|
||||
|
||||
#define HE_DMA_MASK 0xffffffff
|
||||
|
||||
#define GEN_CNTL_0 0x40
|
||||
#define INT_PROC_ENBL (1<<25)
|
||||
#define SLAVE_ENDIAN_MODE (1<<16)
|
||||
#define MRL_ENB (1<<5)
|
||||
#define MRM_ENB (1<<4)
|
||||
#define INIT_ENB (1<<2)
|
||||
#define IGNORE_TIMEOUT (1<<1)
|
||||
#define ENBL_64 (1<<0)
|
||||
|
||||
#define MIN_PCI_LATENCY 32 /* errata 8.1.3 */
|
||||
|
||||
#define HE_DEV(dev) ((struct he_dev *) (dev)->dev_data)
|
||||
|
||||
#define he_is622(dev) ((dev)->media & 0x1)
|
||||
|
||||
#define HE_REGMAP_SIZE 0x100000
|
||||
|
||||
#define RESET_CNTL 0x80000
|
||||
#define BOARD_RST_STATUS (1<<6)
|
||||
|
||||
#define HOST_CNTL 0x80004
|
||||
#define PCI_BUS_SIZE64 (1<<27)
|
||||
#define DESC_RD_STATIC_64 (1<<26)
|
||||
#define DATA_RD_STATIC_64 (1<<25)
|
||||
#define DATA_WR_STATIC_64 (1<<24)
|
||||
#define ID_CS (1<<12)
|
||||
#define ID_WREN (1<<11)
|
||||
#define ID_DOUT (1<<10)
|
||||
#define ID_DOFFSET 10
|
||||
#define ID_DIN (1<<9)
|
||||
#define ID_CLOCK (1<<8)
|
||||
#define QUICK_RD_RETRY (1<<7)
|
||||
#define QUICK_WR_RETRY (1<<6)
|
||||
#define OUTFF_ENB (1<<5)
|
||||
#define CMDFF_ENB (1<<4)
|
||||
#define PERR_INT_ENB (1<<2)
|
||||
#define IGNORE_INTR (1<<0)
|
||||
|
||||
#define LB_SWAP 0x80008
|
||||
#define SWAP_RNUM_MAX(x) (x<<27)
|
||||
#define DATA_WR_SWAP (1<<20)
|
||||
#define DESC_RD_SWAP (1<<19)
|
||||
#define DATA_RD_SWAP (1<<18)
|
||||
#define INTR_SWAP (1<<17)
|
||||
#define DESC_WR_SWAP (1<<16)
|
||||
#define SDRAM_INIT (1<<15)
|
||||
#define BIG_ENDIAN_HOST (1<<14)
|
||||
#define XFER_SIZE (1<<7)
|
||||
|
||||
#define LB_MEM_ADDR 0x8000c
|
||||
#define LB_MEM_DATA 0x80010
|
||||
|
||||
#define LB_MEM_ACCESS 0x80014
|
||||
#define LB_MEM_HNDSHK (1<<30)
|
||||
#define LM_MEM_WRITE (0x7)
|
||||
#define LM_MEM_READ (0x3)
|
||||
|
||||
#define SDRAM_CTL 0x80018
|
||||
#define LB_64_ENB (1<<3)
|
||||
#define LB_TWR (1<<2)
|
||||
#define LB_TRP (1<<1)
|
||||
#define LB_TRAS (1<<0)
|
||||
|
||||
#define INT_FIFO 0x8001c
|
||||
#define INT_MASK_D (1<<15)
|
||||
#define INT_MASK_C (1<<14)
|
||||
#define INT_MASK_B (1<<13)
|
||||
#define INT_MASK_A (1<<12)
|
||||
#define INT_CLEAR_D (1<<11)
|
||||
#define INT_CLEAR_C (1<<10)
|
||||
#define INT_CLEAR_B (1<<9)
|
||||
#define INT_CLEAR_A (1<<8)
|
||||
|
||||
#define ABORT_ADDR 0x80020
|
||||
|
||||
#define IRQ0_BASE 0x80080
|
||||
#define IRQ_BASE(x) (x<<12)
|
||||
#define IRQ_MASK ((CONFIG_IRQ_SIZE<<2)-1) /* was 0x3ff */
|
||||
#define IRQ_TAIL(x) (((unsigned long)(x)) & IRQ_MASK)
|
||||
#define IRQ0_HEAD 0x80084
|
||||
#define IRQ_SIZE(x) (x<<22)
|
||||
#define IRQ_THRESH(x) (x<<12)
|
||||
#define IRQ_HEAD(x) (x<<2)
|
||||
/* #define IRQ_PENDING (1) conflict with linux/irq.h */
|
||||
#define IRQ0_CNTL 0x80088
|
||||
#define IRQ_ADDRSEL(x) (x<<2)
|
||||
#define IRQ_INT_A (0<<2)
|
||||
#define IRQ_INT_B (1<<2)
|
||||
#define IRQ_INT_C (2<<2)
|
||||
#define IRQ_INT_D (3<<2)
|
||||
#define IRQ_TYPE_ADDR 0x1
|
||||
#define IRQ_TYPE_LINE 0x0
|
||||
#define IRQ0_DATA 0x8008c
|
||||
|
||||
#define IRQ1_BASE 0x80090
|
||||
#define IRQ1_HEAD 0x80094
|
||||
#define IRQ1_CNTL 0x80098
|
||||
#define IRQ1_DATA 0x8009c
|
||||
|
||||
#define IRQ2_BASE 0x800a0
|
||||
#define IRQ2_HEAD 0x800a4
|
||||
#define IRQ2_CNTL 0x800a8
|
||||
#define IRQ2_DATA 0x800ac
|
||||
|
||||
#define IRQ3_BASE 0x800b0
|
||||
#define IRQ3_HEAD 0x800b4
|
||||
#define IRQ3_CNTL 0x800b8
|
||||
#define IRQ3_DATA 0x800bc
|
||||
|
||||
#define GRP_10_MAP 0x800c0
|
||||
#define GRP_32_MAP 0x800c4
|
||||
#define GRP_54_MAP 0x800c8
|
||||
#define GRP_76_MAP 0x800cc
|
||||
|
||||
#define G0_RBPS_S 0x80400
|
||||
#define G0_RBPS_T 0x80404
|
||||
#define RBP_TAIL(x) ((x)<<3)
|
||||
#define RBP_MASK(x) ((x)|0x1fff)
|
||||
#define G0_RBPS_QI 0x80408
|
||||
#define RBP_QSIZE(x) ((x)<<14)
|
||||
#define RBP_INT_ENB (1<<13)
|
||||
#define RBP_THRESH(x) (x)
|
||||
#define G0_RBPS_BS 0x8040c
|
||||
#define G0_RBPL_S 0x80410
|
||||
#define G0_RBPL_T 0x80414
|
||||
#define G0_RBPL_QI 0x80418
|
||||
#define G0_RBPL_BS 0x8041c
|
||||
|
||||
#define G1_RBPS_S 0x80420
|
||||
#define G1_RBPS_T 0x80424
|
||||
#define G1_RBPS_QI 0x80428
|
||||
#define G1_RBPS_BS 0x8042c
|
||||
#define G1_RBPL_S 0x80430
|
||||
#define G1_RBPL_T 0x80434
|
||||
#define G1_RBPL_QI 0x80438
|
||||
#define G1_RBPL_BS 0x8043c
|
||||
|
||||
#define G2_RBPS_S 0x80440
|
||||
#define G2_RBPS_T 0x80444
|
||||
#define G2_RBPS_QI 0x80448
|
||||
#define G2_RBPS_BS 0x8044c
|
||||
#define G2_RBPL_S 0x80450
|
||||
#define G2_RBPL_T 0x80454
|
||||
#define G2_RBPL_QI 0x80458
|
||||
#define G2_RBPL_BS 0x8045c
|
||||
|
||||
#define G3_RBPS_S 0x80460
|
||||
#define G3_RBPS_T 0x80464
|
||||
#define G3_RBPS_QI 0x80468
|
||||
#define G3_RBPS_BS 0x8046c
|
||||
#define G3_RBPL_S 0x80470
|
||||
#define G3_RBPL_T 0x80474
|
||||
#define G3_RBPL_QI 0x80478
|
||||
#define G3_RBPL_BS 0x8047c
|
||||
|
||||
#define G4_RBPS_S 0x80480
|
||||
#define G4_RBPS_T 0x80484
|
||||
#define G4_RBPS_QI 0x80488
|
||||
#define G4_RBPS_BS 0x8048c
|
||||
#define G4_RBPL_S 0x80490
|
||||
#define G4_RBPL_T 0x80494
|
||||
#define G4_RBPL_QI 0x80498
|
||||
#define G4_RBPL_BS 0x8049c
|
||||
|
||||
#define G5_RBPS_S 0x804a0
|
||||
#define G5_RBPS_T 0x804a4
|
||||
#define G5_RBPS_QI 0x804a8
|
||||
#define G5_RBPS_BS 0x804ac
|
||||
#define G5_RBPL_S 0x804b0
|
||||
#define G5_RBPL_T 0x804b4
|
||||
#define G5_RBPL_QI 0x804b8
|
||||
#define G5_RBPL_BS 0x804bc
|
||||
|
||||
#define G6_RBPS_S 0x804c0
|
||||
#define G6_RBPS_T 0x804c4
|
||||
#define G6_RBPS_QI 0x804c8
|
||||
#define G6_RBPS_BS 0x804cc
|
||||
#define G6_RBPL_S 0x804d0
|
||||
#define G6_RBPL_T 0x804d4
|
||||
#define G6_RBPL_QI 0x804d8
|
||||
#define G6_RBPL_BS 0x804dc
|
||||
|
||||
#define G7_RBPS_S 0x804e0
|
||||
#define G7_RBPS_T 0x804e4
|
||||
#define G7_RBPS_QI 0x804e8
|
||||
#define G7_RBPS_BS 0x804ec
|
||||
|
||||
#define G7_RBPL_S 0x804f0
|
||||
#define G7_RBPL_T 0x804f4
|
||||
#define G7_RBPL_QI 0x804f8
|
||||
#define G7_RBPL_BS 0x804fc
|
||||
|
||||
#define G0_RBRQ_ST 0x80500
|
||||
#define G0_RBRQ_H 0x80504
|
||||
#define G0_RBRQ_Q 0x80508
|
||||
#define RBRQ_THRESH(x) ((x)<<13)
|
||||
#define RBRQ_SIZE(x) (x)
|
||||
#define G0_RBRQ_I 0x8050c
|
||||
#define RBRQ_TIME(x) ((x)<<8)
|
||||
#define RBRQ_COUNT(x) (x)
|
||||
|
||||
/* fill in 1 ... 7 later */
|
||||
|
||||
#define G0_TBRQ_B_T 0x80600
|
||||
#define G0_TBRQ_H 0x80604
|
||||
#define G0_TBRQ_S 0x80608
|
||||
#define G0_TBRQ_THRESH 0x8060c
|
||||
#define TBRQ_THRESH(x) (x)
|
||||
|
||||
/* fill in 1 ... 7 later */
|
||||
|
||||
#define RH_CONFIG 0x805c0
|
||||
#define PHY_INT_ENB (1<<10)
|
||||
#define OAM_GID(x) (x<<7)
|
||||
#define PTMR_PRE(x) (x)
|
||||
|
||||
#define G0_INMQ_S 0x80580
|
||||
#define G0_INMQ_L 0x80584
|
||||
#define G1_INMQ_S 0x80588
|
||||
#define G1_INMQ_L 0x8058c
|
||||
#define G2_INMQ_S 0x80590
|
||||
#define G2_INMQ_L 0x80594
|
||||
#define G3_INMQ_S 0x80598
|
||||
#define G3_INMQ_L 0x8059c
|
||||
#define G4_INMQ_S 0x805a0
|
||||
#define G4_INMQ_L 0x805a4
|
||||
#define G5_INMQ_S 0x805a8
|
||||
#define G5_INMQ_L 0x805ac
|
||||
#define G6_INMQ_S 0x805b0
|
||||
#define G6_INMQ_L 0x805b4
|
||||
#define G7_INMQ_S 0x805b8
|
||||
#define G7_INMQ_L 0x805bc
|
||||
|
||||
#define TPDRQ_B_H 0x80680
|
||||
#define TPDRQ_T 0x80684
|
||||
#define TPDRQ_S 0x80688
|
||||
|
||||
#define UBUFF_BA 0x8068c
|
||||
|
||||
#define RLBF0_H 0x806c0
|
||||
#define RLBF0_T 0x806c4
|
||||
#define RLBF1_H 0x806c8
|
||||
#define RLBF1_T 0x806cc
|
||||
#define RLBC_H 0x806d0
|
||||
#define RLBC_T 0x806d4
|
||||
#define RLBC_H2 0x806d8
|
||||
#define TLBF_H 0x806e0
|
||||
#define TLBF_T 0x806e4
|
||||
#define RLBF0_C 0x806e8
|
||||
#define RLBF1_C 0x806ec
|
||||
#define RXTHRSH 0x806f0
|
||||
#define LITHRSH 0x806f4
|
||||
|
||||
#define LBARB 0x80700
|
||||
#define SLICE_X(x) (x<<28)
|
||||
#define ARB_RNUM_MAX(x) (x<<23)
|
||||
#define TH_PRTY(x) (x<<21)
|
||||
#define RH_PRTY(x) (x<<19)
|
||||
#define TL_PRTY(x) (x<<17)
|
||||
#define RL_PRTY(x) (x<<15)
|
||||
#define BUS_MULTI(x) (x<<8)
|
||||
#define NET_PREF(x) (x)
|
||||
|
||||
#define SDRAMCON 0x80704
|
||||
#define BANK_ON (1<<14)
|
||||
#define WIDE_DATA (1<<13)
|
||||
#define TWR_WAIT (1<<12)
|
||||
#define TRP_WAIT (1<<11)
|
||||
#define TRAS_WAIT (1<<10)
|
||||
#define REF_RATE(x) (x)
|
||||
|
||||
#define LBSTAT 0x80708
|
||||
|
||||
#define RCC_STAT 0x8070c
|
||||
#define RCC_BUSY (1)
|
||||
|
||||
#define TCMCONFIG 0x80740
|
||||
#define TM_DESL2 (1<<10)
|
||||
#define TM_BANK_WAIT(x) (x<<6)
|
||||
#define TM_ADD_BANK4(x) (x<<4)
|
||||
#define TM_PAR_CHECK(x) (x<<3)
|
||||
#define TM_RW_WAIT(x) (x<<2)
|
||||
#define TM_SRAM_TYPE(x) (x)
|
||||
|
||||
#define TSRB_BA 0x80744
|
||||
#define TSRC_BA 0x80748
|
||||
#define TMABR_BA 0x8074c
|
||||
#define TPD_BA 0x80750
|
||||
#define TSRD_BA 0x80758
|
||||
|
||||
#define TX_CONFIG 0x80760
|
||||
#define DRF_THRESH(x) (x<<22)
|
||||
#define TX_UT_MODE(x) (x<<21)
|
||||
#define TX_VCI_MASK(x) (x<<17)
|
||||
#define LBFREE_CNT(x) (x)
|
||||
|
||||
#define TXAAL5_PROTO 0x80764
|
||||
#define CPCS_UU(x) (x<<8)
|
||||
#define CPI(x) (x)
|
||||
|
||||
#define RCMCONFIG 0x80780
|
||||
#define RM_DESL2(x) (x<<10)
|
||||
#define RM_BANK_WAIT(x) (x<<6)
|
||||
#define RM_ADD_BANK(x) (x<<4)
|
||||
#define RM_PAR_CHECK(x) (x<<3)
|
||||
#define RM_RW_WAIT(x) (x<<2)
|
||||
#define RM_SRAM_TYPE(x) (x)
|
||||
|
||||
#define RCMRSRB_BA 0x80784
|
||||
#define RCMLBM_BA 0x80788
|
||||
#define RCMABR_BA 0x8078c
|
||||
|
||||
#define RC_CONFIG 0x807c0
|
||||
#define UT_RD_DELAY(x) (x<<11)
|
||||
#define WRAP_MODE(x) (x<<10)
|
||||
#define RC_UT_MODE(x) (x<<9)
|
||||
#define RX_ENABLE (1<<8)
|
||||
#define RX_VALVP(x) (x<<4)
|
||||
#define RX_VALVC(x) (x)
|
||||
|
||||
#define MCC 0x807c4
|
||||
#define OEC 0x807c8
|
||||
#define DCC 0x807cc
|
||||
#define CEC 0x807d0
|
||||
|
||||
#define HSP_BA 0x807f0
|
||||
|
||||
#define LB_CONFIG 0x807f4
|
||||
#define LB_SIZE(x) (x)
|
||||
|
||||
#define CON_DAT 0x807f8
|
||||
#define CON_CTL 0x807fc
|
||||
#define CON_CTL_MBOX (2<<30)
|
||||
#define CON_CTL_TCM (1<<30)
|
||||
#define CON_CTL_RCM (0<<30)
|
||||
#define CON_CTL_WRITE (1<<29)
|
||||
#define CON_CTL_READ (0<<29)
|
||||
#define CON_CTL_BUSY (1<<28)
|
||||
#define CON_BYTE_DISABLE_3 (1<<22) /* 24..31 */
|
||||
#define CON_BYTE_DISABLE_2 (1<<21) /* 16..23 */
|
||||
#define CON_BYTE_DISABLE_1 (1<<20) /* 8..15 */
|
||||
#define CON_BYTE_DISABLE_0 (1<<19) /* 0..7 */
|
||||
#define CON_CTL_ADDR(x) (x)
|
||||
|
||||
#define FRAMER 0x80800 /* to 0x80bfc */
|
||||
|
||||
/* 3.3 network controller (internal) mailbox registers */
|
||||
|
||||
#define CS_STPER0 0x0
|
||||
/* ... */
|
||||
#define CS_STPER31 0x01f
|
||||
|
||||
#define CS_STTIM0 0x020
|
||||
/* ... */
|
||||
#define CS_STTIM31 0x03f
|
||||
|
||||
#define CS_TGRLD0 0x040
|
||||
/* ... */
|
||||
#define CS_TGRLD15 0x04f
|
||||
|
||||
#define CS_ERTHR0 0x050
|
||||
#define CS_ERTHR1 0x051
|
||||
#define CS_ERTHR2 0x052
|
||||
#define CS_ERTHR3 0x053
|
||||
#define CS_ERTHR4 0x054
|
||||
#define CS_ERCTL0 0x055
|
||||
#define TX_ENABLE (1<<28)
|
||||
#define ER_ENABLE (1<<27)
|
||||
#define CS_ERCTL1 0x056
|
||||
#define CS_ERCTL2 0x057
|
||||
#define CS_ERSTAT0 0x058
|
||||
#define CS_ERSTAT1 0x059
|
||||
|
||||
#define CS_RTCCT 0x060
|
||||
#define CS_RTFWC 0x061
|
||||
#define CS_RTFWR 0x062
|
||||
#define CS_RTFTC 0x063
|
||||
#define CS_RTATR 0x064
|
||||
|
||||
#define CS_TFBSET 0x070
|
||||
#define CS_TFBADD 0x071
|
||||
#define CS_TFBSUB 0x072
|
||||
#define CS_WCRMAX 0x073
|
||||
#define CS_WCRMIN 0x074
|
||||
#define CS_WCRINC 0x075
|
||||
#define CS_WCRDEC 0x076
|
||||
#define CS_WCRCEIL 0x077
|
||||
#define CS_BWDCNT 0x078
|
||||
|
||||
#define CS_OTPPER 0x080
|
||||
#define CS_OTWPER 0x081
|
||||
#define CS_OTTLIM 0x082
|
||||
#define CS_OTTCNT 0x083
|
||||
|
||||
#define CS_HGRRT0 0x090
|
||||
/* ... */
|
||||
#define CS_HGRRT7 0x097
|
||||
|
||||
#define CS_ORPTRS 0x0a0
|
||||
|
||||
#define RXCON_CLOSE 0x100
|
||||
|
||||
|
||||
#define RCM_MEM_SIZE 0x10000 /* 1M of 32-bit registers */
|
||||
#define TCM_MEM_SIZE 0x20000 /* 2M of 32-bit registers */
|
||||
|
||||
/* 2.5 transmit connection memory registers */
|
||||
|
||||
#define TSR0_CONN_STATE(x) ((x>>28) & 0x7)
|
||||
#define TSR0_USE_WMIN (1<<23)
|
||||
#define TSR0_GROUP(x) ((x & 0x7)<<18)
|
||||
#define TSR0_ABR (2<<16)
|
||||
#define TSR0_UBR (1<<16)
|
||||
#define TSR0_CBR (0<<16)
|
||||
#define TSR0_PROT (1<<15)
|
||||
#define TSR0_AAL0_SDU (2<<12)
|
||||
#define TSR0_AAL0 (1<<12)
|
||||
#define TSR0_AAL5 (0<<12)
|
||||
#define TSR0_HALT_ER (1<<11)
|
||||
#define TSR0_MARK_CI (1<<10)
|
||||
#define TSR0_MARK_ER (1<<9)
|
||||
#define TSR0_UPDATE_GER (1<<8)
|
||||
#define TSR0_RC_INDEX(x) (x & 0x1F)
|
||||
|
||||
#define TSR1_PCR(x) ((x & 0x7FFF)<<16)
|
||||
#define TSR1_MCR(x) (x & 0x7FFF)
|
||||
|
||||
#define TSR2_ACR(x) ((x & 0x7FFF)<<16)
|
||||
|
||||
#define TSR3_NRM_CNT(x) ((x & 0xFF)<<24)
|
||||
#define TSR3_CRM_CNT(x) (x & 0xFFFF)
|
||||
|
||||
#define TSR4_FLUSH_CONN (1<<31)
|
||||
#define TSR4_SESSION_ENDED (1<<30)
|
||||
#define TSR4_CRC10 (1<<28)
|
||||
#define TSR4_NULL_CRC10 (1<<27)
|
||||
#define TSR4_PROT (1<<26)
|
||||
#define TSR4_AAL0_SDU (2<<23)
|
||||
#define TSR4_AAL0 (1<<23)
|
||||
#define TSR4_AAL5 (0<<23)
|
||||
|
||||
#define TSR9_OPEN_CONN (1<<20)
|
||||
|
||||
#define TSR11_ICR(x) ((x & 0x7FFF)<<16)
|
||||
#define TSR11_TRM(x) ((x & 0x7)<<13)
|
||||
#define TSR11_NRM(x) ((x & 0x7)<<10)
|
||||
#define TSR11_ADTF(x) (x & 0x3FF)
|
||||
|
||||
#define TSR13_RDF(x) ((x & 0xF)<<23)
|
||||
#define TSR13_RIF(x) ((x & 0xF)<<19)
|
||||
#define TSR13_CDF(x) ((x & 0x7)<<16)
|
||||
#define TSR13_CRM(x) (x & 0xFFFF)
|
||||
|
||||
#define TSR14_DELETE (1<<31)
|
||||
#define TSR14_ABR_CLOSE (1<<16)
|
||||
|
||||
/* 2.7.1 per connection receieve state registers */
|
||||
|
||||
#define RSR0_START_PDU (1<<10)
|
||||
#define RSR0_OPEN_CONN (1<<6)
|
||||
#define RSR0_CLOSE_CONN (0<<6)
|
||||
#define RSR0_PPD_ENABLE (1<<5)
|
||||
#define RSR0_EPD_ENABLE (1<<4)
|
||||
#define RSR0_TCP_CKSUM (1<<3)
|
||||
#define RSR0_AAL5 (0)
|
||||
#define RSR0_AAL0 (1)
|
||||
#define RSR0_AAL0_SDU (2)
|
||||
#define RSR0_RAWCELL (3)
|
||||
#define RSR0_RAWCELL_CRC10 (4)
|
||||
|
||||
#define RSR1_AQI_ENABLE (1<<20)
|
||||
#define RSR1_RBPL_ONLY (1<<19)
|
||||
#define RSR1_GROUP(x) ((x)<<16)
|
||||
|
||||
#define RSR4_AQI_ENABLE (1<<30)
|
||||
#define RSR4_GROUP(x) ((x)<<27)
|
||||
#define RSR4_RBPL_ONLY (1<<26)
|
||||
|
||||
/* 2.1.4 transmit packet descriptor */
|
||||
|
||||
#define TPD_USERCELL 0x0
|
||||
#define TPD_SEGMENT_OAMF5 0x4
|
||||
#define TPD_END2END_OAMF5 0x5
|
||||
#define TPD_RMCELL 0x6
|
||||
#define TPD_CELLTYPE(x) (x<<3)
|
||||
#define TPD_EOS (1<<2)
|
||||
#define TPD_CLP (1<<1)
|
||||
#define TPD_INT (1<<0)
|
||||
#define TPD_LST (1<<31)
|
||||
|
||||
/* table 4.3 serial eeprom information */
|
||||
|
||||
#define PROD_ID 0x08 /* char[] */
|
||||
#define PROD_ID_LEN 30
|
||||
#define HW_REV 0x26 /* char[] */
|
||||
#define M_SN 0x3a /* integer */
|
||||
#define MEDIA 0x3e /* integer */
|
||||
#define HE155MM 0x26
|
||||
#define HE155SM 0x27
|
||||
#define HE622MM 0x46
|
||||
#define HE622SM 0x47
|
||||
#define MAC_ADDR 0x42 /* char[] */
|
||||
|
||||
#define CS_LOW 0x0
|
||||
#define CS_HIGH ID_CS /* HOST_CNTL_ID_PROM_SEL */
|
||||
#define CLK_LOW 0x0
|
||||
#define CLK_HIGH ID_CLOCK /* HOST_CNTL_ID_PROM_CLOCK */
|
||||
#define SI_HIGH ID_DIN /* HOST_CNTL_ID_PROM_DATA_IN */
|
||||
#define EEPROM_DELAY 400 /* microseconds */
|
||||
|
||||
#endif /* _HE_H_ */
|
||||
2953
drivers/atm/horizon.c
Normal file
2953
drivers/atm/horizon.c
Normal file
File diff suppressed because it is too large
Load Diff
508
drivers/atm/horizon.h
Normal file
508
drivers/atm/horizon.h
Normal file
@@ -0,0 +1,508 @@
|
||||
/*
|
||||
Madge Horizon ATM Adapter driver.
|
||||
Copyright (C) 1995-1999 Madge Networks Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
The GNU GPL is contained in /usr/doc/copyright/GPL on a Debian
|
||||
system and in the file COPYING in the Linux kernel source.
|
||||
*/
|
||||
|
||||
/*
|
||||
IMPORTANT NOTE: Madge Networks no longer makes the adapters
|
||||
supported by this driver and makes no commitment to maintain it.
|
||||
*/
|
||||
|
||||
/* too many macros - change to inline functions */
|
||||
|
||||
#ifndef DRIVER_ATM_HORIZON_H
|
||||
#define DRIVER_ATM_HORIZON_H
|
||||
|
||||
#include <linux/config.h>
|
||||
|
||||
#ifdef CONFIG_ATM_HORIZON_DEBUG
|
||||
#define DEBUG_HORIZON
|
||||
#endif
|
||||
|
||||
#define DEV_LABEL "hrz"
|
||||
|
||||
#ifndef PCI_VENDOR_ID_MADGE
|
||||
#define PCI_VENDOR_ID_MADGE 0x10B6
|
||||
#endif
|
||||
#ifndef PCI_DEVICE_ID_MADGE_HORIZON
|
||||
#define PCI_DEVICE_ID_MADGE_HORIZON 0x1000
|
||||
#endif
|
||||
|
||||
// diagnostic output
|
||||
|
||||
#define PRINTK(severity,format,args...) \
|
||||
printk(severity DEV_LABEL ": " format "\n" , ## args)
|
||||
|
||||
#ifdef DEBUG_HORIZON
|
||||
|
||||
#define DBG_ERR 0x0001
|
||||
#define DBG_WARN 0x0002
|
||||
#define DBG_INFO 0x0004
|
||||
#define DBG_VCC 0x0008
|
||||
#define DBG_QOS 0x0010
|
||||
#define DBG_TX 0x0020
|
||||
#define DBG_RX 0x0040
|
||||
#define DBG_SKB 0x0080
|
||||
#define DBG_IRQ 0x0100
|
||||
#define DBG_FLOW 0x0200
|
||||
#define DBG_BUS 0x0400
|
||||
#define DBG_REGS 0x0800
|
||||
#define DBG_DATA 0x1000
|
||||
#define DBG_MASK 0x1fff
|
||||
|
||||
/* the ## prevents the annoying double expansion of the macro arguments */
|
||||
/* KERN_INFO is used since KERN_DEBUG often does not make it to the console */
|
||||
#define PRINTDB(bits,format,args...) \
|
||||
( (debug & (bits)) ? printk (KERN_INFO DEV_LABEL ": " format , ## args) : 1 )
|
||||
#define PRINTDM(bits,format,args...) \
|
||||
( (debug & (bits)) ? printk (format , ## args) : 1 )
|
||||
#define PRINTDE(bits,format,args...) \
|
||||
( (debug & (bits)) ? printk (format "\n" , ## args) : 1 )
|
||||
#define PRINTD(bits,format,args...) \
|
||||
( (debug & (bits)) ? printk (KERN_INFO DEV_LABEL ": " format "\n" , ## args) : 1 )
|
||||
|
||||
#else
|
||||
|
||||
#define PRINTD(bits,format,args...)
|
||||
#define PRINTDB(bits,format,args...)
|
||||
#define PRINTDM(bits,format,args...)
|
||||
#define PRINTDE(bits,format,args...)
|
||||
|
||||
#endif
|
||||
|
||||
#define PRINTDD(sec,fmt,args...)
|
||||
#define PRINTDDB(sec,fmt,args...)
|
||||
#define PRINTDDM(sec,fmt,args...)
|
||||
#define PRINTDDE(sec,fmt,args...)
|
||||
|
||||
// fixed constants
|
||||
|
||||
#define SPARE_BUFFER_POOL_SIZE MAX_VCS
|
||||
#define HRZ_MAX_VPI 4
|
||||
#define MIN_PCI_LATENCY 48 // 24 IS TOO SMALL
|
||||
|
||||
/* Horizon specific bits */
|
||||
/* Register offsets */
|
||||
|
||||
#define HRZ_IO_EXTENT 0x80
|
||||
|
||||
#define DATA_PORT_OFF 0x00
|
||||
#define TX_CHANNEL_PORT_OFF 0x04
|
||||
#define TX_DESCRIPTOR_PORT_OFF 0x08
|
||||
#define MEMORY_PORT_OFF 0x0C
|
||||
#define MEM_WR_ADDR_REG_OFF 0x14
|
||||
#define MEM_RD_ADDR_REG_OFF 0x18
|
||||
#define CONTROL_0_REG 0x1C
|
||||
#define INT_SOURCE_REG_OFF 0x20
|
||||
#define INT_ENABLE_REG_OFF 0x24
|
||||
#define MASTER_RX_ADDR_REG_OFF 0x28
|
||||
#define MASTER_RX_COUNT_REG_OFF 0x2C
|
||||
#define MASTER_TX_ADDR_REG_OFF 0x30
|
||||
#define MASTER_TX_COUNT_REG_OFF 0x34
|
||||
#define TX_DESCRIPTOR_REG_OFF 0x38
|
||||
#define TX_CHANNEL_CONFIG_COMMAND_OFF 0x40
|
||||
#define TX_CHANNEL_CONFIG_DATA_OFF 0x44
|
||||
#define TX_FREE_BUFFER_COUNT_OFF 0x48
|
||||
#define RX_FREE_BUFFER_COUNT_OFF 0x4C
|
||||
#define TX_CONFIG_OFF 0x50
|
||||
#define TX_STATUS_OFF 0x54
|
||||
#define RX_CONFIG_OFF 0x58
|
||||
#define RX_LINE_CONFIG_OFF 0x5C
|
||||
#define RX_QUEUE_RD_PTR_OFF 0x60
|
||||
#define RX_QUEUE_WR_PTR_OFF 0x64
|
||||
#define MAX_AAL5_CELL_COUNT_OFF 0x68
|
||||
#define RX_CHANNEL_PORT_OFF 0x6C
|
||||
#define TX_CELL_COUNT_OFF 0x70
|
||||
#define RX_CELL_COUNT_OFF 0x74
|
||||
#define HEC_ERROR_COUNT_OFF 0x78
|
||||
#define UNASSIGNED_CELL_COUNT_OFF 0x7C
|
||||
|
||||
/* Register bit definitions */
|
||||
|
||||
/* Control 0 register */
|
||||
|
||||
#define SEEPROM_DO 0x00000001
|
||||
#define SEEPROM_DI 0x00000002
|
||||
#define SEEPROM_SK 0x00000004
|
||||
#define SEEPROM_CS 0x00000008
|
||||
#define DEBUG_BIT_0 0x00000010
|
||||
#define DEBUG_BIT_1 0x00000020
|
||||
#define DEBUG_BIT_2 0x00000040
|
||||
// RESERVED 0x00000080
|
||||
#define DEBUG_BIT_0_OE 0x00000100
|
||||
#define DEBUG_BIT_1_OE 0x00000200
|
||||
#define DEBUG_BIT_2_OE 0x00000400
|
||||
// RESERVED 0x00000800
|
||||
#define DEBUG_BIT_0_STATE 0x00001000
|
||||
#define DEBUG_BIT_1_STATE 0x00002000
|
||||
#define DEBUG_BIT_2_STATE 0x00004000
|
||||
// RESERVED 0x00008000
|
||||
#define GENERAL_BIT_0 0x00010000
|
||||
#define GENERAL_BIT_1 0x00020000
|
||||
#define GENERAL_BIT_2 0x00040000
|
||||
#define GENERAL_BIT_3 0x00080000
|
||||
#define RESET_HORIZON 0x00100000
|
||||
#define RESET_ATM 0x00200000
|
||||
#define RESET_RX 0x00400000
|
||||
#define RESET_TX 0x00800000
|
||||
#define RESET_HOST 0x01000000
|
||||
// RESERVED 0x02000000
|
||||
#define TARGET_RETRY_DISABLE 0x04000000
|
||||
#define ATM_LAYER_SELECT 0x08000000
|
||||
#define ATM_LAYER_STATUS 0x10000000
|
||||
// RESERVED 0xE0000000
|
||||
|
||||
/* Interrupt source and enable registers */
|
||||
|
||||
#define RX_DATA_AV 0x00000001
|
||||
#define RX_DISABLED 0x00000002
|
||||
#define TIMING_MARKER 0x00000004
|
||||
#define FORCED 0x00000008
|
||||
#define RX_BUS_MASTER_COMPLETE 0x00000010
|
||||
#define TX_BUS_MASTER_COMPLETE 0x00000020
|
||||
#define ABR_TX_CELL_COUNT_INT 0x00000040
|
||||
#define DEBUG_INT 0x00000080
|
||||
// RESERVED 0xFFFFFF00
|
||||
|
||||
/* PIO and Bus Mastering */
|
||||
|
||||
#define MAX_PIO_COUNT 0x000000ff // 255 - make tunable?
|
||||
// 8188 is a hard limit for bus mastering
|
||||
#define MAX_TRANSFER_COUNT 0x00001ffc // 8188
|
||||
#define MASTER_TX_AUTO_APPEND_DESC 0x80000000
|
||||
|
||||
/* TX channel config command port */
|
||||
|
||||
#define PCR_TIMER_ACCESS 0x0000
|
||||
#define SCR_TIMER_ACCESS 0x0001
|
||||
#define BUCKET_CAPACITY_ACCESS 0x0002
|
||||
#define BUCKET_FULLNESS_ACCESS 0x0003
|
||||
#define RATE_TYPE_ACCESS 0x0004
|
||||
// UNUSED 0x00F8
|
||||
#define TX_CHANNEL_CONFIG_MULT 0x0100
|
||||
// UNUSED 0xF800
|
||||
#define BUCKET_MAX_SIZE 0x003f
|
||||
|
||||
/* TX channel config data port */
|
||||
|
||||
#define CLOCK_SELECT_SHIFT 4
|
||||
#define CLOCK_DISABLE 0x00ff
|
||||
|
||||
#define IDLE_RATE_TYPE 0x0
|
||||
#define ABR_RATE_TYPE 0x1
|
||||
#define VBR_RATE_TYPE 0x2
|
||||
#define CBR_RATE_TYPE 0x3
|
||||
|
||||
/* TX config register */
|
||||
|
||||
#define DRVR_DRVRBAR_ENABLE 0x0001
|
||||
#define TXCLK_MUX_SELECT_RCLK 0x0002
|
||||
#define TRANSMIT_TIMING_MARKER 0x0004
|
||||
#define LOOPBACK_TIMING_MARKER 0x0008
|
||||
#define TX_TEST_MODE_16MHz 0x0000
|
||||
#define TX_TEST_MODE_8MHz 0x0010
|
||||
#define TX_TEST_MODE_5_33MHz 0x0020
|
||||
#define TX_TEST_MODE_4MHz 0x0030
|
||||
#define TX_TEST_MODE_3_2MHz 0x0040
|
||||
#define TX_TEST_MODE_2_66MHz 0x0050
|
||||
#define TX_TEST_MODE_2_29MHz 0x0060
|
||||
#define TX_NORMAL_OPERATION 0x0070
|
||||
#define ABR_ROUND_ROBIN 0x0080
|
||||
|
||||
/* TX status register */
|
||||
|
||||
#define IDLE_CHANNELS_MASK 0x00FF
|
||||
#define ABR_CELL_COUNT_REACHED_MULT 0x0100
|
||||
#define ABR_CELL_COUNT_REACHED_MASK 0xFF
|
||||
|
||||
/* RX config register */
|
||||
|
||||
#define NON_USER_CELLS_IN_ONE_CHANNEL 0x0008
|
||||
#define RX_ENABLE 0x0010
|
||||
#define IGNORE_UNUSED_VPI_VCI_BITS_SET 0x0000
|
||||
#define NON_USER_UNUSED_VPI_VCI_BITS_SET 0x0020
|
||||
#define DISCARD_UNUSED_VPI_VCI_BITS_SET 0x0040
|
||||
|
||||
/* RX line config register */
|
||||
|
||||
#define SIGNAL_LOSS 0x0001
|
||||
#define FREQUENCY_DETECT_ERROR 0x0002
|
||||
#define LOCK_DETECT_ERROR 0x0004
|
||||
#define SELECT_INTERNAL_LOOPBACK 0x0008
|
||||
#define LOCK_DETECT_ENABLE 0x0010
|
||||
#define FREQUENCY_DETECT_ENABLE 0x0020
|
||||
#define USER_FRAQ 0x0040
|
||||
#define GXTALOUT_SELECT_DIV4 0x0080
|
||||
#define GXTALOUT_SELECT_NO_GATING 0x0100
|
||||
#define TIMING_MARKER_RECEIVED 0x0200
|
||||
|
||||
/* RX channel port */
|
||||
|
||||
#define RX_CHANNEL_MASK 0x03FF
|
||||
// UNUSED 0x3C00
|
||||
#define FLUSH_CHANNEL 0x4000
|
||||
#define RX_CHANNEL_UPDATE_IN_PROGRESS 0x8000
|
||||
|
||||
/* Receive queue entry */
|
||||
|
||||
#define RX_Q_ENTRY_LENGTH_MASK 0x0000FFFF
|
||||
#define RX_Q_ENTRY_CHANNEL_SHIFT 16
|
||||
#define SIMONS_DODGEY_MARKER 0x08000000
|
||||
#define RX_CONGESTION_EXPERIENCED 0x10000000
|
||||
#define RX_CRC_10_OK 0x20000000
|
||||
#define RX_CRC_32_OK 0x40000000
|
||||
#define RX_COMPLETE_FRAME 0x80000000
|
||||
|
||||
/* Offsets and constants for use with the buffer memory */
|
||||
|
||||
/* Buffer pointers and channel types */
|
||||
|
||||
#define BUFFER_PTR_MASK 0x0000FFFF
|
||||
#define RX_INT_THRESHOLD_MULT 0x00010000
|
||||
#define RX_INT_THRESHOLD_MASK 0x07FF
|
||||
#define INT_EVERY_N_CELLS 0x08000000
|
||||
#define CONGESTION_EXPERIENCED 0x10000000
|
||||
#define FIRST_CELL_OF_AAL5_FRAME 0x20000000
|
||||
#define CHANNEL_TYPE_AAL5 0x00000000
|
||||
#define CHANNEL_TYPE_RAW_CELLS 0x40000000
|
||||
#define CHANNEL_TYPE_AAL3_4 0x80000000
|
||||
|
||||
/* Buffer status stuff */
|
||||
|
||||
#define BUFF_STATUS_MASK 0x00030000
|
||||
#define BUFF_STATUS_EMPTY 0x00000000
|
||||
#define BUFF_STATUS_CELL_AV 0x00010000
|
||||
#define BUFF_STATUS_LAST_CELL_AV 0x00020000
|
||||
|
||||
/* Transmit channel stuff */
|
||||
|
||||
/* Receive channel stuff */
|
||||
|
||||
#define RX_CHANNEL_DISABLED 0x00000000
|
||||
#define RX_CHANNEL_IDLE 0x00000001
|
||||
|
||||
/* General things */
|
||||
|
||||
#define INITIAL_CRC 0xFFFFFFFF
|
||||
|
||||
// A Horizon u32, a byte! Really nasty. Horizon pointers are (32 bit)
|
||||
// word addresses and so standard C pointer operations break (as they
|
||||
// assume byte addresses); so we pretend that Horizon words (and word
|
||||
// pointers) are bytes (and byte pointers) for the purposes of having
|
||||
// a memory map that works.
|
||||
|
||||
typedef u8 HDW;
|
||||
|
||||
typedef struct cell_buf {
|
||||
HDW payload[12];
|
||||
HDW next;
|
||||
HDW cell_count; // AAL5 rx bufs
|
||||
HDW res;
|
||||
union {
|
||||
HDW partial_crc; // AAL5 rx bufs
|
||||
HDW cell_header; // RAW bufs
|
||||
} u;
|
||||
} cell_buf;
|
||||
|
||||
typedef struct tx_ch_desc {
|
||||
HDW rd_buf_type;
|
||||
HDW wr_buf_type;
|
||||
HDW partial_crc;
|
||||
HDW cell_header;
|
||||
} tx_ch_desc;
|
||||
|
||||
typedef struct rx_ch_desc {
|
||||
HDW wr_buf_type;
|
||||
HDW rd_buf_type;
|
||||
} rx_ch_desc;
|
||||
|
||||
typedef struct rx_q_entry {
|
||||
HDW entry;
|
||||
} rx_q_entry;
|
||||
|
||||
#define TX_CHANS 8
|
||||
#define RX_CHANS 1024
|
||||
#define RX_QS 1024
|
||||
#define MAX_VCS RX_CHANS
|
||||
|
||||
/* Horizon buffer memory map */
|
||||
|
||||
// TX Channel Descriptors 2
|
||||
// TX Initial Buffers 8 // TX_CHANS
|
||||
#define BUFN1_SIZE 118 // (126 - TX_CHANS)
|
||||
// RX/TX Start/End Buffers 4
|
||||
#define BUFN2_SIZE 124
|
||||
// RX Queue Entries 64
|
||||
#define BUFN3_SIZE 192
|
||||
// RX Channel Descriptors 128
|
||||
#define BUFN4_SIZE 1408
|
||||
// TOTAL cell_buff chunks 2048
|
||||
|
||||
// cell_buf bufs[2048];
|
||||
// HDW dws[32768];
|
||||
|
||||
typedef struct MEMMAP {
|
||||
tx_ch_desc tx_descs[TX_CHANS]; // 8 * 4 = 32 , 0x0020
|
||||
cell_buf inittxbufs[TX_CHANS]; // these are really
|
||||
cell_buf bufn1[BUFN1_SIZE]; // part of this pool
|
||||
cell_buf txfreebufstart;
|
||||
cell_buf txfreebufend;
|
||||
cell_buf rxfreebufstart;
|
||||
cell_buf rxfreebufend; // 8+118+1+1+1+1+124 = 254
|
||||
cell_buf bufn2[BUFN2_SIZE]; // 16 * 254 = 4064 , 0x1000
|
||||
rx_q_entry rx_q_entries[RX_QS]; // 1 * 1024 = 1024 , 0x1400
|
||||
cell_buf bufn3[BUFN3_SIZE]; // 16 * 192 = 3072 , 0x2000
|
||||
rx_ch_desc rx_descs[MAX_VCS]; // 2 * 1024 = 2048 , 0x2800
|
||||
cell_buf bufn4[BUFN4_SIZE]; // 16 * 1408 = 22528 , 0x8000
|
||||
} MEMMAP;
|
||||
|
||||
#define memmap ((MEMMAP *)0)
|
||||
|
||||
/* end horizon specific bits */
|
||||
|
||||
typedef enum {
|
||||
aal0,
|
||||
aal34,
|
||||
aal5
|
||||
} hrz_aal;
|
||||
|
||||
typedef enum {
|
||||
tx_busy,
|
||||
rx_busy,
|
||||
ultra
|
||||
} hrz_flags;
|
||||
|
||||
// a single struct pointed to by atm_vcc->dev_data
|
||||
|
||||
typedef struct {
|
||||
unsigned int tx_rate;
|
||||
unsigned int rx_rate;
|
||||
u16 channel;
|
||||
u16 tx_xbr_bits;
|
||||
u16 tx_pcr_bits;
|
||||
#if 0
|
||||
u16 tx_scr_bits;
|
||||
u16 tx_bucket_bits;
|
||||
#endif
|
||||
hrz_aal aal;
|
||||
} hrz_vcc;
|
||||
|
||||
struct hrz_dev {
|
||||
|
||||
u32 iobase;
|
||||
u32 * membase;
|
||||
|
||||
struct sk_buff * rx_skb; // skb being RXed
|
||||
unsigned int rx_bytes; // bytes remaining to RX within region
|
||||
void * rx_addr; // addr to send bytes to (for PIO)
|
||||
unsigned int rx_channel; // channel that the skb is going out on
|
||||
|
||||
struct sk_buff * tx_skb; // skb being TXed
|
||||
unsigned int tx_bytes; // bytes remaining to TX within region
|
||||
void * tx_addr; // addr to send bytes from (for PIO)
|
||||
struct iovec * tx_iovec; // remaining regions
|
||||
unsigned int tx_regions; // number of remaining regions
|
||||
|
||||
spinlock_t mem_lock;
|
||||
wait_queue_head_t tx_queue;
|
||||
|
||||
u8 irq;
|
||||
long flags;
|
||||
u8 tx_last;
|
||||
u8 tx_idle;
|
||||
|
||||
rx_q_entry * rx_q_reset;
|
||||
rx_q_entry * rx_q_entry;
|
||||
rx_q_entry * rx_q_wrap;
|
||||
|
||||
struct atm_dev * atm_dev;
|
||||
|
||||
u32 last_vc;
|
||||
|
||||
int noof_spare_buffers;
|
||||
u16 spare_buffers[SPARE_BUFFER_POOL_SIZE];
|
||||
|
||||
u16 tx_channel_record[TX_CHANS];
|
||||
|
||||
// this is what we follow when we get incoming data
|
||||
u32 txer[MAX_VCS/32];
|
||||
struct atm_vcc * rxer[MAX_VCS];
|
||||
|
||||
// cell rate allocation
|
||||
spinlock_t rate_lock;
|
||||
unsigned int rx_avail;
|
||||
unsigned int tx_avail;
|
||||
|
||||
// dev stats
|
||||
unsigned long tx_cell_count;
|
||||
unsigned long rx_cell_count;
|
||||
unsigned long hec_error_count;
|
||||
unsigned long unassigned_cell_count;
|
||||
|
||||
struct pci_dev * pci_dev;
|
||||
struct timer_list housekeeping;
|
||||
};
|
||||
|
||||
typedef struct hrz_dev hrz_dev;
|
||||
|
||||
/* macros for use later */
|
||||
|
||||
#define BUF_PTR(cbptr) ((cbptr) - (cell_buf *) 0)
|
||||
|
||||
#define INTERESTING_INTERRUPTS \
|
||||
(RX_DATA_AV | RX_DISABLED | TX_BUS_MASTER_COMPLETE | RX_BUS_MASTER_COMPLETE)
|
||||
|
||||
// 190 cells by default (192 TX buffers - 2 elbow room, see docs)
|
||||
#define TX_AAL5_LIMIT (190*ATM_CELL_PAYLOAD-ATM_AAL5_TRAILER) // 9112
|
||||
|
||||
// Have enough RX buffers (unless we allow other buffer splits)
|
||||
#define RX_AAL5_LIMIT ATM_MAX_AAL5_PDU
|
||||
|
||||
/* multi-statement macro protector */
|
||||
#define DW(x) do{ x } while(0)
|
||||
|
||||
#define HRZ_DEV(atm_dev) ((hrz_dev *) (atm_dev)->dev_data)
|
||||
#define HRZ_VCC(atm_vcc) ((hrz_vcc *) (atm_vcc)->dev_data)
|
||||
|
||||
/* Turn the LEDs on and off */
|
||||
// The LEDs bits are upside down in that setting the bit in the debug
|
||||
// register will turn the appropriate LED off.
|
||||
|
||||
#define YELLOW_LED DEBUG_BIT_0
|
||||
#define GREEN_LED DEBUG_BIT_1
|
||||
#define YELLOW_LED_OE DEBUG_BIT_0_OE
|
||||
#define GREEN_LED_OE DEBUG_BIT_1_OE
|
||||
|
||||
#define GREEN_LED_OFF(dev) \
|
||||
wr_regl (dev, CONTROL_0_REG, rd_regl (dev, CONTROL_0_REG) | GREEN_LED)
|
||||
#define GREEN_LED_ON(dev) \
|
||||
wr_regl (dev, CONTROL_0_REG, rd_regl (dev, CONTROL_0_REG) &~ GREEN_LED)
|
||||
#define YELLOW_LED_OFF(dev) \
|
||||
wr_regl (dev, CONTROL_0_REG, rd_regl (dev, CONTROL_0_REG) | YELLOW_LED)
|
||||
#define YELLOW_LED_ON(dev) \
|
||||
wr_regl (dev, CONTROL_0_REG, rd_regl (dev, CONTROL_0_REG) &~ YELLOW_LED)
|
||||
|
||||
typedef enum {
|
||||
round_up,
|
||||
round_down,
|
||||
round_nearest
|
||||
} rounding;
|
||||
|
||||
#endif /* DRIVER_ATM_HORIZON_H */
|
||||
380
drivers/atm/idt77105.c
Normal file
380
drivers/atm/idt77105.c
Normal file
@@ -0,0 +1,380 @@
|
||||
/* drivers/atm/idt77105.c - IDT77105 (PHY) driver */
|
||||
|
||||
/* Written 1999 by Greg Banks, NEC Australia <gnb@linuxfan.com>. Based on suni.c */
|
||||
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/atmdev.h>
|
||||
#include <linux/sonet.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/capability.h>
|
||||
#include <linux/atm_idt77105.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/param.h>
|
||||
#include <asm/uaccess.h>
|
||||
|
||||
#include "idt77105.h"
|
||||
|
||||
#undef GENERAL_DEBUG
|
||||
|
||||
#ifdef GENERAL_DEBUG
|
||||
#define DPRINTK(format,args...) printk(KERN_DEBUG format,##args)
|
||||
#else
|
||||
#define DPRINTK(format,args...)
|
||||
#endif
|
||||
|
||||
|
||||
struct idt77105_priv {
|
||||
struct idt77105_stats stats; /* link diagnostics */
|
||||
struct atm_dev *dev; /* device back-pointer */
|
||||
struct idt77105_priv *next;
|
||||
int loop_mode;
|
||||
unsigned char old_mcr; /* storage of MCR reg while signal lost */
|
||||
};
|
||||
|
||||
static DEFINE_SPINLOCK(idt77105_priv_lock);
|
||||
|
||||
#define PRIV(dev) ((struct idt77105_priv *) dev->phy_data)
|
||||
|
||||
#define PUT(val,reg) dev->ops->phy_put(dev,val,IDT77105_##reg)
|
||||
#define GET(reg) dev->ops->phy_get(dev,IDT77105_##reg)
|
||||
|
||||
static void idt77105_stats_timer_func(unsigned long);
|
||||
static void idt77105_restart_timer_func(unsigned long);
|
||||
|
||||
|
||||
static struct timer_list stats_timer =
|
||||
TIMER_INITIALIZER(idt77105_stats_timer_func, 0, 0);
|
||||
static struct timer_list restart_timer =
|
||||
TIMER_INITIALIZER(idt77105_restart_timer_func, 0, 0);
|
||||
static int start_timer = 1;
|
||||
static struct idt77105_priv *idt77105_all = NULL;
|
||||
|
||||
/*
|
||||
* Retrieve the value of one of the IDT77105's counters.
|
||||
* `counter' is one of the IDT77105_CTRSEL_* constants.
|
||||
*/
|
||||
static u16 get_counter(struct atm_dev *dev, int counter)
|
||||
{
|
||||
u16 val;
|
||||
|
||||
/* write the counter bit into PHY register 6 */
|
||||
PUT(counter, CTRSEL);
|
||||
/* read the low 8 bits from register 4 */
|
||||
val = GET(CTRLO);
|
||||
/* read the high 8 bits from register 5 */
|
||||
val |= GET(CTRHI)<<8;
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
/*
|
||||
* Timer function called every second to gather statistics
|
||||
* from the 77105. This is done because the h/w registers
|
||||
* will overflow if not read at least once per second. The
|
||||
* kernel's stats are much higher precision. Also, having
|
||||
* a separate copy of the stats allows implementation of
|
||||
* an ioctl which gathers the stats *without* zero'ing them.
|
||||
*/
|
||||
static void idt77105_stats_timer_func(unsigned long dummy)
|
||||
{
|
||||
struct idt77105_priv *walk;
|
||||
struct atm_dev *dev;
|
||||
struct idt77105_stats *stats;
|
||||
|
||||
DPRINTK("IDT77105 gathering statistics\n");
|
||||
for (walk = idt77105_all; walk; walk = walk->next) {
|
||||
dev = walk->dev;
|
||||
|
||||
stats = &walk->stats;
|
||||
stats->symbol_errors += get_counter(dev, IDT77105_CTRSEL_SEC);
|
||||
stats->tx_cells += get_counter(dev, IDT77105_CTRSEL_TCC);
|
||||
stats->rx_cells += get_counter(dev, IDT77105_CTRSEL_RCC);
|
||||
stats->rx_hec_errors += get_counter(dev, IDT77105_CTRSEL_RHEC);
|
||||
}
|
||||
if (!start_timer) mod_timer(&stats_timer,jiffies+IDT77105_STATS_TIMER_PERIOD);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* A separate timer func which handles restarting PHY chips which
|
||||
* have had the cable re-inserted after being pulled out. This is
|
||||
* done by polling the Good Signal Bit in the Interrupt Status
|
||||
* register every 5 seconds. The other technique (checking Good
|
||||
* Signal Bit in the interrupt handler) cannot be used because PHY
|
||||
* interrupts need to be disabled when the cable is pulled out
|
||||
* to avoid lots of spurious cell error interrupts.
|
||||
*/
|
||||
static void idt77105_restart_timer_func(unsigned long dummy)
|
||||
{
|
||||
struct idt77105_priv *walk;
|
||||
struct atm_dev *dev;
|
||||
unsigned char istat;
|
||||
|
||||
DPRINTK("IDT77105 checking for cable re-insertion\n");
|
||||
for (walk = idt77105_all; walk; walk = walk->next) {
|
||||
dev = walk->dev;
|
||||
|
||||
if (dev->signal != ATM_PHY_SIG_LOST)
|
||||
continue;
|
||||
|
||||
istat = GET(ISTAT); /* side effect: clears all interrupt status bits */
|
||||
if (istat & IDT77105_ISTAT_GOODSIG) {
|
||||
/* Found signal again */
|
||||
dev->signal = ATM_PHY_SIG_FOUND;
|
||||
printk(KERN_NOTICE "%s(itf %d): signal detected again\n",
|
||||
dev->type,dev->number);
|
||||
/* flush the receive FIFO */
|
||||
PUT( GET(DIAG) | IDT77105_DIAG_RFLUSH, DIAG);
|
||||
/* re-enable interrupts */
|
||||
PUT( walk->old_mcr ,MCR);
|
||||
}
|
||||
}
|
||||
if (!start_timer) mod_timer(&restart_timer,jiffies+IDT77105_RESTART_TIMER_PERIOD);
|
||||
}
|
||||
|
||||
|
||||
static int fetch_stats(struct atm_dev *dev,struct idt77105_stats __user *arg,int zero)
|
||||
{
|
||||
unsigned long flags;
|
||||
struct idt77105_stats stats;
|
||||
|
||||
spin_lock_irqsave(&idt77105_priv_lock, flags);
|
||||
memcpy(&stats, &PRIV(dev)->stats, sizeof(struct idt77105_stats));
|
||||
if (zero)
|
||||
memset(&PRIV(dev)->stats, 0, sizeof(struct idt77105_stats));
|
||||
spin_unlock_irqrestore(&idt77105_priv_lock, flags);
|
||||
if (arg == NULL)
|
||||
return 0;
|
||||
return copy_to_user(arg, &PRIV(dev)->stats,
|
||||
sizeof(struct idt77105_stats)) ? -EFAULT : 0;
|
||||
}
|
||||
|
||||
|
||||
static int set_loopback(struct atm_dev *dev,int mode)
|
||||
{
|
||||
int diag;
|
||||
|
||||
diag = GET(DIAG) & ~IDT77105_DIAG_LCMASK;
|
||||
switch (mode) {
|
||||
case ATM_LM_NONE:
|
||||
break;
|
||||
case ATM_LM_LOC_ATM:
|
||||
diag |= IDT77105_DIAG_LC_PHY_LOOPBACK;
|
||||
break;
|
||||
case ATM_LM_RMT_ATM:
|
||||
diag |= IDT77105_DIAG_LC_LINE_LOOPBACK;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
PUT(diag,DIAG);
|
||||
printk(KERN_NOTICE "%s(%d) Loopback mode is: %s\n", dev->type,
|
||||
dev->number,
|
||||
(mode == ATM_LM_NONE ? "NONE" :
|
||||
(mode == ATM_LM_LOC_ATM ? "DIAG (local)" :
|
||||
(mode == IDT77105_DIAG_LC_LINE_LOOPBACK ? "LOOP (remote)" :
|
||||
"unknown")))
|
||||
);
|
||||
PRIV(dev)->loop_mode = mode;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int idt77105_ioctl(struct atm_dev *dev,unsigned int cmd,void __user *arg)
|
||||
{
|
||||
printk(KERN_NOTICE "%s(%d) idt77105_ioctl() called\n",dev->type,dev->number);
|
||||
switch (cmd) {
|
||||
case IDT77105_GETSTATZ:
|
||||
if (!capable(CAP_NET_ADMIN)) return -EPERM;
|
||||
/* fall through */
|
||||
case IDT77105_GETSTAT:
|
||||
return fetch_stats(dev, arg, cmd == IDT77105_GETSTATZ);
|
||||
case ATM_SETLOOP:
|
||||
return set_loopback(dev,(int)(unsigned long) arg);
|
||||
case ATM_GETLOOP:
|
||||
return put_user(PRIV(dev)->loop_mode,(int __user *)arg) ?
|
||||
-EFAULT : 0;
|
||||
case ATM_QUERYLOOP:
|
||||
return put_user(ATM_LM_LOC_ATM | ATM_LM_RMT_ATM,
|
||||
(int __user *) arg) ? -EFAULT : 0;
|
||||
default:
|
||||
return -ENOIOCTLCMD;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void idt77105_int(struct atm_dev *dev)
|
||||
{
|
||||
unsigned char istat;
|
||||
|
||||
istat = GET(ISTAT); /* side effect: clears all interrupt status bits */
|
||||
|
||||
DPRINTK("IDT77105 generated an interrupt, istat=%02x\n", (unsigned)istat);
|
||||
|
||||
if (istat & IDT77105_ISTAT_RSCC) {
|
||||
/* Rx Signal Condition Change - line went up or down */
|
||||
if (istat & IDT77105_ISTAT_GOODSIG) { /* signal detected again */
|
||||
/* This should not happen (restart timer does it) but JIC */
|
||||
dev->signal = ATM_PHY_SIG_FOUND;
|
||||
} else { /* signal lost */
|
||||
/*
|
||||
* Disable interrupts and stop all transmission and
|
||||
* reception - the restart timer will restore these.
|
||||
*/
|
||||
PRIV(dev)->old_mcr = GET(MCR);
|
||||
PUT(
|
||||
(PRIV(dev)->old_mcr|
|
||||
IDT77105_MCR_DREC|
|
||||
IDT77105_MCR_DRIC|
|
||||
IDT77105_MCR_HALTTX
|
||||
) & ~IDT77105_MCR_EIP, MCR);
|
||||
dev->signal = ATM_PHY_SIG_LOST;
|
||||
printk(KERN_NOTICE "%s(itf %d): signal lost\n",
|
||||
dev->type,dev->number);
|
||||
}
|
||||
}
|
||||
|
||||
if (istat & IDT77105_ISTAT_RFO) {
|
||||
/* Rx FIFO Overrun -- perform a FIFO flush */
|
||||
PUT( GET(DIAG) | IDT77105_DIAG_RFLUSH, DIAG);
|
||||
printk(KERN_NOTICE "%s(itf %d): receive FIFO overrun\n",
|
||||
dev->type,dev->number);
|
||||
}
|
||||
#ifdef GENERAL_DEBUG
|
||||
if (istat & (IDT77105_ISTAT_HECERR | IDT77105_ISTAT_SCR |
|
||||
IDT77105_ISTAT_RSE)) {
|
||||
/* normally don't care - just report in stats */
|
||||
printk(KERN_NOTICE "%s(itf %d): received cell with error\n",
|
||||
dev->type,dev->number);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
static int idt77105_start(struct atm_dev *dev)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
if (!(dev->dev_data = kmalloc(sizeof(struct idt77105_priv),GFP_KERNEL)))
|
||||
return -ENOMEM;
|
||||
PRIV(dev)->dev = dev;
|
||||
spin_lock_irqsave(&idt77105_priv_lock, flags);
|
||||
PRIV(dev)->next = idt77105_all;
|
||||
idt77105_all = PRIV(dev);
|
||||
spin_unlock_irqrestore(&idt77105_priv_lock, flags);
|
||||
memset(&PRIV(dev)->stats,0,sizeof(struct idt77105_stats));
|
||||
|
||||
/* initialise dev->signal from Good Signal Bit */
|
||||
dev->signal = GET(ISTAT) & IDT77105_ISTAT_GOODSIG ? ATM_PHY_SIG_FOUND :
|
||||
ATM_PHY_SIG_LOST;
|
||||
if (dev->signal == ATM_PHY_SIG_LOST)
|
||||
printk(KERN_WARNING "%s(itf %d): no signal\n",dev->type,
|
||||
dev->number);
|
||||
|
||||
/* initialise loop mode from hardware */
|
||||
switch ( GET(DIAG) & IDT77105_DIAG_LCMASK ) {
|
||||
case IDT77105_DIAG_LC_NORMAL:
|
||||
PRIV(dev)->loop_mode = ATM_LM_NONE;
|
||||
break;
|
||||
case IDT77105_DIAG_LC_PHY_LOOPBACK:
|
||||
PRIV(dev)->loop_mode = ATM_LM_LOC_ATM;
|
||||
break;
|
||||
case IDT77105_DIAG_LC_LINE_LOOPBACK:
|
||||
PRIV(dev)->loop_mode = ATM_LM_RMT_ATM;
|
||||
break;
|
||||
}
|
||||
|
||||
/* enable interrupts, e.g. on loss of signal */
|
||||
PRIV(dev)->old_mcr = GET(MCR);
|
||||
if (dev->signal == ATM_PHY_SIG_FOUND) {
|
||||
PRIV(dev)->old_mcr |= IDT77105_MCR_EIP;
|
||||
PUT(PRIV(dev)->old_mcr, MCR);
|
||||
}
|
||||
|
||||
|
||||
idt77105_stats_timer_func(0); /* clear 77105 counters */
|
||||
(void) fetch_stats(dev,NULL,1); /* clear kernel counters */
|
||||
|
||||
spin_lock_irqsave(&idt77105_priv_lock, flags);
|
||||
if (start_timer) {
|
||||
start_timer = 0;
|
||||
|
||||
init_timer(&stats_timer);
|
||||
stats_timer.expires = jiffies+IDT77105_STATS_TIMER_PERIOD;
|
||||
stats_timer.function = idt77105_stats_timer_func;
|
||||
add_timer(&stats_timer);
|
||||
|
||||
init_timer(&restart_timer);
|
||||
restart_timer.expires = jiffies+IDT77105_RESTART_TIMER_PERIOD;
|
||||
restart_timer.function = idt77105_restart_timer_func;
|
||||
add_timer(&restart_timer);
|
||||
}
|
||||
spin_unlock_irqrestore(&idt77105_priv_lock, flags);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int idt77105_stop(struct atm_dev *dev)
|
||||
{
|
||||
struct idt77105_priv *walk, *prev;
|
||||
|
||||
DPRINTK("%s(itf %d): stopping IDT77105\n",dev->type,dev->number);
|
||||
|
||||
/* disable interrupts */
|
||||
PUT( GET(MCR) & ~IDT77105_MCR_EIP, MCR );
|
||||
|
||||
/* detach private struct from atm_dev & free */
|
||||
for (prev = NULL, walk = idt77105_all ;
|
||||
walk != NULL;
|
||||
prev = walk, walk = walk->next) {
|
||||
if (walk->dev == dev) {
|
||||
if (prev != NULL)
|
||||
prev->next = walk->next;
|
||||
else
|
||||
idt77105_all = walk->next;
|
||||
dev->phy = NULL;
|
||||
dev->dev_data = NULL;
|
||||
kfree(walk);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static const struct atmphy_ops idt77105_ops = {
|
||||
.start = idt77105_start,
|
||||
.ioctl = idt77105_ioctl,
|
||||
.interrupt = idt77105_int,
|
||||
.stop = idt77105_stop,
|
||||
};
|
||||
|
||||
|
||||
int idt77105_init(struct atm_dev *dev)
|
||||
{
|
||||
dev->phy = &idt77105_ops;
|
||||
return 0;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(idt77105_init);
|
||||
|
||||
static void __exit idt77105_exit(void)
|
||||
{
|
||||
/* turn off timers */
|
||||
del_timer(&stats_timer);
|
||||
del_timer(&restart_timer);
|
||||
}
|
||||
|
||||
module_exit(idt77105_exit);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
91
drivers/atm/idt77105.h
Normal file
91
drivers/atm/idt77105.h
Normal file
@@ -0,0 +1,91 @@
|
||||
/* drivers/atm/idt77105.h - IDT77105 (PHY) declarations */
|
||||
|
||||
/* Written 1999 by Greg Banks, NEC Australia <gnb@linuxfan.com>. Based on suni.h */
|
||||
|
||||
|
||||
#ifndef DRIVER_ATM_IDT77105_H
|
||||
#define DRIVER_ATM_IDT77105_H
|
||||
|
||||
#include <linux/atmdev.h>
|
||||
#include <linux/atmioc.h>
|
||||
|
||||
|
||||
/* IDT77105 registers */
|
||||
|
||||
#define IDT77105_MCR 0x0 /* Master Control Register */
|
||||
#define IDT77105_ISTAT 0x1 /* Interrupt Status */
|
||||
#define IDT77105_DIAG 0x2 /* Diagnostic Control */
|
||||
#define IDT77105_LEDHEC 0x3 /* LED Driver & HEC Status/Control */
|
||||
#define IDT77105_CTRLO 0x4 /* Low Byte Counter Register */
|
||||
#define IDT77105_CTRHI 0x5 /* High Byte Counter Register */
|
||||
#define IDT77105_CTRSEL 0x6 /* Counter Register Read Select */
|
||||
|
||||
/* IDT77105 register values */
|
||||
|
||||
/* MCR */
|
||||
#define IDT77105_MCR_UPLO 0x80 /* R/W, User Prog'le Output Latch */
|
||||
#define IDT77105_MCR_DREC 0x40 /* R/W, Discard Receive Error Cells */
|
||||
#define IDT77105_MCR_ECEIO 0x20 /* R/W, Enable Cell Error Interrupts
|
||||
* Only */
|
||||
#define IDT77105_MCR_TDPC 0x10 /* R/W, Transmit Data Parity Check */
|
||||
#define IDT77105_MCR_DRIC 0x08 /* R/W, Discard Received Idle Cells */
|
||||
#define IDT77105_MCR_HALTTX 0x04 /* R/W, Halt Tx */
|
||||
#define IDT77105_MCR_UMODE 0x02 /* R/W, Utopia (cell/byte) Mode */
|
||||
#define IDT77105_MCR_EIP 0x01 /* R/W, Enable Interrupt Pin */
|
||||
|
||||
/* ISTAT */
|
||||
#define IDT77105_ISTAT_GOODSIG 0x40 /* R, Good Signal Bit */
|
||||
#define IDT77105_ISTAT_HECERR 0x20 /* sticky, HEC Error*/
|
||||
#define IDT77105_ISTAT_SCR 0x10 /* sticky, Short Cell Received */
|
||||
#define IDT77105_ISTAT_TPE 0x08 /* sticky, Transmit Parity Error */
|
||||
#define IDT77105_ISTAT_RSCC 0x04 /* sticky, Rx Signal Condition Change */
|
||||
#define IDT77105_ISTAT_RSE 0x02 /* sticky, Rx Symbol Error */
|
||||
#define IDT77105_ISTAT_RFO 0x01 /* sticky, Rx FIFO Overrun */
|
||||
|
||||
/* DIAG */
|
||||
#define IDT77105_DIAG_FTD 0x80 /* R/W, Force TxClav deassert */
|
||||
#define IDT77105_DIAG_ROS 0x40 /* R/W, RxClav operation select */
|
||||
#define IDT77105_DIAG_MPCS 0x20 /* R/W, Multi-PHY config'n select */
|
||||
#define IDT77105_DIAG_RFLUSH 0x10 /* R/W, clear receive FIFO */
|
||||
#define IDT77105_DIAG_ITPE 0x08 /* R/W, Insert Tx payload error */
|
||||
#define IDT77105_DIAG_ITHE 0x04 /* R/W, Insert Tx HEC error */
|
||||
#define IDT77105_DIAG_UMODE 0x02 /* R/W, Utopia (cell/byte) Mode */
|
||||
#define IDT77105_DIAG_LCMASK 0x03 /* R/W, Loopback Control */
|
||||
|
||||
#define IDT77105_DIAG_LC_NORMAL 0x00 /* Receive from network */
|
||||
#define IDT77105_DIAG_LC_PHY_LOOPBACK 0x02
|
||||
#define IDT77105_DIAG_LC_LINE_LOOPBACK 0x03
|
||||
|
||||
/* LEDHEC */
|
||||
#define IDT77105_LEDHEC_DRHC 0x40 /* R/W, Disable Rx HEC check */
|
||||
#define IDT77105_LEDHEC_DTHC 0x20 /* R/W, Disable Tx HEC calculation */
|
||||
#define IDT77105_LEDHEC_RPWMASK 0x18 /* R/W, RxRef pulse width select */
|
||||
#define IDT77105_LEDHEC_TFS 0x04 /* R, Tx FIFO Status (1=empty) */
|
||||
#define IDT77105_LEDHEC_TLS 0x02 /* R, Tx LED Status (1=lit) */
|
||||
#define IDT77105_LEDHEC_RLS 0x01 /* R, Rx LED Status (1=lit) */
|
||||
|
||||
#define IDT77105_LEDHEC_RPW_1 0x00 /* RxRef active for 1 RxClk cycle */
|
||||
#define IDT77105_LEDHEC_RPW_2 0x08 /* RxRef active for 2 RxClk cycle */
|
||||
#define IDT77105_LEDHEC_RPW_4 0x10 /* RxRef active for 4 RxClk cycle */
|
||||
#define IDT77105_LEDHEC_RPW_8 0x18 /* RxRef active for 8 RxClk cycle */
|
||||
|
||||
/* CTRSEL */
|
||||
#define IDT77105_CTRSEL_SEC 0x08 /* W, Symbol Error Counter */
|
||||
#define IDT77105_CTRSEL_TCC 0x04 /* W, Tx Cell Counter */
|
||||
#define IDT77105_CTRSEL_RCC 0x02 /* W, Rx Cell Counter */
|
||||
#define IDT77105_CTRSEL_RHEC 0x01 /* W, Rx HEC Error Counter */
|
||||
|
||||
#ifdef __KERNEL__
|
||||
int idt77105_init(struct atm_dev *dev) __init;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Tunable parameters
|
||||
*/
|
||||
|
||||
/* Time between samples of the hardware cell counters. Should be <= 1 sec */
|
||||
#define IDT77105_STATS_TIMER_PERIOD (HZ)
|
||||
/* Time between checks to see if the signal has been found again */
|
||||
#define IDT77105_RESTART_TIMER_PERIOD (5 * HZ)
|
||||
|
||||
#endif
|
||||
3882
drivers/atm/idt77252.c
Normal file
3882
drivers/atm/idt77252.c
Normal file
File diff suppressed because it is too large
Load Diff
819
drivers/atm/idt77252.h
Normal file
819
drivers/atm/idt77252.h
Normal file
@@ -0,0 +1,819 @@
|
||||
/*******************************************************************
|
||||
* ident "$Id: idt77252.h,v 1.2 2001/11/11 08:13:54 ecd Exp $"
|
||||
*
|
||||
* $Author: ecd $
|
||||
* $Date: 2001/11/11 08:13:54 $
|
||||
*
|
||||
* Copyright (c) 2000 ATecoM GmbH
|
||||
*
|
||||
* The author may be reached at ecd@atecom.com.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ``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 THE AUTHOR 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
*******************************************************************/
|
||||
|
||||
#ifndef _IDT77252_H
|
||||
#define _IDT77252_H 1
|
||||
|
||||
|
||||
#include <linux/ptrace.h>
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/workqueue.h>
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* Makros */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
#define VPCI2VC(card, vpi, vci) \
|
||||
(((vpi) << card->vcibits) | ((vci) & card->vcimask))
|
||||
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* DEBUGGING definitions */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
#define DBG_RAW_CELL 0x00000400
|
||||
#define DBG_TINY 0x00000200
|
||||
#define DBG_GENERAL 0x00000100
|
||||
#define DBG_XGENERAL 0x00000080
|
||||
#define DBG_INIT 0x00000040
|
||||
#define DBG_DEINIT 0x00000020
|
||||
#define DBG_INTERRUPT 0x00000010
|
||||
#define DBG_OPEN_CONN 0x00000008
|
||||
#define DBG_CLOSE_CONN 0x00000004
|
||||
#define DBG_RX_DATA 0x00000002
|
||||
#define DBG_TX_DATA 0x00000001
|
||||
|
||||
#ifdef CONFIG_ATM_IDT77252_DEBUG
|
||||
|
||||
#define CPRINTK(args...) do { if (debug & DBG_CLOSE_CONN) printk(args); } while(0)
|
||||
#define OPRINTK(args...) do { if (debug & DBG_OPEN_CONN) printk(args); } while(0)
|
||||
#define IPRINTK(args...) do { if (debug & DBG_INIT) printk(args); } while(0)
|
||||
#define INTPRINTK(args...) do { if (debug & DBG_INTERRUPT) printk(args); } while(0)
|
||||
#define DIPRINTK(args...) do { if (debug & DBG_DEINIT) printk(args); } while(0)
|
||||
#define TXPRINTK(args...) do { if (debug & DBG_TX_DATA) printk(args); } while(0)
|
||||
#define RXPRINTK(args...) do { if (debug & DBG_RX_DATA) printk(args); } while(0)
|
||||
#define XPRINTK(args...) do { if (debug & DBG_XGENERAL) printk(args); } while(0)
|
||||
#define DPRINTK(args...) do { if (debug & DBG_GENERAL) printk(args); } while(0)
|
||||
#define NPRINTK(args...) do { if (debug & DBG_TINY) printk(args); } while(0)
|
||||
#define RPRINTK(args...) do { if (debug & DBG_RAW_CELL) printk(args); } while(0)
|
||||
|
||||
#else
|
||||
|
||||
#define CPRINTK(args...) do { } while(0)
|
||||
#define OPRINTK(args...) do { } while(0)
|
||||
#define IPRINTK(args...) do { } while(0)
|
||||
#define INTPRINTK(args...) do { } while(0)
|
||||
#define DIPRINTK(args...) do { } while(0)
|
||||
#define TXPRINTK(args...) do { } while(0)
|
||||
#define RXPRINTK(args...) do { } while(0)
|
||||
#define XPRINTK(args...) do { } while(0)
|
||||
#define DPRINTK(args...) do { } while(0)
|
||||
#define NPRINTK(args...) do { } while(0)
|
||||
#define RPRINTK(args...) do { } while(0)
|
||||
|
||||
#endif
|
||||
|
||||
#define SCHED_UBR0 0
|
||||
#define SCHED_UBR 1
|
||||
#define SCHED_VBR 2
|
||||
#define SCHED_ABR 3
|
||||
#define SCHED_CBR 4
|
||||
|
||||
#define SCQFULL_TIMEOUT HZ
|
||||
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* Free Buffer Queue Layout */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
#define SAR_FB_SIZE_0 (2048 - 256)
|
||||
#define SAR_FB_SIZE_1 (4096 - 256)
|
||||
#define SAR_FB_SIZE_2 (8192 - 256)
|
||||
#define SAR_FB_SIZE_3 (16384 - 256)
|
||||
|
||||
#define SAR_FBQ0_LOW 4
|
||||
#define SAR_FBQ0_HIGH 8
|
||||
#define SAR_FBQ1_LOW 2
|
||||
#define SAR_FBQ1_HIGH 4
|
||||
#define SAR_FBQ2_LOW 1
|
||||
#define SAR_FBQ2_HIGH 2
|
||||
#define SAR_FBQ3_LOW 1
|
||||
#define SAR_FBQ3_HIGH 2
|
||||
|
||||
#if 0
|
||||
#define SAR_TST_RESERVED 44 /* Num TST reserved for UBR/ABR/VBR */
|
||||
#else
|
||||
#define SAR_TST_RESERVED 0 /* Num TST reserved for UBR/ABR/VBR */
|
||||
#endif
|
||||
|
||||
#define TCT_CBR 0x00000000
|
||||
#define TCT_UBR 0x00000000
|
||||
#define TCT_VBR 0x40000000
|
||||
#define TCT_ABR 0x80000000
|
||||
#define TCT_TYPE 0xc0000000
|
||||
|
||||
#define TCT_RR 0x20000000
|
||||
#define TCT_LMCR 0x08000000
|
||||
#define TCT_SCD_MASK 0x0007ffff
|
||||
|
||||
#define TCT_TSIF 0x00004000
|
||||
#define TCT_HALT 0x80000000
|
||||
#define TCT_IDLE 0x40000000
|
||||
#define TCT_FLAG_UBR 0x80000000
|
||||
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* Structure describing an IDT77252 */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
struct scqe
|
||||
{
|
||||
u32 word_1;
|
||||
u32 word_2;
|
||||
u32 word_3;
|
||||
u32 word_4;
|
||||
};
|
||||
|
||||
#define SCQ_ENTRIES 64
|
||||
#define SCQ_SIZE (SCQ_ENTRIES * sizeof(struct scqe))
|
||||
#define SCQ_MASK (SCQ_SIZE - 1)
|
||||
|
||||
struct scq_info
|
||||
{
|
||||
struct scqe *base;
|
||||
struct scqe *next;
|
||||
struct scqe *last;
|
||||
dma_addr_t paddr;
|
||||
spinlock_t lock;
|
||||
atomic_t used;
|
||||
unsigned long trans_start;
|
||||
unsigned long scd;
|
||||
spinlock_t skblock;
|
||||
struct sk_buff_head transmit;
|
||||
struct sk_buff_head pending;
|
||||
};
|
||||
|
||||
struct rx_pool {
|
||||
struct sk_buff *first;
|
||||
struct sk_buff **last;
|
||||
unsigned int len;
|
||||
unsigned int count;
|
||||
};
|
||||
|
||||
struct aal1 {
|
||||
unsigned int total;
|
||||
unsigned int count;
|
||||
struct sk_buff *data;
|
||||
unsigned char sequence;
|
||||
};
|
||||
|
||||
struct rate_estimator {
|
||||
struct timer_list timer;
|
||||
unsigned int interval;
|
||||
unsigned int ewma_log;
|
||||
u64 cells;
|
||||
u64 last_cells;
|
||||
long avcps;
|
||||
u32 cps;
|
||||
u32 maxcps;
|
||||
};
|
||||
|
||||
struct vc_map {
|
||||
unsigned int index;
|
||||
unsigned long flags;
|
||||
#define VCF_TX 0
|
||||
#define VCF_RX 1
|
||||
#define VCF_IDLE 2
|
||||
#define VCF_RSV 3
|
||||
unsigned int class;
|
||||
u8 init_er;
|
||||
u8 lacr;
|
||||
u8 max_er;
|
||||
unsigned int ntste;
|
||||
spinlock_t lock;
|
||||
struct atm_vcc *tx_vcc;
|
||||
struct atm_vcc *rx_vcc;
|
||||
struct idt77252_dev *card;
|
||||
struct scq_info *scq; /* To keep track of the SCQ */
|
||||
struct rate_estimator *estimator;
|
||||
int scd_index;
|
||||
union {
|
||||
struct rx_pool rx_pool;
|
||||
struct aal1 aal1;
|
||||
} rcv;
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* RCTE - Receive Connection Table Entry */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
struct rct_entry
|
||||
{
|
||||
u32 word_1;
|
||||
u32 buffer_handle;
|
||||
u32 dma_address;
|
||||
u32 aal5_crc32;
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* RSQ - Receive Status Queue */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
#define SAR_RSQE_VALID 0x80000000
|
||||
#define SAR_RSQE_IDLE 0x40000000
|
||||
#define SAR_RSQE_BUF_MASK 0x00030000
|
||||
#define SAR_RSQE_BUF_ASGN 0x00008000
|
||||
#define SAR_RSQE_NZGFC 0x00004000
|
||||
#define SAR_RSQE_EPDU 0x00002000
|
||||
#define SAR_RSQE_BUF_CONT 0x00001000
|
||||
#define SAR_RSQE_EFCIE 0x00000800
|
||||
#define SAR_RSQE_CLP 0x00000400
|
||||
#define SAR_RSQE_CRC 0x00000200
|
||||
#define SAR_RSQE_CELLCNT 0x000001FF
|
||||
|
||||
|
||||
#define RSQSIZE 8192
|
||||
#define RSQ_NUM_ENTRIES (RSQSIZE / 16)
|
||||
#define RSQ_ALIGNMENT 8192
|
||||
|
||||
struct rsq_entry {
|
||||
u32 word_1;
|
||||
u32 word_2;
|
||||
u32 word_3;
|
||||
u32 word_4;
|
||||
};
|
||||
|
||||
struct rsq_info {
|
||||
struct rsq_entry *base;
|
||||
struct rsq_entry *next;
|
||||
struct rsq_entry *last;
|
||||
dma_addr_t paddr;
|
||||
};
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* TSQ - Transmit Status Queue */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
#define SAR_TSQE_INVALID 0x80000000
|
||||
#define SAR_TSQE_TIMESTAMP 0x00FFFFFF
|
||||
#define SAR_TSQE_TYPE 0x60000000
|
||||
#define SAR_TSQE_TYPE_TIMER 0x00000000
|
||||
#define SAR_TSQE_TYPE_TSR 0x20000000
|
||||
#define SAR_TSQE_TYPE_IDLE 0x40000000
|
||||
#define SAR_TSQE_TYPE_TBD_COMP 0x60000000
|
||||
|
||||
#define SAR_TSQE_TAG(stat) (((stat) >> 24) & 0x1f)
|
||||
|
||||
#define TSQSIZE 8192
|
||||
#define TSQ_NUM_ENTRIES 1024
|
||||
#define TSQ_ALIGNMENT 8192
|
||||
|
||||
struct tsq_entry
|
||||
{
|
||||
u32 word_1;
|
||||
u32 word_2;
|
||||
};
|
||||
|
||||
struct tsq_info
|
||||
{
|
||||
struct tsq_entry *base;
|
||||
struct tsq_entry *next;
|
||||
struct tsq_entry *last;
|
||||
dma_addr_t paddr;
|
||||
};
|
||||
|
||||
struct tst_info
|
||||
{
|
||||
struct vc_map *vc;
|
||||
u32 tste;
|
||||
};
|
||||
|
||||
#define TSTE_MASK 0x601fffff
|
||||
|
||||
#define TSTE_OPC_MASK 0x60000000
|
||||
#define TSTE_OPC_NULL 0x00000000
|
||||
#define TSTE_OPC_CBR 0x20000000
|
||||
#define TSTE_OPC_VAR 0x40000000
|
||||
#define TSTE_OPC_JMP 0x60000000
|
||||
|
||||
#define TSTE_PUSH_IDLE 0x01000000
|
||||
#define TSTE_PUSH_ACTIVE 0x02000000
|
||||
|
||||
#define TST_SWITCH_DONE 0
|
||||
#define TST_SWITCH_PENDING 1
|
||||
#define TST_SWITCH_WAIT 2
|
||||
|
||||
#define FBQ_SHIFT 9
|
||||
#define FBQ_SIZE (1 << FBQ_SHIFT)
|
||||
#define FBQ_MASK (FBQ_SIZE - 1)
|
||||
|
||||
struct sb_pool
|
||||
{
|
||||
unsigned int index;
|
||||
struct sk_buff *skb[FBQ_SIZE];
|
||||
};
|
||||
|
||||
#define POOL_HANDLE(queue, index) (((queue + 1) << 16) | (index))
|
||||
#define POOL_QUEUE(handle) (((handle) >> 16) - 1)
|
||||
#define POOL_INDEX(handle) ((handle) & 0xffff)
|
||||
|
||||
struct idt77252_dev
|
||||
{
|
||||
struct tsq_info tsq; /* Transmit Status Queue */
|
||||
struct rsq_info rsq; /* Receive Status Queue */
|
||||
|
||||
struct pci_dev *pcidev; /* PCI handle (desriptor) */
|
||||
struct atm_dev *atmdev; /* ATM device desriptor */
|
||||
|
||||
void __iomem *membase; /* SAR's memory base address */
|
||||
unsigned long srambase; /* SAR's sram base address */
|
||||
void __iomem *fbq[4]; /* FBQ fill addresses */
|
||||
|
||||
struct semaphore mutex;
|
||||
spinlock_t cmd_lock; /* for r/w utility/sram */
|
||||
|
||||
unsigned long softstat;
|
||||
unsigned long flags; /* see blow */
|
||||
|
||||
struct work_struct tqueue;
|
||||
|
||||
unsigned long tct_base; /* TCT base address in SRAM */
|
||||
unsigned long rct_base; /* RCT base address in SRAM */
|
||||
unsigned long rt_base; /* Rate Table base in SRAM */
|
||||
unsigned long scd_base; /* SCD base address in SRAM */
|
||||
unsigned long tst[2]; /* TST base address in SRAM */
|
||||
unsigned long abrst_base; /* ABRST base address in SRAM */
|
||||
unsigned long fifo_base; /* RX FIFO base in SRAM */
|
||||
|
||||
unsigned long irqstat[16];
|
||||
|
||||
unsigned int sramsize; /* SAR's sram size */
|
||||
|
||||
unsigned int tct_size; /* total TCT entries */
|
||||
unsigned int rct_size; /* total RCT entries */
|
||||
unsigned int scd_size; /* length of SCD */
|
||||
unsigned int tst_size; /* total TST entries */
|
||||
unsigned int tst_free; /* free TSTEs in TST */
|
||||
unsigned int abrst_size; /* size of ABRST in words */
|
||||
unsigned int fifo_size; /* size of RX FIFO in words */
|
||||
|
||||
unsigned int vpibits; /* Bits used for VPI index */
|
||||
unsigned int vcibits; /* Bits used for VCI index */
|
||||
unsigned int vcimask; /* Mask for VCI index */
|
||||
|
||||
unsigned int utopia_pcr; /* Utopia Itf's Cell Rate */
|
||||
unsigned int link_pcr; /* PHY's Peek Cell Rate */
|
||||
|
||||
struct vc_map **vcs; /* Open Connections */
|
||||
struct vc_map **scd2vc; /* SCD to Connection map */
|
||||
|
||||
struct tst_info *soft_tst; /* TST to Connection map */
|
||||
unsigned int tst_index; /* Current TST in use */
|
||||
struct timer_list tst_timer;
|
||||
spinlock_t tst_lock;
|
||||
unsigned long tst_state;
|
||||
|
||||
struct sb_pool sbpool[4]; /* Pool of RX skbuffs */
|
||||
struct sk_buff *raw_cell_head; /* Pointer to raw cell queue */
|
||||
u32 *raw_cell_hnd; /* Pointer to RCQ handle */
|
||||
dma_addr_t raw_cell_paddr;
|
||||
|
||||
int index; /* SAR's ID */
|
||||
int revision; /* chip revision */
|
||||
|
||||
char name[16]; /* Device name */
|
||||
|
||||
struct idt77252_dev *next;
|
||||
};
|
||||
|
||||
|
||||
/* definition for flag field above */
|
||||
#define IDT77252_BIT_INIT 1
|
||||
#define IDT77252_BIT_INTERRUPT 2
|
||||
|
||||
|
||||
#define ATM_CELL_PAYLOAD 48
|
||||
|
||||
#define FREEBUF_ALIGNMENT 16
|
||||
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* Makros */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
#define ALIGN_ADDRESS(addr, alignment) \
|
||||
((((u32)(addr)) + (((u32)(alignment))-1)) & ~(((u32)(alignment)) - 1))
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* ABR SAR Network operation Register */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
#define SAR_REG_DR0 (card->membase + 0x00)
|
||||
#define SAR_REG_DR1 (card->membase + 0x04)
|
||||
#define SAR_REG_DR2 (card->membase + 0x08)
|
||||
#define SAR_REG_DR3 (card->membase + 0x0C)
|
||||
#define SAR_REG_CMD (card->membase + 0x10)
|
||||
#define SAR_REG_CFG (card->membase + 0x14)
|
||||
#define SAR_REG_STAT (card->membase + 0x18)
|
||||
#define SAR_REG_RSQB (card->membase + 0x1C)
|
||||
#define SAR_REG_RSQT (card->membase + 0x20)
|
||||
#define SAR_REG_RSQH (card->membase + 0x24)
|
||||
#define SAR_REG_CDC (card->membase + 0x28)
|
||||
#define SAR_REG_VPEC (card->membase + 0x2C)
|
||||
#define SAR_REG_ICC (card->membase + 0x30)
|
||||
#define SAR_REG_RAWCT (card->membase + 0x34)
|
||||
#define SAR_REG_TMR (card->membase + 0x38)
|
||||
#define SAR_REG_TSTB (card->membase + 0x3C)
|
||||
#define SAR_REG_TSQB (card->membase + 0x40)
|
||||
#define SAR_REG_TSQT (card->membase + 0x44)
|
||||
#define SAR_REG_TSQH (card->membase + 0x48)
|
||||
#define SAR_REG_GP (card->membase + 0x4C)
|
||||
#define SAR_REG_VPM (card->membase + 0x50)
|
||||
#define SAR_REG_RXFD (card->membase + 0x54)
|
||||
#define SAR_REG_RXFT (card->membase + 0x58)
|
||||
#define SAR_REG_RXFH (card->membase + 0x5C)
|
||||
#define SAR_REG_RAWHND (card->membase + 0x60)
|
||||
#define SAR_REG_RXSTAT (card->membase + 0x64)
|
||||
#define SAR_REG_ABRSTD (card->membase + 0x68)
|
||||
#define SAR_REG_ABRRQ (card->membase + 0x6C)
|
||||
#define SAR_REG_VBRRQ (card->membase + 0x70)
|
||||
#define SAR_REG_RTBL (card->membase + 0x74)
|
||||
#define SAR_REG_MDFCT (card->membase + 0x78)
|
||||
#define SAR_REG_TXSTAT (card->membase + 0x7C)
|
||||
#define SAR_REG_TCMDQ (card->membase + 0x80)
|
||||
#define SAR_REG_IRCP (card->membase + 0x84)
|
||||
#define SAR_REG_FBQP0 (card->membase + 0x88)
|
||||
#define SAR_REG_FBQP1 (card->membase + 0x8C)
|
||||
#define SAR_REG_FBQP2 (card->membase + 0x90)
|
||||
#define SAR_REG_FBQP3 (card->membase + 0x94)
|
||||
#define SAR_REG_FBQS0 (card->membase + 0x98)
|
||||
#define SAR_REG_FBQS1 (card->membase + 0x9C)
|
||||
#define SAR_REG_FBQS2 (card->membase + 0xA0)
|
||||
#define SAR_REG_FBQS3 (card->membase + 0xA4)
|
||||
#define SAR_REG_FBQWP0 (card->membase + 0xA8)
|
||||
#define SAR_REG_FBQWP1 (card->membase + 0xAC)
|
||||
#define SAR_REG_FBQWP2 (card->membase + 0xB0)
|
||||
#define SAR_REG_FBQWP3 (card->membase + 0xB4)
|
||||
#define SAR_REG_NOW (card->membase + 0xB8)
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* Commands */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
#define SAR_CMD_NO_OPERATION 0x00000000
|
||||
#define SAR_CMD_OPENCLOSE_CONNECTION 0x20000000
|
||||
#define SAR_CMD_WRITE_SRAM 0x40000000
|
||||
#define SAR_CMD_READ_SRAM 0x50000000
|
||||
#define SAR_CMD_READ_UTILITY 0x80000000
|
||||
#define SAR_CMD_WRITE_UTILITY 0x90000000
|
||||
|
||||
#define SAR_CMD_OPEN_CONNECTION (SAR_CMD_OPENCLOSE_CONNECTION | 0x00080000)
|
||||
#define SAR_CMD_CLOSE_CONNECTION SAR_CMD_OPENCLOSE_CONNECTION
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* Configuration Register bits */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
#define SAR_CFG_SWRST 0x80000000 /* Software reset */
|
||||
#define SAR_CFG_LOOP 0x40000000 /* Internal Loopback */
|
||||
#define SAR_CFG_RXPTH 0x20000000 /* Receive Path Enable */
|
||||
#define SAR_CFG_IDLE_CLP 0x10000000 /* SAR set CLP Bits of Null Cells */
|
||||
#define SAR_CFG_TX_FIFO_SIZE_1 0x04000000 /* TX FIFO Size = 1 cell */
|
||||
#define SAR_CFG_TX_FIFO_SIZE_2 0x08000000 /* TX FIFO Size = 2 cells */
|
||||
#define SAR_CFG_TX_FIFO_SIZE_4 0x0C000000 /* TX FIFO Size = 4 cells */
|
||||
#define SAR_CFG_TX_FIFO_SIZE_9 0x00000000 /* TX FIFO Size = 9 cells (full) */
|
||||
#define SAR_CFG_NO_IDLE 0x02000000 /* SAR sends no Null Cells */
|
||||
#define SAR_CFG_RSVD1 0x01000000 /* Reserved */
|
||||
#define SAR_CFG_RXSTQ_SIZE_2k 0x00000000 /* RX Stat Queue Size = 2048 byte */
|
||||
#define SAR_CFG_RXSTQ_SIZE_4k 0x00400000 /* RX Stat Queue Size = 4096 byte */
|
||||
#define SAR_CFG_RXSTQ_SIZE_8k 0x00800000 /* RX Stat Queue Size = 8192 byte */
|
||||
#define SAR_CFG_RXSTQ_SIZE_R 0x00C00000 /* RX Stat Queue Size = reserved */
|
||||
#define SAR_CFG_ICAPT 0x00200000 /* accept Invalid Cells */
|
||||
#define SAR_CFG_IGGFC 0x00100000 /* Ignore GFC */
|
||||
#define SAR_CFG_VPVCS_0 0x00000000 /* VPI/VCI Select bit range */
|
||||
#define SAR_CFG_VPVCS_1 0x00040000 /* VPI/VCI Select bit range */
|
||||
#define SAR_CFG_VPVCS_2 0x00080000 /* VPI/VCI Select bit range */
|
||||
#define SAR_CFG_VPVCS_8 0x000C0000 /* VPI/VCI Select bit range */
|
||||
#define SAR_CFG_CNTBL_1k 0x00000000 /* Connection Table Size */
|
||||
#define SAR_CFG_CNTBL_4k 0x00010000 /* Connection Table Size */
|
||||
#define SAR_CFG_CNTBL_16k 0x00020000 /* Connection Table Size */
|
||||
#define SAR_CFG_CNTBL_512 0x00030000 /* Connection Table Size */
|
||||
#define SAR_CFG_VPECA 0x00008000 /* VPI/VCI Error Cell Accept */
|
||||
#define SAR_CFG_RXINT_NOINT 0x00000000 /* No Interrupt on PDU received */
|
||||
#define SAR_CFG_RXINT_NODELAY 0x00001000 /* Interrupt without delay to host*/
|
||||
#define SAR_CFG_RXINT_256US 0x00002000 /* Interrupt with delay 256 usec */
|
||||
#define SAR_CFG_RXINT_505US 0x00003000 /* Interrupt with delay 505 usec */
|
||||
#define SAR_CFG_RXINT_742US 0x00004000 /* Interrupt with delay 742 usec */
|
||||
#define SAR_CFG_RAWIE 0x00000800 /* Raw Cell Queue Interrupt Enable*/
|
||||
#define SAR_CFG_RQFIE 0x00000400 /* RSQ Almost Full Int Enable */
|
||||
#define SAR_CFG_RSVD2 0x00000200 /* Reserved */
|
||||
#define SAR_CFG_CACHE 0x00000100 /* DMA on Cache Line Boundary */
|
||||
#define SAR_CFG_TMOIE 0x00000080 /* Timer Roll Over Int Enable */
|
||||
#define SAR_CFG_FBIE 0x00000040 /* Free Buffer Queue Int Enable */
|
||||
#define SAR_CFG_TXEN 0x00000020 /* Transmit Operation Enable */
|
||||
#define SAR_CFG_TXINT 0x00000010 /* Transmit status Int Enable */
|
||||
#define SAR_CFG_TXUIE 0x00000008 /* Transmit underrun Int Enable */
|
||||
#define SAR_CFG_UMODE 0x00000004 /* Utopia Mode Select */
|
||||
#define SAR_CFG_TXSFI 0x00000002 /* Transmit status Full Int Enable*/
|
||||
#define SAR_CFG_PHYIE 0x00000001 /* PHY Interrupt Enable */
|
||||
|
||||
#define SAR_CFG_TX_FIFO_SIZE_MASK 0x0C000000 /* TX FIFO Size Mask */
|
||||
#define SAR_CFG_RXSTQSIZE_MASK 0x00C00000
|
||||
#define SAR_CFG_CNTBL_MASK 0x00030000
|
||||
#define SAR_CFG_RXINT_MASK 0x00007000
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* Status Register bits */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
#define SAR_STAT_FRAC_3 0xF0000000 /* Fraction of Free Buffer Queue 3 */
|
||||
#define SAR_STAT_FRAC_2 0x0F000000 /* Fraction of Free Buffer Queue 2 */
|
||||
#define SAR_STAT_FRAC_1 0x00F00000 /* Fraction of Free Buffer Queue 1 */
|
||||
#define SAR_STAT_FRAC_0 0x000F0000 /* Fraction of Free Buffer Queue 0 */
|
||||
#define SAR_STAT_TSIF 0x00008000 /* Transmit Status Indicator */
|
||||
#define SAR_STAT_TXICP 0x00004000 /* Transmit Status Indicator */
|
||||
#define SAR_STAT_RSVD1 0x00002000 /* Reserved */
|
||||
#define SAR_STAT_TSQF 0x00001000 /* Transmit Status Queue full */
|
||||
#define SAR_STAT_TMROF 0x00000800 /* Timer overflow */
|
||||
#define SAR_STAT_PHYI 0x00000400 /* PHY device Interrupt flag */
|
||||
#define SAR_STAT_CMDBZ 0x00000200 /* ABR SAR Comand Busy Flag */
|
||||
#define SAR_STAT_FBQ3A 0x00000100 /* Free Buffer Queue 3 Attention */
|
||||
#define SAR_STAT_FBQ2A 0x00000080 /* Free Buffer Queue 2 Attention */
|
||||
#define SAR_STAT_RSQF 0x00000040 /* Receive Status Queue full */
|
||||
#define SAR_STAT_EPDU 0x00000020 /* End Of PDU Flag */
|
||||
#define SAR_STAT_RAWCF 0x00000010 /* Raw Cell Flag */
|
||||
#define SAR_STAT_FBQ1A 0x00000008 /* Free Buffer Queue 1 Attention */
|
||||
#define SAR_STAT_FBQ0A 0x00000004 /* Free Buffer Queue 0 Attention */
|
||||
#define SAR_STAT_RSQAF 0x00000002 /* Receive Status Queue almost full*/
|
||||
#define SAR_STAT_RSVD2 0x00000001 /* Reserved */
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* General Purpose Register bits */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
#define SAR_GP_TXNCC_MASK 0xff000000 /* Transmit Negative Credit Count */
|
||||
#define SAR_GP_EEDI 0x00010000 /* EEPROM Data In */
|
||||
#define SAR_GP_BIGE 0x00008000 /* Big Endian Operation */
|
||||
#define SAR_GP_RM_NORMAL 0x00000000 /* Normal handling of RM cells */
|
||||
#define SAR_GP_RM_TO_RCQ 0x00002000 /* put RM cells into Raw Cell Queue */
|
||||
#define SAR_GP_RM_RSVD 0x00004000 /* Reserved */
|
||||
#define SAR_GP_RM_INHIBIT 0x00006000 /* Inhibit update of Connection tab */
|
||||
#define SAR_GP_PHY_RESET 0x00000008 /* PHY Reset */
|
||||
#define SAR_GP_EESCLK 0x00000004 /* EEPROM SCLK */
|
||||
#define SAR_GP_EECS 0x00000002 /* EEPROM Chip Select */
|
||||
#define SAR_GP_EEDO 0x00000001 /* EEPROM Data Out */
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* SAR local SRAM layout for 128k work SRAM */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
#define SAR_SRAM_SCD_SIZE 12
|
||||
#define SAR_SRAM_TCT_SIZE 8
|
||||
#define SAR_SRAM_RCT_SIZE 4
|
||||
|
||||
#define SAR_SRAM_TCT_128_BASE 0x00000
|
||||
#define SAR_SRAM_TCT_128_TOP 0x01fff
|
||||
#define SAR_SRAM_RCT_128_BASE 0x02000
|
||||
#define SAR_SRAM_RCT_128_TOP 0x02fff
|
||||
#define SAR_SRAM_FB0_128_BASE 0x03000
|
||||
#define SAR_SRAM_FB0_128_TOP 0x033ff
|
||||
#define SAR_SRAM_FB1_128_BASE 0x03400
|
||||
#define SAR_SRAM_FB1_128_TOP 0x037ff
|
||||
#define SAR_SRAM_FB2_128_BASE 0x03800
|
||||
#define SAR_SRAM_FB2_128_TOP 0x03bff
|
||||
#define SAR_SRAM_FB3_128_BASE 0x03c00
|
||||
#define SAR_SRAM_FB3_128_TOP 0x03fff
|
||||
#define SAR_SRAM_SCD_128_BASE 0x04000
|
||||
#define SAR_SRAM_SCD_128_TOP 0x07fff
|
||||
#define SAR_SRAM_TST1_128_BASE 0x08000
|
||||
#define SAR_SRAM_TST1_128_TOP 0x0bfff
|
||||
#define SAR_SRAM_TST2_128_BASE 0x0c000
|
||||
#define SAR_SRAM_TST2_128_TOP 0x0ffff
|
||||
#define SAR_SRAM_ABRSTD_128_BASE 0x10000
|
||||
#define SAR_SRAM_ABRSTD_128_TOP 0x13fff
|
||||
#define SAR_SRAM_RT_128_BASE 0x14000
|
||||
#define SAR_SRAM_RT_128_TOP 0x15fff
|
||||
|
||||
#define SAR_SRAM_FIFO_128_BASE 0x18000
|
||||
#define SAR_SRAM_FIFO_128_TOP 0x1ffff
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* SAR local SRAM layout for 32k work SRAM */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
#define SAR_SRAM_TCT_32_BASE 0x00000
|
||||
#define SAR_SRAM_TCT_32_TOP 0x00fff
|
||||
#define SAR_SRAM_RCT_32_BASE 0x01000
|
||||
#define SAR_SRAM_RCT_32_TOP 0x017ff
|
||||
#define SAR_SRAM_FB0_32_BASE 0x01800
|
||||
#define SAR_SRAM_FB0_32_TOP 0x01bff
|
||||
#define SAR_SRAM_FB1_32_BASE 0x01c00
|
||||
#define SAR_SRAM_FB1_32_TOP 0x01fff
|
||||
#define SAR_SRAM_FB2_32_BASE 0x02000
|
||||
#define SAR_SRAM_FB2_32_TOP 0x023ff
|
||||
#define SAR_SRAM_FB3_32_BASE 0x02400
|
||||
#define SAR_SRAM_FB3_32_TOP 0x027ff
|
||||
#define SAR_SRAM_SCD_32_BASE 0x02800
|
||||
#define SAR_SRAM_SCD_32_TOP 0x03fff
|
||||
#define SAR_SRAM_TST1_32_BASE 0x04000
|
||||
#define SAR_SRAM_TST1_32_TOP 0x04fff
|
||||
#define SAR_SRAM_TST2_32_BASE 0x05000
|
||||
#define SAR_SRAM_TST2_32_TOP 0x05fff
|
||||
#define SAR_SRAM_ABRSTD_32_BASE 0x06000
|
||||
#define SAR_SRAM_ABRSTD_32_TOP 0x067ff
|
||||
#define SAR_SRAM_RT_32_BASE 0x06800
|
||||
#define SAR_SRAM_RT_32_TOP 0x06fff
|
||||
#define SAR_SRAM_FIFO_32_BASE 0x07000
|
||||
#define SAR_SRAM_FIFO_32_TOP 0x07fff
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* TSR - Transmit Status Request */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
#define SAR_TSR_TYPE_TSR 0x80000000
|
||||
#define SAR_TSR_TYPE_TBD 0x00000000
|
||||
#define SAR_TSR_TSIF 0x20000000
|
||||
#define SAR_TSR_TAG_MASK 0x01F00000
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* TBD - Transmit Buffer Descriptor */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
#define SAR_TBD_EPDU 0x40000000
|
||||
#define SAR_TBD_TSIF 0x20000000
|
||||
#define SAR_TBD_OAM 0x10000000
|
||||
#define SAR_TBD_AAL0 0x00000000
|
||||
#define SAR_TBD_AAL34 0x04000000
|
||||
#define SAR_TBD_AAL5 0x08000000
|
||||
#define SAR_TBD_GTSI 0x02000000
|
||||
#define SAR_TBD_TAG_MASK 0x01F00000
|
||||
|
||||
#define SAR_TBD_VPI_MASK 0x0FF00000
|
||||
#define SAR_TBD_VCI_MASK 0x000FFFF0
|
||||
#define SAR_TBD_VC_MASK (SAR_TBD_VPI_MASK | SAR_TBD_VCI_MASK)
|
||||
|
||||
#define SAR_TBD_VPI_SHIFT 20
|
||||
#define SAR_TBD_VCI_SHIFT 4
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* RXFD - Receive FIFO Descriptor */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
#define SAR_RXFD_SIZE_MASK 0x0F000000
|
||||
#define SAR_RXFD_SIZE_512 0x00000000 /* 512 words */
|
||||
#define SAR_RXFD_SIZE_1K 0x01000000 /* 1k words */
|
||||
#define SAR_RXFD_SIZE_2K 0x02000000 /* 2k words */
|
||||
#define SAR_RXFD_SIZE_4K 0x03000000 /* 4k words */
|
||||
#define SAR_RXFD_SIZE_8K 0x04000000 /* 8k words */
|
||||
#define SAR_RXFD_SIZE_16K 0x05000000 /* 16k words */
|
||||
#define SAR_RXFD_SIZE_32K 0x06000000 /* 32k words */
|
||||
#define SAR_RXFD_SIZE_64K 0x07000000 /* 64k words */
|
||||
#define SAR_RXFD_SIZE_128K 0x08000000 /* 128k words */
|
||||
#define SAR_RXFD_SIZE_256K 0x09000000 /* 256k words */
|
||||
#define SAR_RXFD_ADDR_MASK 0x001ffc00
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* ABRSTD - ABR + VBR Schedule Tables */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
#define SAR_ABRSTD_SIZE_MASK 0x07000000
|
||||
#define SAR_ABRSTD_SIZE_512 0x00000000 /* 512 words */
|
||||
#define SAR_ABRSTD_SIZE_1K 0x01000000 /* 1k words */
|
||||
#define SAR_ABRSTD_SIZE_2K 0x02000000 /* 2k words */
|
||||
#define SAR_ABRSTD_SIZE_4K 0x03000000 /* 4k words */
|
||||
#define SAR_ABRSTD_SIZE_8K 0x04000000 /* 8k words */
|
||||
#define SAR_ABRSTD_SIZE_16K 0x05000000 /* 16k words */
|
||||
#define SAR_ABRSTD_ADDR_MASK 0x001ffc00
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* RCTE - Receive Connection Table Entry */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
#define SAR_RCTE_IL_MASK 0xE0000000 /* inactivity limit */
|
||||
#define SAR_RCTE_IC_MASK 0x1C000000 /* inactivity count */
|
||||
#define SAR_RCTE_RSVD 0x02000000 /* reserved */
|
||||
#define SAR_RCTE_LCD 0x01000000 /* last cell data */
|
||||
#define SAR_RCTE_CI_VC 0x00800000 /* EFCI in previous cell of VC */
|
||||
#define SAR_RCTE_FBP_01 0x00000000 /* 1. cell->FBQ0, others->FBQ1 */
|
||||
#define SAR_RCTE_FBP_1 0x00200000 /* use FBQ 1 for all cells */
|
||||
#define SAR_RCTE_FBP_2 0x00400000 /* use FBQ 2 for all cells */
|
||||
#define SAR_RCTE_FBP_3 0x00600000 /* use FBQ 3 for all cells */
|
||||
#define SAR_RCTE_NZ_GFC 0x00100000 /* non zero GFC in all cell of VC */
|
||||
#define SAR_RCTE_CONNECTOPEN 0x00080000 /* VC is open */
|
||||
#define SAR_RCTE_AAL_MASK 0x00070000 /* mask for AAL type field s.b. */
|
||||
#define SAR_RCTE_RAWCELLINTEN 0x00008000 /* raw cell interrupt enable */
|
||||
#define SAR_RCTE_RXCONCELLADDR 0x00004000 /* RX constant cell address */
|
||||
#define SAR_RCTE_BUFFSTAT_MASK 0x00003000 /* buffer status */
|
||||
#define SAR_RCTE_EFCI 0x00000800 /* EFCI Congestion flag */
|
||||
#define SAR_RCTE_CLP 0x00000400 /* Cell Loss Priority flag */
|
||||
#define SAR_RCTE_CRC 0x00000200 /* Recieved CRC Error */
|
||||
#define SAR_RCTE_CELLCNT_MASK 0x000001FF /* cell Count */
|
||||
|
||||
#define SAR_RCTE_AAL0 0x00000000 /* AAL types for ALL field */
|
||||
#define SAR_RCTE_AAL34 0x00010000
|
||||
#define SAR_RCTE_AAL5 0x00020000
|
||||
#define SAR_RCTE_RCQ 0x00030000
|
||||
#define SAR_RCTE_OAM 0x00040000
|
||||
|
||||
#define TCMDQ_START 0x01000000
|
||||
#define TCMDQ_LACR 0x02000000
|
||||
#define TCMDQ_START_LACR 0x03000000
|
||||
#define TCMDQ_INIT_ER 0x04000000
|
||||
#define TCMDQ_HALT 0x05000000
|
||||
|
||||
|
||||
struct idt77252_skb_prv {
|
||||
struct scqe tbd; /* Transmit Buffer Descriptor */
|
||||
dma_addr_t paddr; /* DMA handle */
|
||||
u32 pool; /* sb_pool handle */
|
||||
};
|
||||
|
||||
#define IDT77252_PRV_TBD(skb) \
|
||||
(((struct idt77252_skb_prv *)(ATM_SKB(skb)+1))->tbd)
|
||||
#define IDT77252_PRV_PADDR(skb) \
|
||||
(((struct idt77252_skb_prv *)(ATM_SKB(skb)+1))->paddr)
|
||||
#define IDT77252_PRV_POOL(skb) \
|
||||
(((struct idt77252_skb_prv *)(ATM_SKB(skb)+1))->pool)
|
||||
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* PCI related items */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
#ifndef PCI_VENDOR_ID_IDT
|
||||
#define PCI_VENDOR_ID_IDT 0x111D
|
||||
#endif /* PCI_VENDOR_ID_IDT */
|
||||
|
||||
#ifndef PCI_DEVICE_ID_IDT_IDT77252
|
||||
#define PCI_DEVICE_ID_IDT_IDT77252 0x0003
|
||||
#endif /* PCI_DEVICE_ID_IDT_IDT772052 */
|
||||
|
||||
|
||||
#endif /* !(_IDT77252_H) */
|
||||
780
drivers/atm/idt77252_tables.h
Normal file
780
drivers/atm/idt77252_tables.h
Normal file
@@ -0,0 +1,780 @@
|
||||
/* Do not edit, automatically generated by `./genrtbl'.
|
||||
*
|
||||
* Cell Line Rate: 353207.55 (155520000 bps)
|
||||
*/
|
||||
|
||||
static unsigned int log_to_rate[] =
|
||||
{
|
||||
/* 000 */ 0x8d022e27, /* cps = 10.02, nrm = 3, interval = 35264.00 */
|
||||
/* 001 */ 0x8d362e11, /* cps = 10.42, nrm = 3, interval = 33856.00 */
|
||||
/* 002 */ 0x8d6e2bf8, /* cps = 10.86, nrm = 3, interval = 32512.00 */
|
||||
/* 003 */ 0x8da82bcf, /* cps = 11.31, nrm = 3, interval = 31200.00 */
|
||||
/* 004 */ 0x8de42ba8, /* cps = 11.78, nrm = 3, interval = 29952.00 */
|
||||
/* 005 */ 0x8e242b82, /* cps = 12.28, nrm = 3, interval = 28736.00 */
|
||||
/* 006 */ 0x8e662b5e, /* cps = 12.80, nrm = 3, interval = 27584.00 */
|
||||
/* 007 */ 0x8eaa2b3c, /* cps = 13.33, nrm = 3, interval = 26496.00 */
|
||||
/* 008 */ 0x8ef22b1a, /* cps = 13.89, nrm = 3, interval = 25408.00 */
|
||||
/* 009 */ 0x8f3e2afa, /* cps = 14.48, nrm = 3, interval = 24384.00 */
|
||||
/* 010 */ 0x8f8a2adc, /* cps = 15.08, nrm = 3, interval = 23424.00 */
|
||||
/* 011 */ 0x8fdc2abe, /* cps = 15.72, nrm = 3, interval = 22464.00 */
|
||||
/* 012 */ 0x90182aa2, /* cps = 16.38, nrm = 3, interval = 21568.00 */
|
||||
/* 013 */ 0x90422a87, /* cps = 17.03, nrm = 3, interval = 20704.00 */
|
||||
/* 014 */ 0x90702a6d, /* cps = 17.75, nrm = 3, interval = 19872.00 */
|
||||
/* 015 */ 0x90a02a54, /* cps = 18.50, nrm = 3, interval = 19072.00 */
|
||||
/* 016 */ 0x90d22a3c, /* cps = 19.28, nrm = 3, interval = 18304.00 */
|
||||
/* 017 */ 0x91062a25, /* cps = 20.09, nrm = 3, interval = 17568.00 */
|
||||
/* 018 */ 0x913c2a0f, /* cps = 20.94, nrm = 3, interval = 16864.00 */
|
||||
/* 019 */ 0x917427f3, /* cps = 21.81, nrm = 3, interval = 16176.00 */
|
||||
/* 020 */ 0x91b027ca, /* cps = 22.75, nrm = 3, interval = 15520.00 */
|
||||
/* 021 */ 0x91ec27a3, /* cps = 23.69, nrm = 3, interval = 14896.00 */
|
||||
/* 022 */ 0x922c277e, /* cps = 24.69, nrm = 3, interval = 14304.00 */
|
||||
/* 023 */ 0x926e275a, /* cps = 25.72, nrm = 3, interval = 13728.00 */
|
||||
/* 024 */ 0x92b42737, /* cps = 26.81, nrm = 3, interval = 13168.00 */
|
||||
/* 025 */ 0x92fc2716, /* cps = 27.94, nrm = 3, interval = 12640.00 */
|
||||
/* 026 */ 0x934626f6, /* cps = 29.09, nrm = 3, interval = 12128.00 */
|
||||
/* 027 */ 0x939426d8, /* cps = 30.31, nrm = 3, interval = 11648.00 */
|
||||
/* 028 */ 0x93e426bb, /* cps = 31.56, nrm = 3, interval = 11184.00 */
|
||||
/* 029 */ 0x941e269e, /* cps = 32.94, nrm = 3, interval = 10720.00 */
|
||||
/* 030 */ 0x944a2683, /* cps = 34.31, nrm = 3, interval = 10288.00 */
|
||||
/* 031 */ 0x9476266a, /* cps = 35.69, nrm = 3, interval = 9888.00 */
|
||||
/* 032 */ 0x94a62651, /* cps = 37.19, nrm = 3, interval = 9488.00 */
|
||||
/* 033 */ 0x94d82639, /* cps = 38.75, nrm = 3, interval = 9104.00 */
|
||||
/* 034 */ 0x950c6622, /* cps = 40.38, nrm = 4, interval = 8736.00 */
|
||||
/* 035 */ 0x9544660c, /* cps = 42.12, nrm = 4, interval = 8384.00 */
|
||||
/* 036 */ 0x957c63ee, /* cps = 43.88, nrm = 4, interval = 8048.00 */
|
||||
/* 037 */ 0x95b663c6, /* cps = 45.69, nrm = 4, interval = 7728.00 */
|
||||
/* 038 */ 0x95f4639f, /* cps = 47.62, nrm = 4, interval = 7416.00 */
|
||||
/* 039 */ 0x96346379, /* cps = 49.62, nrm = 4, interval = 7112.00 */
|
||||
/* 040 */ 0x96766356, /* cps = 51.69, nrm = 4, interval = 6832.00 */
|
||||
/* 041 */ 0x96bc6333, /* cps = 53.88, nrm = 4, interval = 6552.00 */
|
||||
/* 042 */ 0x97046312, /* cps = 56.12, nrm = 4, interval = 6288.00 */
|
||||
/* 043 */ 0x974e62f3, /* cps = 58.44, nrm = 4, interval = 6040.00 */
|
||||
/* 044 */ 0x979e62d4, /* cps = 60.94, nrm = 4, interval = 5792.00 */
|
||||
/* 045 */ 0x97f062b7, /* cps = 63.50, nrm = 4, interval = 5560.00 */
|
||||
/* 046 */ 0x9822629b, /* cps = 66.12, nrm = 4, interval = 5336.00 */
|
||||
/* 047 */ 0x984e6280, /* cps = 68.88, nrm = 4, interval = 5120.00 */
|
||||
/* 048 */ 0x987e6266, /* cps = 71.88, nrm = 4, interval = 4912.00 */
|
||||
/* 049 */ 0x98ac624e, /* cps = 74.75, nrm = 4, interval = 4720.00 */
|
||||
/* 050 */ 0x98e06236, /* cps = 78.00, nrm = 4, interval = 4528.00 */
|
||||
/* 051 */ 0x9914a21f, /* cps = 81.25, nrm = 8, interval = 4344.00 */
|
||||
/* 052 */ 0x994aa209, /* cps = 84.62, nrm = 8, interval = 4168.00 */
|
||||
/* 053 */ 0x99829fe9, /* cps = 88.12, nrm = 8, interval = 4004.00 */
|
||||
/* 054 */ 0x99be9fc1, /* cps = 91.88, nrm = 8, interval = 3844.00 */
|
||||
/* 055 */ 0x99fc9f9a, /* cps = 95.75, nrm = 8, interval = 3688.00 */
|
||||
/* 056 */ 0x9a3c9f75, /* cps = 99.75, nrm = 8, interval = 3540.00 */
|
||||
/* 057 */ 0x9a809f51, /* cps = 104.00, nrm = 8, interval = 3396.00 */
|
||||
/* 058 */ 0x9ac49f2f, /* cps = 108.25, nrm = 8, interval = 3260.00 */
|
||||
/* 059 */ 0x9b0e9f0e, /* cps = 112.88, nrm = 8, interval = 3128.00 */
|
||||
/* 060 */ 0x9b589eef, /* cps = 117.50, nrm = 8, interval = 3004.00 */
|
||||
/* 061 */ 0x9ba69ed1, /* cps = 122.38, nrm = 8, interval = 2884.00 */
|
||||
/* 062 */ 0x9bf89eb4, /* cps = 127.50, nrm = 8, interval = 2768.00 */
|
||||
/* 063 */ 0x9c269e98, /* cps = 132.75, nrm = 8, interval = 2656.00 */
|
||||
/* 064 */ 0x9c549e7d, /* cps = 138.50, nrm = 8, interval = 2548.00 */
|
||||
/* 065 */ 0x9c849e63, /* cps = 144.50, nrm = 8, interval = 2444.00 */
|
||||
/* 066 */ 0x9cb29e4b, /* cps = 150.25, nrm = 8, interval = 2348.00 */
|
||||
/* 067 */ 0x9ce69e33, /* cps = 156.75, nrm = 8, interval = 2252.00 */
|
||||
/* 068 */ 0x9d1cde1c, /* cps = 163.50, nrm = 16, interval = 2160.00 */
|
||||
/* 069 */ 0x9d50de07, /* cps = 170.00, nrm = 16, interval = 2076.00 */
|
||||
/* 070 */ 0x9d8adbe4, /* cps = 177.25, nrm = 16, interval = 1992.00 */
|
||||
/* 071 */ 0x9dc4dbbc, /* cps = 184.50, nrm = 16, interval = 1912.00 */
|
||||
/* 072 */ 0x9e02db96, /* cps = 192.25, nrm = 16, interval = 1836.00 */
|
||||
/* 073 */ 0x9e42db71, /* cps = 200.25, nrm = 16, interval = 1762.00 */
|
||||
/* 074 */ 0x9e86db4d, /* cps = 208.75, nrm = 16, interval = 1690.00 */
|
||||
/* 075 */ 0x9ecedb2b, /* cps = 217.75, nrm = 16, interval = 1622.00 */
|
||||
/* 076 */ 0x9f16db0a, /* cps = 226.75, nrm = 16, interval = 1556.00 */
|
||||
/* 077 */ 0x9f62daeb, /* cps = 236.25, nrm = 16, interval = 1494.00 */
|
||||
/* 078 */ 0x9fb2dacd, /* cps = 246.25, nrm = 16, interval = 1434.00 */
|
||||
/* 079 */ 0xa002dab0, /* cps = 256.50, nrm = 16, interval = 1376.00 */
|
||||
/* 080 */ 0xa02eda94, /* cps = 267.50, nrm = 16, interval = 1320.00 */
|
||||
/* 081 */ 0xa05ada7a, /* cps = 278.50, nrm = 16, interval = 1268.00 */
|
||||
/* 082 */ 0xa088da60, /* cps = 290.00, nrm = 16, interval = 1216.00 */
|
||||
/* 083 */ 0xa0b8da48, /* cps = 302.00, nrm = 16, interval = 1168.00 */
|
||||
/* 084 */ 0xa0ecda30, /* cps = 315.00, nrm = 16, interval = 1120.00 */
|
||||
/* 085 */ 0xa1211a1a, /* cps = 328.00, nrm = 32, interval = 1076.00 */
|
||||
/* 086 */ 0xa1591a04, /* cps = 342.00, nrm = 32, interval = 1032.00 */
|
||||
/* 087 */ 0xa19117df, /* cps = 356.00, nrm = 32, interval = 991.00 */
|
||||
/* 088 */ 0xa1cd17b7, /* cps = 371.00, nrm = 32, interval = 951.00 */
|
||||
/* 089 */ 0xa20b1791, /* cps = 386.50, nrm = 32, interval = 913.00 */
|
||||
/* 090 */ 0xa24d176c, /* cps = 403.00, nrm = 32, interval = 876.00 */
|
||||
/* 091 */ 0xa28f1749, /* cps = 419.50, nrm = 32, interval = 841.00 */
|
||||
/* 092 */ 0xa2d71727, /* cps = 437.50, nrm = 32, interval = 807.00 */
|
||||
/* 093 */ 0xa31f1707, /* cps = 455.50, nrm = 32, interval = 775.00 */
|
||||
/* 094 */ 0xa36d16e7, /* cps = 475.00, nrm = 32, interval = 743.00 */
|
||||
/* 095 */ 0xa3bd16c9, /* cps = 495.00, nrm = 32, interval = 713.00 */
|
||||
/* 096 */ 0xa40716ad, /* cps = 515.00, nrm = 32, interval = 685.00 */
|
||||
/* 097 */ 0xa4331691, /* cps = 537.00, nrm = 32, interval = 657.00 */
|
||||
/* 098 */ 0xa45f1677, /* cps = 559.00, nrm = 32, interval = 631.00 */
|
||||
/* 099 */ 0xa48f165d, /* cps = 583.00, nrm = 32, interval = 605.00 */
|
||||
/* 100 */ 0xa4bf1645, /* cps = 607.00, nrm = 32, interval = 581.00 */
|
||||
/* 101 */ 0xa4f1162e, /* cps = 632.00, nrm = 32, interval = 558.00 */
|
||||
/* 102 */ 0xa5291617, /* cps = 660.00, nrm = 32, interval = 535.00 */
|
||||
/* 103 */ 0xa55f1602, /* cps = 687.00, nrm = 32, interval = 514.00 */
|
||||
/* 104 */ 0xa59913da, /* cps = 716.00, nrm = 32, interval = 493.00 */
|
||||
/* 105 */ 0xa5d513b2, /* cps = 746.00, nrm = 32, interval = 473.00 */
|
||||
/* 106 */ 0xa613138c, /* cps = 777.00, nrm = 32, interval = 454.00 */
|
||||
/* 107 */ 0xa6551368, /* cps = 810.00, nrm = 32, interval = 436.00 */
|
||||
/* 108 */ 0xa6971345, /* cps = 843.00, nrm = 32, interval = 418.50 */
|
||||
/* 109 */ 0xa6df1323, /* cps = 879.00, nrm = 32, interval = 401.50 */
|
||||
/* 110 */ 0xa7291303, /* cps = 916.00, nrm = 32, interval = 385.50 */
|
||||
/* 111 */ 0xa77512e4, /* cps = 954.00, nrm = 32, interval = 370.00 */
|
||||
/* 112 */ 0xa7c512c6, /* cps = 994.00, nrm = 32, interval = 355.00 */
|
||||
/* 113 */ 0xa80d12a9, /* cps = 1036.00, nrm = 32, interval = 340.50 */
|
||||
/* 114 */ 0xa839128e, /* cps = 1080.00, nrm = 32, interval = 327.00 */
|
||||
/* 115 */ 0xa8651274, /* cps = 1124.00, nrm = 32, interval = 314.00 */
|
||||
/* 116 */ 0xa895125a, /* cps = 1172.00, nrm = 32, interval = 301.00 */
|
||||
/* 117 */ 0xa8c71242, /* cps = 1222.00, nrm = 32, interval = 289.00 */
|
||||
/* 118 */ 0xa8f9122b, /* cps = 1272.00, nrm = 32, interval = 277.50 */
|
||||
/* 119 */ 0xa92f1214, /* cps = 1326.00, nrm = 32, interval = 266.00 */
|
||||
/* 120 */ 0xa9670ffe, /* cps = 1382.00, nrm = 32, interval = 255.50 */
|
||||
/* 121 */ 0xa9a10fd5, /* cps = 1440.00, nrm = 32, interval = 245.25 */
|
||||
/* 122 */ 0xa9db0fae, /* cps = 1498.00, nrm = 32, interval = 235.50 */
|
||||
/* 123 */ 0xaa1b0f88, /* cps = 1562.00, nrm = 32, interval = 226.00 */
|
||||
/* 124 */ 0xaa5d0f63, /* cps = 1628.00, nrm = 32, interval = 216.75 */
|
||||
/* 125 */ 0xaaa10f41, /* cps = 1696.00, nrm = 32, interval = 208.25 */
|
||||
/* 126 */ 0xaae90f1f, /* cps = 1768.00, nrm = 32, interval = 199.75 */
|
||||
/* 127 */ 0xab330eff, /* cps = 1842.00, nrm = 32, interval = 191.75 */
|
||||
/* 128 */ 0xab7f0ee0, /* cps = 1918.00, nrm = 32, interval = 184.00 */
|
||||
/* 129 */ 0xabd10ec2, /* cps = 2000.00, nrm = 32, interval = 176.50 */
|
||||
/* 130 */ 0xac110ea6, /* cps = 2080.00, nrm = 32, interval = 169.50 */
|
||||
/* 131 */ 0xac3d0e8b, /* cps = 2168.00, nrm = 32, interval = 162.75 */
|
||||
/* 132 */ 0xac6d0e70, /* cps = 2264.00, nrm = 32, interval = 156.00 */
|
||||
/* 133 */ 0xac9b0e57, /* cps = 2356.00, nrm = 32, interval = 149.75 */
|
||||
/* 134 */ 0xaccd0e3f, /* cps = 2456.00, nrm = 32, interval = 143.75 */
|
||||
/* 135 */ 0xacff0e28, /* cps = 2556.00, nrm = 32, interval = 138.00 */
|
||||
/* 136 */ 0xad350e12, /* cps = 2664.00, nrm = 32, interval = 132.50 */
|
||||
/* 137 */ 0xad6d0bf9, /* cps = 2776.00, nrm = 32, interval = 127.12 */
|
||||
/* 138 */ 0xada70bd0, /* cps = 2892.00, nrm = 32, interval = 122.00 */
|
||||
/* 139 */ 0xade30ba9, /* cps = 3012.00, nrm = 32, interval = 117.12 */
|
||||
/* 140 */ 0xae230b83, /* cps = 3140.00, nrm = 32, interval = 112.38 */
|
||||
/* 141 */ 0xae650b5f, /* cps = 3272.00, nrm = 32, interval = 107.88 */
|
||||
/* 142 */ 0xaeab0b3c, /* cps = 3412.00, nrm = 32, interval = 103.50 */
|
||||
/* 143 */ 0xaef10b1b, /* cps = 3552.00, nrm = 32, interval = 99.38 */
|
||||
/* 144 */ 0xaf3b0afb, /* cps = 3700.00, nrm = 32, interval = 95.38 */
|
||||
/* 145 */ 0xaf8b0adc, /* cps = 3860.00, nrm = 32, interval = 91.50 */
|
||||
/* 146 */ 0xafd90abf, /* cps = 4016.00, nrm = 32, interval = 87.88 */
|
||||
/* 147 */ 0xb0170aa3, /* cps = 4184.00, nrm = 32, interval = 84.38 */
|
||||
/* 148 */ 0xb0430a87, /* cps = 4360.00, nrm = 32, interval = 80.88 */
|
||||
/* 149 */ 0xb0710a6d, /* cps = 4544.00, nrm = 32, interval = 77.62 */
|
||||
/* 150 */ 0xb0a10a54, /* cps = 4736.00, nrm = 32, interval = 74.50 */
|
||||
/* 151 */ 0xb0d30a3c, /* cps = 4936.00, nrm = 32, interval = 71.50 */
|
||||
/* 152 */ 0xb1070a25, /* cps = 5144.00, nrm = 32, interval = 68.62 */
|
||||
/* 153 */ 0xb13d0a0f, /* cps = 5360.00, nrm = 32, interval = 65.88 */
|
||||
/* 154 */ 0xb17507f4, /* cps = 5584.00, nrm = 32, interval = 63.25 */
|
||||
/* 155 */ 0xb1af07cb, /* cps = 5816.00, nrm = 32, interval = 60.69 */
|
||||
/* 156 */ 0xb1eb07a4, /* cps = 6056.00, nrm = 32, interval = 58.25 */
|
||||
/* 157 */ 0xb22b077f, /* cps = 6312.00, nrm = 32, interval = 55.94 */
|
||||
/* 158 */ 0xb26d075b, /* cps = 6576.00, nrm = 32, interval = 53.69 */
|
||||
/* 159 */ 0xb2b30738, /* cps = 6856.00, nrm = 32, interval = 51.50 */
|
||||
/* 160 */ 0xb2fb0717, /* cps = 7144.00, nrm = 32, interval = 49.44 */
|
||||
/* 161 */ 0xb34506f7, /* cps = 7440.00, nrm = 32, interval = 47.44 */
|
||||
/* 162 */ 0xb39306d9, /* cps = 7752.00, nrm = 32, interval = 45.56 */
|
||||
/* 163 */ 0xb3e506bb, /* cps = 8080.00, nrm = 32, interval = 43.69 */
|
||||
/* 164 */ 0xb41d069f, /* cps = 8416.00, nrm = 32, interval = 41.94 */
|
||||
/* 165 */ 0xb4490684, /* cps = 8768.00, nrm = 32, interval = 40.25 */
|
||||
/* 166 */ 0xb477066a, /* cps = 9136.00, nrm = 32, interval = 38.62 */
|
||||
/* 167 */ 0xb4a70651, /* cps = 9520.00, nrm = 32, interval = 37.06 */
|
||||
/* 168 */ 0xb4d90639, /* cps = 9920.00, nrm = 32, interval = 35.56 */
|
||||
/* 169 */ 0xb50d0622, /* cps = 10336.00, nrm = 32, interval = 34.12 */
|
||||
/* 170 */ 0xb545060c, /* cps = 10784.00, nrm = 32, interval = 32.75 */
|
||||
/* 171 */ 0xb57b03ef, /* cps = 11216.00, nrm = 32, interval = 31.47 */
|
||||
/* 172 */ 0xb5b503c7, /* cps = 11680.00, nrm = 32, interval = 30.22 */
|
||||
/* 173 */ 0xb5f303a0, /* cps = 12176.00, nrm = 32, interval = 29.00 */
|
||||
/* 174 */ 0xb633037a, /* cps = 12688.00, nrm = 32, interval = 27.81 */
|
||||
/* 175 */ 0xb6750357, /* cps = 13216.00, nrm = 32, interval = 26.72 */
|
||||
/* 176 */ 0xb6bb0334, /* cps = 13776.00, nrm = 32, interval = 25.62 */
|
||||
/* 177 */ 0xb7030313, /* cps = 14352.00, nrm = 32, interval = 24.59 */
|
||||
/* 178 */ 0xb74f02f3, /* cps = 14960.00, nrm = 32, interval = 23.59 */
|
||||
/* 179 */ 0xb79d02d5, /* cps = 15584.00, nrm = 32, interval = 22.66 */
|
||||
/* 180 */ 0xb7ed02b8, /* cps = 16224.00, nrm = 32, interval = 21.75 */
|
||||
/* 181 */ 0xb821029c, /* cps = 16896.00, nrm = 32, interval = 20.88 */
|
||||
/* 182 */ 0xb84f0281, /* cps = 17632.00, nrm = 32, interval = 20.03 */
|
||||
/* 183 */ 0xb87d0267, /* cps = 18368.00, nrm = 32, interval = 19.22 */
|
||||
/* 184 */ 0xb8ad024e, /* cps = 19136.00, nrm = 32, interval = 18.44 */
|
||||
/* 185 */ 0xb8dd0237, /* cps = 19904.00, nrm = 32, interval = 17.72 */
|
||||
/* 186 */ 0xb9130220, /* cps = 20768.00, nrm = 32, interval = 17.00 */
|
||||
/* 187 */ 0xb949020a, /* cps = 21632.00, nrm = 32, interval = 16.31 */
|
||||
/* 188 */ 0xb98301f5, /* cps = 22560.00, nrm = 32, interval = 15.66 */
|
||||
/* 189 */ 0xb9bd01e1, /* cps = 23488.00, nrm = 32, interval = 15.03 */
|
||||
/* 190 */ 0xb9fd01cd, /* cps = 24512.00, nrm = 32, interval = 14.41 */
|
||||
/* 191 */ 0xba3b01bb, /* cps = 25504.00, nrm = 32, interval = 13.84 */
|
||||
/* 192 */ 0xba7f01a9, /* cps = 26592.00, nrm = 32, interval = 13.28 */
|
||||
/* 193 */ 0xbac30198, /* cps = 27680.00, nrm = 32, interval = 12.75 */
|
||||
/* 194 */ 0xbb0f0187, /* cps = 28896.00, nrm = 32, interval = 12.22 */
|
||||
/* 195 */ 0xbb570178, /* cps = 30048.00, nrm = 32, interval = 11.75 */
|
||||
/* 196 */ 0xbbab0168, /* cps = 31392.00, nrm = 32, interval = 11.25 */
|
||||
/* 197 */ 0xbbf9015a, /* cps = 32640.00, nrm = 32, interval = 10.81 */
|
||||
/* 198 */ 0xbc27014c, /* cps = 33984.00, nrm = 32, interval = 10.38 */
|
||||
/* 199 */ 0xbc53013f, /* cps = 35392.00, nrm = 32, interval = 9.97 */
|
||||
/* 200 */ 0xbc830132, /* cps = 36928.00, nrm = 32, interval = 9.56 */
|
||||
/* 201 */ 0xbcb50125, /* cps = 38528.00, nrm = 32, interval = 9.16 */
|
||||
/* 202 */ 0xbce5011a, /* cps = 40064.00, nrm = 32, interval = 8.81 */
|
||||
/* 203 */ 0xbd1d010e, /* cps = 41856.00, nrm = 32, interval = 8.44 */
|
||||
/* 204 */ 0xbd530103, /* cps = 43584.00, nrm = 32, interval = 8.09 */
|
||||
/* 205 */ 0xbd8b00f9, /* cps = 45376.00, nrm = 32, interval = 7.78 */
|
||||
/* 206 */ 0xbdc500ef, /* cps = 47232.00, nrm = 32, interval = 7.47 */
|
||||
/* 207 */ 0xbe0700e5, /* cps = 49344.00, nrm = 32, interval = 7.16 */
|
||||
/* 208 */ 0xbe4500dc, /* cps = 51328.00, nrm = 32, interval = 6.88 */
|
||||
/* 209 */ 0xbe8900d3, /* cps = 53504.00, nrm = 32, interval = 6.59 */
|
||||
/* 210 */ 0xbecb00cb, /* cps = 55616.00, nrm = 32, interval = 6.34 */
|
||||
/* 211 */ 0xbf1d00c2, /* cps = 58240.00, nrm = 32, interval = 6.06 */
|
||||
/* 212 */ 0xbf6100bb, /* cps = 60416.00, nrm = 32, interval = 5.84 */
|
||||
/* 213 */ 0xbfb500b3, /* cps = 63104.00, nrm = 32, interval = 5.59 */
|
||||
/* 214 */ 0xc00300ac, /* cps = 65664.00, nrm = 32, interval = 5.38 */
|
||||
/* 215 */ 0xc02f00a5, /* cps = 68480.00, nrm = 32, interval = 5.16 */
|
||||
/* 216 */ 0xc05d009e, /* cps = 71424.00, nrm = 32, interval = 4.94 */
|
||||
/* 217 */ 0xc0890098, /* cps = 74240.00, nrm = 32, interval = 4.75 */
|
||||
/* 218 */ 0xc0b90092, /* cps = 77312.00, nrm = 32, interval = 4.56 */
|
||||
/* 219 */ 0xc0ed008c, /* cps = 80640.00, nrm = 32, interval = 4.38 */
|
||||
/* 220 */ 0xc1250086, /* cps = 84224.00, nrm = 32, interval = 4.19 */
|
||||
/* 221 */ 0xc1590081, /* cps = 87552.00, nrm = 32, interval = 4.03 */
|
||||
/* 222 */ 0xc191007c, /* cps = 91136.00, nrm = 32, interval = 3.88 */
|
||||
/* 223 */ 0xc1cd0077, /* cps = 94976.00, nrm = 32, interval = 3.72 */
|
||||
/* 224 */ 0xc20d0072, /* cps = 99072.00, nrm = 32, interval = 3.56 */
|
||||
/* 225 */ 0xc255006d, /* cps = 103680.00, nrm = 32, interval = 3.41 */
|
||||
/* 226 */ 0xc2910069, /* cps = 107520.00, nrm = 32, interval = 3.28 */
|
||||
/* 227 */ 0xc2d50065, /* cps = 111872.00, nrm = 32, interval = 3.16 */
|
||||
/* 228 */ 0xc32f0060, /* cps = 117632.00, nrm = 32, interval = 3.00 */
|
||||
/* 229 */ 0xc36b005d, /* cps = 121472.00, nrm = 32, interval = 2.91 */
|
||||
/* 230 */ 0xc3c10059, /* cps = 126976.00, nrm = 32, interval = 2.78 */
|
||||
/* 231 */ 0xc40f0055, /* cps = 132864.00, nrm = 32, interval = 2.66 */
|
||||
/* 232 */ 0xc4350052, /* cps = 137728.00, nrm = 32, interval = 2.56 */
|
||||
/* 233 */ 0xc46d004e, /* cps = 144896.00, nrm = 32, interval = 2.44 */
|
||||
/* 234 */ 0xc499004b, /* cps = 150528.00, nrm = 32, interval = 2.34 */
|
||||
/* 235 */ 0xc4cb0048, /* cps = 156928.00, nrm = 32, interval = 2.25 */
|
||||
/* 236 */ 0xc4ff0045, /* cps = 163584.00, nrm = 32, interval = 2.16 */
|
||||
/* 237 */ 0xc5250043, /* cps = 168448.00, nrm = 32, interval = 2.09 */
|
||||
/* 238 */ 0xc5630040, /* cps = 176384.00, nrm = 32, interval = 2.00 */
|
||||
/* 239 */ 0xc5a7003d, /* cps = 185088.00, nrm = 32, interval = 1.91 */
|
||||
/* 240 */ 0xc5d9003b, /* cps = 191488.00, nrm = 32, interval = 1.84 */
|
||||
/* 241 */ 0xc6290038, /* cps = 201728.00, nrm = 32, interval = 1.75 */
|
||||
/* 242 */ 0xc6630036, /* cps = 209152.00, nrm = 32, interval = 1.69 */
|
||||
/* 243 */ 0xc6a30034, /* cps = 217344.00, nrm = 32, interval = 1.62 */
|
||||
/* 244 */ 0xc6e70032, /* cps = 226048.00, nrm = 32, interval = 1.56 */
|
||||
/* 245 */ 0xc72f0030, /* cps = 235264.00, nrm = 32, interval = 1.50 */
|
||||
/* 246 */ 0xc77f002e, /* cps = 245504.00, nrm = 32, interval = 1.44 */
|
||||
/* 247 */ 0xc7d7002c, /* cps = 256768.00, nrm = 32, interval = 1.38 */
|
||||
/* 248 */ 0xc81b002a, /* cps = 268800.00, nrm = 32, interval = 1.31 */
|
||||
/* 249 */ 0xc84f0028, /* cps = 282112.00, nrm = 32, interval = 1.25 */
|
||||
/* 250 */ 0xc86d0027, /* cps = 289792.00, nrm = 32, interval = 1.22 */
|
||||
/* 251 */ 0xc8a90025, /* cps = 305152.00, nrm = 32, interval = 1.16 */
|
||||
/* 252 */ 0xc8cb0024, /* cps = 313856.00, nrm = 32, interval = 1.12 */
|
||||
/* 253 */ 0xc9130022, /* cps = 332288.00, nrm = 32, interval = 1.06 */
|
||||
/* 254 */ 0xc9390021, /* cps = 342016.00, nrm = 32, interval = 1.03 */
|
||||
/* 255 */ 0xc9630020, /* cps = 352768.00, nrm = 32, interval = 1.00 */
|
||||
};
|
||||
|
||||
static unsigned char rate_to_log[] =
|
||||
{
|
||||
/* 1.00 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 1.06 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 1.12 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 1.19 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 1.25 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 1.31 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 1.38 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 1.44 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 1.50 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 1.56 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 1.62 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 1.69 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 1.75 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 1.81 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 1.88 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 1.94 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 2.00 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 2.12 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 2.25 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 2.38 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 2.50 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 2.62 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 2.75 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 2.88 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 3.00 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 3.12 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 3.25 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 3.38 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 3.50 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 3.62 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 3.75 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 3.88 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 4.00 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 4.25 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 4.50 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 4.75 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 5.00 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 5.25 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 5.50 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 5.75 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 6.00 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 6.25 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 6.50 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 6.75 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 7.00 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 7.25 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 7.50 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 7.75 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 8.00 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 8.50 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 9.00 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 9.50 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 10.00 => 0 */ 0x00, /* => 10.02 */
|
||||
/* 10.50 => 1 */ 0x01, /* => 10.42 */
|
||||
/* 11.00 => 2 */ 0x02, /* => 10.86 */
|
||||
/* 11.50 => 3 */ 0x03, /* => 11.31 */
|
||||
/* 12.00 => 4 */ 0x04, /* => 11.78 */
|
||||
/* 12.50 => 5 */ 0x05, /* => 12.28 */
|
||||
/* 13.00 => 6 */ 0x06, /* => 12.80 */
|
||||
/* 13.50 => 7 */ 0x07, /* => 13.33 */
|
||||
/* 14.00 => 8 */ 0x08, /* => 13.89 */
|
||||
/* 14.50 => 9 */ 0x09, /* => 14.48 */
|
||||
/* 15.00 => 9 */ 0x09, /* => 14.48 */
|
||||
/* 15.50 => 10 */ 0x0a, /* => 15.08 */
|
||||
/* 16.00 => 11 */ 0x0b, /* => 15.72 */
|
||||
/* 17.00 => 12 */ 0x0c, /* => 16.38 */
|
||||
/* 18.00 => 14 */ 0x0e, /* => 17.75 */
|
||||
/* 19.00 => 15 */ 0x0f, /* => 18.50 */
|
||||
/* 20.00 => 16 */ 0x10, /* => 19.28 */
|
||||
/* 21.00 => 18 */ 0x12, /* => 20.94 */
|
||||
/* 22.00 => 19 */ 0x13, /* => 21.81 */
|
||||
/* 23.00 => 20 */ 0x14, /* => 22.75 */
|
||||
/* 24.00 => 21 */ 0x15, /* => 23.69 */
|
||||
/* 25.00 => 22 */ 0x16, /* => 24.69 */
|
||||
/* 26.00 => 23 */ 0x17, /* => 25.72 */
|
||||
/* 27.00 => 24 */ 0x18, /* => 26.81 */
|
||||
/* 28.00 => 25 */ 0x19, /* => 27.94 */
|
||||
/* 29.00 => 25 */ 0x19, /* => 27.94 */
|
||||
/* 30.00 => 26 */ 0x1a, /* => 29.09 */
|
||||
/* 31.00 => 27 */ 0x1b, /* => 30.31 */
|
||||
/* 32.00 => 28 */ 0x1c, /* => 31.56 */
|
||||
/* 34.00 => 29 */ 0x1d, /* => 32.94 */
|
||||
/* 36.00 => 31 */ 0x1f, /* => 35.69 */
|
||||
/* 38.00 => 32 */ 0x20, /* => 37.19 */
|
||||
/* 40.00 => 33 */ 0x21, /* => 38.75 */
|
||||
/* 42.00 => 34 */ 0x22, /* => 40.38 */
|
||||
/* 44.00 => 36 */ 0x24, /* => 43.88 */
|
||||
/* 46.00 => 37 */ 0x25, /* => 45.69 */
|
||||
/* 48.00 => 38 */ 0x26, /* => 47.62 */
|
||||
/* 50.00 => 39 */ 0x27, /* => 49.62 */
|
||||
/* 52.00 => 40 */ 0x28, /* => 51.69 */
|
||||
/* 54.00 => 41 */ 0x29, /* => 53.88 */
|
||||
/* 56.00 => 41 */ 0x29, /* => 53.88 */
|
||||
/* 58.00 => 42 */ 0x2a, /* => 56.12 */
|
||||
/* 60.00 => 43 */ 0x2b, /* => 58.44 */
|
||||
/* 62.00 => 44 */ 0x2c, /* => 60.94 */
|
||||
/* 64.00 => 45 */ 0x2d, /* => 63.50 */
|
||||
/* 68.00 => 46 */ 0x2e, /* => 66.12 */
|
||||
/* 72.00 => 48 */ 0x30, /* => 71.88 */
|
||||
/* 76.00 => 49 */ 0x31, /* => 74.75 */
|
||||
/* 80.00 => 50 */ 0x32, /* => 78.00 */
|
||||
/* 84.00 => 51 */ 0x33, /* => 81.25 */
|
||||
/* 88.00 => 52 */ 0x34, /* => 84.62 */
|
||||
/* 92.00 => 54 */ 0x36, /* => 91.88 */
|
||||
/* 96.00 => 55 */ 0x37, /* => 95.75 */
|
||||
/* 100.00 => 56 */ 0x38, /* => 99.75 */
|
||||
/* 104.00 => 56 */ 0x38, /* => 99.75 */
|
||||
/* 108.00 => 57 */ 0x39, /* => 104.00 */
|
||||
/* 112.00 => 58 */ 0x3a, /* => 108.25 */
|
||||
/* 116.00 => 59 */ 0x3b, /* => 112.88 */
|
||||
/* 120.00 => 60 */ 0x3c, /* => 117.50 */
|
||||
/* 124.00 => 61 */ 0x3d, /* => 122.38 */
|
||||
/* 128.00 => 62 */ 0x3e, /* => 127.50 */
|
||||
/* 136.00 => 63 */ 0x3f, /* => 132.75 */
|
||||
/* 144.00 => 64 */ 0x40, /* => 138.50 */
|
||||
/* 152.00 => 66 */ 0x42, /* => 150.25 */
|
||||
/* 160.00 => 67 */ 0x43, /* => 156.75 */
|
||||
/* 168.00 => 68 */ 0x44, /* => 163.50 */
|
||||
/* 176.00 => 69 */ 0x45, /* => 170.00 */
|
||||
/* 184.00 => 70 */ 0x46, /* => 177.25 */
|
||||
/* 192.00 => 71 */ 0x47, /* => 184.50 */
|
||||
/* 200.00 => 72 */ 0x48, /* => 192.25 */
|
||||
/* 208.00 => 73 */ 0x49, /* => 200.25 */
|
||||
/* 216.00 => 74 */ 0x4a, /* => 208.75 */
|
||||
/* 224.00 => 75 */ 0x4b, /* => 217.75 */
|
||||
/* 232.00 => 76 */ 0x4c, /* => 226.75 */
|
||||
/* 240.00 => 77 */ 0x4d, /* => 236.25 */
|
||||
/* 248.00 => 78 */ 0x4e, /* => 246.25 */
|
||||
/* 256.00 => 78 */ 0x4e, /* => 246.25 */
|
||||
/* 272.00 => 80 */ 0x50, /* => 267.50 */
|
||||
/* 288.00 => 81 */ 0x51, /* => 278.50 */
|
||||
/* 304.00 => 83 */ 0x53, /* => 302.00 */
|
||||
/* 320.00 => 84 */ 0x54, /* => 315.00 */
|
||||
/* 336.00 => 85 */ 0x55, /* => 328.00 */
|
||||
/* 352.00 => 86 */ 0x56, /* => 342.00 */
|
||||
/* 368.00 => 87 */ 0x57, /* => 356.00 */
|
||||
/* 384.00 => 88 */ 0x58, /* => 371.00 */
|
||||
/* 400.00 => 89 */ 0x59, /* => 386.50 */
|
||||
/* 416.00 => 90 */ 0x5a, /* => 403.00 */
|
||||
/* 432.00 => 91 */ 0x5b, /* => 419.50 */
|
||||
/* 448.00 => 92 */ 0x5c, /* => 437.50 */
|
||||
/* 464.00 => 93 */ 0x5d, /* => 455.50 */
|
||||
/* 480.00 => 94 */ 0x5e, /* => 475.00 */
|
||||
/* 496.00 => 95 */ 0x5f, /* => 495.00 */
|
||||
/* 512.00 => 95 */ 0x5f, /* => 495.00 */
|
||||
/* 544.00 => 97 */ 0x61, /* => 537.00 */
|
||||
/* 576.00 => 98 */ 0x62, /* => 559.00 */
|
||||
/* 608.00 => 100 */ 0x64, /* => 607.00 */
|
||||
/* 640.00 => 101 */ 0x65, /* => 632.00 */
|
||||
/* 672.00 => 102 */ 0x66, /* => 660.00 */
|
||||
/* 704.00 => 103 */ 0x67, /* => 687.00 */
|
||||
/* 736.00 => 104 */ 0x68, /* => 716.00 */
|
||||
/* 768.00 => 105 */ 0x69, /* => 746.00 */
|
||||
/* 800.00 => 106 */ 0x6a, /* => 777.00 */
|
||||
/* 832.00 => 107 */ 0x6b, /* => 810.00 */
|
||||
/* 864.00 => 108 */ 0x6c, /* => 843.00 */
|
||||
/* 896.00 => 109 */ 0x6d, /* => 879.00 */
|
||||
/* 928.00 => 110 */ 0x6e, /* => 916.00 */
|
||||
/* 960.00 => 111 */ 0x6f, /* => 954.00 */
|
||||
/* 992.00 => 111 */ 0x6f, /* => 954.00 */
|
||||
/* 1024.00 => 112 */ 0x70, /* => 994.00 */
|
||||
/* 1088.00 => 114 */ 0x72, /* => 1080.00 */
|
||||
/* 1152.00 => 115 */ 0x73, /* => 1124.00 */
|
||||
/* 1216.00 => 116 */ 0x74, /* => 1172.00 */
|
||||
/* 1280.00 => 118 */ 0x76, /* => 1272.00 */
|
||||
/* 1344.00 => 119 */ 0x77, /* => 1326.00 */
|
||||
/* 1408.00 => 120 */ 0x78, /* => 1382.00 */
|
||||
/* 1472.00 => 121 */ 0x79, /* => 1440.00 */
|
||||
/* 1536.00 => 122 */ 0x7a, /* => 1498.00 */
|
||||
/* 1600.00 => 123 */ 0x7b, /* => 1562.00 */
|
||||
/* 1664.00 => 124 */ 0x7c, /* => 1628.00 */
|
||||
/* 1728.00 => 125 */ 0x7d, /* => 1696.00 */
|
||||
/* 1792.00 => 126 */ 0x7e, /* => 1768.00 */
|
||||
/* 1856.00 => 127 */ 0x7f, /* => 1842.00 */
|
||||
/* 1920.00 => 128 */ 0x80, /* => 1918.00 */
|
||||
/* 1984.00 => 128 */ 0x80, /* => 1918.00 */
|
||||
/* 2048.00 => 129 */ 0x81, /* => 2000.00 */
|
||||
/* 2176.00 => 131 */ 0x83, /* => 2168.00 */
|
||||
/* 2304.00 => 132 */ 0x84, /* => 2264.00 */
|
||||
/* 2432.00 => 133 */ 0x85, /* => 2356.00 */
|
||||
/* 2560.00 => 135 */ 0x87, /* => 2556.00 */
|
||||
/* 2688.00 => 136 */ 0x88, /* => 2664.00 */
|
||||
/* 2816.00 => 137 */ 0x89, /* => 2776.00 */
|
||||
/* 2944.00 => 138 */ 0x8a, /* => 2892.00 */
|
||||
/* 3072.00 => 139 */ 0x8b, /* => 3012.00 */
|
||||
/* 3200.00 => 140 */ 0x8c, /* => 3140.00 */
|
||||
/* 3328.00 => 141 */ 0x8d, /* => 3272.00 */
|
||||
/* 3456.00 => 142 */ 0x8e, /* => 3412.00 */
|
||||
/* 3584.00 => 143 */ 0x8f, /* => 3552.00 */
|
||||
/* 3712.00 => 144 */ 0x90, /* => 3700.00 */
|
||||
/* 3840.00 => 144 */ 0x90, /* => 3700.00 */
|
||||
/* 3968.00 => 145 */ 0x91, /* => 3860.00 */
|
||||
/* 4096.00 => 146 */ 0x92, /* => 4016.00 */
|
||||
/* 4352.00 => 147 */ 0x93, /* => 4184.00 */
|
||||
/* 4608.00 => 149 */ 0x95, /* => 4544.00 */
|
||||
/* 4864.00 => 150 */ 0x96, /* => 4736.00 */
|
||||
/* 5120.00 => 151 */ 0x97, /* => 4936.00 */
|
||||
/* 5376.00 => 153 */ 0x99, /* => 5360.00 */
|
||||
/* 5632.00 => 154 */ 0x9a, /* => 5584.00 */
|
||||
/* 5888.00 => 155 */ 0x9b, /* => 5816.00 */
|
||||
/* 6144.00 => 156 */ 0x9c, /* => 6056.00 */
|
||||
/* 6400.00 => 157 */ 0x9d, /* => 6312.00 */
|
||||
/* 6656.00 => 158 */ 0x9e, /* => 6576.00 */
|
||||
/* 6912.00 => 159 */ 0x9f, /* => 6856.00 */
|
||||
/* 7168.00 => 160 */ 0xa0, /* => 7144.00 */
|
||||
/* 7424.00 => 160 */ 0xa0, /* => 7144.00 */
|
||||
/* 7680.00 => 161 */ 0xa1, /* => 7440.00 */
|
||||
/* 7936.00 => 162 */ 0xa2, /* => 7752.00 */
|
||||
/* 8192.00 => 163 */ 0xa3, /* => 8080.00 */
|
||||
/* 8704.00 => 164 */ 0xa4, /* => 8416.00 */
|
||||
/* 9216.00 => 166 */ 0xa6, /* => 9136.00 */
|
||||
/* 9728.00 => 167 */ 0xa7, /* => 9520.00 */
|
||||
/* 10240.00 => 168 */ 0xa8, /* => 9920.00 */
|
||||
/* 10752.00 => 169 */ 0xa9, /* => 10336.00 */
|
||||
/* 11264.00 => 171 */ 0xab, /* => 11216.00 */
|
||||
/* 11776.00 => 172 */ 0xac, /* => 11680.00 */
|
||||
/* 12288.00 => 173 */ 0xad, /* => 12176.00 */
|
||||
/* 12800.00 => 174 */ 0xae, /* => 12688.00 */
|
||||
/* 13312.00 => 175 */ 0xaf, /* => 13216.00 */
|
||||
/* 13824.00 => 176 */ 0xb0, /* => 13776.00 */
|
||||
/* 14336.00 => 176 */ 0xb0, /* => 13776.00 */
|
||||
/* 14848.00 => 177 */ 0xb1, /* => 14352.00 */
|
||||
/* 15360.00 => 178 */ 0xb2, /* => 14960.00 */
|
||||
/* 15872.00 => 179 */ 0xb3, /* => 15584.00 */
|
||||
/* 16384.00 => 180 */ 0xb4, /* => 16224.00 */
|
||||
/* 17408.00 => 181 */ 0xb5, /* => 16896.00 */
|
||||
/* 18432.00 => 183 */ 0xb7, /* => 18368.00 */
|
||||
/* 19456.00 => 184 */ 0xb8, /* => 19136.00 */
|
||||
/* 20480.00 => 185 */ 0xb9, /* => 19904.00 */
|
||||
/* 21504.00 => 186 */ 0xba, /* => 20768.00 */
|
||||
/* 22528.00 => 187 */ 0xbb, /* => 21632.00 */
|
||||
/* 23552.00 => 189 */ 0xbd, /* => 23488.00 */
|
||||
/* 24576.00 => 190 */ 0xbe, /* => 24512.00 */
|
||||
/* 25600.00 => 191 */ 0xbf, /* => 25504.00 */
|
||||
/* 26624.00 => 192 */ 0xc0, /* => 26592.00 */
|
||||
/* 27648.00 => 192 */ 0xc0, /* => 26592.00 */
|
||||
/* 28672.00 => 193 */ 0xc1, /* => 27680.00 */
|
||||
/* 29696.00 => 194 */ 0xc2, /* => 28896.00 */
|
||||
/* 30720.00 => 195 */ 0xc3, /* => 30048.00 */
|
||||
/* 31744.00 => 196 */ 0xc4, /* => 31392.00 */
|
||||
/* 32768.00 => 197 */ 0xc5, /* => 32640.00 */
|
||||
/* 34816.00 => 198 */ 0xc6, /* => 33984.00 */
|
||||
/* 36864.00 => 199 */ 0xc7, /* => 35392.00 */
|
||||
/* 38912.00 => 201 */ 0xc9, /* => 38528.00 */
|
||||
/* 40960.00 => 202 */ 0xca, /* => 40064.00 */
|
||||
/* 43008.00 => 203 */ 0xcb, /* => 41856.00 */
|
||||
/* 45056.00 => 204 */ 0xcc, /* => 43584.00 */
|
||||
/* 47104.00 => 205 */ 0xcd, /* => 45376.00 */
|
||||
/* 49152.00 => 206 */ 0xce, /* => 47232.00 */
|
||||
/* 51200.00 => 207 */ 0xcf, /* => 49344.00 */
|
||||
/* 53248.00 => 208 */ 0xd0, /* => 51328.00 */
|
||||
/* 55296.00 => 209 */ 0xd1, /* => 53504.00 */
|
||||
/* 57344.00 => 210 */ 0xd2, /* => 55616.00 */
|
||||
/* 59392.00 => 211 */ 0xd3, /* => 58240.00 */
|
||||
/* 61440.00 => 212 */ 0xd4, /* => 60416.00 */
|
||||
/* 63488.00 => 213 */ 0xd5, /* => 63104.00 */
|
||||
/* 65536.00 => 213 */ 0xd5, /* => 63104.00 */
|
||||
/* 69632.00 => 215 */ 0xd7, /* => 68480.00 */
|
||||
/* 73728.00 => 216 */ 0xd8, /* => 71424.00 */
|
||||
/* 77824.00 => 218 */ 0xda, /* => 77312.00 */
|
||||
/* 81920.00 => 219 */ 0xdb, /* => 80640.00 */
|
||||
/* 86016.00 => 220 */ 0xdc, /* => 84224.00 */
|
||||
/* 90112.00 => 221 */ 0xdd, /* => 87552.00 */
|
||||
/* 94208.00 => 222 */ 0xde, /* => 91136.00 */
|
||||
/* 98304.00 => 223 */ 0xdf, /* => 94976.00 */
|
||||
/* 102400.00 => 224 */ 0xe0, /* => 99072.00 */
|
||||
/* 106496.00 => 225 */ 0xe1, /* => 103680.00 */
|
||||
/* 110592.00 => 226 */ 0xe2, /* => 107520.00 */
|
||||
/* 114688.00 => 227 */ 0xe3, /* => 111872.00 */
|
||||
/* 118784.00 => 228 */ 0xe4, /* => 117632.00 */
|
||||
/* 122880.00 => 229 */ 0xe5, /* => 121472.00 */
|
||||
/* 126976.00 => 229 */ 0xe5, /* => 121472.00 */
|
||||
/* 131072.00 => 230 */ 0xe6, /* => 126976.00 */
|
||||
/* 139264.00 => 232 */ 0xe8, /* => 137728.00 */
|
||||
/* 147456.00 => 233 */ 0xe9, /* => 144896.00 */
|
||||
/* 155648.00 => 234 */ 0xea, /* => 150528.00 */
|
||||
/* 163840.00 => 236 */ 0xec, /* => 163584.00 */
|
||||
/* 172032.00 => 237 */ 0xed, /* => 168448.00 */
|
||||
/* 180224.00 => 238 */ 0xee, /* => 176384.00 */
|
||||
/* 188416.00 => 239 */ 0xef, /* => 185088.00 */
|
||||
/* 196608.00 => 240 */ 0xf0, /* => 191488.00 */
|
||||
/* 204800.00 => 241 */ 0xf1, /* => 201728.00 */
|
||||
/* 212992.00 => 242 */ 0xf2, /* => 209152.00 */
|
||||
/* 221184.00 => 243 */ 0xf3, /* => 217344.00 */
|
||||
/* 229376.00 => 244 */ 0xf4, /* => 226048.00 */
|
||||
/* 237568.00 => 245 */ 0xf5, /* => 235264.00 */
|
||||
/* 245760.00 => 246 */ 0xf6, /* => 245504.00 */
|
||||
/* 253952.00 => 246 */ 0xf6, /* => 245504.00 */
|
||||
/* 262144.00 => 247 */ 0xf7, /* => 256768.00 */
|
||||
/* 278528.00 => 248 */ 0xf8, /* => 268800.00 */
|
||||
/* 294912.00 => 250 */ 0xfa, /* => 289792.00 */
|
||||
/* 311296.00 => 251 */ 0xfb, /* => 305152.00 */
|
||||
/* 327680.00 => 252 */ 0xfc, /* => 313856.00 */
|
||||
/* 344064.00 => 254 */ 0xfe, /* => 342016.00 */
|
||||
/* 360448.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 376832.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 393216.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 409600.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 425984.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 442368.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 458752.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 475136.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 491520.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 507904.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 524288.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 557056.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 589824.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 622592.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 655360.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 688128.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 720896.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 753664.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 786432.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 819200.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 851968.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 884736.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 917504.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 950272.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 983040.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1015808.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1048576.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1114112.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1179648.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1245184.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1310720.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1376256.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1441792.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1507328.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1572864.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1638400.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1703936.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1769472.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1835008.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1900544.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1966080.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 2031616.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 2097152.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 2228224.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 2359296.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 2490368.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 2621440.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 2752512.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 2883584.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 3014656.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 3145728.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 3276800.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 3407872.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 3538944.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 3670016.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 3801088.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 3932160.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 4063232.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 4194304.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 4456448.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 4718592.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 4980736.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 5242880.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 5505024.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 5767168.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 6029312.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 6291456.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 6553600.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 6815744.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 7077888.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 7340032.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 7602176.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 7864320.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 8126464.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 8388608.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 8912896.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 9437184.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 9961472.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 10485760.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 11010048.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 11534336.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 12058624.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 12582912.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 13107200.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 13631488.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 14155776.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 14680064.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 15204352.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 15728640.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 16252928.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 16777216.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 17825792.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 18874368.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 19922944.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 20971520.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 22020096.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 23068672.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 24117248.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 25165824.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 26214400.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 27262976.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 28311552.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 29360128.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 30408704.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 31457280.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 32505856.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 33554432.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 35651584.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 37748736.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 39845888.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 41943040.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 44040192.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 46137344.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 48234496.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 50331648.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 52428800.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 54525952.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 56623104.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 58720256.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 60817408.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 62914560.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 65011712.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 67108864.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 71303168.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 75497472.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 79691776.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 83886080.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 88080384.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 92274688.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 96468992.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 100663296.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 104857600.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 109051904.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 113246208.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 117440512.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 121634816.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 125829120.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 130023424.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 134217728.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 142606336.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 150994944.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 159383552.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 167772160.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 176160768.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 184549376.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 192937984.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 201326592.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 209715200.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 218103808.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 226492416.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 234881024.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 243269632.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 251658240.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 260046848.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 268435456.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 285212672.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 301989888.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 318767104.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 335544320.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 352321536.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 369098752.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 385875968.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 402653184.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 419430400.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 436207616.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 452984832.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 469762048.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 486539264.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 503316480.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 520093696.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 536870912.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 570425344.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 603979776.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 637534208.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 671088640.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 704643072.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 738197504.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 771751936.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 805306368.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 838860800.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 872415232.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 905969664.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 939524096.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 973078528.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1006632960.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1040187392.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1073741824.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1140850688.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1207959552.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1275068416.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1342177280.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1409286144.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1476395008.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1543503872.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1610612736.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1677721600.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1744830464.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1811939328.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1879048192.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 1946157056.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 2013265920.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 2080374784.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 2147483648.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 2281701376.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 2415919104.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 2550136832.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 2684354560.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 2818572288.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 2952790016.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 3087007744.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 3221225472.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 3355443200.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 3489660928.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 3623878656.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 3758096384.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 3892314112.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 4026531840.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
/* 4160749568.00 => 255 */ 0xff, /* => 352768.00 */
|
||||
};
|
||||
3296
drivers/atm/iphase.c
Normal file
3296
drivers/atm/iphase.c
Normal file
File diff suppressed because it is too large
Load Diff
1464
drivers/atm/iphase.h
Normal file
1464
drivers/atm/iphase.h
Normal file
File diff suppressed because it is too large
Load Diff
2770
drivers/atm/lanai.c
Normal file
2770
drivers/atm/lanai.c
Normal file
File diff suppressed because it is too large
Load Diff
265
drivers/atm/midway.h
Normal file
265
drivers/atm/midway.h
Normal file
@@ -0,0 +1,265 @@
|
||||
/* drivers/atm/midway.h - Efficient Networks Midway (SAR) description */
|
||||
|
||||
/* Written 1995-1999 by Werner Almesberger, EPFL LRC/ICA */
|
||||
|
||||
|
||||
#ifndef DRIVERS_ATM_MIDWAY_H
|
||||
#define DRIVERS_ATM_MIDWAY_H
|
||||
|
||||
|
||||
#define NR_VCI 1024 /* number of VCIs */
|
||||
#define NR_VCI_LD 10 /* log2(NR_VCI) */
|
||||
#define NR_DMA_RX 512 /* RX DMA queue entries */
|
||||
#define NR_DMA_TX 512 /* TX DMA queue entries */
|
||||
#define NR_SERVICE NR_VCI /* service list size */
|
||||
#define NR_CHAN 8 /* number of TX channels */
|
||||
#define TS_CLOCK 25000000 /* traffic shaper clock (cell/sec) */
|
||||
|
||||
#define MAP_MAX_SIZE 0x00400000 /* memory window for max config */
|
||||
#define EPROM_SIZE 0x00010000
|
||||
#define MEM_VALID 0xffc00000 /* mask base address with this */
|
||||
#define PHY_BASE 0x00020000 /* offset of PHY register are */
|
||||
#define REG_BASE 0x00040000 /* offset of Midway register area */
|
||||
#define RAM_BASE 0x00200000 /* offset of RAM area */
|
||||
#define RAM_INCREMENT 0x00020000 /* probe for RAM every 128kB */
|
||||
|
||||
#define MID_VCI_BASE RAM_BASE
|
||||
#define MID_DMA_RX_BASE (MID_VCI_BASE+NR_VCI*16)
|
||||
#define MID_DMA_TX_BASE (MID_DMA_RX_BASE+NR_DMA_RX*8)
|
||||
#define MID_SERVICE_BASE (MID_DMA_TX_BASE+NR_DMA_TX*8)
|
||||
#define MID_FREE_BASE (MID_SERVICE_BASE+NR_SERVICE*4)
|
||||
|
||||
#define MAC_LEN 6 /* atm.h */
|
||||
|
||||
#define MID_MIN_BUF_SIZE (1024) /* 1 kB is minimum */
|
||||
#define MID_MAX_BUF_SIZE (128*1024) /* 128 kB is maximum */
|
||||
|
||||
#define RX_DESCR_SIZE 1 /* RX PDU descr is 1 longword */
|
||||
#define TX_DESCR_SIZE 2 /* TX PDU descr is 2 longwords */
|
||||
#define AAL5_TRAILER (ATM_AAL5_TRAILER/4) /* AAL5 trailer is 2 longwords */
|
||||
|
||||
#define TX_GAP 8 /* TX buffer gap (words) */
|
||||
|
||||
/*
|
||||
* Midway Reset/ID
|
||||
*
|
||||
* All values read-only. Writing to this register resets Midway chip.
|
||||
*/
|
||||
|
||||
#define MID_RES_ID_MCON 0x00 /* Midway Reset/ID */
|
||||
|
||||
#define MID_ID 0xf0000000 /* Midway version */
|
||||
#define MID_SHIFT 24
|
||||
#define MID_MOTHER_ID 0x00000700 /* mother board id */
|
||||
#define MID_MOTHER_SHIFT 8
|
||||
#define MID_CON_TI 0x00000080 /* 0: normal ctrl; 1: SABRE */
|
||||
#define MID_CON_SUNI 0x00000040 /* 0: UTOPIA; 1: SUNI */
|
||||
#define MID_CON_V6 0x00000020 /* 0: non-pipel UTOPIA (required iff
|
||||
!CON_SUNI; 1: UTOPIA */
|
||||
#define DAUGTHER_ID 0x0000001f /* daugther board id */
|
||||
|
||||
/*
|
||||
* Interrupt Status Acknowledge, Interrupt Status & Interrupt Enable
|
||||
*/
|
||||
|
||||
#define MID_ISA 0x01 /* Interrupt Status Acknowledge */
|
||||
#define MID_IS 0x02 /* Interrupt Status */
|
||||
#define MID_IE 0x03 /* Interrupt Enable */
|
||||
|
||||
#define MID_TX_COMPLETE_7 0x00010000 /* channel N completed a PDU */
|
||||
#define MID_TX_COMPLETE_6 0x00008000 /* transmission */
|
||||
#define MID_TX_COMPLETE_5 0x00004000
|
||||
#define MID_TX_COMPLETE_4 0x00002000
|
||||
#define MID_TX_COMPLETE_3 0x00001000
|
||||
#define MID_TX_COMPLETE_2 0x00000800
|
||||
#define MID_TX_COMPLETE_1 0x00000400
|
||||
#define MID_TX_COMPLETE_0 0x00000200
|
||||
#define MID_TX_COMPLETE 0x0001fe00 /* any TX */
|
||||
#define MID_TX_DMA_OVFL 0x00000100 /* DMA to adapter overflow */
|
||||
#define MID_TX_IDENT_MISM 0x00000080 /* TX: ident mismatch => halted */
|
||||
#define MID_DMA_LERR_ACK 0x00000040 /* LERR - SBus ? */
|
||||
#define MID_DMA_ERR_ACK 0x00000020 /* DMA error */
|
||||
#define MID_RX_DMA_COMPLETE 0x00000010 /* DMA to host done */
|
||||
#define MID_TX_DMA_COMPLETE 0x00000008 /* DMA from host done */
|
||||
#define MID_SERVICE 0x00000004 /* something in service list */
|
||||
#define MID_SUNI_INT 0x00000002 /* interrupt from SUNI */
|
||||
#define MID_STAT_OVFL 0x00000001 /* statistics overflow */
|
||||
|
||||
/*
|
||||
* Master Control/Status
|
||||
*/
|
||||
|
||||
#define MID_MC_S 0x04
|
||||
|
||||
#define MID_INT_SELECT 0x000001C0 /* Interrupt level (000: off) */
|
||||
#define MID_INT_SEL_SHIFT 6
|
||||
#define MID_TX_LOCK_MODE 0x00000020 /* 0: streaming; 1: TX ovfl->lock */
|
||||
#define MID_DMA_ENABLE 0x00000010 /* R: 0: disable; 1: enable
|
||||
W: 0: no change; 1: enable */
|
||||
#define MID_TX_ENABLE 0x00000008 /* R: 0: TX disabled; 1: enabled
|
||||
W: 0: no change; 1: enable */
|
||||
#define MID_RX_ENABLE 0x00000004 /* like TX */
|
||||
#define MID_WAIT_1MS 0x00000002 /* R: 0: timer not running; 1: running
|
||||
W: 0: no change; 1: no interrupts
|
||||
for 1 ms */
|
||||
#define MID_WAIT_500US 0x00000001 /* like WAIT_1MS, but 0.5 ms */
|
||||
|
||||
/*
|
||||
* Statistics
|
||||
*
|
||||
* Cleared when reading.
|
||||
*/
|
||||
|
||||
#define MID_STAT 0x05
|
||||
|
||||
#define MID_VCI_TRASH 0xFFFF0000 /* trashed cells because of VCI mode */
|
||||
#define MID_VCI_TRASH_SHIFT 16
|
||||
#define MID_OVFL_TRASH 0x0000FFFF /* trashed cells because of overflow */
|
||||
|
||||
/*
|
||||
* Address registers
|
||||
*/
|
||||
|
||||
#define MID_SERV_WRITE 0x06 /* free pos in service area (R, 10 bits) */
|
||||
#define MID_DMA_ADDR 0x07 /* virtual DMA address (R, 32 bits) */
|
||||
#define MID_DMA_WR_RX 0x08 /* (RW, 9 bits) */
|
||||
#define MID_DMA_RD_RX 0x09
|
||||
#define MID_DMA_WR_TX 0x0A
|
||||
#define MID_DMA_RD_TX 0x0B
|
||||
|
||||
/*
|
||||
* Transmit Place Registers (0x10+4*channel)
|
||||
*/
|
||||
|
||||
#define MID_TX_PLACE(c) (0x10+4*(c))
|
||||
|
||||
#define MID_SIZE 0x00003800 /* size, N*256 x 32 bit */
|
||||
#define MID_SIZE_SHIFT 11
|
||||
#define MID_LOCATION 0x000007FF /* location in adapter memory (word) */
|
||||
|
||||
#define MID_LOC_SKIP 8 /* 8 bits of location are always zero
|
||||
(applies to all uses of location) */
|
||||
|
||||
/*
|
||||
* Transmit ReadPtr Registers (0x11+4*channel)
|
||||
*/
|
||||
|
||||
#define MID_TX_RDPTR(c) (0x11+4*(c))
|
||||
|
||||
#define MID_READ_PTR 0x00007FFF /* next word for PHY */
|
||||
|
||||
/*
|
||||
* Transmit DescrStart Registers (0x12+4*channel)
|
||||
*/
|
||||
|
||||
#define MID_TX_DESCRSTART(c) (0x12+4*(c))
|
||||
|
||||
#define MID_DESCR_START 0x00007FFF /* seg buffer being DMAed */
|
||||
|
||||
#define ENI155_MAGIC 0xa54b872d
|
||||
|
||||
struct midway_eprom {
|
||||
unsigned char mac[MAC_LEN],inv_mac[MAC_LEN];
|
||||
unsigned char pad[36];
|
||||
u32 serial,inv_serial;
|
||||
u32 magic,inv_magic;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* VCI table entry
|
||||
*/
|
||||
|
||||
#define MID_VCI_IN_SERVICE 0x00000001 /* set if VCI is currently in
|
||||
service list */
|
||||
#define MID_VCI_SIZE 0x00038000 /* reassembly buffer size,
|
||||
2*<size> kB */
|
||||
#define MID_VCI_SIZE_SHIFT 15
|
||||
#define MID_VCI_LOCATION 0x1ffc0000 /* buffer location */
|
||||
#define MID_VCI_LOCATION_SHIFT 18
|
||||
#define MID_VCI_PTI_MODE 0x20000000 /* 0: trash, 1: preserve */
|
||||
#define MID_VCI_MODE 0xc0000000
|
||||
#define MID_VCI_MODE_SHIFT 30
|
||||
#define MID_VCI_READ 0x00007fff
|
||||
#define MID_VCI_READ_SHIFT 0
|
||||
#define MID_VCI_DESCR 0x7fff0000
|
||||
#define MID_VCI_DESCR_SHIFT 16
|
||||
#define MID_VCI_COUNT 0x000007ff
|
||||
#define MID_VCI_COUNT_SHIFT 0
|
||||
#define MID_VCI_STATE 0x0000c000
|
||||
#define MID_VCI_STATE_SHIFT 14
|
||||
#define MID_VCI_WRITE 0x7fff0000
|
||||
#define MID_VCI_WRITE_SHIFT 16
|
||||
|
||||
#define MID_MODE_TRASH 0
|
||||
#define MID_MODE_RAW 1
|
||||
#define MID_MODE_AAL5 2
|
||||
|
||||
/*
|
||||
* Reassembly buffer descriptor
|
||||
*/
|
||||
|
||||
#define MID_RED_COUNT 0x000007ff
|
||||
#define MID_RED_CRC_ERR 0x00000800
|
||||
#define MID_RED_T 0x00001000
|
||||
#define MID_RED_CE 0x00010000
|
||||
#define MID_RED_CLP 0x01000000
|
||||
#define MID_RED_IDEN 0xfe000000
|
||||
#define MID_RED_SHIFT 25
|
||||
|
||||
#define MID_RED_RX_ID 0x1b /* constant identifier */
|
||||
|
||||
/*
|
||||
* Segmentation buffer descriptor
|
||||
*/
|
||||
|
||||
#define MID_SEG_COUNT MID_RED_COUNT
|
||||
#define MID_SEG_RATE 0x01f80000
|
||||
#define MID_SEG_RATE_SHIFT 19
|
||||
#define MID_SEG_PR 0x06000000
|
||||
#define MID_SEG_PR_SHIFT 25
|
||||
#define MID_SEG_AAL5 0x08000000
|
||||
#define MID_SEG_ID 0xf0000000
|
||||
#define MID_SEG_ID_SHIFT 28
|
||||
#define MID_SEG_MAX_RATE 63
|
||||
|
||||
#define MID_SEG_CLP 0x00000001
|
||||
#define MID_SEG_PTI 0x0000000e
|
||||
#define MID_SEG_PTI_SHIFT 1
|
||||
#define MID_SEG_VCI 0x00003ff0
|
||||
#define MID_SEG_VCI_SHIFT 4
|
||||
|
||||
#define MID_SEG_TX_ID 0xb /* constant identifier */
|
||||
|
||||
/*
|
||||
* DMA entry
|
||||
*/
|
||||
|
||||
#define MID_DMA_COUNT 0xffff0000
|
||||
#define MID_DMA_COUNT_SHIFT 16
|
||||
#define MID_DMA_END 0x00000020
|
||||
#define MID_DMA_TYPE 0x0000000f
|
||||
|
||||
#define MID_DT_JK 0x3
|
||||
#define MID_DT_WORD 0x0
|
||||
#define MID_DT_2W 0x7
|
||||
#define MID_DT_4W 0x4
|
||||
#define MID_DT_8W 0x5
|
||||
#define MID_DT_16W 0x6
|
||||
#define MID_DT_2WM 0xf
|
||||
#define MID_DT_4WM 0xc
|
||||
#define MID_DT_8WM 0xd
|
||||
#define MID_DT_16WM 0xe
|
||||
|
||||
/* only for RX*/
|
||||
#define MID_DMA_VCI 0x0000ffc0
|
||||
#define MID_DMA_VCI_SHIFT 6
|
||||
|
||||
/* only for TX */
|
||||
#define MID_DMA_CHAN 0x000001c0
|
||||
#define MID_DMA_CHAN_SHIFT 6
|
||||
|
||||
#define MID_DT_BYTE 0x1
|
||||
#define MID_DT_HWORD 0x2
|
||||
|
||||
#endif
|
||||
3105
drivers/atm/nicstar.c
Normal file
3105
drivers/atm/nicstar.c
Normal file
File diff suppressed because it is too large
Load Diff
820
drivers/atm/nicstar.h
Normal file
820
drivers/atm/nicstar.h
Normal file
@@ -0,0 +1,820 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* nicstar.h
|
||||
*
|
||||
* Header file for the nicstar device driver.
|
||||
*
|
||||
* Author: Rui Prior (rprior@inescn.pt)
|
||||
* PowerPC support by Jay Talbott (jay_talbott@mcg.mot.com) April 1999
|
||||
*
|
||||
* (C) INESC 1998
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
#ifndef _LINUX_NICSTAR_H_
|
||||
#define _LINUX_NICSTAR_H_
|
||||
|
||||
|
||||
/* Includes *******************************************************************/
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/uio.h>
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/atmdev.h>
|
||||
#include <linux/atm_nicstar.h>
|
||||
|
||||
|
||||
/* Options ********************************************************************/
|
||||
|
||||
#undef NS_DEBUG_SPINLOCKS
|
||||
|
||||
#define NS_MAX_CARDS 4 /* Maximum number of NICStAR based cards
|
||||
controlled by the device driver. Must
|
||||
be <= 5 */
|
||||
|
||||
#undef RCQ_SUPPORT /* Do not define this for now */
|
||||
|
||||
#define NS_TST_NUM_ENTRIES 2340 /* + 1 for return */
|
||||
#define NS_TST_RESERVED 340 /* N. entries reserved for UBR/ABR/VBR */
|
||||
|
||||
#define NS_SMBUFSIZE 48 /* 48, 96, 240 or 2048 */
|
||||
#define NS_LGBUFSIZE 16384 /* 2048, 4096, 8192 or 16384 */
|
||||
#define NS_RSQSIZE 8192 /* 2048, 4096 or 8192 */
|
||||
#define NS_VPIBITS 2 /* 0, 1, 2, or 8 */
|
||||
|
||||
#define NS_MAX_RCTSIZE 4096 /* Number of entries. 4096 or 16384.
|
||||
Define 4096 only if (all) your card(s)
|
||||
have 32K x 32bit SRAM, in which case
|
||||
setting this to 16384 will just waste a
|
||||
lot of memory.
|
||||
Setting this to 4096 for a card with
|
||||
128K x 32bit SRAM will limit the maximum
|
||||
VCI. */
|
||||
|
||||
/*#define NS_PCI_LATENCY 64*/ /* Must be a multiple of 32 */
|
||||
|
||||
/* Number of buffers initially allocated */
|
||||
#define NUM_SB 32 /* Must be even */
|
||||
#define NUM_LB 24 /* Must be even */
|
||||
#define NUM_HB 8 /* Pre-allocated huge buffers */
|
||||
#define NUM_IOVB 48 /* Iovec buffers */
|
||||
|
||||
/* Lower level for count of buffers */
|
||||
#define MIN_SB 8 /* Must be even */
|
||||
#define MIN_LB 8 /* Must be even */
|
||||
#define MIN_HB 6
|
||||
#define MIN_IOVB 8
|
||||
|
||||
/* Upper level for count of buffers */
|
||||
#define MAX_SB 64 /* Must be even, <= 508 */
|
||||
#define MAX_LB 48 /* Must be even, <= 508 */
|
||||
#define MAX_HB 10
|
||||
#define MAX_IOVB 80
|
||||
|
||||
/* These are the absolute maximum allowed for the ioctl() */
|
||||
#define TOP_SB 256 /* Must be even, <= 508 */
|
||||
#define TOP_LB 128 /* Must be even, <= 508 */
|
||||
#define TOP_HB 64
|
||||
#define TOP_IOVB 256
|
||||
|
||||
|
||||
#define MAX_TBD_PER_VC 1 /* Number of TBDs before a TSR */
|
||||
#define MAX_TBD_PER_SCQ 10 /* Only meaningful for variable rate SCQs */
|
||||
|
||||
#undef ENABLE_TSQFIE
|
||||
|
||||
#define SCQFULL_TIMEOUT (5 * HZ)
|
||||
|
||||
#define NS_POLL_PERIOD (HZ)
|
||||
|
||||
#define PCR_TOLERANCE (1.0001)
|
||||
|
||||
|
||||
|
||||
/* ESI stuff ******************************************************************/
|
||||
|
||||
#define NICSTAR_EPROM_MAC_ADDR_OFFSET 0x6C
|
||||
#define NICSTAR_EPROM_MAC_ADDR_OFFSET_ALT 0xF6
|
||||
|
||||
|
||||
/* #defines *******************************************************************/
|
||||
|
||||
#define NS_IOREMAP_SIZE 4096
|
||||
|
||||
#define BUF_SM 0x00000000 /* These two are used for push_rxbufs() */
|
||||
#define BUF_LG 0x00000001 /* CMD, Write_FreeBufQ, LBUF bit */
|
||||
|
||||
#define NS_HBUFSIZE 65568 /* Size of max. AAL5 PDU */
|
||||
#define NS_MAX_IOVECS (2 + (65568 - NS_SMBUFSIZE) / \
|
||||
(NS_LGBUFSIZE - (NS_LGBUFSIZE % 48)))
|
||||
#define NS_IOVBUFSIZE (NS_MAX_IOVECS * (sizeof(struct iovec)))
|
||||
|
||||
#define NS_SMBUFSIZE_USABLE (NS_SMBUFSIZE - NS_SMBUFSIZE % 48)
|
||||
#define NS_LGBUFSIZE_USABLE (NS_LGBUFSIZE - NS_LGBUFSIZE % 48)
|
||||
|
||||
#define NS_AAL0_HEADER (ATM_AAL0_SDU - ATM_CELL_PAYLOAD) /* 4 bytes */
|
||||
|
||||
#define NS_SMSKBSIZE (NS_SMBUFSIZE + NS_AAL0_HEADER)
|
||||
#define NS_LGSKBSIZE (NS_SMBUFSIZE + NS_LGBUFSIZE)
|
||||
|
||||
|
||||
/* NICStAR structures located in host memory **********************************/
|
||||
|
||||
|
||||
|
||||
/* RSQ - Receive Status Queue
|
||||
*
|
||||
* Written by the NICStAR, read by the device driver.
|
||||
*/
|
||||
|
||||
typedef struct ns_rsqe
|
||||
{
|
||||
u32 word_1;
|
||||
u32 buffer_handle;
|
||||
u32 final_aal5_crc32;
|
||||
u32 word_4;
|
||||
} ns_rsqe;
|
||||
|
||||
#define ns_rsqe_vpi(ns_rsqep) \
|
||||
((le32_to_cpu((ns_rsqep)->word_1) & 0x00FF0000) >> 16)
|
||||
#define ns_rsqe_vci(ns_rsqep) \
|
||||
(le32_to_cpu((ns_rsqep)->word_1) & 0x0000FFFF)
|
||||
|
||||
#define NS_RSQE_VALID 0x80000000
|
||||
#define NS_RSQE_NZGFC 0x00004000
|
||||
#define NS_RSQE_EOPDU 0x00002000
|
||||
#define NS_RSQE_BUFSIZE 0x00001000
|
||||
#define NS_RSQE_CONGESTION 0x00000800
|
||||
#define NS_RSQE_CLP 0x00000400
|
||||
#define NS_RSQE_CRCERR 0x00000200
|
||||
|
||||
#define NS_RSQE_BUFSIZE_SM 0x00000000
|
||||
#define NS_RSQE_BUFSIZE_LG 0x00001000
|
||||
|
||||
#define ns_rsqe_valid(ns_rsqep) \
|
||||
(le32_to_cpu((ns_rsqep)->word_4) & NS_RSQE_VALID)
|
||||
#define ns_rsqe_nzgfc(ns_rsqep) \
|
||||
(le32_to_cpu((ns_rsqep)->word_4) & NS_RSQE_NZGFC)
|
||||
#define ns_rsqe_eopdu(ns_rsqep) \
|
||||
(le32_to_cpu((ns_rsqep)->word_4) & NS_RSQE_EOPDU)
|
||||
#define ns_rsqe_bufsize(ns_rsqep) \
|
||||
(le32_to_cpu((ns_rsqep)->word_4) & NS_RSQE_BUFSIZE)
|
||||
#define ns_rsqe_congestion(ns_rsqep) \
|
||||
(le32_to_cpu((ns_rsqep)->word_4) & NS_RSQE_CONGESTION)
|
||||
#define ns_rsqe_clp(ns_rsqep) \
|
||||
(le32_to_cpu((ns_rsqep)->word_4) & NS_RSQE_CLP)
|
||||
#define ns_rsqe_crcerr(ns_rsqep) \
|
||||
(le32_to_cpu((ns_rsqep)->word_4) & NS_RSQE_CRCERR)
|
||||
|
||||
#define ns_rsqe_cellcount(ns_rsqep) \
|
||||
(le32_to_cpu((ns_rsqep)->word_4) & 0x000001FF)
|
||||
#define ns_rsqe_init(ns_rsqep) \
|
||||
((ns_rsqep)->word_4 = cpu_to_le32(0x00000000))
|
||||
|
||||
#define NS_RSQ_NUM_ENTRIES (NS_RSQSIZE / 16)
|
||||
#define NS_RSQ_ALIGNMENT NS_RSQSIZE
|
||||
|
||||
|
||||
|
||||
/* RCQ - Raw Cell Queue
|
||||
*
|
||||
* Written by the NICStAR, read by the device driver.
|
||||
*/
|
||||
|
||||
typedef struct cell_payload
|
||||
{
|
||||
u32 word[12];
|
||||
} cell_payload;
|
||||
|
||||
typedef struct ns_rcqe
|
||||
{
|
||||
u32 word_1;
|
||||
u32 word_2;
|
||||
u32 word_3;
|
||||
u32 word_4;
|
||||
cell_payload payload;
|
||||
} ns_rcqe;
|
||||
|
||||
#define NS_RCQE_SIZE 64 /* bytes */
|
||||
|
||||
#define ns_rcqe_islast(ns_rcqep) \
|
||||
(le32_to_cpu((ns_rcqep)->word_2) != 0x00000000)
|
||||
#define ns_rcqe_cellheader(ns_rcqep) \
|
||||
(le32_to_cpu((ns_rcqep)->word_1))
|
||||
#define ns_rcqe_nextbufhandle(ns_rcqep) \
|
||||
(le32_to_cpu((ns_rcqep)->word_2))
|
||||
|
||||
|
||||
|
||||
/* SCQ - Segmentation Channel Queue
|
||||
*
|
||||
* Written by the device driver, read by the NICStAR.
|
||||
*/
|
||||
|
||||
typedef struct ns_scqe
|
||||
{
|
||||
u32 word_1;
|
||||
u32 word_2;
|
||||
u32 word_3;
|
||||
u32 word_4;
|
||||
} ns_scqe;
|
||||
|
||||
/* NOTE: SCQ entries can be either a TBD (Transmit Buffer Descriptors)
|
||||
or TSR (Transmit Status Requests) */
|
||||
|
||||
#define NS_SCQE_TYPE_TBD 0x00000000
|
||||
#define NS_SCQE_TYPE_TSR 0x80000000
|
||||
|
||||
|
||||
#define NS_TBD_EOPDU 0x40000000
|
||||
#define NS_TBD_AAL0 0x00000000
|
||||
#define NS_TBD_AAL34 0x04000000
|
||||
#define NS_TBD_AAL5 0x08000000
|
||||
|
||||
#define NS_TBD_VPI_MASK 0x0FF00000
|
||||
#define NS_TBD_VCI_MASK 0x000FFFF0
|
||||
#define NS_TBD_VC_MASK (NS_TBD_VPI_MASK | NS_TBD_VCI_MASK)
|
||||
|
||||
#define NS_TBD_VPI_SHIFT 20
|
||||
#define NS_TBD_VCI_SHIFT 4
|
||||
|
||||
#define ns_tbd_mkword_1(flags, m, n, buflen) \
|
||||
(cpu_to_le32((flags) | (m) << 23 | (n) << 16 | (buflen)))
|
||||
#define ns_tbd_mkword_1_novbr(flags, buflen) \
|
||||
(cpu_to_le32((flags) | (buflen) | 0x00810000))
|
||||
#define ns_tbd_mkword_3(control, pdulen) \
|
||||
(cpu_to_le32((control) << 16 | (pdulen)))
|
||||
#define ns_tbd_mkword_4(gfc, vpi, vci, pt, clp) \
|
||||
(cpu_to_le32((gfc) << 28 | (vpi) << 20 | (vci) << 4 | (pt) << 1 | (clp)))
|
||||
|
||||
|
||||
#define NS_TSR_INTENABLE 0x20000000
|
||||
|
||||
#define NS_TSR_SCDISVBR 0xFFFF /* Use as scdi for VBR SCD */
|
||||
|
||||
#define ns_tsr_mkword_1(flags) \
|
||||
(cpu_to_le32(NS_SCQE_TYPE_TSR | (flags)))
|
||||
#define ns_tsr_mkword_2(scdi, scqi) \
|
||||
(cpu_to_le32((scdi) << 16 | 0x00008000 | (scqi)))
|
||||
|
||||
#define ns_scqe_is_tsr(ns_scqep) \
|
||||
(le32_to_cpu((ns_scqep)->word_1) & NS_SCQE_TYPE_TSR)
|
||||
|
||||
#define VBR_SCQ_NUM_ENTRIES 512
|
||||
#define VBR_SCQSIZE 8192
|
||||
#define CBR_SCQ_NUM_ENTRIES 64
|
||||
#define CBR_SCQSIZE 1024
|
||||
|
||||
#define NS_SCQE_SIZE 16
|
||||
|
||||
|
||||
|
||||
/* TSQ - Transmit Status Queue
|
||||
*
|
||||
* Written by the NICStAR, read by the device driver.
|
||||
*/
|
||||
|
||||
typedef struct ns_tsi
|
||||
{
|
||||
u32 word_1;
|
||||
u32 word_2;
|
||||
} ns_tsi;
|
||||
|
||||
/* NOTE: The first word can be a status word copied from the TSR which
|
||||
originated the TSI, or a timer overflow indicator. In this last
|
||||
case, the value of the first word is all zeroes. */
|
||||
|
||||
#define NS_TSI_EMPTY 0x80000000
|
||||
#define NS_TSI_TIMESTAMP_MASK 0x00FFFFFF
|
||||
|
||||
#define ns_tsi_isempty(ns_tsip) \
|
||||
(le32_to_cpu((ns_tsip)->word_2) & NS_TSI_EMPTY)
|
||||
#define ns_tsi_gettimestamp(ns_tsip) \
|
||||
(le32_to_cpu((ns_tsip)->word_2) & NS_TSI_TIMESTAMP_MASK)
|
||||
|
||||
#define ns_tsi_init(ns_tsip) \
|
||||
((ns_tsip)->word_2 = cpu_to_le32(NS_TSI_EMPTY))
|
||||
|
||||
|
||||
#define NS_TSQSIZE 8192
|
||||
#define NS_TSQ_NUM_ENTRIES 1024
|
||||
#define NS_TSQ_ALIGNMENT 8192
|
||||
|
||||
|
||||
#define NS_TSI_SCDISVBR NS_TSR_SCDISVBR
|
||||
|
||||
#define ns_tsi_tmrof(ns_tsip) \
|
||||
(le32_to_cpu((ns_tsip)->word_1) == 0x00000000)
|
||||
#define ns_tsi_getscdindex(ns_tsip) \
|
||||
((le32_to_cpu((ns_tsip)->word_1) & 0xFFFF0000) >> 16)
|
||||
#define ns_tsi_getscqpos(ns_tsip) \
|
||||
(le32_to_cpu((ns_tsip)->word_1) & 0x00007FFF)
|
||||
|
||||
|
||||
|
||||
/* NICStAR structures located in local SRAM ***********************************/
|
||||
|
||||
|
||||
|
||||
/* RCT - Receive Connection Table
|
||||
*
|
||||
* Written by both the NICStAR and the device driver.
|
||||
*/
|
||||
|
||||
typedef struct ns_rcte
|
||||
{
|
||||
u32 word_1;
|
||||
u32 buffer_handle;
|
||||
u32 dma_address;
|
||||
u32 aal5_crc32;
|
||||
} ns_rcte;
|
||||
|
||||
#define NS_RCTE_BSFB 0x00200000 /* Rev. D only */
|
||||
#define NS_RCTE_NZGFC 0x00100000
|
||||
#define NS_RCTE_CONNECTOPEN 0x00080000
|
||||
#define NS_RCTE_AALMASK 0x00070000
|
||||
#define NS_RCTE_AAL0 0x00000000
|
||||
#define NS_RCTE_AAL34 0x00010000
|
||||
#define NS_RCTE_AAL5 0x00020000
|
||||
#define NS_RCTE_RCQ 0x00030000
|
||||
#define NS_RCTE_RAWCELLINTEN 0x00008000
|
||||
#define NS_RCTE_RXCONSTCELLADDR 0x00004000
|
||||
#define NS_RCTE_BUFFVALID 0x00002000
|
||||
#define NS_RCTE_FBDSIZE 0x00001000
|
||||
#define NS_RCTE_EFCI 0x00000800
|
||||
#define NS_RCTE_CLP 0x00000400
|
||||
#define NS_RCTE_CRCERROR 0x00000200
|
||||
#define NS_RCTE_CELLCOUNT_MASK 0x000001FF
|
||||
|
||||
#define NS_RCTE_FBDSIZE_SM 0x00000000
|
||||
#define NS_RCTE_FBDSIZE_LG 0x00001000
|
||||
|
||||
#define NS_RCT_ENTRY_SIZE 4 /* Number of dwords */
|
||||
|
||||
/* NOTE: We could make macros to contruct the first word of the RCTE,
|
||||
but that doesn't seem to make much sense... */
|
||||
|
||||
|
||||
|
||||
/* FBD - Free Buffer Descriptor
|
||||
*
|
||||
* Written by the device driver using via the command register.
|
||||
*/
|
||||
|
||||
typedef struct ns_fbd
|
||||
{
|
||||
u32 buffer_handle;
|
||||
u32 dma_address;
|
||||
} ns_fbd;
|
||||
|
||||
|
||||
|
||||
|
||||
/* TST - Transmit Schedule Table
|
||||
*
|
||||
* Written by the device driver.
|
||||
*/
|
||||
|
||||
typedef u32 ns_tste;
|
||||
|
||||
#define NS_TST_OPCODE_MASK 0x60000000
|
||||
|
||||
#define NS_TST_OPCODE_NULL 0x00000000 /* Insert null cell */
|
||||
#define NS_TST_OPCODE_FIXED 0x20000000 /* Cell from a fixed rate channel */
|
||||
#define NS_TST_OPCODE_VARIABLE 0x40000000
|
||||
#define NS_TST_OPCODE_END 0x60000000 /* Jump */
|
||||
|
||||
#define ns_tste_make(opcode, sramad) (opcode | sramad)
|
||||
|
||||
/* NOTE:
|
||||
|
||||
- When the opcode is FIXED, sramad specifies the SRAM address of the
|
||||
SCD for that fixed rate channel.
|
||||
- When the opcode is END, sramad specifies the SRAM address of the
|
||||
location of the next TST entry to read.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/* SCD - Segmentation Channel Descriptor
|
||||
*
|
||||
* Written by both the device driver and the NICStAR
|
||||
*/
|
||||
|
||||
typedef struct ns_scd
|
||||
{
|
||||
u32 word_1;
|
||||
u32 word_2;
|
||||
u32 partial_aal5_crc;
|
||||
u32 reserved;
|
||||
ns_scqe cache_a;
|
||||
ns_scqe cache_b;
|
||||
} ns_scd;
|
||||
|
||||
#define NS_SCD_BASE_MASK_VAR 0xFFFFE000 /* Variable rate */
|
||||
#define NS_SCD_BASE_MASK_FIX 0xFFFFFC00 /* Fixed rate */
|
||||
#define NS_SCD_TAIL_MASK_VAR 0x00001FF0
|
||||
#define NS_SCD_TAIL_MASK_FIX 0x000003F0
|
||||
#define NS_SCD_HEAD_MASK_VAR 0x00001FF0
|
||||
#define NS_SCD_HEAD_MASK_FIX 0x000003F0
|
||||
#define NS_SCD_XMITFOREVER 0x02000000
|
||||
|
||||
/* NOTE: There are other fields in word 2 of the SCD, but as they should
|
||||
not be needed in the device driver they are not defined here. */
|
||||
|
||||
|
||||
|
||||
|
||||
/* NICStAR local SRAM memory map **********************************************/
|
||||
|
||||
|
||||
#define NS_RCT 0x00000
|
||||
#define NS_RCT_32_END 0x03FFF
|
||||
#define NS_RCT_128_END 0x0FFFF
|
||||
#define NS_UNUSED_32 0x04000
|
||||
#define NS_UNUSED_128 0x10000
|
||||
#define NS_UNUSED_END 0x1BFFF
|
||||
#define NS_TST_FRSCD 0x1C000
|
||||
#define NS_TST_FRSCD_END 0x1E7DB
|
||||
#define NS_VRSCD2 0x1E7DC
|
||||
#define NS_VRSCD2_END 0x1E7E7
|
||||
#define NS_VRSCD1 0x1E7E8
|
||||
#define NS_VRSCD1_END 0x1E7F3
|
||||
#define NS_VRSCD0 0x1E7F4
|
||||
#define NS_VRSCD0_END 0x1E7FF
|
||||
#define NS_RXFIFO 0x1E800
|
||||
#define NS_RXFIFO_END 0x1F7FF
|
||||
#define NS_SMFBQ 0x1F800
|
||||
#define NS_SMFBQ_END 0x1FBFF
|
||||
#define NS_LGFBQ 0x1FC00
|
||||
#define NS_LGFBQ_END 0x1FFFF
|
||||
|
||||
|
||||
|
||||
/* NISCtAR operation registers ************************************************/
|
||||
|
||||
|
||||
/* See Section 3.4 of `IDT77211 NICStAR User Manual' from www.idt.com */
|
||||
|
||||
enum ns_regs
|
||||
{
|
||||
DR0 = 0x00, /* Data Register 0 R/W*/
|
||||
DR1 = 0x04, /* Data Register 1 W */
|
||||
DR2 = 0x08, /* Data Register 2 W */
|
||||
DR3 = 0x0C, /* Data Register 3 W */
|
||||
CMD = 0x10, /* Command W */
|
||||
CFG = 0x14, /* Configuration R/W */
|
||||
STAT = 0x18, /* Status R/W */
|
||||
RSQB = 0x1C, /* Receive Status Queue Base W */
|
||||
RSQT = 0x20, /* Receive Status Queue Tail R */
|
||||
RSQH = 0x24, /* Receive Status Queue Head W */
|
||||
CDC = 0x28, /* Cell Drop Counter R/clear */
|
||||
VPEC = 0x2C, /* VPI/VCI Lookup Error Count R/clear */
|
||||
ICC = 0x30, /* Invalid Cell Count R/clear */
|
||||
RAWCT = 0x34, /* Raw Cell Tail R */
|
||||
TMR = 0x38, /* Timer R */
|
||||
TSTB = 0x3C, /* Transmit Schedule Table Base R/W */
|
||||
TSQB = 0x40, /* Transmit Status Queue Base W */
|
||||
TSQT = 0x44, /* Transmit Status Queue Tail R */
|
||||
TSQH = 0x48, /* Transmit Status Queue Head W */
|
||||
GP = 0x4C, /* General Purpose R/W */
|
||||
VPM = 0x50 /* VPI/VCI Mask W */
|
||||
};
|
||||
|
||||
|
||||
/* NICStAR commands issued to the CMD register ********************************/
|
||||
|
||||
|
||||
/* Top 4 bits are command opcode, lower 28 are parameters. */
|
||||
|
||||
#define NS_CMD_NO_OPERATION 0x00000000
|
||||
/* params always 0 */
|
||||
|
||||
#define NS_CMD_OPENCLOSE_CONNECTION 0x20000000
|
||||
/* b19{1=open,0=close} b18-2{SRAM addr} */
|
||||
|
||||
#define NS_CMD_WRITE_SRAM 0x40000000
|
||||
/* b18-2{SRAM addr} b1-0{burst size} */
|
||||
|
||||
#define NS_CMD_READ_SRAM 0x50000000
|
||||
/* b18-2{SRAM addr} */
|
||||
|
||||
#define NS_CMD_WRITE_FREEBUFQ 0x60000000
|
||||
/* b0{large buf indicator} */
|
||||
|
||||
#define NS_CMD_READ_UTILITY 0x80000000
|
||||
/* b8{1=select UTL_CS1} b9{1=select UTL_CS0} b7-0{bus addr} */
|
||||
|
||||
#define NS_CMD_WRITE_UTILITY 0x90000000
|
||||
/* b8{1=select UTL_CS1} b9{1=select UTL_CS0} b7-0{bus addr} */
|
||||
|
||||
#define NS_CMD_OPEN_CONNECTION (NS_CMD_OPENCLOSE_CONNECTION | 0x00080000)
|
||||
#define NS_CMD_CLOSE_CONNECTION NS_CMD_OPENCLOSE_CONNECTION
|
||||
|
||||
|
||||
/* NICStAR configuration bits *************************************************/
|
||||
|
||||
#define NS_CFG_SWRST 0x80000000 /* Software Reset */
|
||||
#define NS_CFG_RXPATH 0x20000000 /* Receive Path Enable */
|
||||
#define NS_CFG_SMBUFSIZE_MASK 0x18000000 /* Small Receive Buffer Size */
|
||||
#define NS_CFG_LGBUFSIZE_MASK 0x06000000 /* Large Receive Buffer Size */
|
||||
#define NS_CFG_EFBIE 0x01000000 /* Empty Free Buffer Queue
|
||||
Interrupt Enable */
|
||||
#define NS_CFG_RSQSIZE_MASK 0x00C00000 /* Receive Status Queue Size */
|
||||
#define NS_CFG_ICACCEPT 0x00200000 /* Invalid Cell Accept */
|
||||
#define NS_CFG_IGNOREGFC 0x00100000 /* Ignore General Flow Control */
|
||||
#define NS_CFG_VPIBITS_MASK 0x000C0000 /* VPI/VCI Bits Size Select */
|
||||
#define NS_CFG_RCTSIZE_MASK 0x00030000 /* Receive Connection Table Size */
|
||||
#define NS_CFG_VCERRACCEPT 0x00008000 /* VPI/VCI Error Cell Accept */
|
||||
#define NS_CFG_RXINT_MASK 0x00007000 /* End of Receive PDU Interrupt
|
||||
Handling */
|
||||
#define NS_CFG_RAWIE 0x00000800 /* Raw Cell Qu' Interrupt Enable */
|
||||
#define NS_CFG_RSQAFIE 0x00000400 /* Receive Queue Almost Full
|
||||
Interrupt Enable */
|
||||
#define NS_CFG_RXRM 0x00000200 /* Receive RM Cells */
|
||||
#define NS_CFG_TMRROIE 0x00000080 /* Timer Roll Over Interrupt
|
||||
Enable */
|
||||
#define NS_CFG_TXEN 0x00000020 /* Transmit Operation Enable */
|
||||
#define NS_CFG_TXIE 0x00000010 /* Transmit Status Interrupt
|
||||
Enable */
|
||||
#define NS_CFG_TXURIE 0x00000008 /* Transmit Under-run Interrupt
|
||||
Enable */
|
||||
#define NS_CFG_UMODE 0x00000004 /* Utopia Mode (cell/byte) Select */
|
||||
#define NS_CFG_TSQFIE 0x00000002 /* Transmit Status Queue Full
|
||||
Interrupt Enable */
|
||||
#define NS_CFG_PHYIE 0x00000001 /* PHY Interrupt Enable */
|
||||
|
||||
#define NS_CFG_SMBUFSIZE_48 0x00000000
|
||||
#define NS_CFG_SMBUFSIZE_96 0x08000000
|
||||
#define NS_CFG_SMBUFSIZE_240 0x10000000
|
||||
#define NS_CFG_SMBUFSIZE_2048 0x18000000
|
||||
|
||||
#define NS_CFG_LGBUFSIZE_2048 0x00000000
|
||||
#define NS_CFG_LGBUFSIZE_4096 0x02000000
|
||||
#define NS_CFG_LGBUFSIZE_8192 0x04000000
|
||||
#define NS_CFG_LGBUFSIZE_16384 0x06000000
|
||||
|
||||
#define NS_CFG_RSQSIZE_2048 0x00000000
|
||||
#define NS_CFG_RSQSIZE_4096 0x00400000
|
||||
#define NS_CFG_RSQSIZE_8192 0x00800000
|
||||
|
||||
#define NS_CFG_VPIBITS_0 0x00000000
|
||||
#define NS_CFG_VPIBITS_1 0x00040000
|
||||
#define NS_CFG_VPIBITS_2 0x00080000
|
||||
#define NS_CFG_VPIBITS_8 0x000C0000
|
||||
|
||||
#define NS_CFG_RCTSIZE_4096_ENTRIES 0x00000000
|
||||
#define NS_CFG_RCTSIZE_8192_ENTRIES 0x00010000
|
||||
#define NS_CFG_RCTSIZE_16384_ENTRIES 0x00020000
|
||||
|
||||
#define NS_CFG_RXINT_NOINT 0x00000000
|
||||
#define NS_CFG_RXINT_NODELAY 0x00001000
|
||||
#define NS_CFG_RXINT_314US 0x00002000
|
||||
#define NS_CFG_RXINT_624US 0x00003000
|
||||
#define NS_CFG_RXINT_899US 0x00004000
|
||||
|
||||
|
||||
/* NICStAR STATus bits ********************************************************/
|
||||
|
||||
#define NS_STAT_SFBQC_MASK 0xFF000000 /* hi 8 bits Small Buffer Queue Count */
|
||||
#define NS_STAT_LFBQC_MASK 0x00FF0000 /* hi 8 bits Large Buffer Queue Count */
|
||||
#define NS_STAT_TSIF 0x00008000 /* Transmit Status Queue Indicator */
|
||||
#define NS_STAT_TXICP 0x00004000 /* Transmit Incomplete PDU */
|
||||
#define NS_STAT_TSQF 0x00001000 /* Transmit Status Queue Full */
|
||||
#define NS_STAT_TMROF 0x00000800 /* Timer Overflow */
|
||||
#define NS_STAT_PHYI 0x00000400 /* PHY Device Interrupt */
|
||||
#define NS_STAT_CMDBZ 0x00000200 /* Command Busy */
|
||||
#define NS_STAT_SFBQF 0x00000100 /* Small Buffer Queue Full */
|
||||
#define NS_STAT_LFBQF 0x00000080 /* Large Buffer Queue Full */
|
||||
#define NS_STAT_RSQF 0x00000040 /* Receive Status Queue Full */
|
||||
#define NS_STAT_EOPDU 0x00000020 /* End of PDU */
|
||||
#define NS_STAT_RAWCF 0x00000010 /* Raw Cell Flag */
|
||||
#define NS_STAT_SFBQE 0x00000008 /* Small Buffer Queue Empty */
|
||||
#define NS_STAT_LFBQE 0x00000004 /* Large Buffer Queue Empty */
|
||||
#define NS_STAT_RSQAF 0x00000002 /* Receive Status Queue Almost Full */
|
||||
|
||||
#define ns_stat_sfbqc_get(stat) (((stat) & NS_STAT_SFBQC_MASK) >> 23)
|
||||
#define ns_stat_lfbqc_get(stat) (((stat) & NS_STAT_LFBQC_MASK) >> 15)
|
||||
|
||||
|
||||
|
||||
/* #defines which depend on other #defines ************************************/
|
||||
|
||||
|
||||
#define NS_TST0 NS_TST_FRSCD
|
||||
#define NS_TST1 (NS_TST_FRSCD + NS_TST_NUM_ENTRIES + 1)
|
||||
|
||||
#define NS_FRSCD (NS_TST1 + NS_TST_NUM_ENTRIES + 1)
|
||||
#define NS_FRSCD_SIZE 12 /* 12 dwords */
|
||||
#define NS_FRSCD_NUM ((NS_TST_FRSCD_END + 1 - NS_FRSCD) / NS_FRSCD_SIZE)
|
||||
|
||||
#if (NS_SMBUFSIZE == 48)
|
||||
#define NS_CFG_SMBUFSIZE NS_CFG_SMBUFSIZE_48
|
||||
#elif (NS_SMBUFSIZE == 96)
|
||||
#define NS_CFG_SMBUFSIZE NS_CFG_SMBUFSIZE_96
|
||||
#elif (NS_SMBUFSIZE == 240)
|
||||
#define NS_CFG_SMBUFSIZE NS_CFG_SMBUFSIZE_240
|
||||
#elif (NS_SMBUFSIZE == 2048)
|
||||
#define NS_CFG_SMBUFSIZE NS_CFG_SMBUFSIZE_2048
|
||||
#else
|
||||
#error NS_SMBUFSIZE is incorrect in nicstar.h
|
||||
#endif /* NS_SMBUFSIZE */
|
||||
|
||||
#if (NS_LGBUFSIZE == 2048)
|
||||
#define NS_CFG_LGBUFSIZE NS_CFG_LGBUFSIZE_2048
|
||||
#elif (NS_LGBUFSIZE == 4096)
|
||||
#define NS_CFG_LGBUFSIZE NS_CFG_LGBUFSIZE_4096
|
||||
#elif (NS_LGBUFSIZE == 8192)
|
||||
#define NS_CFG_LGBUFSIZE NS_CFG_LGBUFSIZE_8192
|
||||
#elif (NS_LGBUFSIZE == 16384)
|
||||
#define NS_CFG_LGBUFSIZE NS_CFG_LGBUFSIZE_16384
|
||||
#else
|
||||
#error NS_LGBUFSIZE is incorrect in nicstar.h
|
||||
#endif /* NS_LGBUFSIZE */
|
||||
|
||||
#if (NS_RSQSIZE == 2048)
|
||||
#define NS_CFG_RSQSIZE NS_CFG_RSQSIZE_2048
|
||||
#elif (NS_RSQSIZE == 4096)
|
||||
#define NS_CFG_RSQSIZE NS_CFG_RSQSIZE_4096
|
||||
#elif (NS_RSQSIZE == 8192)
|
||||
#define NS_CFG_RSQSIZE NS_CFG_RSQSIZE_8192
|
||||
#else
|
||||
#error NS_RSQSIZE is incorrect in nicstar.h
|
||||
#endif /* NS_RSQSIZE */
|
||||
|
||||
#if (NS_VPIBITS == 0)
|
||||
#define NS_CFG_VPIBITS NS_CFG_VPIBITS_0
|
||||
#elif (NS_VPIBITS == 1)
|
||||
#define NS_CFG_VPIBITS NS_CFG_VPIBITS_1
|
||||
#elif (NS_VPIBITS == 2)
|
||||
#define NS_CFG_VPIBITS NS_CFG_VPIBITS_2
|
||||
#elif (NS_VPIBITS == 8)
|
||||
#define NS_CFG_VPIBITS NS_CFG_VPIBITS_8
|
||||
#else
|
||||
#error NS_VPIBITS is incorrect in nicstar.h
|
||||
#endif /* NS_VPIBITS */
|
||||
|
||||
#ifdef RCQ_SUPPORT
|
||||
#define NS_CFG_RAWIE_OPT NS_CFG_RAWIE
|
||||
#else
|
||||
#define NS_CFG_RAWIE_OPT 0x00000000
|
||||
#endif /* RCQ_SUPPORT */
|
||||
|
||||
#ifdef ENABLE_TSQFIE
|
||||
#define NS_CFG_TSQFIE_OPT NS_CFG_TSQFIE
|
||||
#else
|
||||
#define NS_CFG_TSQFIE_OPT 0x00000000
|
||||
#endif /* ENABLE_TSQFIE */
|
||||
|
||||
|
||||
/* PCI stuff ******************************************************************/
|
||||
|
||||
#ifndef PCI_VENDOR_ID_IDT
|
||||
#define PCI_VENDOR_ID_IDT 0x111D
|
||||
#endif /* PCI_VENDOR_ID_IDT */
|
||||
|
||||
#ifndef PCI_DEVICE_ID_IDT_IDT77201
|
||||
#define PCI_DEVICE_ID_IDT_IDT77201 0x0001
|
||||
#endif /* PCI_DEVICE_ID_IDT_IDT77201 */
|
||||
|
||||
|
||||
|
||||
/* Device driver structures ***************************************************/
|
||||
|
||||
|
||||
typedef struct tsq_info
|
||||
{
|
||||
void *org;
|
||||
ns_tsi *base;
|
||||
ns_tsi *next;
|
||||
ns_tsi *last;
|
||||
} tsq_info;
|
||||
|
||||
|
||||
typedef struct scq_info
|
||||
{
|
||||
void *org;
|
||||
ns_scqe *base;
|
||||
ns_scqe *last;
|
||||
ns_scqe *next;
|
||||
volatile ns_scqe *tail; /* Not related to the nicstar register */
|
||||
unsigned num_entries;
|
||||
struct sk_buff **skb; /* Pointer to an array of pointers
|
||||
to the sk_buffs used for tx */
|
||||
u32 scd; /* SRAM address of the corresponding
|
||||
SCD */
|
||||
int tbd_count; /* Only meaningful on variable rate */
|
||||
wait_queue_head_t scqfull_waitq;
|
||||
volatile char full; /* SCQ full indicator */
|
||||
spinlock_t lock; /* SCQ spinlock */
|
||||
#ifdef NS_DEBUG_SPINLOCKS
|
||||
volatile long has_lock;
|
||||
volatile int cpu_lock;
|
||||
#endif /* NS_DEBUG_SPINLOCKS */
|
||||
} scq_info;
|
||||
|
||||
|
||||
|
||||
typedef struct rsq_info
|
||||
{
|
||||
void *org;
|
||||
ns_rsqe *base;
|
||||
ns_rsqe *next;
|
||||
ns_rsqe *last;
|
||||
} rsq_info;
|
||||
|
||||
|
||||
typedef struct skb_pool
|
||||
{
|
||||
volatile int count; /* number of buffers in the queue */
|
||||
struct sk_buff_head queue;
|
||||
} skb_pool;
|
||||
|
||||
/* NOTE: for small and large buffer pools, the count is not used, as the
|
||||
actual value used for buffer management is the one read from the
|
||||
card. */
|
||||
|
||||
|
||||
typedef struct vc_map
|
||||
{
|
||||
volatile unsigned int tx:1; /* TX vc? */
|
||||
volatile unsigned int rx:1; /* RX vc? */
|
||||
struct atm_vcc *tx_vcc, *rx_vcc;
|
||||
struct sk_buff *rx_iov; /* RX iovector skb */
|
||||
scq_info *scq; /* To keep track of the SCQ */
|
||||
u32 cbr_scd; /* SRAM address of the corresponding
|
||||
SCD. 0x00000000 for UBR/VBR/ABR */
|
||||
int tbd_count;
|
||||
} vc_map;
|
||||
|
||||
|
||||
struct ns_skb_data
|
||||
{
|
||||
struct atm_vcc *vcc;
|
||||
int iovcnt;
|
||||
};
|
||||
|
||||
#define NS_SKB(skb) (((struct ns_skb_data *) (skb)->cb))
|
||||
|
||||
|
||||
typedef struct ns_dev
|
||||
{
|
||||
int index; /* Card ID to the device driver */
|
||||
int sram_size; /* In k x 32bit words. 32 or 128 */
|
||||
void __iomem *membase; /* Card's memory base address */
|
||||
unsigned long max_pcr;
|
||||
int rct_size; /* Number of entries */
|
||||
int vpibits;
|
||||
int vcibits;
|
||||
struct pci_dev *pcidev;
|
||||
struct atm_dev *atmdev;
|
||||
tsq_info tsq;
|
||||
rsq_info rsq;
|
||||
scq_info *scq0, *scq1, *scq2; /* VBR SCQs */
|
||||
skb_pool sbpool; /* Small buffers */
|
||||
skb_pool lbpool; /* Large buffers */
|
||||
skb_pool hbpool; /* Pre-allocated huge buffers */
|
||||
skb_pool iovpool; /* iovector buffers */
|
||||
volatile int efbie; /* Empty free buf. queue int. enabled */
|
||||
volatile u32 tst_addr; /* SRAM address of the TST in use */
|
||||
volatile int tst_free_entries;
|
||||
vc_map vcmap[NS_MAX_RCTSIZE];
|
||||
vc_map *tste2vc[NS_TST_NUM_ENTRIES];
|
||||
vc_map *scd2vc[NS_FRSCD_NUM];
|
||||
buf_nr sbnr;
|
||||
buf_nr lbnr;
|
||||
buf_nr hbnr;
|
||||
buf_nr iovnr;
|
||||
int sbfqc;
|
||||
int lbfqc;
|
||||
u32 sm_handle;
|
||||
u32 sm_addr;
|
||||
u32 lg_handle;
|
||||
u32 lg_addr;
|
||||
struct sk_buff *rcbuf; /* Current raw cell buffer */
|
||||
u32 rawch; /* Raw cell queue head */
|
||||
unsigned intcnt; /* Interrupt counter */
|
||||
spinlock_t int_lock; /* Interrupt lock */
|
||||
spinlock_t res_lock; /* Card resource lock */
|
||||
#ifdef NS_DEBUG_SPINLOCKS
|
||||
volatile long has_int_lock;
|
||||
volatile int cpu_int;
|
||||
volatile long has_res_lock;
|
||||
volatile int cpu_res;
|
||||
#endif /* NS_DEBUG_SPINLOCKS */
|
||||
} ns_dev;
|
||||
|
||||
|
||||
/* NOTE: Each tste2vc entry relates a given TST entry to the corresponding
|
||||
CBR vc. If the entry is not allocated, it must be NULL.
|
||||
|
||||
There are two TSTs so the driver can modify them on the fly
|
||||
without stopping the transmission.
|
||||
|
||||
scd2vc allows us to find out unused fixed rate SCDs, because
|
||||
they must have a NULL pointer here. */
|
||||
|
||||
|
||||
#endif /* _LINUX_NICSTAR_H_ */
|
||||
274
drivers/atm/nicstarmac.c
Normal file
274
drivers/atm/nicstarmac.c
Normal file
@@ -0,0 +1,274 @@
|
||||
/*
|
||||
* this file included by nicstar.c
|
||||
*/
|
||||
|
||||
/*
|
||||
* nicstarmac.c
|
||||
* Read this ForeRunner's MAC address from eprom/eeprom
|
||||
*/
|
||||
|
||||
typedef void __iomem *virt_addr_t;
|
||||
|
||||
#define CYCLE_DELAY 5
|
||||
|
||||
/* This was the original definition
|
||||
#define osp_MicroDelay(microsec) \
|
||||
do { int _i = 4*microsec; while (--_i > 0) { __SLOW_DOWN_IO; }} while (0)
|
||||
*/
|
||||
#define osp_MicroDelay(microsec) {unsigned long useconds = (microsec); \
|
||||
udelay((useconds));}
|
||||
|
||||
|
||||
/* The following tables represent the timing diagrams found in
|
||||
* the Data Sheet for the Xicor X25020 EEProm. The #defines below
|
||||
* represent the bits in the NICStAR's General Purpose register
|
||||
* that must be toggled for the corresponding actions on the EEProm
|
||||
* to occur.
|
||||
*/
|
||||
|
||||
/* Write Data To EEProm from SI line on rising edge of CLK */
|
||||
/* Read Data From EEProm on falling edge of CLK */
|
||||
|
||||
#define CS_HIGH 0x0002 /* Chip select high */
|
||||
#define CS_LOW 0x0000 /* Chip select low (active low)*/
|
||||
#define CLK_HIGH 0x0004 /* Clock high */
|
||||
#define CLK_LOW 0x0000 /* Clock low */
|
||||
#define SI_HIGH 0x0001 /* Serial input data high */
|
||||
#define SI_LOW 0x0000 /* Serial input data low */
|
||||
|
||||
/* Read Status Register = 0000 0101b */
|
||||
#if 0
|
||||
static u_int32_t rdsrtab[] =
|
||||
{
|
||||
CS_HIGH | CLK_HIGH,
|
||||
CS_LOW | CLK_LOW,
|
||||
CLK_HIGH, /* 0 */
|
||||
CLK_LOW,
|
||||
CLK_HIGH, /* 0 */
|
||||
CLK_LOW,
|
||||
CLK_HIGH, /* 0 */
|
||||
CLK_LOW,
|
||||
CLK_HIGH, /* 0 */
|
||||
CLK_LOW,
|
||||
CLK_HIGH, /* 0 */
|
||||
CLK_LOW | SI_HIGH,
|
||||
CLK_HIGH | SI_HIGH, /* 1 */
|
||||
CLK_LOW | SI_LOW,
|
||||
CLK_HIGH, /* 0 */
|
||||
CLK_LOW | SI_HIGH,
|
||||
CLK_HIGH | SI_HIGH /* 1 */
|
||||
};
|
||||
#endif /* 0 */
|
||||
|
||||
|
||||
/* Read from EEPROM = 0000 0011b */
|
||||
static u_int32_t readtab[] =
|
||||
{
|
||||
/*
|
||||
CS_HIGH | CLK_HIGH,
|
||||
*/
|
||||
CS_LOW | CLK_LOW,
|
||||
CLK_HIGH, /* 0 */
|
||||
CLK_LOW,
|
||||
CLK_HIGH, /* 0 */
|
||||
CLK_LOW,
|
||||
CLK_HIGH, /* 0 */
|
||||
CLK_LOW,
|
||||
CLK_HIGH, /* 0 */
|
||||
CLK_LOW,
|
||||
CLK_HIGH, /* 0 */
|
||||
CLK_LOW,
|
||||
CLK_HIGH, /* 0 */
|
||||
CLK_LOW | SI_HIGH,
|
||||
CLK_HIGH | SI_HIGH, /* 1 */
|
||||
CLK_LOW | SI_HIGH,
|
||||
CLK_HIGH | SI_HIGH /* 1 */
|
||||
};
|
||||
|
||||
|
||||
/* Clock to read from/write to the eeprom */
|
||||
static u_int32_t clocktab[] =
|
||||
{
|
||||
CLK_LOW,
|
||||
CLK_HIGH,
|
||||
CLK_LOW,
|
||||
CLK_HIGH,
|
||||
CLK_LOW,
|
||||
CLK_HIGH,
|
||||
CLK_LOW,
|
||||
CLK_HIGH,
|
||||
CLK_LOW,
|
||||
CLK_HIGH,
|
||||
CLK_LOW,
|
||||
CLK_HIGH,
|
||||
CLK_LOW,
|
||||
CLK_HIGH,
|
||||
CLK_LOW,
|
||||
CLK_HIGH,
|
||||
CLK_LOW
|
||||
};
|
||||
|
||||
|
||||
#define NICSTAR_REG_WRITE(bs, reg, val) \
|
||||
while ( readl(bs + STAT) & 0x0200 ) ; \
|
||||
writel((val),(base)+(reg))
|
||||
#define NICSTAR_REG_READ(bs, reg) \
|
||||
readl((base)+(reg))
|
||||
#define NICSTAR_REG_GENERAL_PURPOSE GP
|
||||
|
||||
/*
|
||||
* This routine will clock the Read_Status_reg function into the X2520
|
||||
* eeprom, then pull the result from bit 16 of the NicSTaR's General Purpose
|
||||
* register.
|
||||
*/
|
||||
#if 0
|
||||
u_int32_t
|
||||
nicstar_read_eprom_status( virt_addr_t base )
|
||||
{
|
||||
u_int32_t val;
|
||||
u_int32_t rbyte;
|
||||
int32_t i, j;
|
||||
|
||||
/* Send read instruction */
|
||||
val = NICSTAR_REG_READ( base, NICSTAR_REG_GENERAL_PURPOSE ) & 0xFFFFFFF0;
|
||||
|
||||
for (i=0; i<sizeof rdsrtab/sizeof rdsrtab[0]; i++)
|
||||
{
|
||||
NICSTAR_REG_WRITE( base, NICSTAR_REG_GENERAL_PURPOSE,
|
||||
(val | rdsrtab[i]) );
|
||||
osp_MicroDelay( CYCLE_DELAY );
|
||||
}
|
||||
|
||||
/* Done sending instruction - now pull data off of bit 16, MSB first */
|
||||
/* Data clocked out of eeprom on falling edge of clock */
|
||||
|
||||
rbyte = 0;
|
||||
for (i=7, j=0; i>=0; i--)
|
||||
{
|
||||
NICSTAR_REG_WRITE( base, NICSTAR_REG_GENERAL_PURPOSE,
|
||||
(val | clocktab[j++]) );
|
||||
rbyte |= (((NICSTAR_REG_READ( base, NICSTAR_REG_GENERAL_PURPOSE)
|
||||
& 0x00010000) >> 16) << i);
|
||||
NICSTAR_REG_WRITE( base, NICSTAR_REG_GENERAL_PURPOSE,
|
||||
(val | clocktab[j++]) );
|
||||
osp_MicroDelay( CYCLE_DELAY );
|
||||
}
|
||||
NICSTAR_REG_WRITE( base, NICSTAR_REG_GENERAL_PURPOSE, 2 );
|
||||
osp_MicroDelay( CYCLE_DELAY );
|
||||
return rbyte;
|
||||
}
|
||||
#endif /* 0 */
|
||||
|
||||
|
||||
/*
|
||||
* This routine will clock the Read_data function into the X2520
|
||||
* eeprom, followed by the address to read from, through the NicSTaR's General
|
||||
* Purpose register.
|
||||
*/
|
||||
|
||||
static u_int8_t
|
||||
read_eprom_byte(virt_addr_t base, u_int8_t offset)
|
||||
{
|
||||
u_int32_t val = 0;
|
||||
int i,j=0;
|
||||
u_int8_t tempread = 0;
|
||||
|
||||
val = NICSTAR_REG_READ( base, NICSTAR_REG_GENERAL_PURPOSE ) & 0xFFFFFFF0;
|
||||
|
||||
/* Send READ instruction */
|
||||
for (i=0; i<sizeof readtab/sizeof readtab[0]; i++)
|
||||
{
|
||||
NICSTAR_REG_WRITE( base, NICSTAR_REG_GENERAL_PURPOSE,
|
||||
(val | readtab[i]) );
|
||||
osp_MicroDelay( CYCLE_DELAY );
|
||||
}
|
||||
|
||||
/* Next, we need to send the byte address to read from */
|
||||
for (i=7; i>=0; i--)
|
||||
{
|
||||
NICSTAR_REG_WRITE( base, NICSTAR_REG_GENERAL_PURPOSE,
|
||||
(val | clocktab[j++] | ((offset >> i) & 1) ) );
|
||||
osp_MicroDelay(CYCLE_DELAY);
|
||||
NICSTAR_REG_WRITE( base, NICSTAR_REG_GENERAL_PURPOSE,
|
||||
(val | clocktab[j++] | ((offset >> i) & 1) ) );
|
||||
osp_MicroDelay( CYCLE_DELAY );
|
||||
}
|
||||
|
||||
j = 0;
|
||||
|
||||
/* Now, we can read data from the eeprom by clocking it in */
|
||||
for (i=7; i>=0; i--)
|
||||
{
|
||||
NICSTAR_REG_WRITE( base, NICSTAR_REG_GENERAL_PURPOSE,
|
||||
(val | clocktab[j++]) );
|
||||
osp_MicroDelay( CYCLE_DELAY );
|
||||
tempread |= (((NICSTAR_REG_READ( base, NICSTAR_REG_GENERAL_PURPOSE )
|
||||
& 0x00010000) >> 16) << i);
|
||||
NICSTAR_REG_WRITE( base, NICSTAR_REG_GENERAL_PURPOSE,
|
||||
(val | clocktab[j++]) );
|
||||
osp_MicroDelay( CYCLE_DELAY );
|
||||
}
|
||||
|
||||
NICSTAR_REG_WRITE( base, NICSTAR_REG_GENERAL_PURPOSE, 2 );
|
||||
osp_MicroDelay( CYCLE_DELAY );
|
||||
return tempread;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
nicstar_init_eprom( virt_addr_t base )
|
||||
{
|
||||
u_int32_t val;
|
||||
|
||||
/*
|
||||
* turn chip select off
|
||||
*/
|
||||
val = NICSTAR_REG_READ(base, NICSTAR_REG_GENERAL_PURPOSE) & 0xFFFFFFF0;
|
||||
|
||||
NICSTAR_REG_WRITE(base, NICSTAR_REG_GENERAL_PURPOSE,
|
||||
(val | CS_HIGH | CLK_HIGH));
|
||||
osp_MicroDelay( CYCLE_DELAY );
|
||||
|
||||
NICSTAR_REG_WRITE(base, NICSTAR_REG_GENERAL_PURPOSE,
|
||||
(val | CS_HIGH | CLK_LOW));
|
||||
osp_MicroDelay( CYCLE_DELAY );
|
||||
|
||||
NICSTAR_REG_WRITE(base, NICSTAR_REG_GENERAL_PURPOSE,
|
||||
(val | CS_HIGH | CLK_HIGH));
|
||||
osp_MicroDelay( CYCLE_DELAY );
|
||||
|
||||
NICSTAR_REG_WRITE(base, NICSTAR_REG_GENERAL_PURPOSE,
|
||||
(val | CS_HIGH | CLK_LOW));
|
||||
osp_MicroDelay( CYCLE_DELAY );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* This routine will be the interface to the ReadPromByte function
|
||||
* above.
|
||||
*/
|
||||
|
||||
static void
|
||||
nicstar_read_eprom(
|
||||
virt_addr_t base,
|
||||
u_int8_t prom_offset,
|
||||
u_int8_t *buffer,
|
||||
u_int32_t nbytes )
|
||||
{
|
||||
u_int i;
|
||||
|
||||
for (i=0; i<nbytes; i++)
|
||||
{
|
||||
buffer[i] = read_eprom_byte( base, prom_offset );
|
||||
++prom_offset;
|
||||
osp_MicroDelay( CYCLE_DELAY );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
void osp_MicroDelay(int x) {
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
61
drivers/atm/nicstarmac.copyright
Normal file
61
drivers/atm/nicstarmac.copyright
Normal file
@@ -0,0 +1,61 @@
|
||||
/* nicstar.c v0.22 Jawaid Bazyar (bazyar@hypermall.com)
|
||||
* nicstar.c, M. Welsh (matt.welsh@cl.cam.ac.uk)
|
||||
*
|
||||
* Hacked October, 1997 by Jawaid Bazyar, Interlink Advertising Services Inc.
|
||||
* http://www.hypermall.com/
|
||||
* 10/1/97 - commented out CFG_PHYIE bit - we don't care when the PHY
|
||||
* interrupts us (except possibly for removal/insertion of the cable?)
|
||||
* 10/4/97 - began heavy inline documentation of the code. Corrected typos
|
||||
* and spelling mistakes.
|
||||
* 10/5/97 - added code to handle PHY interrupts, disable PHY on
|
||||
* loss of link, and correctly re-enable PHY when link is
|
||||
* re-established. (put back CFG_PHYIE)
|
||||
*
|
||||
* Modified to work with the IDT7721 nicstar -- AAL5 (tested) only.
|
||||
*
|
||||
* R. D. Rechenmacher <ron@fnal.gov>, Aug. 6, 1997 $Revision: 1.1 $ $Date: 1999/08/20 11:00:11 $
|
||||
*
|
||||
* Linux driver for the IDT77201 NICStAR PCI ATM controller.
|
||||
* PHY component is expected to be 155 Mbps S/UNI-Lite or IDT 77155;
|
||||
* see init_nicstar() for PHY initialization to change this. This driver
|
||||
* expects the Linux ATM stack to support scatter-gather lists
|
||||
* (skb->atm.iovcnt != 0) for Rx skb's passed to vcc->push.
|
||||
*
|
||||
* Implementing minimal-copy of received data:
|
||||
* IDT always receives data into a small buffer, then large buffers
|
||||
* as needed. This means that data must always be copied to create
|
||||
* the linear buffer needed by most non-ATM protocol stacks (e.g. IP)
|
||||
* Fix is simple: make large buffers large enough to hold entire
|
||||
* SDU, and leave <small_buffer_data> bytes empty at the start. Then
|
||||
* copy small buffer contents to head of large buffer.
|
||||
* Trick is to avoid fragmenting Linux, due to need for a lot of large
|
||||
* buffers. This is done by 2 things:
|
||||
* 1) skb->destructor / skb->atm.recycle_buffer
|
||||
* combined, allow nicstar_free_rx_skb to be called to
|
||||
* recycle large data buffers
|
||||
* 2) skb_clone of received buffers
|
||||
* See nicstar_free_rx_skb and linearize_buffer for implementation
|
||||
* details.
|
||||
*
|
||||
*
|
||||
*
|
||||
* Copyright (c) 1996 University of Cambridge Computer Laboratory
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* M. Welsh, 6 July 1996
|
||||
*
|
||||
*
|
||||
*/
|
||||
850
drivers/atm/pca200e.data
Normal file
850
drivers/atm/pca200e.data
Normal file
@@ -0,0 +1,850 @@
|
||||
:150000001F8B0808AB5A10380203706361323030652E62696E4D
|
||||
:150015007D00E43A0D7014D7796FA5BDE84EC86211A7333020EE
|
||||
:15002A00AD89C00A23EA83AA589C7E7C38D8152EB887477677D3
|
||||
:15003F0095C39C3DB2AB388CA324C4A509352BFBB085BBD0C73F
|
||||
:150054007210B903C92991CCD1B1C242255BCCD81EA5C34C6826
|
||||
:1500690006271AC6D36A3A31B976D4A9A683DB4B07BB38265C56
|
||||
:15007E00BFEFBDB7777BA7030B2733994C35737AFBBEF7BDEFE7
|
||||
:15009300EF7DDFF7BEF7769FFEEAD79F221221E1ED844C3E4677
|
||||
:1500A8007EA3BFF036F827CF8597C3AF0C7E920B16595BCE5AA8
|
||||
:1500BD00296B6483D83E9F7DBE8FF50BE74A0B45FB1F274FAA79
|
||||
:1500D200D82E2867139DF637FD937EF1D55FB0769FE8678BDAFB
|
||||
:1500E7007D9BD8885451515172FE27E4138E9FC9949CBFF026BC
|
||||
:1500FC00741DF83ECE59823FF23BF89346493F6B4F17C1B3A7CE
|
||||
:15011100B3B79C97D3275B5ABFEC3CF9579457703B3CBFEFD600
|
||||
:15012600FC38236CA91B5E347EDBFA67F7ED4397956EA4D3C5F4
|
||||
:15013B007CE6A567799EFFF5CFC4FF7BDF938BF83E83EDE59F02
|
||||
:15015000FEAC24BF8A3C3F2FF9FDFF933CF51EF2FFEC2FEBFA11
|
||||
:150165002341C38CBC5F4EAA265F5EAF04BC51F0059FD1419ED8
|
||||
:15017A00063493D465A2384E66A0171C30231F40AB5CB5646FC8
|
||||
:15018F005CBFB633DECCC614D2DAF622F15D3189EFEA3EE28B83
|
||||
:1501A4007D99F8DABE4D7C2418A438AF3129015D7507F1032EBA
|
||||
:1501B900E174827F46C82229AE2BC63A9D50E9253960EC005FCA
|
||||
:1501CE00F2EDFE0AF12A9D5EBD6A35F1B5AC441A49BAD94F22C6
|
||||
:1501E300DECB544F180D1A51FACD8C4A7C034B93DAFD6455A8F9
|
||||
:1501F8009AAC5AB74C9542EF11E23DB0946A0F1B0DA10BF0CC0C
|
||||
:15020D00F9A4A8097BCA1D751474A02FEC02593C75C9E870D176
|
||||
:15022200B8CF352EC3783C379E1C2893C98017C6A57B3CDD0E4D
|
||||
:15023700CE32426A9CB99F03FC2E81BF46AD0D06544FD0190B08
|
||||
:15024C00C0580B8E897EFDF490DE08FD652E9CFAE911DD5F24FE
|
||||
:15026100CF832469DAB1116BE0F3C437B686F8D275C437AC9220
|
||||
:150276000542BFF6CC0320B22AB7237E1F5B97A4E927A397490C
|
||||
:15028B0064C43AFF0CD8ACCE8886D37F632A7F4C16005E289CAF
|
||||
:1502A0003E491DDAFB083513C6B0A6B8E4929626F531E0877479
|
||||
:1502B50082E58C9E2503DDD45DC4777E3BF1051F253E09684E42
|
||||
:1502CA00C3BAC26825AC39F5225F6598EE23B366227C52ABFC3A
|
||||
:1502DF00BC2754E61BD1FFEBAE6DCDFE8D49AAEA38EE89A35A1B
|
||||
:1502F4009DF0DCF4254234681BBB09E98536033F2F3C5F835F24
|
||||
:15030900107E147E1AE8AA0406A36989DB63C95ADE9F9272EBA7
|
||||
:15031E00C17C6131AC4519193457028723BE118D0433D6F063E5
|
||||
:150333005C6E1C77EC2981FD118663B2FA3A455F8D11A2D66BC0
|
||||
:15034800AFE9B096E6D4A38454D70D004ECA8235541117C7A5F2
|
||||
:15035D002D26F8E4B07D3848BA956402FC7BF8EC956CB6B6D35F
|
||||
:1503720091EB21B280C218CAB04122B5957583D126189B7D88FF
|
||||
:15038700FB2BDA46560F52056C867C6CE85FF1135F19E0C948D1
|
||||
:15039C0023873342916798F3A6E45FA58C9021887DB9A8DF9307
|
||||
:1503B1002EECF7421F693AB054DE6F73F4FDF414E83A6B66B2C0
|
||||
:1503C6000B11C3BA0E45D0D1074E3318C92C24FE074FF267E847
|
||||
:1503DB00E03AE67193D635C40D9FD66A65B471CABA5AC66D9C17
|
||||
:1503F00081B68DE4F5200AEA316B3E3EF5F8D4CAF0C902BFBC6E
|
||||
:1504050003FD12ED00BE39F8E7C4E765F2A6F8BCC8083DA6B648
|
||||
:15041A00335DAAA0AFC4DEA66A6CDC8418EA26910FAD6A0821BE
|
||||
:15042F0012B4A9C269D1DDAC9DB05A98BD06B91D807702D6021B
|
||||
:15044400F02CA479BF88CD3D82BE3F92D49137C262E0EB5969BB
|
||||
:15045900D6AC8DA4F4A3A0EB808FEB8570E6F34897F9F77CE4C2
|
||||
:15046E0071E4E07C73F2C0FC256AC3208B2D5C834D43BA3F060F
|
||||
:15048300F39566B386103FC611E321E23D02F1168A79426C3DFD
|
||||
:15049800E159DA32AAA34C083FBA62DC2474847A94BF031D86A2
|
||||
:1504AD00ACE5EAEB969CDC4FF3F3216F03DE5414FD8ED3DA3050
|
||||
:1504C2005F5AC953795A804F2146D05612811C0DB6A0BC0E67DE
|
||||
:1504D7007C6E471FC3A5CFA04B06639EFA201E11FA182E7D3E53
|
||||
:1504EC009556913E89227D129F511FDBA5CF05970CF63CF54199
|
||||
:15050100BCE097B83EB64B9F4FA555A4CF60913E839F511F752A
|
||||
:1505160026AF4FCB4C5E0684CF471FC48B75737DF079C37C69B3
|
||||
:15052B0015E973BC489FE32E7DC231AFD997FEF15925301975DC
|
||||
:150540007CBC5E33F5D918F2E53E82FD69D1B745FF82E8237F22
|
||||
:15055500EC4FB07ED2A4626FD8C3F7363321FA29D11F14FD6938
|
||||
:15056A00D13F2EFA9D40678FFA1ACBD131181B507F88FBA8451E
|
||||
:15057F00E179507D8362EC4FC2734A7D8786D5D526CF431356CC
|
||||
:1505940010E6D51152BB2CE6690F243DED35694FBB17D6017487
|
||||
:1505A900B251C766F514A3D3037337AB67189D043C77A9E728AB
|
||||
:1505BE00CE3FCFE5A0C8B347ED17F9CDB09A812EE4A09AFBC861
|
||||
:1505D30005F3ECCE1F76B0B8059C6AD51342D87777BEC16093F7
|
||||
:1505E8002ED82B3BDF613094C9813DB7F3A50E87FE6A95AF1F58
|
||||
:1505FD00D259C69E53B447F047991EAA1FDDE8D0747091968332
|
||||
:15061200EBC88AB2D5095CA4FB07AA87ED030961D37494DB348F
|
||||
:15062700C27225D77D497EBF32958271CE6F8DA0D12CF612E37F
|
||||
:15063C00718ED32568206F3FDF874C7B477EAC4DD8310AE35B40
|
||||
:15065100C17E683B139EA3EA6178A6D65B4CA65926E72EF555F4
|
||||
:150666007A82D977D06A9A610E58F3D80D4F6BFDF4DDFAC37506
|
||||
:15067B00E7D67D672AA93DD881720C301B55C6E4D0860EB97506
|
||||
:150690007D5DFF3A0A636BD898CDE4AD4C7A42CBDE915B037587
|
||||
:1506A50087D7593056DDC1E5477B55429CDCF8B5DCFAAB15AFBD
|
||||
:1506BA00AE3B0263FFD3EE69AF8C5584FEF3FD0FDA90E6BFADE7
|
||||
:1506CF0030DB70FEBF9C186B43DC4BEFBFDE4682BD8C27C86F5A
|
||||
:1506E400B3BC185CC264063DED086BF730DA2418B655D6F63110
|
||||
:1506F900394850B53126EEFCD1AC2EBD1B83F83B6D56056C5662
|
||||
:15070E0027F079B3565739DFC3A2AC8D591AB48B37FD4097B6BD
|
||||
:150723007D4527CA41F38E00D6C48665887A30CEDA5E6BA09CE8
|
||||
:15073800EF7568CF8A7EC03FF80DC05F6B56078280AFB25C86D9
|
||||
:15074D00F863ACEDB32658DBC26CBEE04780FFEEB7017F9BB98C
|
||||
:15076200301001FCB0C5E54E5A0DD0BEC8D6618FD53893DFDBC0
|
||||
:15077700489D0A781A5B9B27616DFAD4435409C08E179C365B01
|
||||
:15078C00B86D2C5EB34E5BCDD0CEC0B98106CBBA25A29A87AEC7
|
||||
:1507A100676BD0977601BC4A7DCDC2BA15ED575E1DD7B78610CF
|
||||
:1507B6008FC715EE954F0A5CB4B78837139F9F079E8AEFA21E32
|
||||
:1507CB00DF9814679714AB9163E99F59FEBDE3263A704FFA4DF8
|
||||
:1507E0000BFAD400D9FCE1115DF1C541C7772D591DB7BA1C7929
|
||||
:1507F500D4BBCC1B9F701EC761BE22E4A1429EB736E6E5C1BDA9
|
||||
:15080A00EE92C09D74C933790B79222E79BA401EE8535A429E39
|
||||
:15081F00F3ABF2F23C2B785CC43812F24C0A799A5CF2E05E759D
|
||||
:15083400BFC0457F73E4C1E79BC91376C9B319E4813E4D9690D5
|
||||
:15084900A7D925CFE55F711E6D33B8A771799007CA73BC252F86
|
||||
:15085E000FEE3567392EE35506B935DE3E625D87B3AC9363DDC5
|
||||
:15087300675D387B325FEEC53DCA370CF1D064D2707F1F9E1BAD
|
||||
:15088800BCCC7732962CFCB60AF76B17AFD80C1694A4D6EBDAB7
|
||||
:15089D0047E58DFC1CEB75E1E10563311E21B6794C95704FA00C
|
||||
:1508B20031EEBF8BC93DD0270326EC0F8A54674771FCCEF0B040
|
||||
:1508C7007E67F81CD864D8EA401CC819480FE1811DBC76E5FDFE
|
||||
:1508DC00733A83FDD508D6AA24406D9DCF3FA75FCC66FD65D592
|
||||
:1508F100FDFAEE7BF332F5F0FDC225936D769033AD01550A3A24
|
||||
:15090600BCF12CBF86F184F305E007567C68E59EDB3FCCF1498D
|
||||
:15091B00D79F692B73E8803CC25E4CAEDA152370463A4A2DE42F
|
||||
:15093000AB34998BC0DE1BD01C0AA7C5715314ED0FC74F4B510E
|
||||
:150945005ED2BDC9319893001F18B3A2AE734B17D4E2CFA89EB1
|
||||
:15095A00D6B7245E6394E2F350520E95A6DD6079943780F65B70
|
||||
:15096F00507B1C857AE36D0B6B12491D8133EA88E6D41A72B92A
|
||||
:15098400A835607E52D421448C255D7548EE0F723FD656E84744
|
||||
:15099900CA3D28974DE33C4751AF90CFEB9603D61BE545BA8197
|
||||
:1509AE00906D2A44D446CA190BE550DE5F85B273DF637264CCC1
|
||||
:1509C300C15E487501388B928C8974B4ED9C4E8FD80F395D9B32
|
||||
:1509D800D9A7F6FDFD5482B3B6141B358F92514D3A30CEEA2EE8
|
||||
:1509ED003EC7B6108744E478BE6ECB98555F46FA54D0E77A23D8
|
||||
:150A0200FDE876AE1FE7932AE0C3EC226CC2EC98E676BC7347DE
|
||||
:150A1700DC0A446C361675F3A48267306C72595A4C85D9A5D310
|
||||
:150A2C006467AB60D0E4761AA00C1E19A6CFDE057584F27DAC4C
|
||||
:150A4100810A64F09F5845DD6B073896ACC05936324E1D3FC1D0
|
||||
:150A56001C843796C7485C2391FD168998CC2EAC0E807119F419
|
||||
:150A6B00A52D86899716E555719D1E5CABF77860FDA686D87D2E
|
||||
:150A8000881FD74839ABCBEADB34C06AE6FC196F49F9DC3367A7
|
||||
:150A9500FF9653FCBCE83E774E9DC198FD9433E7203F734E0EF2
|
||||
:150AAA00E7CE9BECEC19F9BEE5F8961C30A2634DFCFEA0D0B70D
|
||||
:150ABF00B82FA14CBDC23E6C6D4249E6574419B2081DA247F1E2
|
||||
:150AD400AE02FC0A7D81D9CC00FA74C84ADCC82E72F9336B3524
|
||||
:150AE90075186487D8A757CCC5B06FE37D56B5BAAAF912D674D6
|
||||
:150AFE0012F13EA3AE0D5D83985C9FF6B7B3DAEE31CEB713DA06
|
||||
:150B130045E420F33B90DB12700BE117C47D4058E0468A700568
|
||||
:150B2800DC42F87111EF0EFD1E316777D11C01B710DE2BE8F75C
|
||||
:150B3D000A5CA30857C02D84B709FA2B05FD06818B78F8BCDCC9
|
||||
:150B5200956F1A5D63F88C67293C4379C18FCAAB46C037862CF0
|
||||
:150B6700B497ACBCA2E37A07D5613B00F6AA091FED901553AFF3
|
||||
:150B7C00EDBFA257A9A7AC65C6076D814DFFADCBB131EB44D2FC
|
||||
:150B9100D3ED8D9966269B5D0C355EAB1CBB62393E5B09B92DA1
|
||||
:150BA6007D3DEB73C7C0B7A0CE95599D4AE7C4A388AF5C5E4121
|
||||
:150BBB001ACAA1213D513EACA16C353B1A2C279ED9DA634E30EB
|
||||
:150BD0002027A4DFC63C22E273C22A8E67F405C61362C61D27AE
|
||||
:150BE5002FDE11D7C365DC0F1591D33E2D4E5E82FD3B17230768
|
||||
:150BFA008634CC078AD84F31565642CAC2B3E0D3AC9E17310500
|
||||
:150C0F00F1F318F89BA8DF73B0FBC5B9E2E6B1D4226269A8F448
|
||||
:150C2400FD8D2B9E7ABEF0DBCFD57473E2296C3D2DEC7EBCF2E1
|
||||
:150C3900AE00DF13950DDEA802CFB7FA713CC25A35E0ECA52AC3
|
||||
:150C4E00D412F544A96ED2E3655F78CA23E0B4C678CA19C73BC6
|
||||
:150C63007A25DCF084ECD008279EA8719E37E5E1B9FD8ADDB182
|
||||
:150C78000DC0764CD423AADC4D73B519BFDF7C84EDF7B3589BA5
|
||||
:150C8D002978178F2324729206D4F666ACDF181C6C7FFDBEF62F
|
||||
:150CA2003F04FFB4091D3E8BEDE2C8A08EF7A1481361354A427E
|
||||
:150CB700BF0075C79CFD52F0EFBA09FFF58CFF80C9F2281DB6EB
|
||||
:150CCC00918E943ECEE946809780E173BA047D6A637DC3E9E326
|
||||
:150CE100FD30D41426ABD5A0BF066353F5B7AD57AB426111E732
|
||||
:150CF6002175793BD0A435CA01DD9101E36E51513FF72CF85916
|
||||
:150D0B00533FD0D6AB0F846AD4079A03EAAAD056276FA94F71C2
|
||||
:150D2000DA82A6E43B3E87AEF48FB786AD4E2F6F75EEA36584E2
|
||||
:150D3500837D8F64208743DE10F7CD8B56A7E5565C0F7627CD82
|
||||
:150D4A0071E811C84132E2404C200ECA9A85BA8E1AFB35425244
|
||||
:150D5F00980BCDECDF9F97C1AF71CF55D02E2C2EA660BF823D2D
|
||||
:150D74006135190E61FC6476BEDEE1BEA7FD9C787F107F84E908
|
||||
:150D89005860EF2C9930495D2A9AA76D08DAB6C1624F81FD644F
|
||||
:150D9E0072445B638C94A45D2168373E42BCEE7D285F5F65CC2D
|
||||
:150DB300E4D7B03E3172F5C9FCF381CDF301E856321F28AE3A51
|
||||
:150DC80028771E688C4A5BD641CD07B107B58A72379C210E6DFD
|
||||
:150DDD00D477415EF648712D0AAD1C4846132A3F977C1772DDE5
|
||||
:150DF200B1E4C7CDE4EA10BDF6B5FC7B8D3D5FFFDDFEA623C476
|
||||
:150E070037F149D60767196DF37D72BB73D787F76764B77176CD
|
||||
:150E1C0012DFEDED4E9E9D62ED24C612B4E9B319F6CE0FCEC553
|
||||
:150E310060A795E28EC5592B49ACD55EA03DFBA77C1F408D2F19
|
||||
:150E4600C19925111ED61AB1FD22D431CC768DCC76686BC46913
|
||||
:150E5B00025948755C5BFE89B05F4C62F603E3079A805E15C03F
|
||||
:150E70007F7E9F7C2F5BCFEDA2BE82166B17AC59900EF6BB59E8
|
||||
:150E85003D95F781473ED50706C49DFE70491F5072FB7DC6422E
|
||||
:150E9A009DC136B6B08D2D6C630BDBD8689B72C8E56E9F99AF8B
|
||||
:150EAF003DF1DD13D451C14A757F10CEF8BE3C6C2DC00E06535C
|
||||
:150EC40005B03F02D8D1E09803AB42582DC056042711C6EE3D4A
|
||||
:150ED900B87DDFFB18EC09763DFFF15CBBBEF730F18D7D8C764C
|
||||
:150EEE006DB877BE7ACD579F7809FF2813FE1105BE17B615CA1F
|
||||
:150F0300D922135F23C8E20159979490B511E67899AC4DF7DEFF
|
||||
:150F1800CE1ACC57DEDE12F2960B795F0759976C9BEBCF06FAC8
|
||||
:150F2D004B095F8E5DCBFACA408FC8B5B97AC4804EF81AEAE194
|
||||
:150F4200BFF7767DE976F4E929A18F2CF4F9F956E2EB84DF675D
|
||||
:150F5700E1BFF97F4127B5812A6A1365EFE620074AB029B701EC
|
||||
:150F6C001CFB32E934357C0E6AA60AD659AEEA96A26EFA5B76F9
|
||||
:150F8100970E79676B6C88BD2B8E7D53DCF73CC76A5433FD0D60
|
||||
:150F9600A89D643847E33B55DC9401EF62EC9455F5C419EBC295
|
||||
:150FAB00479C3601BAD9858639057D89F7BD631F15CA33267057
|
||||
:150FC000DF83B68B244DBFCAF9118DF3433EC8CFDE5DC86F3932
|
||||
:150FD500E0553D71CADA0AFC3441837EC4F9C5043FE87BDDF609
|
||||
:150FEA0054843DCD3FE1EFB8AF3E440AC61789F15D62FCBDA29D
|
||||
:150FFF00F11A31BE558C8F158D2F16E34D623CC1C63366D79E29
|
||||
:15101400FC793F0B3A5202FB37ECD5DEE52452707687BF81A5FC
|
||||
:15102900B646E14C41EA923BF0AC5963EC5F87EFF53591D70ED8
|
||||
:15103E002C9DD53AC22F873A5DF7E92F4C3CF113B4D573BB2F35
|
||||
:1510530075045DF0CBAFFEF57584B7EEF84987FBFE7DFA8D6F83
|
||||
:151068009D40F893FFF0E30EC2BE871834E3FFFC179BFC0163E8
|
||||
:15107D0047B297F8269F24BE3972BAEE17827F59B87FCB380E23
|
||||
:15109200F9167388548D39197231C24AECC74EAE81B351FBEE40
|
||||
:1510A7002DE2DE07700F6C19D52A638F065F811671F66EE7672C
|
||||
:1510BC003C1C73CE320C5644AF8EDFF7F1EF332E0FE8F683F8F2
|
||||
:1510D1001D01FB1640C47E8ADD2918BE51B6571056CB2419BE69
|
||||
:1510E6005F39CDEE52768B7B1784A9EA283B4BED71C18202D67F
|
||||
:1510FB00E7823509D8DE99FCB707866B1CED4B26086954472D8C
|
||||
:15111000370CBF436C2882554932692E84518A67BFD838550E10
|
||||
:151125008DEA2D3826F4C6EF6508BD9BD99D8AF91FDC58F453B2
|
||||
:15113A002F9B9FF345D18A7E649C4A07F09C0338ECFD3DE713EE
|
||||
:15114F005647E93EA827B19EC2F3EE65F0B7441FE9C6F74ED3D0
|
||||
:15116400397FE1B66DACE2760DA74FE6E40CA74FD3FE2DE3DA2C
|
||||
:151179006675DC72D37C79E98086FB33D28C15ECEFA3ECEE6226
|
||||
:15118E00AB80ED1132EE113206605F6732E27B2576864DE1DED8
|
||||
:1511A300CF6A05B6F78BB51C106B298B6F2998CDA06605DE16C5
|
||||
:1511B8007EFF9280338317CFA17866127A7845AB14B5176F64D1
|
||||
:1511CD000BEA546EDF93EC5E0EF76903F4C3332E3E3B30F2F086
|
||||
:1511E2005C58991BC6EAE794D509272B493C6F56381C6C66A124
|
||||
:1511F700DD6A33CCCE0143C8C160013B1AD89812E727389FC223
|
||||
:15120C009C5A03D60DD688B591717321D2A3A356297C52029F42
|
||||
:15122100E4F0DFE4F605183C5B7B9DCFF944FCBD20F4E4B19C55
|
||||
:1512360062758BE4E804CF57A514F3F7A03F3FFEF296FCB8034D
|
||||
:15124B007BA9044C7E782ECCE386B9623AE7DF22A69C7875C78E
|
||||
:15126000727F512C633B25C66E36C72831C7196BC4F68BF9B97C
|
||||
:151275009590BB8DBBC902278FA04D5E747C0E9EEBA7E37AAC39
|
||||
:15128A00687CC1E594CE69A4CC1648B68998A71B7CAC06F7016D
|
||||
:15129F0073733E27A17F605C38637DEE31F6ED1BA7C35A178D76
|
||||
:1512B400CE221A8E0DB80F7298510C037A2F38307F1E66948027
|
||||
:1512C900555617C250A7FD2E9D1D58BC04ACBCDA0D334CBB4EC1
|
||||
:1512DE0026E1D5C23EB08F60CEC0B8F483CF634D85DFE4B17ECD
|
||||
:1512F3002015AD75BD4B225584BD3342FFF533FF1D311D3FAFDB
|
||||
:151308003C84DF1BD87400BFB50BF35C568A8672DB34600CF7B2
|
||||
:15131D00176514F12C2D1717498AF91CF3E12ECC25D0C77907C1
|
||||
:1513320097A634461F7DC54F6829B8E2829B6EFC25A5E10AC018
|
||||
:151347007B9DEFDEEA788E75DB6BAB74137BF94BEBBAE0B20DCC
|
||||
:15135C0067E4D1BE83504BB03C301FBBFD1669A19EB75A03F3CC
|
||||
:1513710076E4FACCB40AD7D51679DED9AB793E2EB475613E2E11
|
||||
:15138600210BCCE1B2A44CD602ED85480F6ABE927628814F729C
|
||||
:15139B00F885F2ED75F91DC6AF543D37BE49F5DCF82EAB9E1BB7
|
||||
:1513B000CBA404EC15DFDCF8F654CF8D65B90886F847DC73F32E
|
||||
:1513C500EF3C2B79FD8531CEF706B469BD6BEF83D6D825BEDF9F
|
||||
:1513DA0020AEBD50291A935D63FEA231AF6B6C49D158956B6C58
|
||||
:1513EF00B922F611E52D4A1493CAEA307BCFC4BF63A4F41A6BD3
|
||||
:1514040007E9F532BEE765581B34A1A82072F5889E30C635FCEE
|
||||
:151419005676B13CA21F2B1FD78E854735AC55BE639CD3BC1730
|
||||
:15142E003FD0192E201F360E68CA5653AF81BC5CE97AFF8BDFE1
|
||||
:151443008FCAE638833F17AB0ACDB8D613DFFBFFD37DFC7B9AE7
|
||||
:1514580058EEDB1B80CFF0335F65F2D7CDCB92DFC4EF4EC4B7BF
|
||||
:15146D003313ECBB277E5F3EC1BF8D080E50FEBD0C1538830C25
|
||||
:15148200A7D7F57E03DF9F3F2BF84CCEE17347011FFE7DCD0460
|
||||
:15149700FB7ECAE1630B3E5D820FC719345551A725A13D119479
|
||||
:1514AC00BA2B0E8DE8FEF02AFD353C9FC4EE6E0BC42A425745A7
|
||||
:1514C1007C5D8ADD139A85672FD8BF5E8BEBD433DA5719F3B4AB
|
||||
:1514D600E33A292ABE8B033BBE097935297577A9A72C388AD66C
|
||||
:1514EB00C8CA5A88EB03B42E7CB0ED30665CA5DFC46F5D37FF53
|
||||
:151500003B9CEB22BFB41AD45F5ACEFBE836F58015560F5BFEA9
|
||||
:15151500F408FDBFF6BE3E3A8AEBCAF355AB5A6A498DA816ADA6
|
||||
:15152A0046C2209588708447715A422648964C43182F78306934
|
||||
:15153F00639CAD12C26EDB644C1C26A3DD61E7704E58BB255AC4
|
||||
:1515540020E10729D548462638B4B064E30938322B123C47248E
|
||||
:1515690062E275F02C61B48CC390C4269D19C626332456BC4A65
|
||||
:15157E0086CD38F4DEDFABAAEE9210FE9839B367FF58D5D1A9A8
|
||||
:15159300EA57EFE3BE7BEFBBEFDEF7EEBB657887B6D5087BF17D
|
||||
:1515A800081FA63A83A941B22B5F3491CE945E0EDF6E779BEBA1
|
||||
:1515BD00BF3ED0EC2E5FA1FD996EDA75A02C9E5157FCDBF00DF9
|
||||
:1515D200AF6E8D4C2B5F4CE523EA336693FA8A5DBE77C6F2D17B
|
||||
:1515E700E31818D5AD80254CEF6AD47623AC7673ACFB9A2CD1D0
|
||||
:1515FC00A6A93F37BD12FC228E7293F5B5C9B184594CF2CC8307
|
||||
:151611007DE9E8A0E98BF59AFED8A869EDDBB8F9F8A4CDC7F152
|
||||
:15162600297C9CE1DFB1214D71F16F51CCDB98E151EC1B61AFE5
|
||||
:15163B008478348FE466095BA45B7DABB6FA16196876F3735093
|
||||
:15165000ED364231F94E6BBFC1E0F0E51DF97BAC8FC45BA1DF9D
|
||||
:15166500AF6E60F987CA929AA22E16B459053AC0F5491D31629D
|
||||
:15167A00EA5123A26EE04A68756B1FE9A75864EF1B7F41737C57
|
||||
:15168F00777BEDF1DB6FF95B14BBFD285AA9BF3945A7743575DF
|
||||
:1516A4008C67CB1C31B9ED0FE7E415FB9AE349AD9878DC5D3E9C
|
||||
:1516B900AAF61A1BA87D8DE0D0D483F47FD56853AB8CED6A8D70
|
||||
:1516CE001157EB8D2EB5C930D45544BB477493FD595B754AEC79
|
||||
:1516E3009FB6F553FEA43A6A1C51B9D1F7EC515EC28EE97336A4
|
||||
:1516F8003DCB17BC759527367D92772E58CC776DAAE5BB9F6D89
|
||||
:15170D00E05D6FADE04F2F38CEB166F2B91FC0892426ECBAFDF3
|
||||
:15172200CF9EE2FED387F59EB7F6F262B677A91B2E3205F38BA3
|
||||
:15173700D455CD99B46807AF92587EB13B4D74A083F39BA4BF13
|
||||
:15174C0071217D43BA16EB3032FB606FDDF89E191DFCFD821912
|
||||
:15176100EA235E1B79279D5F953C6C88B1053FE0CB37DAD7F014
|
||||
:151776008388129F788B3A85AE7290F2BC1FCCFA9DF8A6FB9DCA
|
||||
:15178B0010AF1E14B65E3B7C7A4CE13F4D63DF4B32A32F49FA86
|
||||
:1517A0006CD3104F596B5EA6DF3A5F31A744D87D9326DEAB6A39
|
||||
:1517B500027BA94167BC63FD5E8B55124FE0EC483B8FBBDA56CD
|
||||
:1517CA0066F0C3F1C5A85D3127C44DEC57F6A9528B323AC0AF33
|
||||
:1517DF00D96D627F734A9BF4DE37ADCDE9FB071B5CED3357FB1F
|
||||
:1517F400EA0CEDCBAEF6E7CFD07ED5C76C1FFE3589863077601A
|
||||
:15180900010C3BE65830CCA7B6A6B7AF8CBE28DA526303A46BCC
|
||||
:15181E000CB732A5D384EF8F4CB67188DA9D1F1B309E5EF06B13
|
||||
:15183300E1D331E9F6F371EDCFAC7D2AEB3F22E52774A9ECA464
|
||||
:15184800BE7EACB3D1B78E0B5D46B92FA995EC18E1511F8B60C6
|
||||
:15185D007C96EC18E4317A866F01F21B296F0B337E6D62EF18A4
|
||||
:15187200699E6969D4D712C77F24188AB5865929DFD939B88DCC
|
||||
:15188700190F70F08FFA790234A4B5FACEEDA1F64EF292D096AF
|
||||
:15189C00D6B93B8EF208B5118C5B3A33F2083F10E3707FF1B807
|
||||
:1518B10021F67738C13277473D27B9DDD6B177ADF0F3098696FE
|
||||
:1518C600B576DCFB29FD3CE1E9B598E74ECFA5FF20CE4084AD8B
|
||||
:1518DB00730562BF0D739DBD9F2CF6434331A9B94059AFA36E52
|
||||
:1518F00094654A3397A5C37AA7381BF0B258170EC2C732BA3C2A
|
||||
:15190500B35621C717E9589F484C785A426F35F0D08A7B74362A
|
||||
:15191A003E6286562CB6FD5AC4BA96B557611C3597624F3D3A72
|
||||
:15192F0018BF4DDDB4043693D88735068633FFCA603C4875F9B3
|
||||
:15194400F32BF52BE974E08DE57AD3E34F7A9A1C5A5DA0BEB02D
|
||||
:15195900F0761BEEB69BC2EDB954A1CBA79337C21E5E6686ED09
|
||||
:15196E00F593E9F04346032FE883D59719FA30FE0D731DFA6039
|
||||
:151983003C175F29FA10113028D1B80EF80D35A70577C08F3B83
|
||||
:15199800F15EC92CCC25E37BF8E0EFD285428F540EC7C7976FC2
|
||||
:1519AD00AA1FA5BEADA2BE39EF77FCCE75D410FE24048BAFE8E2
|
||||
:1519C200A8E085B93B4EF00999C598B16838A00CEA993335F4F6
|
||||
:1519D7005B8D25E8FD31FE3EDEC37710FB414A3B6C06E386DFF9
|
||||
:1519EC006E7FA97D597EF71525048FB3FA041F233316FB9D6202
|
||||
:151A0100BF69D883FD6A137BBB57D3E950D6FF89C6CBBFB17C5F
|
||||
:151A1600625F767D5894CF961DB6FF8DCCFFB4F5E2B6988F27FD
|
||||
:151A2B0053DF3715E2733535305C1CDA4EF56CE1C154A5312B41
|
||||
:151A400095D3B22AB5D80884DA88DE63A2CE10CDC92CFAFBFC5E
|
||||
:151A55003519FBF21A87AF8EFCFA2384C752BE16FABD021FF809
|
||||
:151A6A00A8F0B5EA8DD7697F1EA96DBE47F5349FF75EE1A1C844
|
||||
:151A7F002797826E1BD2E9C249C9B193BA8D3CD02D2AEF32DA11
|
||||
:151A9400E013B89683D6C85743F9CEDAF9C2A91554EF6A739572
|
||||
:151AA900C573C38286F6BD26760FEF16FB8295246F5682A68619
|
||||
:151ABE0045C3A9F70E09EB8657787A391C7107881F3FAD4DE607
|
||||
:151AD30058F517F101FD41755663B13AABF6A5CA924673E18293
|
||||
:151AE800C657F18EE018BC9E2E5CA84A8D024E85F4B072A3D58F
|
||||
:151AFD00C7FAF9E51FA7F333E7F1C60F5B7B8DE387CD4365D585
|
||||
:151B12001AF58C63BFABD7AE9FCA37A32E8DEA72F23AF9B6524A
|
||||
:151B27009E7D6B06B45D34C6D0875B49E64D6F6BFB8FAD3D8A0C
|
||||
:151B3C00522AFFAA64C185737B5D180BE37163BE7F500FFE6E98
|
||||
:151B5100BF8101BE3AF5A2619DD34A3333F282D647F5CEF3D710
|
||||
:151B6600E8A42B97C0D7BC865DE189C837DB70F62E89B1BB66B3
|
||||
:151B7B00B16E12AD72D990EE25FEC7DE506364A89129CF59B491
|
||||
:151B9000B1F5378C6159F0994A70455A05FCCA73E69B3F4AE70C
|
||||
:151BA5001FF558FD5C49B46E9A81A6B751DBD3FB34F8A3B4D82E
|
||||
:151BBA0013443D5BEDF2F36252A3779C6440740FF7F8137A2424
|
||||
:151BCF00B59F375D4AE73B6573699CE02CDDA88D779CE714B2F2
|
||||
:151BE40080F0E0E4E9A777E2D9788AC77F98B6CE3F529E37DF4D
|
||||
:151BF9009F8A7BF0E04CB012FE4B4A53ED46FD050BE783D3CA28
|
||||
:151C0E008D02FFE07371566D0F77708D3371AB530326C73E7BDE
|
||||
:151C2300785ABF5957A6DF472F5AFD06ED515F1BD55763D34CAD
|
||||
:151C3800F0E6A0C59BF04B97D6FCBE1EA5F7B73AFC67D3C2C2FA
|
||||
:151C4D0063B60EEDA2056B1BF1C4C8BF583C31CF5FAF8706A432
|
||||
:151C6200468737B662BC5BE73B6DDE209D3F32A42D64279AC1E8
|
||||
:151C770017C18661C10F667CA1E6EB7E519769AE5C68F381E5DB
|
||||
:151C8C00F73A95EEA493FA42CA61E2F9765E447C116CAFD595EC
|
||||
:151CA100376C7C3BE3C15506F6D44CF8BE1DE39DF203E737B4A5
|
||||
:151CB60043E3E928D5E9F8D3E4BA78631BF186FAA6C51B12E1DB
|
||||
:151CCB0057B67963EDDF5AF8157B568493CBBFCDD20FF5CD8A7C
|
||||
:151CE0006ED1B59F7CA99E649C599D5A6356A5569824E74C9214
|
||||
:151CF50083C60CFB4DE21C33F4143FD901C2276E063F6FD2937B
|
||||
:151D0A00785E51B7DE06BF4CD2DFA09749F9033AF6B5BAEC73CC
|
||||
:151D1F000BF02D7B50F8330D0B5B4AF877E34C34D94F87CA4E3B
|
||||
:151D34006ACC1812BEDE4AB2D384BDBB2A794AE877F1E410782A
|
||||
:151D4900728EA2769AABD453A641F712E388FEAA6ABD67954398
|
||||
:151D5E00FCF24DF43FD8438150B4750FE66FA58A17939CAF263F
|
||||
:151D73003BE676F8E23B7633D96915DA55BD27B2BF0DF8F35FD4
|
||||
:151D8800C8DACDADEA7DE6DB3F93EE94957BF52A7505AF225DD7
|
||||
:151D9D00FE92EA6D0ED2FD5BF04514E36C0F2F3D9FCE7FAD5214
|
||||
:151DB2006E249BDC207BD698C78EDD15211B50B6694D76AC01A8
|
||||
:151DC70059D9E44A433E25146EA53ACD2ED5DFECF8589692BDD0
|
||||
:151DDC009BC72C3D0DBF8F52DDBB95A7DAA08F55CF618580CB48
|
||||
:151DF1006D67BA6DCCE80FAD71D029F257F36BC5AC9029EF99AF
|
||||
:151E0600412A0399E186C9E2BF7A7E3BCD0B800F7004D5970D68
|
||||
:151E1B00F4218F781FEBE76C7C31749E6068C5A774F41D7A90B7
|
||||
:151E3000F774834E6085AAA82E21038C1E1E559FE1AFCE26DABE
|
||||
:151E45002BC46754DE6907766090F41F4A33DD6DDE934E8B36D0
|
||||
:151E5A00855EA51C364748472B8FD9B22C6AC939D4D9361BEBFD
|
||||
:151E6F00F6614A3B2CE0F2B2BD7A0FE08AEE3121A71CBA396BC1
|
||||
:151E84001ED13740BBF704ED707E5C55498F573A877DEA1DA687
|
||||
:151E99007705E940D1BDA26EE8F5D0E9FDEAB366CD75A929AB9C
|
||||
:151EAE00CF583470F0EDA6C360C0F2BFBCD97B1E60856E7A0042
|
||||
:151EC3009EB1BFA139D2A117E495526526D6701D7AD4E49355C5
|
||||
:151ED800774DE7D7A87D9E2F9E7AC72C095D6CCD49922D7DFE54
|
||||
:151EED000A8D8D2FF00AED4FF425B16FF37D9D27DAC43E90ED91
|
||||
:151F0200971EA6BBB087B08608C28CC1C77DD80C8BB3DCDF30DF
|
||||
:151F1700E684CE50BB3F249952DAEA8B3D493AED72CC2B66C792
|
||||
:151F2C00BD0F918E7BBFD171EFBD7A774A024E857E9B87392E76
|
||||
:151F41001CB5F5DB2ECB2F8FC66CCCF6B31F16F76ADB0638627B
|
||||
:151F56008CDC073B2B4265B6087D3A2D7C44525C444EC819E394
|
||||
:151F6B00E1582D9F9DCC69093CBB9E074EB7E852F2040F40BFA2
|
||||
:151F8000879E7C1F7CD25F163EB87DEC9B1ACABD4FCA53DF677C
|
||||
:151F9500BF69EDA7517DFBD97734B6ED1847F4903EF66D0DBA40
|
||||
:151FAA0018E4771F7B4D832F2DE089920E87FC80E55689059E76
|
||||
:151FBF00227915185BA9DF4DFDF12B8FE8B2FA9C81BE3A7E50F6
|
||||
:151FD4002C7A9FD931EB5EE1039C4F3031638DD9C70632FE501A
|
||||
:151FE90028CFA2CF99AF125FFACE8DE86CA4D384FD04FA0FDB39
|
||||
:151FFE007BCC68ABE8524AEFCD7941E8F56BB1AE3C72CC1C63DA
|
||||
:15201300225F1CFA3CFCE2B0B78867D80758AF213917C7BC7364
|
||||
:15202800ADE27073B9EA69F49D233DBCFE18A7726DED852B5BE4
|
||||
:15203D00A05F930D5A124DBD635468DFD3674BCF0B9DD8E33F85
|
||||
:15205200A1236F09FC1BEA87903F7270672FCD457DC236050FD3
|
||||
:15206700887764234E923CF49D3BA8CF3BF79CCE2607054C382D
|
||||
:15207C00EF437C2564FC1FC6D6365978F986E13BFD72960F9219
|
||||
:15209100DE0C1F84C007842787F6BEC82ABDABCD63D111F4336D
|
||||
:1520A600BA4D879E4FB31735879E2CFA0D73103ABACD2B53F1A0
|
||||
:1520BB0067E1EDABAFFF9186337253717644E0ACA44DF848DBB0
|
||||
:1520D000381B06CE026CFC581CBEDAD79EBC7789A80FB6CCA84C
|
||||
:1520E5008533165D346CFD77F65B733B1B9E3B7A42E047AC7FA6
|
||||
:1520FA0019C7CC02E8C5935FE16F104B127F9414A53CCDC0ED45
|
||||
:15210F00E39E2796FE69CA736728E66976F30978C373E91DDDF8
|
||||
:1521240027BDA077AB599C04A78C0DCBF6035D2D7EB6C60AF085
|
||||
:1521390094E1F5E9769FBDEF6EAAEBEFF49DBBAAC367D9EAA701
|
||||
:15214E00C1710644E83FE1301778D9F669AB7FCA401C6BEB2D2E
|
||||
:15216300EA034BB0FFE1659D7A70C75745FFD8E6E778EFD81756
|
||||
:15217800493E7CD174D93BFDC2D6C19E36E18245474CA78E203C
|
||||
:15218D00D951852E5C8C117F2797AF6FBA7EDDC2C76FCA9FA8EE
|
||||
:1521A200DD40FA96859FBFD7EBA4273F003FDF27FC3CFFEF82DF
|
||||
:1521B7009F97809F7577E98E6D9E6661CE267F6EE1836CE6DE14
|
||||
:1521CC0038EC050B1F0BD8223DF8FE62818F9C68A95E1E2F6F3A
|
||||
:1521E100BE45CC71FB782CF5AEB9ED97B0974B5BE9D9807CB1CE
|
||||
:1521F600EC1FC21BFBE32C0F2A583310FF84BB0117EE5E369D99
|
||||
:15220B00F6A6E3AE9770B78D70F77736EE2E12EED07EC8D5FE2D
|
||||
:15222000B55F586D4F6DF7056D5FFE505666DC5C56CC71C98A24
|
||||
:15223500A64C3EEBEC74667C2CC4BAEEBAE7333244D8E7E3545F
|
||||
:15224A002E3EA44D2EF70AD8204B204722A4E3418E604D0A67B3
|
||||
:15225F002050EEE9944B9EE4BCA461FF0FE736F05EBCB3E449EC
|
||||
:15227400896FDD4BFA016A5BC8946D4362CC627D0A7D2E76F53C
|
||||
:1522890059A63EBB65CD74FFA551F8E6285C2FBA64E801D20F34
|
||||
:15229E00FA9232F547354EDE27F4CA906B8F8C063EE99034B72D
|
||||
:1522B3000357276DFE4079DF42962F8FEFD495F33BB5A9FEFC1E
|
||||
:1522C80086B0357697F56B42B7945917703526D65C86E20BB10B
|
||||
:1522DD00A743632327752C2EA74EC47D7ED27308BF05F1A1C669
|
||||
:1522F200E2A841F301E73D29B94556137CAEF217382B182AC2CA
|
||||
:1523070019BA0C4C5161776CC799BBF2D5ADD0B1587958D821CF
|
||||
:15231C00D095271EB07C67AFE15EBE8CE6DDDF3F207CF7C2EA17
|
||||
:15233100F1D40333FB731B87B07ED12FD62F76931E5C34D629A3
|
||||
:15234600D609D8B89C301A8E58B04787E245F06FB4D33DB1A12D
|
||||
:15235B00B8D2302CFAD7C3F66A384FE85B47F3883104BD08739A
|
||||
:152370008C41735BA67FC591C146A7ACB58F9B79BE019E6B8741
|
||||
:15238500B2EB31BBCB86B5A2B80D8F711378285D215B1AB0B83F
|
||||
:15239A00DB94ACFD988ECC5A8DBD3F8FBD68567ED2DAF7B4FD65
|
||||
:1523AF00110977167EACB5F4A978543A0F4CF12FA27110BF1F74
|
||||
:1523C4007D305A31164897E928B77CA2E21D94DE1B4D6ABE22CE
|
||||
:1523D9004B2F4B114C5772E258F32AC4FBE87ACB96C1DAC1428D
|
||||
:1523EE00DB8F6AB5E09123F1FBE89D03BB809BF26BEBC51EA3A5
|
||||
:15240300D8075C6BE7D35DF956A45EE8A0FF38D28DF558CFF983
|
||||
:15241800761CF31EFA82FD4FC0D1BB73480B8ED9F050BAD3EE10
|
||||
:15242D0016BBBE9E19DAED77B5BBD5CEF78C2BDF4A6A17F99220
|
||||
:15244200AE7C6D76BE8119E05B99FA661C67108E0818BF1BC70A
|
||||
:152457001ED815824521F89E16BC734CF8CDF47E8F6065D6BA3B
|
||||
:15246C00E01517ACDBECBA5F9C01D661170CDBED7C2FCF00EB9F
|
||||
:152481004957BE1D76BE573E0056D0D881F5EA87C07AD5056B9E
|
||||
:15249600CAAEBBFDFE1B61EDBA3F0BC3653B5FF7FD37A1E7FD24
|
||||
:1524AB00597A5EBE093D2FBBDABDE2D0738676FB5DED5E75E845
|
||||
:1524C000799376B76CC0F81A050E8C0977BBE8AFBD7E8F74875A
|
||||
:1524D500E71FA7FCFBD95086E737782D9E7F5FB2783EB621DB46
|
||||
:1524EA0076D46BB5FDF0860F681BFBA576BB4E7B93AE7E6EB0F7
|
||||
:1524FF00EBF8E2CC751818B38E6FCEB5E9328FE4CBE5C1ACBCF8
|
||||
:1525140013E359ACCD22E69421FC099832624057F1F93BF5DD6E
|
||||
:152529006586A6D0FCA0AC3DA597F213FA3E9A12DC32E809EAA9
|
||||
:15253E00D74CB2C729179286B4FDA437825F2CFFC7BD644B24A5
|
||||
:152553003BE0EFBD52D4959D1BEAA82E0FCD0B19B94A7A896F04
|
||||
:15256800DD9090A9429E3AF3451CF27448C853650DC14F725439
|
||||
:15257D00723D4F9D8FB0DFDBAF4965869EC61A18F6DAADB37498
|
||||
:15259200F6DC346CB56FD8F234DA678A35D5F121C3EACBA0069B
|
||||
:1525A7007F17EC0B189897C85E99ABBCA2FB48E7C6DC34E37C24
|
||||
:1525BC0032945D0FC73A1CF6944270D7856FBEFD9BE6F339D379
|
||||
:1525D100D7C2AD75DCA3864CF348A0419C756301E917FA933497
|
||||
:1525E600B72D10BAC911331264D1D7688EF6150D0A9F0E2B1601
|
||||
:1525FB0058B5D807DA5DA66AAC7E2F6F13FB0B3D64EF579AE254
|
||||
:152610004CDCFFEDFFC3BD1C30B36DEFF238D159C0EE7ABF99F3
|
||||
:15262500F4B6E5F4FECBEC1F9722C609FAB0ABEC88735E5915B9
|
||||
:15263A007D237D48F44321BBE2E3FE0FF4F29215EFEAD9B4A1AD
|
||||
:15264F00E175B1F412A7AD0ACDB2D53F4A5BF1E48D7535C6BE43
|
||||
:152664002BEA8A7E40F918952B5D33B5DCEDB18796587433CC8C
|
||||
:15267900D5A09B5D2E4C79FDD3F2D6C52AECBC2A17FB43365DAB
|
||||
:15268E006591AFC75C3061C77B237CE26C5D5D2CAF51ECBDC060
|
||||
:1526A3007F53E44F7092F13109F989A7113746B6E2C319880F2E
|
||||
:1526B80027CE3F132F89B399E383A67B3FA9F5886B3F087BA603
|
||||
:1526CD00DB388F603F272A6C1B71BE5251E0FF613FAB3807990B
|
||||
:1526E200DD0FEA75955F18931B9D3D21D421AFE17A8F589B1E44
|
||||
:1526F7001C9E74EDA33AECEF63A3F96FC977E57CD9F39EF47519
|
||||
:15270C00E951E9335250BAC6FE8EFD35FB2E7B990DB1AF319314
|
||||
:1527210075B30EB683FD2929DA5F628FB147D9436C23D3D8036A
|
||||
:152736006C3DFB1CBB97FD015BCDEE66ABD84AB6822D67CDACF0
|
||||
:15274B008935B206B68C2D6577B07AB684D5B15A16669F66B73C
|
||||
:15276000B34FB11ABA7E8FDDC616D355CD3E49D7AD6C115D55E8
|
||||
:15277500747D82AE857455D2A5D25521AE72BA16886BBEB86E5A
|
||||
:15278A0011D73CFB2A1357A97DCDCD5C21FB2AC95C41D735C7EC
|
||||
:15279F0075154FB902D32EE5866BF60D57D18CD7AC9B5EFE0F7A
|
||||
:1527B400BC0A3FF42AF8C857FE875E3E26CE181FB7D6B754E111
|
||||
:1527C9008B4EBA3DE9F151A61E475A15A519F673353D8FDBCFB4
|
||||
:1527DE0035F4AC48F48C35BEF26ACA1FE1065BCDC7C95E5024A0
|
||||
:1527F3008D2BEAC2E34A8CFE93F49F5A785C8C2BB11E522DF667
|
||||
:15280800DB55D54ECBB7D3244A8BD96905769A87D292765AA167
|
||||
:15281D009D964369A88FDA14B02B2C1AB6EB825F60D8AE037E98
|
||||
:152832008061BB2CFCFEC254262AC16651F9F04B5828BD8D33C0
|
||||
:1528470075E1016F6899A8272AE2EED41AC549A9CE776631CD9E
|
||||
:15285C006B95077C671A843C887FC0BBE10F78073F38BC2BA2B2
|
||||
:1528710077946E225D7EBD41176D8F2F361DDC3938473FC66D43
|
||||
:15288600189561411343153E7661037E200CFD1465C2ADC02FED
|
||||
:15289B0070A878ACFCA96FDBEF99CA9BD485A661D7C35EB1D235
|
||||
:1528B000A3942F8A754A65A129FBC8A6BFC93D2A65F38CBB9EA0
|
||||
:1528C500154FF6D9B0D345FD63E9D988ED64F947AA7C42ACE7CD
|
||||
:1528DA00A8563C48B12EAA8A5891B9F6B3F043F310AF617D2323
|
||||
:1528EF00BC8C477FE16109CF32332FA4B6CA91067DA2B241C487
|
||||
:15290400A998F8AEF70EE004BFE12B3046E5FC6C19CEE49A35C6
|
||||
:15291900840B529EB84FAD33F3D86D04FB6DA63714691D9F2168
|
||||
:15292E004D91AC34A6BE67C2BEAACE99AE9FA98648037FD3FD64
|
||||
:152943004155AA9389664ABCBD4E86FF8C5209F9ED634A2D354B
|
||||
:15295800B9CCA81171196A4DA6002E55C012F594521B8B0DB4AE
|
||||
:15296D002F9F29D595F8E27ADC7DF1C575B847D1D7F1B090F94B
|
||||
:15298200C82BF818F29DF489B81813CB7844F8D946901E4BCFE8
|
||||
:152997005E4D79A2464CAC776BF659FC188F88B5932DD699FCEB
|
||||
:1529AC00709B75469E6DB7E3F076D9677810F764360195205DD9
|
||||
:1529C1002461182CA141FFC1EFF796CB77B0F10EC3AFCA752C4C
|
||||
:1529D600BAD39844BFC655C35A07B2CE2DD7A472EA449D549F2D
|
||||
:1529EB00386783E768AFD15516D72431FFF59A9973E3D1FFDE24
|
||||
:152A00008FFECD579F3664F575D21913464495EF78E9A197A820
|
||||
:152A1500FED7FA918EB41A4A3B302DAD94D2764D4BDBB69CE0E0
|
||||
:152A2A0052DEEEFFF243EFD49262C6FDEA25633B3BC3E7AF7812
|
||||
:152A3F00476FA9F869EDD7965DB17DA5E362BD6D41FC027C739B
|
||||
:152A5400845EB160C5395D4E0E1A9EF223ADAAFAAD7E664C9A2E
|
||||
:152A6900BEAE5EA193637EF68DF52D0D618EA47698F10DF3161F
|
||||
:152A7E00E91D1D7828603FAD1D7EE8974B0906A2E92582EB9C07
|
||||
:152A930021F17DFAD736BDCD6F89D05CACEC330967F1EBCB57B1
|
||||
:152AA800D5FABAA9BDE8CE617624176BE5C33E1F7483DD077C9B
|
||||
:152ABD00ABDFA1F4FD07ACDF2FD8BFBF7DE00CCDB7C9EBD3C29B
|
||||
:152AD20060477FD89FF09C3180B7ED6C8CC7BF935BF7C413B97E
|
||||
:152AE70075581F3830FE356DDEF9FD5ACEB937F4BBD985DA799A
|
||||
:152AFC0063A774C41685FE62AD2F8E8BBE96287FAE4F3E7CC918
|
||||
:152B11009C27BD46EF2F98BEF8B1A5D88342DD130F9F337CC974
|
||||
:152B2600DCBA912773EF10671887451C98E3090FD90CCA090325
|
||||
:152B3B007DF9EDA1CEFAD069AA5BF9078EFE28803BFABD611FD5
|
||||
:152B5000620529BB8F2B02FEEF1F7F9BC66081BAB70B6BB57987
|
||||
:152B65006A67BC27CE3589F49389CA1F1AD05192A4777CD58762
|
||||
:152B7A00F83ABC6BA2F2D726E5DDF34BB5E68E28E5DF115B5586
|
||||
:152B8F0007BB4A8C2DE59821279F2519E9AD8B8D1DAD63C60920
|
||||
:152BA4006302BC47EF317ED653BA9C3C46FCD3297C13ABEDD81E
|
||||
:152BB9006D62AC197BC53E47B5186706F725F7D2388B73996858
|
||||
:152BCE00AB305E8FBB8FF13ADC113FCA97ECA33AC68C36EC2BC0
|
||||
:152BE300261386E4231C85C74CFC061F627C9CF92EDE0D923EE6
|
||||
:152BF800493A7F3261DE16E7227D8CD2F11BFBC81395DCF0C751
|
||||
:152C0D00E4BA00E96B1827139583E63CB22746AF7BEF205C9AE6
|
||||
:152C220067DE4FFB1482A789DAB8807115EEE71324839BA85E80
|
||||
:152C3700963C68BE91F1E7EE32FC8481300177A193D733E374C9
|
||||
:152C4C00BFF0632179D61D39A7FDE51772EBFA59A7D61FEFD3ED
|
||||
:152C61007E5925DFD14FF6DADC44AFDEB3936B3D0D17C55EB4FD
|
||||
:152C7600927ABAFFB645E59F11BA5B383E8C9824810509C4C806
|
||||
:152C8B0032E627459FAC182F3EE8A37111C3A55AC6DEFBDB8611
|
||||
:152CA000B41AF18A5F357BC6B806FF415FF22095DB0D3C8B58F6
|
||||
:152CB50057A5A9A7CDF9A9AF9BD5849BF9D4D7642EF634778BAF
|
||||
:152CCA00F159ADEE16BEF1A20E85236E9FAF54FDAA217CF63673
|
||||
:152CDF00714EE50CC806393662D4A7BE437977D358E9A579EE05
|
||||
:152CF400A08E3A3D6787442CE5B6BF60AC0CF62FD980885722D7
|
||||
:152D0900AFDBA5539F0E78D6EDD3B7E4B1A9E3631CB16EBAF850
|
||||
:152D1E0057DE92BFFFB424E82262000553F033EA177E46C029AE
|
||||
:152D3300E2FE045942AC5F8A78669FB77CBF906E8EF56AA5A9CF
|
||||
:152D48005DFDE1D4F3496505D77DA403E7ACE5BAAC72D3EF4371
|
||||
:152D5D008CB783BC3AD2B714EBBE25EDC43FEA102F8DE3F709B1
|
||||
:152D72003364FF464C0D4BEE937D9AF2D7210DEBC2BE8CFF7CCB
|
||||
:152D8700BF8881E3016EC67B8D2A4107EB8CA2447637CEE55AC6
|
||||
:152D9C006713AD3DBD37A92E896000ED413FA9EB981E5AD069C0
|
||||
:152DB100EE8F58E7DA104346FA032EF47445D0D1107E6A8AE003
|
||||
:152DC600EBE78E5F1636449788B723A748868D4F0A3C07C84604
|
||||
:152DDB00F60B1F837E116FC72362565BBE6BCC78CA443C46C088
|
||||
:152DF00029A5BEC2AB539FA875CB76C874D04FC8F58C4C27F975
|
||||
:152E0500BE25B72598FA8D29E22C1E07FFED32F7FC2E5D520F81
|
||||
:152E1A003F3B9B06C07130B5CFF0F05E3DD068C5BCF3906C4040
|
||||
:152E2F00DC763FEB5DE2271E99C77A6B41BFAD2EDEDC6AD1C9B0
|
||||
:152E4400D88E7BF99556C15B4437FC96C5B982B888E3047A8367
|
||||
:152E5900BE22361FC632D1733A2D6551D6A2C387E1F623D3083F
|
||||
:152E6E003470E3DEA1C7C7A04181A041BF1DE7284B8B0FA58182
|
||||
:152E83006B6E75F03FF62DC4A72C0ABB69511CFB64ADB04BA3BE
|
||||
:152E9800EDC3D79EFCE452259647F368BB01DB13B28A7F25B730
|
||||
:152EAD00EEE2BF38F2C79217A544ABE205DC94A84FA01DFA68E6
|
||||
:152EC200C53AB2DA407BA83B130F23A31F59F42873D1628780A9
|
||||
:152ED700A7CB3AB740EF11574B49ED33253521F808BF35D77979
|
||||
:152EEC00E0A0AB7CF0F399F8E022AE783F1B12FB163ED0BC7DCA
|
||||
:152F010048F3AB5E218B15F007C99EB288257B32E38EFA2C6D48
|
||||
:152F1600C1FC4BF735E7040E689C06FB7F6BF53735EDB313D89E
|
||||
:152F2B00A3290D75B596D1DCAFB2E4F1301B3B1E61A9E3D72E7F
|
||||
:152F4000A4F3E93E4CBF87297D58B3CBDF2CFF9137A7E6AFB6EC
|
||||
:152F5500F3631E1FFD8DDBFF14F32C8BBACB8AB8C362CF8D1B4F
|
||||
:152F6A00D79F94EF6882BF8B3A1AFFEA99535A2E9917B2DADB5D
|
||||
:152F7F0085B84805EAAB5D38FF68F9838F8933508A3A42764A45
|
||||
:152F9400C2F0A716D5C97F93CE071ECE5E4AE74FAFD30D9B3808
|
||||
:152FA9003B48659BD4678CC99F71D2890C1173C9E2C33F330520
|
||||
:152FBE00EF5AB19D267A483FAC233DE8E3F0E6C4CF7A8D84A7CE
|
||||
:152FD300CB6047E496899F7133E1E9379BD41EF337D7313EE251
|
||||
:152FE800B62DD26E5E86EE13361CBDD48AEB6E1C34A0034B3494
|
||||
:152FFD006E003BFD3677FC17D2FBC25113FAAE83B39387B2F8C4
|
||||
:153012006EFD7516BFF3110B22544A7A79BB7196E0DECE629CE6
|
||||
:15302700A5C2FDD88FF2A7AA8DDCD3B5FAB7E28B6B3B972D9B72
|
||||
:15303C00A22BE631F8892E13FA539EF428C98F35869A8AF63372
|
||||
:15305100E557A6CF57A9C3D7D4D213172E2D205BC453AE8936F5
|
||||
:15306600105F167AB6B7BD562F8AD4D617509B472BEE5C3A3F3C
|
||||
:15307B00A5D25C576D94A6C286E46FD43B9FADE5DE31B2FBC612
|
||||
:153090009799CE1E37621B0A5D5D6927FDB1AA56C65E6AF49146
|
||||
:1530A50061663C7CC0D785F301FF49DC53CB3D7764D7834AED9C
|
||||
:1530BA00B882D5B69C0A939C5AA6414F9FA74A61118F54C869C1
|
||||
:1530CF00B241A83FB22B2695357F3E3F5C3676502FB3D7338382
|
||||
:1530E400340F63BE65E3AF9801E9B25E5759F419567EA695B16D
|
||||
:1530F9002B5C61FFB03428BDABEF53BD75D005C32413E74B43AF
|
||||
:15310E007A49E864AB2FF20F4BE6D3DD73AE4FF8AD601D6FEEF2
|
||||
:153123000AC4C23B69FBC7C4F9159AD78BE327F4C07CD24B94E8
|
||||
:153138008EE18FFA3F97746FDCFB97E7D517C7F2C82679C5604B
|
||||
:15314D00A9E78FBF41E3687EEA6903B24AC411A0FE07683EBE55
|
||||
:153162005AD6BB2442BA0CE69B07BC86D05F7EFC0CAF75749694
|
||||
:15317700ABBF4BDF546719FEDFE99BEA2CCB6EA6B344DFE129A5
|
||||
:15318C00E7FC27640CE1CA57F985A505620F0F783BB53478FAFC
|
||||
:1531A1001754FF29BE9E70B77F99E19CA917780AC54732780A6C
|
||||
:1531B600A516D5FAAE604FB963587EFD14E473685E6A562DFD13
|
||||
:1531CB00368A5325E25E905A20EE06C9F199FA4FF369BD67F568
|
||||
:1531E000BBFAE56B691FF080BED6D87D9F78DFEAFBFC19FA8E7C
|
||||
:1531F50032C3D73E7EFF1710DD4B2147A33DFD6DBF9966BF5070
|
||||
:15320A001FC55AAA8B9E6BDD79A27DC63DAC9F6F201D3DF78709
|
||||
:15321F00BD4B54F5345920295E2C91DEA55C3083365FCA381F10
|
||||
:15323400A4FCC4DCCE2EF280745587DCBB65C5BB7A78EC3BF5FD
|
||||
:15324900B73458F8BC85BD63F975517BB7C05E095F143805CF3D
|
||||
:15325E00C1BF133EA2E5296F9D9367EEE94B19BCCFA5B28ADA53
|
||||
:15327300DE1F2F4CB420EF56ECE54447FA117B31E7CC29BC3BCF
|
||||
:15328800E0397B4A37D26427D1FB6AF50B4B71073C93CBF3EE4B
|
||||
:15329D00D8F6D04F491FFC89E1535F3E50A3FEC85C3669F73195
|
||||
:1532B200BA6BD88FF8AAC9F5DC7A86ADB46BF8CA72ABFC49C28D
|
||||
:1532C7005BD0AEEBDAF2C796DECE5EA813B68E2B2FCAA20E77B1
|
||||
:1532DC00B9B394A7E3A90B5A58FD8F4B908EF99154E5CFE1F98C
|
||||
:1532F10019CC91D15D49E89F285B803D65C225BE1F33BFE7B062
|
||||
:15330600C0EB3C957402BBFEA229CF736B3DD6737F813ABB967E
|
||||
:15331B00EE86A7C8D2CB51BFE7EB7B74A1037C876405E9576696
|
||||
:15333000E4794D8924F4529A3B443C16C53A83F361FF34A7745C
|
||||
:15334500495DEB75F8193265A7987794129A3FEC7947CC41785F
|
||||
:15335A00F731E61F67EEB1E7A119E71FCC3D9883EAC599FBCC51
|
||||
:15336F005CC3D5316BAEB1DA5159A9FA2B730E74099A977C6AF3
|
||||
:15338400B7B9E5BDB4AF20C9BB0A08EEFA48A2CEB1FF4A691EE8
|
||||
:15339900439ED5EF39F4EE349AEA2CBB716254BC37F03E4CF834
|
||||
:1533AE00417996BC6C486557881F39D98D5D3C37998817533BB2
|
||||
:1533C3004A72A41F632E27758AA34EF01A78AE5AFDD901F0D4A9
|
||||
:1533D800C5F71DFDCC8699607DA3E7591AC3EDC6D65F58F3BB94
|
||||
:1533ED005897A5B6467F951D5F8190E5EFE1B3CF1924432C9F18
|
||||
:1534020074CFFC2B01EB77DCCBF23748AC707B0ECBC77986F8A2
|
||||
:15341700D8D46F3B4DFC2D4D4C1711129DBA46FF6DF46FD0FFC6
|
||||
:15342C0030FD8FD3FF04FD2B3FA2F73FB2F28ABD83A0EAC46896
|
||||
:15344100E467C7F0E1884A1DB1F06F555B97B0FA5F755EA47C51
|
||||
:1534560015FDCF100EAE926CBE6AB2FA761EFB4B7B9DAD7E8045
|
||||
:15346B0027E9B947F5B62834AEC7DE465F470DC4BC14E73EEA46
|
||||
:15348000BB39DAA977F43BCA1FA7FCB7B2BDCDE299DA539A5FFA
|
||||
:15349500340CF4433961C0BF36B4E298CE627B39DEA3EC7EF867
|
||||
:1534AA0063217634D5592CEA7C45B429621B7D601DC77851E412
|
||||
:1534BF005433F2A3CDB9A11BFDA9597082F7B2ECFEADF0DF0892
|
||||
:1534D40066CFECBF799A1AA43993D59FE216AEE1DB316CF5B34B
|
||||
:1534E9007E888B36C73B0DAC81948C1DD3156AB7247E54878F79
|
||||
:1534FE009EAC4E4DC31A888FD202E35D7ACF84A7C5FDCE47EF92
|
||||
:1535130042CA7FD3FD64878E601FD4D97725F8FCCC155F697AF0
|
||||
:153528000CA57FE37B9C131A0922364775EB55BA7B953A1D3188
|
||||
:15353D0072FDB14A3397CA5C0BB142F9BFB61B56BC617917D2C3
|
||||
:153552000629CD1F1BA03967917E71B9749757E9D0C7290DF1AC
|
||||
:153567004BBB903F5669E07C8D8A73A29426C706CC61A4D3B355
|
||||
:15357C00417C7B9164217CFC6BE63271C68307B23609CE1C5FF6
|
||||
:15359100F558F1B2B6219DE007C079471077F45DAE9C7F464330
|
||||
:1535A6003F4AE11BA48C709FFF98BE8E6CB339AADC92973A2800
|
||||
:1535BB00E2B610FCC5A114F2EFED90BA7B853F27CE18DE966C99
|
||||
:1535D0005AA2F82D5F0BC466982DEA1C3AE0A33C3E2B4FB034D1
|
||||
:1535E500292F918EDC589645F304DE0C9AF7AAE658DF8082FF11
|
||||
:1535FA00BDC3E7E373E0979EC8F887C9EAA4D95A427822B92460
|
||||
:15360F00137EA2F4CC66F0E72F25BC5BDF3CF96B737BEA6F0F36
|
||||
:15362400C897DAF5CBC553EBC7F744DAECFABDA1B156CA6B50E9
|
||||
:15363900DE7ED4B58764E75A196B3AED343E2254FF6AEE53F13D
|
||||
:15364E001C6D853FB7447A2EE9C2A65FD5CDB504838C33722494
|
||||
:15366300A7F17D95F96A3B87DCDC537646C37AECAAD43F13CFF4
|
||||
:15367800FEC05C4DF724F1C25ABAAF4E7DA61FB410FEE76AEDB5
|
||||
:15368D00011FD5514FF59706587E581DE0169C5FE8079C388F73
|
||||
:1536A200BD92F475D8309EF258EB9EB2360DF23E42EDC4A82EF4
|
||||
:1536B700CA773C4AF7CDF41FA1FA733167184D7C436AB919A3B7
|
||||
:1536CC0076A2A9FDFD38F3B09ADA89AA3D070E521E8DDA3AAA9F
|
||||
:1536E100D8676C4987403B84C0923D6549AD551D306304D7662A
|
||||
:1536F600AA7F82F07335C00A7D54E632DD714E9EF8CFBC46CFF7
|
||||
:15370B00ABA88E8900CE1924F8167A7E35007E575BDFA4FB6AE1
|
||||
:153720004A93296D989EFD418B46D371ECA697F7525CDF4C7926
|
||||
:153735008B55B939C745CFB03A48B8867F31F68427699C0F9A63
|
||||
:15374A008A4A73DA349A875F9B2AAFE12FA284734806776564EA
|
||||
:15375F00301C123057DF4DD38107E71CB78D7051CE386594ECF6
|
||||
:1537740018B4E4DCB663960C8AEE35E0D33217320A6B58888D3C
|
||||
:1537890019957765DADD3669CBEF1E9249581B3C684A65713D24
|
||||
:15379E00E37F4678A0692F9FE62E23389BE5E3AC06D9408DFDF8
|
||||
:1537B30012CB273E32A89F8D7E1AC705EA82CFACCA63F9F3E96C
|
||||
:1537C80019DF929195DDFA28F169BFC20ABFCCAA1A494008FC7C
|
||||
:1537DD003E42CF09C5C26B39AB6A8EDA721FB240C04675602E4B
|
||||
:1537F20088501E12E685CBE8AE282FEA997874341F5FA8686FF7
|
||||
:1538070084CFA788BD46F7ABCBBDCD0AE5DB5A7CE31872C60954
|
||||
:15381C00F6CC300E2798F50D3C278F9FF860A7FD9DBA72D5DBD0
|
||||
:153831005C4DF5E4975F213A1D9A820B85FA73167CA3DC26CE74
|
||||
:15384600D0EC8AE13B033DC613915ED1FFFC4FD3FC46F800FFDC
|
||||
:15385B002D25B4416F7FB508E30EFD7AD1C01CD1C83A455EA932
|
||||
:153870002CAC77E663AD63C0AC72FAA5741B32E916D5E0BD40AC
|
||||
:1538850017740503FE7E0AD581323EF5457AFF2B33BFC82AC7C6
|
||||
:15389A0094174DE0783BE5CF75CD5B6AD1D4F59B6B45AC3048CA
|
||||
:1538AF0079268AC0F35546428C936A314EE0DF0499FBE6F5749D
|
||||
:1538C4003EFC750AE289466FB45A57D54AE3CA72A97994CAD023
|
||||
:1538D900382EF4BAEA2FB6CFD665ED55D598781B01B576EAA8ED
|
||||
:1538EE005B39FF7B22D6307CB5B09624931C95A9BE2292F7E8B6
|
||||
:15390300C7C44303F50FD2337CAD64711EC8D603E0E3F536F634
|
||||
:15391800F82CF8E5D810C9A4170D712EDDD255D3C53407E3FBCC
|
||||
:15392D0055B2FA8C69CB9300BE0D09F926C33FC2FEFEC424D5C1
|
||||
:15394200F3E318F1606CC85E334EA7FF6A6CB0D14FBF713687E5
|
||||
:1539570045DBF9F642969F5B4934B4EBFE2DF5DDE90BD67050D7
|
||||
:15396C008785AB230257F0FB0DB1458D4E7F0AA80F93158B9A3D
|
||||
:1539810071CE7372162BACB8981D3F326414D96517C986FC2802
|
||||
:15399600FDC4FE9B809FF409C0E21D233B3B3A4A750D4057248D
|
||||
:1539AB003C7467FC45BC946FB480E5DFA30276AB6F778D250892
|
||||
:1539C000B735A60337F611FFC7B19F1CC5FA83A82F84B58C55BA
|
||||
:1539D50007A03FE3BD903D36BEEAA7ED4F59E36515B7F15B828E
|
||||
:1539EA00FD0F3FE5298EC9CD9B73B26347C9AFC1B7BB047ED1E3
|
||||
:1539FF00D6BCB141D2A306B1A79816E71AE9AF3CF242E3453F3E
|
||||
:153A140070F373DD194F23F6F95EE80781F1A7F4C0F9255AB02E
|
||||
:153A2900BD419F97929A049F19DD7C07CDEFBE50360E0960AEE7
|
||||
:153A3E00639F6A862E3096EFD0CDEAFB6FD177AA0BF97136C947
|
||||
:153A53001FB3E28A20CDDBB448C46C9745DC120BA6BF2298E058
|
||||
:153A6800DF081AECC7593A9A0333F44D791BA103CAA9534601AC
|
||||
:153A7D007BA57132ED6D9E97F23607A7F58164880F78925343FB
|
||||
:153A920037A72BE1183038FCE84F9D30FA52DE9650D3908009B9
|
||||
:153AA7007066F4D570B5A08B22F42AC0FD29EC41091CCD8B0F3C
|
||||
:153ABC00D43B78D94C32D76BD3CD473A5451A5D468F5CDC2C5E5
|
||||
:153AD10075C1E30306C64D89DDCE3F52F98FD3DF85D4DFAA4288
|
||||
:153AE600F437ABCF839FB723662FF1815F75F529F6B2D117930E
|
||||
:153AFB00B27D52AD3E59F850459F9CF3D2363D44BF0CD798284B
|
||||
:153B100076E10E7A01F0E6F4674EE84A2BC9419A7F7F6EE6B539
|
||||
:153B2500D3F852F6F0373C969E087C6C60D9710F19B839730EAD
|
||||
:153B3A00D7D28BC4B96ABBDC412A071E49A28C4B9E857F379504
|
||||
:153B4F00FFFDEA51923983FC4F2343B5CA8E11D12F5FB2D374B5
|
||||
:153B6400FA0C79017E2F16B1E59F35DDB20973899C7CD6EC230E
|
||||
:153B79005D5321FB3E4032DF9F841CE3A6D5CFE12C9D934346AA
|
||||
:153B8E00A8E984C04788FA60AF6F171440BE8AF1C5752BEEFC13
|
||||
:153BA30015D1DEC2152FB8C697859FA2D38322FE2F70F7C8C3D1
|
||||
:153BB80096BF2BEAFF0EDB4B7C3068049A3A6DFE1FCCF0FF61C9
|
||||
:153BCD00E27FC0073B05EB7C820F62E003C3E683D10CDFCFCFB8
|
||||
:153BE2009FCAF747057F0E66E9AF8E18A82BCBD3832EFA774D11
|
||||
:153BF700A33FE0D96BF537293763ECB8C70C7ECB49C4324A1863
|
||||
:153C0C004F936CB360B6FAB98BF8DAE1E110C1574C7CEBC07AA5
|
||||
:153C21008D602D2758DB7C37F2ECABBF01BFBAE08D11BC311723
|
||||
:153C3600BCAA1B5E4B36BAF502A5A953C0EBC8216B6EE8123030
|
||||
:153C4B00CB31CB87CF8824DA8A5C7362EADA541EC4B91256DF0C
|
||||
:153C60006BE0FB53B01DB5FF952ECCF01FD92E6F2256C061F98F
|
||||
:153C75004E2566D92FC591A33AA972C52595724BE07CBFE6913D
|
||||
:153C8A0058600EDE8D8F18CAF9A426930D739CE055C8E6958910
|
||||
:153C9F00C7B0AEE5F321561CE721A2A74AB64FFCA9DE960EA415
|
||||
:153CB40077FD33E6910EDFD953629FF44AC5DE3BD8F8A8618648
|
||||
:153CC900A516D4539ED88B98C1C1B988EF41E9896EEC77ED3513
|
||||
:153CDE0065AA0F7B61E237B52B8BB5FABDA62887B68CBD387FDC
|
||||
:153CF3003CA73C2937B65B653AE26413E16C936F2DD785BF237A
|
||||
:153D08007C526C9B08B0A2FE9DABB996B36E528FD370E9FD2C8B
|
||||
:153D1D00D7D06799CA94278E6D02FC98CF010B60036F2E2318BE
|
||||
:153D32004ACE9FD4E662CE7FFD59BD98719A2F92DAB7302FD91C
|
||||
:153D470075E2FB086DD4579473FABE8BEAEFDA7742F851827F75
|
||||
:153D5C0044DEE84887AFFB9FF51460A33EA12F6CF220CE5EA6C6
|
||||
:153D71008107D29D39F0B9142C4BEF1D5C5CCCE0C16A2B830789
|
||||
:153D8600ACDF8D5B78087D576EEC5A873DC921DE4EE9BD185FB6
|
||||
:153D9B008413A4C13644AC330BDE538483631AEACF59F76B7D0D
|
||||
:153DB00087C0C3312D40FD030E149C3BC6DA3BF4326A0B310BAB
|
||||
:153DC500C3D47E39C941271EA1751E24CED93B8CED29EBD2DED5
|
||||
:153DDA0023DD754198FD61952ADFE5C45B1FFEBC88472874DE64
|
||||
:153DEF00D5C2AE5A7420286268EE16DF804059E2EB7CFA3D8C92
|
||||
:153E04007DC0F17F72C5B3251B113184845E087F7AF8A685976F
|
||||
:153E190071863C4ADD01D249C6E2D5DE16C957A3CB91C5FA20AF
|
||||
:153E2E00C18AF80B48AFD0FA750573907A6FA34FFDA346457D70
|
||||
:153E4300A0598EAA3ADEA54847C77DB3388FF4E722966149836F
|
||||
:153E58006A5AF51E860E34B68CDE5568861E8E0F36D6501DD54A
|
||||
:153E6D00544795FA40A35347A9783FB58DCBCB1F10F5FA45BD41
|
||||
:153E8200BFEA70F25ABF0F1B89E57D778A33DA0D13565B510BB7
|
||||
:153E97007EE0EAACF0EFAF36A3948E39F62A6385D2EAC5BA120B
|
||||
:153EAC00818E68F793F20D8A7C61BE01E58DC526F28ECD90178A
|
||||
:153EC1006D6F07ED92569E8337C9B30163D3CEB3FD2679C294B6
|
||||
:153ED600C76FE7D9302D4FAE522FBE37847CE095ADCB7F762708
|
||||
:153EEB006425FA21533F719F43F2DCA79AE64CEB596166FBCB27
|
||||
:153F0000638C2A8363D86F147A0B3DE34CAD88371B8D0BDE2D37
|
||||
:153F1500B1CECE67D68424C9E2B74CBD549FEAAC1F093F34B224
|
||||
:153F2A004F7F90C3B07E029FEF94A06FB6BC150BEB8881746A9C
|
||||
:153F3F00D3AA9FDE958C3FA707CF3FA7C1462DA1B1126C1A1181
|
||||
:153F54006397F836A0B013F598673FF7560E53E3234B133497BD
|
||||
:153F6900FBC9362A461F146E5A3E6FC233A400318BFDF1634B40
|
||||
:153F7E00A04B237F10F53B700839DE65C11749D48BEFFDD9F533
|
||||
:153F9300CE8F0F2EAD99566FC60EA6B941949F617DE61FEDF10C
|
||||
:153FA800877EC15626788B2F63DC2855D9F2EE785B347E71160F
|
||||
:153FBD00EB9F662877745A391A9F379C27B4CA1FE23F9FA1FCAC
|
||||
:153FD200D68F50FEDD19CAD57F28BC87F89519CABDCF3EBCBDF5
|
||||
:153FE700D434FD0AFC1274F31FD6D5FFC9F54DBA19DEC7AF7EC8
|
||||
:153FFC00F0FB890F7BFFEF5DFFB4F77EF778F8A0F5D6FFFFFE71
|
||||
:154011005FF55E71E1BF789A7CFA7F077E9B3FA69D399A78FFE4
|
||||
:15402600C6F1F061F5B9F94D2A3BA2F779129B3F2ABF61BCCE52
|
||||
:15403B009155FE79711EAABAB553896D5E49C3DA1FF8828EF8BF
|
||||
:1540500077F80EB8FFEE6E1D631E3A823FB0459FB5AA5B57D5B8
|
||||
:154065002FF15977B7EBC1755CF34B957AB0A8524F90CE66CB4D
|
||||
:15407A00874DD7482F5102D53AEAFBD7D675680DD786E173B5CB
|
||||
:15408F00AE4A877F33BC776435A7E57192F925FE4ABD605D8D23
|
||||
:1540A400FEF5358BB58A758BB5907FB3DE99F37B1AF6A316C828
|
||||
:1540B90031C4C70922AF2C7D4217EB40ABDA850C822CAA284A4F
|
||||
:1540CE0068F08372DE178BF78B756F202EF4DA8A07E3BAF0CFA1
|
||||
:1540E3002438CFCED0FE4ABBFD426AFF10B55FE26A1BED9653F3
|
||||
:1540F800FBC827EAA5FADD6D5FB3EB9D70D59B4EFF34ED474C7B
|
||||
:15410D00C55AD6B29E4C18D41DCF8971E022CDACBA6EA7297B4C
|
||||
:154122002EE1C54F6DE6AF5D4CF8A9D416F86BF4F99F965BBC93
|
||||
:15413700AC7D63C51FCB2D87662704FEB12E457378106BA2B712
|
||||
:15414C0009DD240BBB881D01FD90C59F147D2398CEDA308DA2A4
|
||||
:15416100EFFE0D7AC5BEF5BA54E4C096BEEEC0D648B095FA2B21
|
||||
:15417600457A9C14638756F94535BA5FC0D4AD2D284AE83D3BB9
|
||||
:15418B00F764F80078FE6D3A6DC3C0443F71F6CEDA779D78128F
|
||||
:1541A000ED8EDB7048655DF8269C6F36B76008ECABD203D41E5E
|
||||
:1541B500FAD662FBB8C3394CE0252F8B970AE29BC2B54D7AC9E4
|
||||
:1541CA00BA7A01CFEE9C6EAD80F052E84FE8B92CB1718FCD975C
|
||||
:1541DF000B45DFB3ED5EA1B60C7A17207C11DD8B1D1840FB8A9B
|
||||
:1541F400D51B34D8DC15EB3668D3E94F83275020CE13B2828A7C
|
||||
:154209003307C57BE95C8D5EF2604C97D997F45994E780C44203
|
||||
:15421E005EFB791F3D17AE23F8884F0A8BEA75FEBD06EDD0EB49
|
||||
:154233000D5AE1B9B57A09A7B47DAB74FED97B88DFEFD140FB92
|
||||
:1542480012C265C55A0B07724C6A51D9165E4F38F34A0FEBFE75
|
||||
:15425D00580E62F807F3B15753BEBA7596F4A8EE9757EAFE153F
|
||||
:15427200D4D6DD8FEBFE55F7E87B73566A5823975764F3E7852A
|
||||
:15428700AC3324227FA2D6CAFFDA1775FFAB0DFADE9DB59A97C5
|
||||
:15429C00E6ECC0F7366B159FCE69C177627CF1DA8DF9630D1B06
|
||||
:1542B1009FC6B78679AD5E71EE615D3ADBA073CA2BF9B2F8DF16
|
||||
:1542C60086311D12674E362176B4AF9DCA9D6ED828ECDA65ACCF
|
||||
:1542DB00253710DE981758B6B1A26BBDB69B6401E982C5BBE8C3
|
||||
:1542F000FE879031FFF331DDBFAB41870DA1AA8F72B16F98F838
|
||||
:15430500A22EADFD922EDEBDD640EF6BF5BD842FD01C7C0DFB89
|
||||
:15431A00ABE09B524BC539C21F6FD74BCE7D512F3CDB2DE8DE86
|
||||
:15432F0043749F45F42E88F08D6E39045A835EC25FD7A623F818
|
||||
:15434400F06E82A505F0138E11377A1D3D2772B66AB3A81DC03C
|
||||
:15435900DFB9D37ABEFB7ABA0472C8F98DBC34AF6C3A4869289B
|
||||
:15436E000B7E36C98C04FE20E7C8BE9CE3F0D276CA237CAB09C3
|
||||
:1543830086ADF41CF8DE7CADE26C29E1B3549F896F7EC9B27C78
|
||||
:15439800F377CCE21BE0BD80F826E4DF2A70F1759B77C03725B1
|
||||
:1543AD009CD2A6F14E77FCBEC70A425B8826B1D66EF6E863B372
|
||||
:1543C20042D156C9FFB8EEFC2E8C3CFA186833AB7DFD46F67A95
|
||||
:1543D700CB46E75EF1AE477C1FA220BE7E63E158CB46299FE89F
|
||||
:1543EC00FC894AEE25DC5F277A0367B70BFC7B5A0A7907E1FE98
|
||||
:1544010071C2FD1E21B7DDF8CFB1F19FB0BE4B11947C9FA0B6CC
|
||||
:15441600A39BCE085A8057A29B46A7D102DF6D7BD0A605C9D76D
|
||||
:15442B00E2F52E5ADCEAA2C57BC287303B8677D2F8ED75D106C1
|
||||
:15444000EB55A03BD277D8F4394FB471E8B1659AFFE787D1E3D1
|
||||
:15445500828B1E7F65D30363B8C4A6C50D7420DAB86991177966
|
||||
:15446A00E4B1DCC8FAC7D876D6E21F7B64E32C65CBC63CF69F69
|
||||
:15447F001F2B88FFC946FFD8A3E277C51F8B315AEC67F43BF207
|
||||
:15449400258177794725F7908CBD9E17E5050EDE696C16FA775A
|
||||
:1544A900929CBB5F2F5CFBD414BC17CC84F7AE85A0B90BEF3177
|
||||
:1544BE008177A7BF6EFC936C2FBEDBC63FD67C30361CFC17BBB3
|
||||
:1544D300F0EF116B37167E7B6DFC164136D13BEC33BBF9DE2957
|
||||
:1544E800FF4B21FF2D9AA19C887B69D3C1C279FD14589E408C43
|
||||
:1544FD00AAA4D48273D5099237B954C72304C3A17B37EB15EBF0
|
||||
:154512009A34256789969773A7061EF693BC61AF376C3CF4031B
|
||||
:154527007A776EAD569CF3592D3FE70FAC77D2CA8D6CCD3D1BF6
|
||||
:15453C0077C73C2D806B2170522ED6B603B9AA47CC8548473C72
|
||||
:1545510037C7A641FBD89BCA71E6687B9E403EF80E03AEB7C9AB
|
||||
:15456600ECA43C99F1FE1A8D77CC5117D26905EB41D003684EA5
|
||||
:15457B000BBE6AE7FF163D57BC2BE35E7CD2EA77C1FF01EF9849
|
||||
:06459000C0E6B892000035
|
||||
:00000001FF
|
||||
906
drivers/atm/pca200e_ecd.data
Normal file
906
drivers/atm/pca200e_ecd.data
Normal file
@@ -0,0 +1,906 @@
|
||||
:150000001F8B0808AC5A10380203706361323030655F65636428
|
||||
:150015002E62696E327D00DC3A0D7054459AFD261333136278A4
|
||||
:15002A00192663E02479728060A10E9063213F64F0700F3DE05E
|
||||
:15003F009E6CDC7B2F3514B35EF0A28B9A5A731E554B91474C5C
|
||||
:1500540034E11AB6692618B7609D8404A2121CA8648D7551435D
|
||||
:150069009DA578A56C8AF276A9AB829DF3AC92DD52CC5EB177A0
|
||||
:15007E00D4CA32F77DDD6F665E263FA25B775B7753D5E9F7BEA8
|
||||
:15009300FEFAFBEBEFFBFAEB7E79F4A91F6C270A21A1870849C1
|
||||
:1500A8007C974CFA8536C11F37B9A99FFEAD9C49302569258321
|
||||
:1500BD00D8EF4EEE6E14EF59E3B3EDFED3E3C735EC67E50822CC
|
||||
:1500D200A9FE0FFD29BF7CEA97A26F4EC993D537AF13234A5E2D
|
||||
:1500E7005EDE94F3BF245F4AFCF1F129E7CF9E866E0ADE2C3919
|
||||
:1500FC002BF0237F849F3240F688FEB5EC75792D39E3BCB43E9B
|
||||
:15011100C9A9F54BDE24FFBC9C3C6987DDCD33F3938CB0674E4E
|
||||
:1501260078D6F8D7D63FD9DC8CEEABDC4824B2F9DC949E391965
|
||||
:15013B00FED7BF11FF975E7267F17D1CFB4BE77E3625BFBC0C26
|
||||
:150150003F0FF9BFFF5372CB72671A1F3D3EF99DF51312ECCF0D
|
||||
:15016500C070095C0E5FF8FFFE4B3A7E246851FDD31C5230FA46
|
||||
:15017A00FC0A35E009832F79ADB5E45140A3A4743C8CE3E39F62
|
||||
:15018F00C35BB09DEAFF05BD7A95BB3DADE6B56DADE538465425
|
||||
:1501A40052C90E11EF08B4773A8857FB013CB7112F090619CEAC
|
||||
:1501B9005B125380AEB695F80197D874FE9A9022A5D554ADE572
|
||||
:1501CE002661CA73EE80B5F5F26AE22D7F9A78FC814838484AB5
|
||||
:1501E300E8B36DBD4D843D4C4930CE42B06FCC091861CFB9BDAD
|
||||
:1501F8002621C3B438D010BE6DD7091AF29090DFEA334930C6AA
|
||||
:15020D001187E86D9CB09E2EDF18033C8DD220A9BB6D57390DB4
|
||||
:1502220011D2D8B26F23C02CEA0FAC0EB76CBADB3C4F48F1BBF2
|
||||
:150237001157A5EBD25FC0FCCB804A3412ECA211D133EA167DD2
|
||||
:15024C003B8518510311A53A5FDD62226D9C4BD46AEA567ACCA9
|
||||
:15026100362DB78EE8A7683E21017F201E4E927EEAB6169944DB
|
||||
:15027600AFE1ADE3AEBAC0C53534B0EE4194CF8AC2FE47C6065E
|
||||
:15028B007960DD5253D1FA6834346000BC45C0D909BE0A681025
|
||||
:1502A000BDD7BA4BDBBA12ED8A7C09EB8EA79BDA6BF9816681AC
|
||||
:1502B500F70EF3723259F4518D59F578B3AB0A66E7A3597F0E69
|
||||
:1502CA00BA90E04E5BEEC669E5765D2A33DD6762936427C1D5C0
|
||||
:1502DF005CDA40CA8A7AA03EA807AC0147BBA02E52A72974180E
|
||||
:1502F4007B956F461DD851EB3EA14348C8A0EA9689F2332DA72B
|
||||
:150309000E7B941FFB00D8FFD6801526637B69AB8FCC22A5F03C
|
||||
:15031E00ACF65863355BCB4740B7F5A05B6A3CEC239954156CC1
|
||||
:15033300E7B09E9AA7F084F085DB760DD171378910B6285EA406
|
||||
:15034800F64A5F403DE05D8BB4C2F800BD8EE3418BAF06B8AA3D
|
||||
:15035D00EE81F5E96393DE6D3B92E0385D564748698085091946
|
||||
:15037200A79EC256E0D34F49792B1D759310AC032BD6FBCDCEAF
|
||||
:1503870038D845EFE5456A87F95932097ABB5B050D98BFE30F8A
|
||||
:15039C009CDF2BE6B767E667E6C6EDC6D24DB7E7A56AA4888777
|
||||
:1503B1003626DE3B6D253EE5C5810BE19CD8095A7CFEB241D8BF
|
||||
:1503C600765A663C6DAE8CBC4EF7B70D35420264F51833C16105
|
||||
:1503DB00A6438F32018C232C303A64E29A23DCADBDCAE604CE52
|
||||
:1503F000C2DAFC0BE48392B027D20C3E546386122FF0964DDB3D
|
||||
:15040500C0A7BEC35A366D323B120AE8B357F8531ECA1ED46DF0
|
||||
:15041A007F6AE732A6800FFA49302E6321B8C48EB97E560BEFE0
|
||||
:15042F00458110CC6910FE9B84D825C10415992A67940623CBF7
|
||||
:15044400E9EC584E5DD1912DB4E84C9DA9C486689188ABB8F0F0
|
||||
:15045900BD43E494A124DEA49DE43503E75D87B4D6F9E7F81CCD
|
||||
:15046E00E748EF05F296419A062866F84EF23AC04791363CBF24
|
||||
:150483000BCFC31CE5D213EF71C44759162BA4E81F2077148DF9
|
||||
:15049800DE677E1BF429501F117ABAB5A3E037FD527EFD21DE68
|
||||
:1504AD0072EB2653890C502FC844D803BC937403BD7E2113CE66
|
||||
:1504C20027FA51FE0EC4AAE7DCA04906DB38E62BF04FDB0E52E9
|
||||
:1504D700EFC24B09339A731CE3886F2C203A191CE0A344E0591A
|
||||
:1504EC00183F514DC49F88258C471F213EC2FAAC68A8CFB85650
|
||||
:15050100D6535DAAB92A3CE7C0EFCB0728CC6BDC33EBBE3AF4E9
|
||||
:15051600E76BC964B19EF8949519FF64CE568E091F74150C995D
|
||||
:15052B00885B1C83D82FEF43FCD0E167A306513B39C4E31CF4C7
|
||||
:150540000131A6FE965F4D26FD9E7387CD79E78E9AE46AAF90F1
|
||||
:1505550009FC2A0E7E2562E5D1C8C62AB40BFA87E7CCA98C1F9A
|
||||
:15056A00E07CDB0F02E0079ED07A136DD5DEE892EB27D74DDAA8
|
||||
:15057F009075F0D47A1E222F1BA9F524FAABBC1763C2F6998923
|
||||
:15059400F69376FBD1FB4F007E4396CDFA85CD8A1BD166C3B678
|
||||
:1505A900CDE268B322323660755A03C6B5E64D2B053DCC1D2390
|
||||
:1505BE00D266445F1497ADAD0B68E03E15BF6D6448D8278AEB56
|
||||
:1505D300C80678BEF73EB0C30FE947E092E01FC585095735DAFE
|
||||
:1505E800F671D7EE55CF245C958188AB5ADA037C046D01BEE121
|
||||
:1505FD00BAF4A9E9518E9B1D5AC626FE09B121732DAEABB48BBB
|
||||
:150612008C15B459DAD7B3F32CC428FA34D7B6547ACE7D067369
|
||||
:15062700345B4F0631B39A266B102748855D9AEE95FAA9DD5677
|
||||
:15063C00D4EA35EAB4875792D2583897B499FE5D3F12FA91FA31
|
||||
:15065100A3343AFA18E487C7B823BF7489DC027E87B620FA20D5
|
||||
:150666004FD1F043DE9AE5B0C528F877AC664BD58D1BD21EFFFA
|
||||
:15067B0059BA7B79AD423CD23EFF6EAE509A67B0CF7B609F6360
|
||||
:15069000FF23F63989F6D9BCD64CED8550E85072F557D21EB076
|
||||
:1506A5004745AD6EE339DB1EF3C922D37F7DA9B0478E5E629653
|
||||
:1506BA005AA5D57F827B8FBE9F46125FF04F66E1FE5412866761
|
||||
:1506CF0086F945D818ED469ECAF8A08A7BB46860BB6E87ED4EC3
|
||||
:1506E400F114BF6CDB45C1764D60BB8F6DDB5D00DB21FF8083E0
|
||||
:1506F9007F83CD7B22DFE3C67E6F5F26674C9F2BE638724555DF
|
||||
:15070E001A0F7DDA111F0B20A778361F4BE710B11F8EC13CAB3F
|
||||
:15072300CFB85A932B64C35C82792494788F611E51E60E9B4A3C
|
||||
:1507380007E413987728E1C8273927219F0C603EF1E1B81893A8
|
||||
:15074D00F9A4D8B3F9A4F963E02D724A539F88D97980873AFBA5
|
||||
:150762001C3A37E59359CE5C33A1781D3BC1DC9B7BCDA235ED12
|
||||
:15077700A29E2C523E379B4988CE17BAF7F3909FE8EF821F7925
|
||||
:15078C000AB11608D25AE1474B445DF7FC5CCD20E5FB68A3A870
|
||||
:1507A100170E70A2DF010DFCFD7FBBF54429CA4C9ABEA016F86E
|
||||
:1507B6008190DD315E0F7E5103E34F925FAF825A94A30ECFCD41
|
||||
:1507CB00EDC7BD45FA3FEA06F6167AA890B7BE6EEB8ED2E275F7
|
||||
:1507E0005F9819585F7C7324B932C5ABCC90B5C0CDF0B262939A
|
||||
:1507F500695544DE16B4F419E647605EC90313E7DD13D9B652B6
|
||||
:15080A00AE1BE31B70DDEC7941C02DC8C25D1129B371352AEAA4
|
||||
:15081F003D7B5DDD02EF009F3F4EEA549887F684FAAA68452469
|
||||
:15083400AF42D45290DF570BFC56BA0BF015C4D73BF911F04B90
|
||||
:1508490037E243DE03FC62DCA7D1977CA206EDE5CEFA7063BDC6
|
||||
:15085E00A3BEDB4CC197290D617DA68BDC791A7B55055EA967AE
|
||||
:150873000D7A477DD7EA98BF20E2AE48D57848C3FD00350F601C
|
||||
:150888007C421EC69849CFB37FEA060FC6604F20B001CE496318
|
||||
:15089D00F45BB141FAE3B6A126DC2B99A8E7346641AFCCBD0C5D
|
||||
:1508B200FC9F80B3D24E383761AD1C83FDE1320F41BEF0EFBA70
|
||||
:1508C7005F9C89FC501BE39EAAC2D98AE8F5D48775DE582DD4FD
|
||||
:1508DC0079C130D653FB649EE04837404E899AD0B2CF592B7220
|
||||
:1508F10048F13F47DC707EFA7B13EB3699AF0DFBFCA4DB755C24
|
||||
:150906003B75477AA046AD605EF541B3E5D6BBCD36A0A978FFF8
|
||||
:15091B00C6DC8B750C9CBB3007DDB2E7553337827B40B7D80387
|
||||
:150930008A033190A792DF42FECCF4C379E3167106B1EBAEB1A5
|
||||
:150945001EEEC7F307D45D9DA1DE74BD05671CBE429CA18E43BC
|
||||
:15095A00BE5B682CD0CC95E2ACA1F6C4DD381FFA828EE5E21D9F
|
||||
:15096F00CF4F17DE36CBDB9B95EA476A72D279D11F53A6CF9FA5
|
||||
:150984002F7597077ACCF25BD6C49886A7633517D785EC80E7CC
|
||||
:15099900C4DF12320AAD0BDA4E683AB425D008B40B301E87C6CB
|
||||
:1509AE00A0E9625E4FDC6EB04FF43059BBFD16CF2CA13DDE56FB
|
||||
:1509C30043BEDBB50EF83FC2317F3629F20C3409C7410F71268F
|
||||
:1509D8008F2F88CBF60A4BF1D9381D5E9ADF82B8362D3FA475C3
|
||||
:1509ED00BA4BD293F8E3643ABE8067E39C2533D1CBD03A3C13A1
|
||||
:150A02009E8DD33425BF89326D9C964E46A68553D2C9D040BBF7
|
||||
:150A17007F55C31A995C3D2CF1C7A25CE40D8CB1E29881790360
|
||||
:150A2C00623586F12B629A58F412FA289C3F647C34424C9608E5
|
||||
:150A41007F9B2E4E5E8138715DFA8579CB9E939363247D66979D
|
||||
:150A5600B181F1823501C620C60CC64E3A56ACA39958518FC96B
|
||||
:150A6B00B3FA18D457D69F1A6B2156F09CCE223913E224153FF3
|
||||
:150A80001F431E9A8D7990EDA5175CF2ACFE817D7D38027114D6
|
||||
:150A950081380A7D8D38DA6CC751C3639938FA009E23DF07232E
|
||||
:150AAA004223D0128F43850E8D416B8016825602ED1AE0753D49
|
||||
:150ABF0036318EC41D03C412CAEFD9DF938E27E09B965B03B992
|
||||
:150AD400F7BCFF8A21C70726C557AA05537E9F8DEBE047317E33
|
||||
:150AE900DEEF81F157441D23C75BE2B2C13A3649FEF5022F9BEF
|
||||
:150AFE004E8B23CE5AE21F91E9F8B54C8AB35E320D3D874FEF6F
|
||||
:150B13009A915E86969EC69B420F382B230E9D92DF4499668A69
|
||||
:150B28008D7A32959D60BE4D7FE194E3683F394E74A0F3154D74
|
||||
:150B3D00CE4DE17F988EBFD4BA8B38D4FBB846C8AC542C4EA83B
|
||||
:150B520027713FDF91D98F156FABA86DB78CB65588BD1DFC5798
|
||||
:150B67007D286614EF1AA4BA479E078B77F5D28847D6AE88CF94
|
||||
:150B7C00B0C665526784B9B260E38E7DBC445B88674CB6E10A5C
|
||||
:150B910021EE75DDA61F635A2DC718F12B780796AE33FA999E1D
|
||||
:150BA60043484524B702756A8067E58101519721BC73FE108595
|
||||
:150BBB009862B92AE8AF77F3DBB513DC1D6B73DC635914F1AC84
|
||||
:150BD00087F12E56D25A75B3B4622F6768017E1CF67CBF1E338F
|
||||
:150BE50015C85F985FE2F23B9EE0F375F4B11CFA743964B06EE9
|
||||
:150BFA00521FC48BD74A7D2C873E5F492B4B9FC12C7D06BFA10A
|
||||
:150C0F003E71873E671D32C46F521FC44B7C47EA1377E8F3954C
|
||||
:150C2400B4B2F419CED267F81BEAA35EC9E8B3E44A460684DF02
|
||||
:150C39008C3E88A7DAFAE0F3AA9BA595A5CF48963E230E7D4207
|
||||
:150C4E00F6FDA61A180DA77CBCCCA066BB897CA58FE0FB4EFBF0
|
||||
:150C63003D6EBF37D8EFC81FDF0DF11EA3C29781C7CE1CD1D360
|
||||
:150C780041FBBDDF7E1FB6DF2FD8EF23F6FB6AA0B3533BC6C47E
|
||||
:150C8D007E0B63EDDA49BC1BE40C9EBBB49FE2F99F8FC273BFE6
|
||||
:150CA200F6160B698BA97DE6E61ACC2B857D695E24B73A10CB76
|
||||
:150CB700ADF62572AB3DB00E78DE451DCBB597059D7A98BB5EAC
|
||||
:150CCC003B25E844E1B9567B83E1FC77A41C0C79D66B7B98A408
|
||||
:150CE1006BF18540B710724F0D394B4F6F3BB916715096422D36
|
||||
:150CF600B702613FD9F653011B75C0F66E7B4BC050A614EC99A4
|
||||
:150D0B006DCFAD4DD15FACC9F5433AF3C4733FABB7F9A34C0FC4
|
||||
:150D2000960DAC49D14CE122AD146E4A5694ADD4C645BAF768FE
|
||||
:150D3500B9D5381EB56DAA3D216D1ABA22EF6F904789BD3FE19D
|
||||
:150D4A00B8BEC3392EF9DD65D358286174F44989B3DEA681BC57
|
||||
:150D5F00FD4803C6C69FC88C55D9760CC3F846B01FDA8EC2739B
|
||||
:150D7400583BC0F0DC392264BA2CE4DCA1BDC88E08FB76F1DBED
|
||||
:150D8900AF0807F47DF7466E65D9853BCDCDA56F2C7F612C6631
|
||||
:150D9E007C7B2DCAD12E6C940F67B9556BDD952B4AF72C6730C3
|
||||
:150DB3007697188B0B79F363B915F3DE7257064A0F2CE7305641
|
||||
:150DC800B856CA8FF6CA8738B9F17B77E5EFE6BFB8FC208CFDBE
|
||||
:150DDD0047756E753E9C577F7DF1F32AA4F9F17C5A85F3FFF557
|
||||
:150DF200C86015E29EBF78026AAD06C113E48F5BA22F113283A0
|
||||
:150E07009E715DF43B056D120CC555D1370A39E07C18C798B8BB
|
||||
:150E1C00EDCC6553F93002F1F71A2D10DF7F625CCEBBCC6B45C5
|
||||
:150E31002F6D4482116E403F67DD5153D9F47DA8B3F6D15B712C
|
||||
:150E4600AF04BB49BE31DE2AFA06DE2EFA2E61CFBC3D80BFEF5E
|
||||
:150E5B0069C0BF9B16068280AF895C26F2ADE81BF9B0E8570B92
|
||||
:150E70009BCF3A03F81FFE10F037D1D9011DF0435CCA1DE37EDB
|
||||
:150E8500E89F15EBB093975CC9EC6DA454033C43ACCD23B0367D
|
||||
:150E9A008DDA7EA606C6007681AE96B6E141D15FE0E5D037AD30
|
||||
:150EAF00245E1674D52944A3FBAF277DE84B3B005EA01D83BA29
|
||||
:150EC400C112F6CB81B3F8ED77209E8C2BDC2B1FB171D1DE7613
|
||||
:150ED900BC517CDE0D3C55EF0766EB9A98FD6DB39F22BF48E2BF
|
||||
:150EEE0067DCBF6B08EB5F529F789DC33BB340367FA8CF54BDFC
|
||||
:150F0300782FF021776B43FC9315B63CDA1DF4C69792C76198CC
|
||||
:150F1800AFDAF2305B1EAA65E4C1BDEEBC8D3BEA9067740679E9
|
||||
:150F2D0074873CB5200FBC3336853CB50E799EB4797C807164D6
|
||||
:150F4200CB336ACB73BD2C230FEE55F7D9B8E86F2979F0793A72
|
||||
:150F570079420E79D6833CF0CE6253C8F3CEF28C3C977E277943
|
||||
:150F6C002CBB827B9A940779A03C3B1CF2E05E735AE20A5E2E36
|
||||
:150F8100C8ADADD57DFC7A32994CE55867F917D10659443B01F6
|
||||
:150F960039BA96AA810DE1CE35FD14FF4FA873ECB821758973F1
|
||||
:150FAB00DDCE291BAFE0A505F1791CFB6658EB6539856F9A5A59
|
||||
:150FC00002CE58E939FD7C839D8F53B806E04521B67D901B9DD8
|
||||
:150FD500F3752DCA6A81BF017218DA61689FB1466D21DBA92DFB
|
||||
:150FEA00039F2967ED5A15ACD57A56663C627272B07149A28F90
|
||||
:150FFF0046ADBEC62EC08F6923AC5FA3ACF3C8095A4C06CC398E
|
||||
:151014005B8FD0F9173FA3AD5BEFA46DF397D2E7B62EA7CF1F57
|
||||
:151029005943DB2FAEA387E69FA6783FF357BFC8C198A6F8BFCB
|
||||
:15103E00542F1C7993169CE9310F5CDC07F5C0BE554EB9CEDE5D
|
||||
:1510530043BC85DAFAEA344C6FA1E5F712AFCF09130AB4D0C3DD
|
||||
:15106800D3C06BAF2527C18D480BC37C89F6F12F9E621E6BA1D1
|
||||
:15107D00CBD64C01875AE093F9C4BB30D6C3704D312FD45EC9C3
|
||||
:15109200D405E99F3AC2884A995B13DF2FD855FCC78E2063D72D
|
||||
:1510A70044DFC5AEBB64AD33EE92DF494812EAA2C23E336A0D67
|
||||
:1510BC0019F87D638EBBCF3C9433641C0A0D189DB0962F586F8B
|
||||
:1510D100189E0F3E1777C9F825E280D561A81BA9897E90EF9079
|
||||
:1510E6000FCFF76E3A24E0CF440A2A3E49FD7B8D9D377E5E23CE
|
||||
:1510FB00F7C7487A2F8D31947F01EC63F9B1DF97CF8BFD1DEE8E
|
||||
:1511100023F65E382CEA18B97F0DCB5C073693FB1FB371BA04B5
|
||||
:151125004E43669F14F1F0A4CD6774129F5B27F091FBE5B0A8F2
|
||||
:15113A0087527CE2369FF5361F89D345651EEE67B171428E04DB
|
||||
:15114F0095BABCFD7DA63FB4C83C06BAFA2277560560AFBA7A78
|
||||
:1511640043EA7B3E726FC56578F680FDCB0C3807E50E34C29EFD
|
||||
:1511790055AD94F687550DBF8B04E9D8DB9027624A5DADF6326D
|
||||
:15118E00DED9F9DCEADDB00F75B0D2D0BEAA0324DA48D43DD4DD
|
||||
:1511A30055DA15762F851A4DFF0D5FA8FD86BB6C5B57691D3C31
|
||||
:1511B800A41DE0FE441F63B97D4DCBB46E8E79C51A053D12BD56
|
||||
:1511CD004C059A08276A94C281CBE3E4B9E527DDD5CEF965C6B7
|
||||
:1511E2004193DB34702E3E232D1D68B94B97844359F37D303FCA
|
||||
:1511F700A4BDC8A186B0E747A79CAFFE23EE4D4BC2284B10C611
|
||||
:15120C0096419D11D43AC45D3427AD8D86F62B9EAB609E3B411A
|
||||
:1512210039E96C74475AB90FF66017D6BB7A2FF744A2BC2032BB
|
||||
:1512360022EE9C27FAF1B0EDC7D6043F4EFBEF689FA13AFCB79B
|
||||
:15124B00106A85B48F821FE0FAA18FE6ED1F308BC92253EAB616
|
||||
:1512600044EA16EAAE76FAB35FEB608188BBD28DE768C2A807ED
|
||||
:15127500D6A3E94EE2C5F7E7E7B61B259B89F7A5B93143D596FA
|
||||
:15128A008AB5598FEB0073D9FAE876EC73578BFF21CABF23206C
|
||||
:15129F0069AAAB3C61159E676A128F885E0BA4E4D620EECA880B
|
||||
:1512B4005AB8CC6C752DDD9E6BC399CFDA9E1AC7FF6352430BCD
|
||||
:1512C900BFE74ED10845BFE74B3DAFCBC0459C801EF81D11EF02
|
||||
:1512DE00CD0E6AEE3A96DE9BE4BDD916BCABB2EFA5314E08DEDD
|
||||
:1512F300AFE9C75940AB2EC7B51570BD8F5DAFA95E29EEFB990A
|
||||
:15130800BCE39FA37799F8BD016922CCA746CDB3C9A47F527EA9
|
||||
:15131D00B2F9D74EE2DF6EDF9D4B39EE127766BD71A4A3240E38
|
||||
:151332004BBA3A7E4790307C4E4C419FC571FF91F4D500F0620B
|
||||
:1513470094E2BE68D3F4F9347FD50AADA02264E78D0AEDF66A05
|
||||
:15135C00A0C97C6A47FAEE1068B3A2ACF7F4B3CD8F8F1D355654
|
||||
:1513710068F757F8B4FBCB03DAA28AD47DEB0A6DBBA46DD35490
|
||||
:15138600BC8727D155DE9F19B638717B25D610F8EC4638D8F716
|
||||
:15139B00207ECF8950FC3E731ABFE72C4EB82B713D104791385F
|
||||
:1513B000EC20E660C4D1FB38E2A0ACA501AC11A1B67B88903162
|
||||
:1513C5000236FE4BE255C5DD690CCF9BEA79D24FF15ED2F20E35
|
||||
:1513DA0088EF6B44AC7B4CE0FBD5D7E47730FBDC81304D1BA0C3
|
||||
:1513EF00E28CE280056D58A303B6CC8635E0D9B754F0E33B1C7E
|
||||
:15140400E3E2FF0C865D648936C09D30DC971766C188CB4DCA55
|
||||
:1514190027C2583DF46A6488A910CBABB3C712CAF87016AC0146
|
||||
:15142E0060235930F7BF29E3A3593002B0771066AFF37F13F3E9
|
||||
:1514430084C1511569F6242F3203617CC0644C280C0F0C1AF656
|
||||
:15145800229960D0640871E2A297502C37025AEFB141264ADC60
|
||||
:15146D00E0A1CC4156D92DEE7CC144126CB07926122DDD9DB8D3
|
||||
:1514820099327844070F14B7425DEE8E73BD2D6A2B6559B7D497
|
||||
:151497009D52B355DE15578538BAE8B2559C73DFD7DD6FE6CDD5
|
||||
:1514AC006450F1F6EA7E4CBD37DDFDBEEFEBAFBFFEBEAFFBFBA7
|
||||
:1514C100BA31DE44D82DB80EE738919E4FBE9AF31B37FF6E8C0B
|
||||
:1514D600D97D8E4A1BC19FE113CC3500EB7D15DAA8986B25E05C
|
||||
:1514EB0087B471F62449D02133CEFDA473208FA0ED37A19F74B0
|
||||
:151500003663C7C458757D99E6E3144ABE9AA12F947C9BF50CD4
|
||||
:151515008CEBAB1D34234CD447180B4298111E57823AA4431D81
|
||||
:15152A006768C3D7CAB2AD92C6AD92463FE63CA91C16DF3FF7EC
|
||||
:15153F00E1FF709CDAB90469291BFD5236446E9DE415D833C0CF
|
||||
:151554000DBEEBAB6C10E61C105FC6F58DEC875B3ED5BCE799CF
|
||||
:15156900AF3269B70EFEBE8AB2C2569792B0D97682E72DADE6FD
|
||||
:15157E00717D5146D64D2F2B7296012DDCE704CDE492EFAB5527
|
||||
:15159300511E4ABE0134BEC1CA529CCF7E53D2C1CBC0E6F81BA9
|
||||
:1515A800C7A4FE495015BE293361DC608CF8337C825E8FF0D8F6
|
||||
:1515BD00B855A83D29D09E64DABF2DF80B65F06EEDC9F843208F
|
||||
:1515D200770BC03B94FDC477DE271FD06EF709DE2FB9C6F8FCD9
|
||||
:1515E70009F8B2F5FBDAB2F576D9D305CA9475D3CB4A9C65796F
|
||||
:1515FC00F1542EDF728EDAF3DFA91B7AF274033EA764DDD5BE7C
|
||||
:15161100310B7C63D755E3F3FBD96FD1EE4ECD27B36CBD843CC7
|
||||
:1516260079CA9639785F78B6D748E4D5CF3A3766081863B4A142
|
||||
:15163B001CFCA948C92615F7A301D6853FCFEA38940F9C17769B
|
||||
:15165000DD94B30E78E19670F8D301632C0F86CD032183A2CC22
|
||||
:15166500CC2F03787BED325FB6CC2C5036D39B5B867DEA73F4B0
|
||||
:15167A00D92EEB2D5056EC7596993451A9105621F9436214752A
|
||||
:15168F0006CE4B1FC83CC6CA306EC2FFFBC7DACB1C6B51524A3A
|
||||
:1516A400F89A13E5D7C7E5374E6D399F7910F72B13AC1DE6BA33
|
||||
:1516B9003F2474592118EA35C380BA700CDFB19DA53BD60968C7
|
||||
:1516CE001F501F6E475D02FFF1BB0315633A878FB2E223AC503C
|
||||
:1516E300B9EA28A7CEF6E585CB5528EF92712E94FB7C7E617C84
|
||||
:1516F800B820BF7C85FB3AEB5CC21832C7A3072A123AD703DF1D
|
||||
:15170D00866F7F4258D8CFAF1B037A2D747D6758B9E39A907AAE
|
||||
:15172200DEB6FD421FE7F23A571F17A005BE11B48C51FE04D841
|
||||
:15173700D7233CF06F0AF2A1407B92699F4BDF1E87DCE1FC7519
|
||||
:15174C0079A7CF6FE29D3EBF8BBCD3E7322950B6DF337D7E97A8
|
||||
:1517610078A7CF6525AF0CDB3FE7FC36BB26E13ABB92CF716123
|
||||
:151776001B90A70B1DB60FE3E0DD72AF86386CA19A57A738EAD9
|
||||
:15178B007C79756E475D795E5DA9A36E812AED48204577F72309
|
||||
:1517A0005D268F1F667D8F380BDA7BE6DCDF88338C69E058640C
|
||||
:1517B500FD8D98217C8BDCDC45A266737E547F75BBABAD8E9F57
|
||||
:1517CA0067C09C7AF516428A0E361AC9CFD31E5843EA53F054F3
|
||||
:1517DF00802798FB87FB643F03997A3EF6C77A726984BDD79F79
|
||||
:1517F4008DAFB70EFCFFFECEB7104F0DD0CA423DFAEA3B9555D3
|
||||
:1518090076EC09E339A4DB7C7312CFA274C7DE9CE2CF495CDB6C
|
||||
:15181E00C033F9668A9F5101FFF25EB157E2F039A98B8C9F43E4
|
||||
:151833007E52807D39C4E339D2CEF6839D1D053B0BCFEF8FEA65
|
||||
:151848008277D59C77B6CD8D7D96F6106FAFCE3E93FC8BB8384D
|
||||
:15185D00FF50FF35013C13CA3FBC53B903F1EDB957CC93DDF0B5
|
||||
:15187200447F12734E79CC08FEAFCFF137E36CCD771C7335E3A0
|
||||
:15188700FFA62CEC2BF024217992903C49489E249027C5B09E3B
|
||||
:15189C00BE16FEE15CF26A4B0233B5BEC04BC58257A2EC562824
|
||||
:1518B1003B1018CB295B01654381E3765929969541D98D8149CF
|
||||
:1518C6002CE3FBEE829F7A0AF8077C6C4D4DE7E3A53B89A721F4
|
||||
:1518DB00857CACBAE34FDD9FFE02F25024E5610FE03DDF9C4B45
|
||||
:1518F0006783423C473F853903B4BEF4E9745A5BE11BFA29D2CB
|
||||
:151905005AF3AD69B5E391DF86DEED05E82D96F49E015A1B9ABF
|
||||
:15191A00A7CBAF8939BE0564F7E38B694F11F4E3838BD3FB616C
|
||||
:15192F00029CD317B11FBE6BEA47E63CEEB7EC4F5781FE28B23F
|
||||
:151944003F5756114F17FCBE0BFEF73E813E69554CD56A18D73C
|
||||
:15195900FDA0F35CCB09998472FCAF9056FA21BE0774AA017723
|
||||
:15196E00166886A56A2D2F22FE08E899B511DC0F8C51DC35426B
|
||||
:151983009B98A262AD12DB0FB65831C11EF6F3FD2C0AEDCE4436
|
||||
:151998008E58A51DC7ACB512762F3CD3D79B74233C5DE2BFBBA6
|
||||
:1519AD00218F9E06D95687E746F0357D9AC04774810FF120BED8
|
||||
:1519C200E833B9F81640BBD28E23D65AC0F7E10501C327F17D8A
|
||||
:1519D7007C41E083FF6E273F55C9CFA34D44D437919CFA39B6C6
|
||||
:1519EC00FE93F59756E6D6CF95F5DB65FD0779F5F364FD5A59A5
|
||||
:151A01007F9CD7A7A8EFD9ECF9A334F491913E1DF790DC68A32C
|
||||
:151A1600F3CE1BF5833FC4F0CC47656C7333EE2F997D75959A13
|
||||
:151A2B0012D4A53E1BA838AF3787F6055B1DF1DCBD273B7E8D0B
|
||||
:151A4000BC7ABCFBFDE680A3FCDC0BCF5CC1F2959B7FDDEC8CD9
|
||||
:151A5500FF9E7DEBA72F63F983FFF8AB665289B1C761DAFBDB56
|
||||
:151A6A00275A7C7E7373EC87C433761FF14CA3D391AF9B7A36C9
|
||||
:151A7F00D73E0B5F2365A10E7179C53A8C97A9B97DB3FD236C72
|
||||
:151A94003713647D3028721BB0ED40DBB83E33725F607F1BD7AA
|
||||
:151AA900E5CCB47539D4719D0F3079591E3C5C6F52B02D5D5C15
|
||||
:151ABE0086ED35183306CD2A1DF7BDC16FF4F457C4F4BBC89216
|
||||
:151AD300A0972CA99BAFB98298233650C1F4756655F0BD0C5F2F
|
||||
:151AE800C6F83EC46CCE0FB6177D9412F0F546F3EA3D8E7A059E
|
||||
:151AFD00EA7BB37CED2F5248BF1BEA5DB5307EB2CD7C6ECFC40A
|
||||
:151B1200B7D741FB8DB2FDF740FFFBB592805DE787BA0622E42F
|
||||
:151B270009FF2F3C3B6254C3FFF98E360BCFC60D5F1E3DF7C0A8
|
||||
:151B3C0038252271CB0DBAB6FECBB4277625EDD9FA557A96EC0C
|
||||
:151B5100DFAA49D0D3203F397AC527E574B491F079134A3E4B1F
|
||||
:151B660093256416CA19FAC136EC27619E610C4775D0E5AA8842
|
||||
:151B7B0019C723DCFED2808C3FEF01B8D5C0FFDE45C493AA12E9
|
||||
:151B9000B27FB20160CB7D72226DF99364980E4E8EEA336F4273
|
||||
:151BA5009B1EA0C297D5E43E6D35C576459EB8F1AF8B7E50EF22
|
||||
:151BBA006B8CB1062BEB6F45E0BD669090283C1B9E23C484E70C
|
||||
:151BCF0065F895C3FB65F885E0C79E13FB5D08A7F53FD29ED399
|
||||
:151BE400B82693FFDDE7D39EE3F89F8DB079303E181BA8E47B6F
|
||||
:151BF9000929EBF4FD843C87B6818D58367FED75C669919FC22E
|
||||
:151C0E0061281AC6285EC77C7A9ABA8F102FEA228C9B711FF33D
|
||||
:151C230088E56AA306EE2763EC8AE7CAAB23B8B75AD6E4A0E3B9
|
||||
:151C3800AC9BCCC2D82AE2C7734FB857B100EAC73CD25E713CCB
|
||||
:151C4D000798CA7535A326FC5FF05F609F501F89FC8B0C2D99AC
|
||||
:151C6200B39958F63B570AF0F17D3CC5F18E7B97F63BEE59F2DD
|
||||
:151C7700B80FFC1F73C4B96C783E76C4405D904A5FCFE71EC6BA
|
||||
:151C8C004486FEF9282F23A9EB89EFDD51F10E7F701CB36D6341
|
||||
:151CA10016C65186268FEA650ADF43B1447C2566613CA5C94103
|
||||
:151CB600B7D8BF1CA60F4C3D30B5787234472E67A35C227D20D4
|
||||
:151CCB009BBB6F271E1EAF0C1F61E8F7EDD7560510861B73A2DD
|
||||
:151CE00022A798163941FDFC9CD3179697E700279862EF075FF5
|
||||
:151CF50014F916FC5C82DAC3F74C791C397CCC7A5CCEC76BF51C
|
||||
:151D0A00279B1CFCFA661A246E3CAB84F80BCC81F25560EBE5AC
|
||||
:151D1F00FC60B8F7AC522E5764B288801D328662CA263C7B40E5
|
||||
:151D3400EFE5716FBFBD6E9B43460CD46BC85B2AE9C3EFCFDEF8
|
||||
:151D4900463CCAD45386FAFE53BA5347E2792466821EE76BBC5A
|
||||
:151D5E007E9AFEBBD30AC626152EFBA6581F4D017FCCB87E3379
|
||||
:151D7300190DE299C5D496A3CDCE71B94EEA8BEE159C0779F150
|
||||
:151D8800175CBFD9704D0E374D4ED2CC99447594611CED7B66CF
|
||||
:151D9D00BC20EC191276F90A92B38F9B858F79A4FD745FC5B0E0
|
||||
:151DB200CECFC7838E45FA63FCEC42DC5C8CEB03C0519C1C3729
|
||||
:151DC70095E409D35D1A37704F7026E09B1B66862B42E9A1A492
|
||||
:151DDC00B249D17AE90DEA2F8D33E9B4DF1B5382D9757098A279
|
||||
:151DF1005FBBDB85BAB015CAAAF9790D9EAE8B3EC3FD620D515C
|
||||
:151E06008ECFCA06983B77BFC8D75A01ED4D727F017AC13E46AC
|
||||
:151E1B000EA37D1CE6F6715FC549DD3BD9773BC737A5F4B2C6FC
|
||||
:151E300031417B386E7AD1DF93E54591B8A9362678FF0E9103BC
|
||||
:151E4500BA05F2EA5E07F38DC5AD9BC51955E68A8C67FA3737FD
|
||||
:151E5A00341AB4BF15FA2AF33E8D9EF70E67F371F7817FE13540
|
||||
:151E6F00253DEC2AF440B90AFA176971E2748978EADE9C3334E2
|
||||
:151E8400A82741C648E549B18F20FD33E09DE08FC82DC8E5A33C
|
||||
:151E9900DAF762CE7E3DCCBDC806EC036BC7791A4A1EDE5B29A3
|
||||
:151EAE00D681E683503E188EE96EAFD86B4B024DE78B4D3CA3AA
|
||||
:151EC3003E0BEB03EB458E0CDAB0C572EDD8CA6564CCAC833ABB
|
||||
:151ED8009B764E37B46F58CFFD6C1EC75F2BDB353ADAB5245FE1
|
||||
:151EED00DD0B3F13CBA3EB798CC4C43831F605D7AA48C7E05399
|
||||
:151F020071DD3729F704A1DCC6DB25E1FD5501BCBB1D78B7CB1C
|
||||
:151F1700763F71B4BB0BF0623BD3D12E2ADBF514A0EFAEE41B6C
|
||||
:151F2C0026CEB17E4EE3DF9B685FDC408B0AF43DCF65679CEF03
|
||||
:151F4100430FFE13D04AC4397EB783D66E097BA000ADCC41C374
|
||||
:151F56006ED9EE50015A871DEDF6C8762F7C0DAD38C636ADA5E6
|
||||
:151F6B00DF406BA983D6A484DDB1613AAD5D1BB2347C2CDB6D89
|
||||
:151F8000DB7095F1DC901D4FE52AE3A938F09EB7C7B300DEDD56
|
||||
:151F95000EBC17ECF1BC0ADED68D38BF2690074C75E2C5FECA8E
|
||||
:151FAA00FB36B0DC96F935D0FE308967647E638990F92B2E21E2
|
||||
:151FBF00F3A18D59DCE11281BB65E3D7E006BC3E89D7C6E77309
|
||||
:151FD400F473A384D1561806C3396BEF7597E7EB3CD02FC75F90
|
||||
:151FE900CAEA3B3E9FF95D0A4719B767784F8E7A9CA11FE92EF7
|
||||
:151FFE00ED33F6815FAA826D53D79E32CAE909E32021739C3A1C
|
||||
:15201300E86FA05F85748FFD9DDF15D70F9BE33ACA8B88271E8C
|
||||
:15202800D0613DBC17D7BF77715859DBB01C6015815DC8E8D5B4
|
||||
:15203D00D0B8EE5E17E73A95EB53DB5E98A84FE35C9FAA6D40B2
|
||||
:152052003FE85197E33DA7BF9598AF31ACBB2A9881E7F178AE2F
|
||||
:152067008CB0F9D23625047E26F5697848F8946063455F46F90A
|
||||
:15207C00F9097E3E08ED52641CECD23B863B7682A26D2A684F28
|
||||
:152091005ECEAE1F193FC7D46BF8319C8E7B15F2FFA5747A5E1E
|
||||
:1520A600FE5A52EC77F278BD359C02FDEA81B915AEA12CD41386
|
||||
:1520BB00455DEC2E163A59917E7C293CA37F486772FF588AE7B0
|
||||
:1520D000E79539F3C6944671EF4CABA31D5EF893DF0E6DC2F3A4
|
||||
:1520E5001A9E5B3AC910CE83987F510BFF8167E877BB2A13EDD1
|
||||
:1520FA00587F4368D4B821F40ECA8CD5CC7345C618C2C372FF1D
|
||||
:15210F00E6B895FDFF8EC1CBFE3A8E3E0BF1B38421BE7F076D69
|
||||
:15212400BAAFC8DB631CFF324BD3608AFB4D0E9A12B4991C5B1C
|
||||
:15213900E9D75C011B37DEBDC3F34230FF1ADAFB6FFCC2CABCBE
|
||||
:15214E00AFFA228327B9F058535126EF07D6AB320F1BE92ABB9B
|
||||
:15216300310E7EFE10B3F819D31A3A07F87D3BB24315B044DB21
|
||||
:152178003186FC07B368A9EAD330D6C7E19B414BD18E5BED0E8D
|
||||
:15218D00BF12D6DDE411AD64E5844BAE8B0BE05983BE4B41D8DD
|
||||
:1521A200555689FA16C09EA0840D594AEC94856704C4797E691E
|
||||
:1521B700BB51BF15CBF98B396DF25C0091759305FD19915B88C8
|
||||
:1521CC0072746106D29560ED226798B9257D6E271D682B8B05AC
|
||||
:1521E1005C7F30415522CF2AA8C72CA443FD6889C56D51868E26
|
||||
:1521F60014ED8A65E51BE11CBD4FC0194C09F8026E82F3A7EC3D
|
||||
:15220B00A33EE68235223F8347C6753C138F3EB0F82661619B93
|
||||
:152220009C7900F03F8C65FD1FBBDF083F719FE89FC0339683D4
|
||||
:15223500C7DE73C0B69C8F49C1C71B36F75AFE7082D7259C38A8
|
||||
:15224A0033E7914354D0D24055CE975679875080BA653E202FCF
|
||||
:15225F000F8FB28717A1EFFA0ACF4773D2E07B7909738E1DB4DE
|
||||
:15227400B114F508C6FE992D27E80BE30D65CF935E9DDFD31477
|
||||
:15228900A69C2FFCAC05D42BD05FD660525C841797F61AECC022
|
||||
:15229E00ADC607FF96F690A911BEBEF7E118A96F1A8A768AF9BB
|
||||
:1522B30023E24E017B0D535E3C7D1DD5D37624735E3EB39E9A77
|
||||
:1522C8003A66DD7EADEBA9F06B962D539847365C22D6BDB93243
|
||||
:1522DD002564086919967CE163128C7179E2EB5958C7A33D4393
|
||||
:1522F200794219E0BC32C51AFEA5AF44AE52A1F504CF1B0EC06E
|
||||
:15230700DC6717E83C7FA01DF767BCDA92FAF7D19EC23AFC1118
|
||||
:15231C00EDD6E0659893CB93BE55DC36DE2FF37DEEC74B4F0E1C
|
||||
:1523310070B9E3F960A2DCC2F2F7E4FA3622DB46F3DACA720B9E
|
||||
:15234600CBEDF3B836FC5EF9CD60DE37B2DCC2F22E09BF5FB607
|
||||
:15235B008DE5B595E51696DBEBD4C512FE6AD916DBE1FB028718
|
||||
:15237000BE6975D4E13B9E6DC2334D6E90A362B0558A36622134
|
||||
:15238500BF1475BF81E31DD046F19EA9B9734343CD0AAC57CB16
|
||||
:15239A007A2E18A5DA116BBEF94993BFE55343891CB75E8E95C9
|
||||
:1523AF006C72C39A0BECF1BC9991192B95C805CB96D999A0DB1C
|
||||
:1523C4009257709F2E3B077E0A3652E1E746D8B4F928E757464D
|
||||
:1523D900AF200CF5E08831583CAA236D73375759F67CE632C014
|
||||
:1523EE00CFE58EF3BB8BF8592FA147ACFCF92CF2400127CC19EB
|
||||
:15240300E73C796A76AF91F8ADD84754A54EFBA679F27480DF1E
|
||||
:152418008D23E6C8C008CF89518BB3F98F8B31F7007C8D07F85F
|
||||
:15242D00DE7E36AEB50EE4CD67CBCDFF36BEE9984FAD45FF072C
|
||||
:152442003A3ACF9F086B23ACC4DBC7F9F912C06BFAD4E10B5CB6
|
||||
:15245700CCB3BB400BB611FB20A6C5F7472AC7DA4B0EC68D21C8
|
||||
:15246C009015B5294E93220662B9C57E29BF37096D33D66BB0B8
|
||||
:152481006E4FA17D97F0307EAB4716B1622FDE75D743272F66C3
|
||||
:1524960071AB05FC107704F0F23D0AD3C2F11A02BBAF4E8CD0AA
|
||||
:1524AB00CB12278E6F0E4EA877E7E1CCED7F75FB4607FE900352
|
||||
:1524C000BF5600BFE2C0BFA000FEAA6BC48FFE456F6380DAB4A9
|
||||
:1524D500200D139F081A1600AE7CFCEAC4118E4B8B8CC0DA3C30
|
||||
:1524EA00D10E6B6F0B7D1F45E377CACC5B101961CF83DF833679
|
||||
:1524FF00ED92D3CFC1589F5A65F5B65103EF74BBF46455338FA4
|
||||
:152514002756DFB4B4AA6D6B50FB6143E366ED9EBF587FB7B6A6
|
||||
:15252900E127BBBA3B1FDDA5ADEFDCDED9B1AB33A8B56CB9679D
|
||||
:15253E00C7CECE8D5D3B7EFCA3AEEE2DF5CB6E5B16D0AA1FD909
|
||||
:15255300D5B56DE7CE1D8F6DE978BC235457D75877DBD23F5BD6
|
||||
:15256800AE3DBC6D7BE72E2DD0585BD750DB7807BC04EB03C11A
|
||||
:15257D00FADBB4AA4CFCCCC6575BBBB533BAA3BBF6A11D8F4646
|
||||
:152592006B3BB67644773D51FB68C7B6C76A77ED7CA8B6735700
|
||||
:1525A700B4F6E1276A3B3AB6F3B2ED3B764497EDBAA96E857601
|
||||
:1525BC00ABD6B9755BB7B6B5F3E18E1F6FEFD61EEAEA78EC478C
|
||||
:1525D1009D5AF5EEEECEDDDD4B11CBB783BF75E7B6C73B77D624
|
||||
:1525E6003E0CDDDAD2D1FDE896AD3B1F5FF6D04D2B1AAE063F10
|
||||
:1525FB00039E9F6799E30FB7EFC77D42B58ACEF537B4576BF5C9
|
||||
:152610006C199EE5B1F3F423CACA85FA05E350E870B4880CD334
|
||||
:15262500F63FA63379FAEDDABDD67FFECEB552517F6054692D59
|
||||
:15263A00B40AE6DE39D0253E78BE85BA539ECBEEFA22ED797785
|
||||
:15264F009112DCA81D613550379F8C3787B401C6EBC3CAD30165
|
||||
:1526640028437DD3E428C3762AD8408069F56BA5AB6C9B500E21
|
||||
:15267900BA710611BE04FEBF02B0F7A9CF44D14F1CFE657A16F7
|
||||
:15268E00D2E5CC6B77E6B4C72E8B585C1F6F5F4DBBA03D513FA2
|
||||
:1526A300B77CF0CD04E68D39F0B328E1676797B9C85CA40FE9F8
|
||||
:1526B800F069C718F66106AC53317F8E4C2DC538ACCFDF72AB4E
|
||||
:1526CD00817DC77B164BFEA1D1C02B54AA0096D8AF3A44C3DAC6
|
||||
:1526E2000BB4FE6DC00DFE940FBEB7F1E0391EBCB301CA2C2721
|
||||
:1526F700CE35E934C7C9EF6D04FFEA783A3DA732E2127B6AE153
|
||||
:15270C00017A1DD80584997C0BF3660350F60AA7AB04ECE521AB
|
||||
:152721007E6FC47EDC972BB3C7CD3E6311FB038EDDE77CEC30F5
|
||||
:152736007EA36930EFD4BE845B5B6195B41C85F13EC061E33C5F
|
||||
:15274B00C43958AABD6CD57CE56ACAFAAB620C6C7E3BC7C1F730
|
||||
:152760004EDAFD75F5574EA66739C703E951811E9F63BCA211D6
|
||||
:15277500378D257F65A920875A722431D7BF1BDA76515F7211DD
|
||||
:15278A009B9D2CDEB43AB914E435DA8E776AE01D89782F0E0997
|
||||
:15279F00DF4DDF55709DA453F465947F79D0C07B36D662FC4621
|
||||
:1527B400C533BB61EE8B0E9ACBF5D74275ABD66845ABDE2F396E
|
||||
:1527C9004FFDA15BF83E63EFEBE959975C765ED6009B9133FE04
|
||||
:1527DE006B29DE5D89EDDAA1DD19D92E906C01B8ADD66A11DF97
|
||||
:1527F30048F03B29E5B326B2860EF0BC9145D485F77F014FC4CC
|
||||
:152808009D94B9CFBD2E71278EB8E76B047CE95AFD52B180EFB5
|
||||
:15281D00A523C603DAECE05C6D76DDEB8BCA82D6E21B83A7B1E3
|
||||
:152832000EE3BAE3E9598B355790D3A90E50DC8376C3BC3C0DA3
|
||||
:15284700F320137F9B7A45D8E7A957AC9F5754EB7CBF1874E630
|
||||
:15285C00A0840FDFF3BDD47E8065B7B5DB6D873607DBF0BEB4B9
|
||||
:1528710012DE07DCDFCDC7A57F21E6512B7CCFE358324E77F2F6
|
||||
:1528860028C233D982D251C3F7DF87190A4E6B12CF389FE7E720
|
||||
:15289B00A9ACD0ABFA10C09D5F5A632C07BEE2D9D81A729EF631
|
||||
:1528B00086DE88624C2D896B83B6A5860563751DC84EC99E710C
|
||||
:1528C5008AB90441DCFF507F21C646CE65F4A915BE2ED380AECD
|
||||
:1528DA00503BA75FFD85357129ED395A24FA79178C75538131D3
|
||||
:1528EF00857575597E9F7A2FA5790E09C2D92EBF9F0F73AE6456
|
||||
:15290400CA34F0BEBA2258A784928729FD4DDA637F8B730575F3
|
||||
:15291900E284E43BC66F911701E083DD6618EAF83B7B864652D2
|
||||
:15292E006911EF8436A54773798F325888569CC7E5C91EE6FB92
|
||||
:152943004CF0FC83BFCDFD6E02F98F72CE75C37E6AF37A1078EE
|
||||
:15295800DD9A1CB1265E933E80B3DFB83724FB4D7F2FFA8D63CC
|
||||
:15296D008FF0A200AF468E1997CD51219B788ED6D576B71186B2
|
||||
:15298200FA9B6DF9936321F89885D1F07B416B1464E2E3D78499
|
||||
:152997004CCC2FAD37FC23AEA02D1B78CC3B2AE2B952364EE849
|
||||
:1529AC00E8DF2D262756A15CF81A135C1E2C73B1EE1E386228C5
|
||||
:1529C100A073174B3910FB02B9E37E12F8EC575F0199EFA15EF8
|
||||
:1529D600900B5F4F9D91BA28F96DCF07C737181B2FC4EF6538A7
|
||||
:1529EB00DFA13DE7793E1E984F9837649F7FB9CE211BDD201B4B
|
||||
:152A0000D13342365C781796940DCC8343DEF01C07CCEB782D44
|
||||
:152A15003B7E086F76B8CBD0FFFD2FEB41C759D5C936AB2AD9BA
|
||||
:152A2A0062819EB3400FB202F909FC5E665CEF946A553CC61AE4
|
||||
:152A3F002BB00F06FA9BCEF00E1891728C1B8DB5A3DFE6F28C47
|
||||
:152A540018B89FA6CB73D6E8833FC0F79712FCAC18DFFF8275A5
|
||||
:152A69003B9E0FFB79C54958ABC6F95E981AEBB3300F7275EC6C
|
||||
:152A7E0014F7FFCC581C65729EAAF559ABB553168367191B3372
|
||||
:152A93004E6BA29E2C8AD38FAFE21FBAC984E723A5B9F8B1A2B3
|
||||
:152AA800CF5D3F73FD4F7B4F1B1DC575DD9BD5AC342B0D627676
|
||||
:152ABD00D95D495848232C12C9519C5DB1C8922CC242A88FEC13
|
||||
:152AD20010654B9D744612F63AB603B19D84B634C7E784C42B00
|
||||
:152AE7005889058FF03015F65A266695480E6E209539909014D9
|
||||
:152AFC0092A5761C9152B2E1381C9AA4F638716C9AB8B6EC6293
|
||||
:152B110087A436DB7BEFCCAC56027F25ED39FDD13367CECCFB72
|
||||
:152B2600BEEFDEF7EEBBEFBDFBEEBB95BB86F37317D82FD98F5D
|
||||
:152B3B00D9F7D9636C823DC40CB69D6D619BD917D84676275BBC
|
||||
:152B5000CF6E6537B33EA6B04FB0B5ECE3EC63ECA3AC9B5DC784
|
||||
:152B650056B3556C255BC196C38CB29375B076D6C696B1085B45
|
||||
:152B7A00CA5A599885D887D8D5EC83AC059E0FB0AB58333C4D64
|
||||
:152B8F00ECFDF0BC8F2D81A7119E2BE1590C4F033C323CF5F4B3
|
||||
:152BA400D4C1B3889E5A7AAEA067A1FDD4D0536D3F558527687B
|
||||
:152BB9003F81C2E32F7A16143DBE598F77CE235DF2CCBFE4A91D
|
||||
:152BCE00BCEC33EF2D1FF16D9F8A777CCADFF5E379C747C0C3D7
|
||||
:152BE300535AF6BB963D6099CEB280EC52D7DE1F63F241F46BAC
|
||||
:152BF800043FDDFE6F82FF9CFDDF02FF1207FFC863EA9A207EDC
|
||||
:152C0D0054D359B7968349B2C4299A242F3E28C5E1CDC06B2E5B
|
||||
:152C22003E487602C97E6C13D9BE9365DBCF63FB71E017B7FD26
|
||||
:152C3700CA6D3F17F8656CBF0ADBAF04FC303F2893CE264A2C4B
|
||||
:152C4C0016B2F342BDE2909D07EA1187ECB4A8371C8234310E91
|
||||
:152C6100F768656DE3B751D0BA4A83D9F6A81BE41AF48BD1B952
|
||||
:152C7600FFB0EECB70ADC25433F081865161AA83EC1B26DE2674
|
||||
:152C8B006CF26DC2C81E0B84554218F81BE8CF9FE850A9EC5CF1
|
||||
:152CA000B3E1E0CEC139D62367C3983B4234D1659A8787749C89
|
||||
:152CB500F731AC27A509F5237E118792CB8A3F99B5C3813776CE
|
||||
:152CCA00C98B0DDDC9E7B8E51F837831E49BD262831740067A12
|
||||
:152CDF008B6F8C9B89932BFA975C33FFBAED4FF8CFE6E7A36DBF
|
||||
:152CF40009EB3CB7AC4D93FD5BD9D2E720DD4999743D4AED7F28
|
||||
:152D09003A37EB82B686F66043EDC03B5D2CE96A37CA609ECA75
|
||||
:152D1E00473BD4E9860E5A9F9BFEBE7B19E204DDB8469A857495
|
||||
:152D3300226B471D6CA30570018C5613E456A38C5D05B05F65E1
|
||||
:152D4800B883D1FEDC65FC24CEF263F2AB06F2DAA6B96B14217A
|
||||
:152D5D0059273F6CDFF0BD49E65A79A099941868E571BE2C35E6
|
||||
:152D7200A03D4A18CFC35064BBDE42EB5061834908974CB0C425
|
||||
:152D87005CD55046B38EE5F353D5AA94688EE0574834B7E23778
|
||||
:152D9C008675CD8548A6C6B8D48ED15E6528A425A84FB46B511B
|
||||
:152DB100D26D8AA27F3C3FBF1BE2C4C88E24CAD0D659D8B8163F
|
||||
:152DC600A573001BAC33B1A18D961E14BBDBBE272065EB48E02C
|
||||
:152DDB003AEF7C002A09F397A4AEB3A482FB3DE87E7505BF8CF3
|
||||
:152DF000E5B6E8A2CCB7B2D856FD3CD62B27EB96DD5C4B6FAAC7
|
||||
:152E0500C52C69A53C213F5A57C2FFD8889EAA49281CD9F31C8E
|
||||
:152E1A00310A7A20B11FA4B17EB5F2FD3A2F9F30989E84791408
|
||||
:152E2F00BFEC9B377F13F27F328DFEE8D7027EA373FCAAC16F26
|
||||
:152E4400688EDFA6150097F47CFA7337BF1006815913E5A7F5FB
|
||||
:152E5900BBD99456BBF205B5B7FE99F043EDE7ECB316093A3FF3
|
||||
:152E6E00BC287106EF0EA075B3452B4FA97C665C77C1B828CBA6
|
||||
:152E8300DF4A33FDBC21A44668AE836B6D4276775B10E7515087
|
||||
:152E98000ED3BF615CC1BDA0221ECAD933E1C99B5F6A031880EB
|
||||
:152EAD00A64F035CA7744EDBA93EB4EE79ED8AA806ED68A70154
|
||||
:152EC200384B5C5CB13A2C6C87F2625B27D9BE52B42D3E2908A7
|
||||
:152ED70068EB74DBA8D0FD02F83F306AB9BF6EBBBF3D3A95CFC1
|
||||
:152EEC00073217E75CF311FB693AE99AD2116F77B3AC96F85E05
|
||||
:152F010069EB97BF5CDA8AFA10A3B9879485A71F504A4E3DA5BB
|
||||
:152F16005EC7CE8417668FA964672DA4DB76067354D780F4F77E
|
||||
:152F2B00EAF95B9E3616724F42F81943481C68C3392CE63D7D7E
|
||||
:152F4000CB295DC894B61EBAA77419CA26C447A4B18349570694
|
||||
:152F5500E87C58C7BAFC61EF6024781CF2967EAD617D24843B52
|
||||
:152F6A00F6F8A4807B23D2B68312C1FFC383CF431F2C978753B1
|
||||
:152F7F0068DBBA4C1E4CEC4A680AD7A3411FFDA98E3657E38FD5
|
||||
:152F940031769F80FB095A6ABAE13503E2EE78496E591683F8DE
|
||||
:152FA9009BE3AB5B518EA1BE251DD0F9CC578047BA5BE3D9FD8E
|
||||
:152FBE00AD4C3FAC4F63DB8370EC3F6BC19FCF1C80F63348B612
|
||||
:152FD300299A6CDB31D4D7F461B20BDF44FD0C64DBCC30F4B3E3
|
||||
:152FE80084C6036D25A645F02B30AD15BFB85F266476431E596D
|
||||
:152FFD00B2C55A9D49EA9C00380A65C9862AB643EC1FFBA6308D
|
||||
:153012006CDC88A1CC9D491A572534F2CF803FBA512E9C6ED029
|
||||
:153027007431CEB77A4176C47E32DD306E2C0C66FA8F5E742F22
|
||||
:15303C00035C1A536FE40509E0E98232CE60BF0AA5B52CF0E088
|
||||
:153051002EC89765F6184F15CEF7A47411301002E09E1FD42243
|
||||
:153066004C3F9EA67929F0B3EDD153CAE9DB4B5BD36C504927FD
|
||||
:15307B00762B171BF965E9E8B052951C51776DD5945D1D6749C3
|
||||
:15309000B694CCFBD39D4BEAAEA13DA3506212D762BD8B92B8B7
|
||||
:1530A50027A8D766A84ED69AB680F67513B466DDCEA32CFDBCA3
|
||||
:1530BA00CE75A38EE113C6AEACA6E07AA190D903E9B6219E69A5
|
||||
:1530CF006FAFDABCDFA8351F369A0037B550D75C298805108ECA
|
||||
:1530E400FDB349DE46B63C280F49439B4E42B57C9F4E36F7D6B9
|
||||
:1530F900691AA4D39137F0F1437AC4FC1EC4DD66A00D4E616AB7
|
||||
:15310E008F8A79BA4E4E908E5AEC71C66A70BF3F74846C05F0F8
|
||||
:153123003D432AD469D4D5B3534D95B1D9FD23876BFB29ED8BE7
|
||||
:15313800FFC6FFF0618EE8427B1E7EF311D203A45B7670CD1FF4
|
||||
:15314D00FD5892F4B5B0CED6FE478AF63F8CEC88526D0EA543D0
|
||||
:15316200E6231969A5A60AD76B6AC91A4DE565CD1005DCD3DEE3
|
||||
:15317700A3354577B7E1B9B1C000B41F98B75627D07DD808DA47
|
||||
:15318C006E3CD36EF1FDDD86DF145BD18FEC8D16F643D2B4E610
|
||||
:1531A100EF42DCE446F446A28375C69963FB34D4CBB6CE365B69
|
||||
:1531B6007720FC02F2E2D6A0CE5E86E8C7A50EA8C14583C60317
|
||||
:1531CB0051EB5C2CAE9DBB7A2CDBCB3716D921E03EAA912D62AA
|
||||
:1531E0000969AB7FED20D93284FAE33A346F022FCB9D277C7B31
|
||||
:1531F5004DBE57A4B9439AF6195CA46B6ADDB101F35C03ED4235
|
||||
:15320A0021BC9CF945ADC95C102EE6F1C8DB918EC4DF0BBC1DC8
|
||||
:15321F00F8FC86D25EBFF9BA4176DBFE11DBE190B1E5CD7CA012
|
||||
:15323400E54DECBB162D10D77E73A7EED246546FA7B5D7EF02FD
|
||||
:153249001E81F7CB886C64A9086D65211B09231DB5A236AA591F
|
||||
:15325E00F4D2D3A4F375AE9FDA18D00FDD3CB3F45F5336DD9182
|
||||
:15327300CE9806DD48D7B934251AD8F478271CBF5B5AFD4FD299
|
||||
:15328800A29C6891B6F7796668F28EB4281A6B1D3AE8DF477B45
|
||||
:15329D005995A1629AF8E2EF0F93DDEDD8C0E4857BDEDF26C538
|
||||
:1532B200CB605C1DD0D1B636F2AECD5F2C6D9DFA2F871F59FCB0
|
||||
:1532C700A31A68E65BA4191CF04DA421D6D5DAF3B1CAC0F230DC
|
||||
:1532DC00EFC2B9A882BC64D1A5A688269B099E94657705C27175
|
||||
:1532F1005F5132771A9C9CA4F6846EA5C8BE40A4287DE4930561
|
||||
:153306007D5FD2134EB309D2DB6C42DA0F4C28A2EC26DE1C225F
|
||||
:15331B003D404DAF895ABCA8D00FA1CEDC061C8FE17BFD29C2BE
|
||||
:1533300001F45B7FEA0F567DCD39D76CA18DFBEA60AABF06645E
|
||||
:153345000199650E8658F660949907AB7F9BF7C07712DC93E0AA
|
||||
:15335A003FD96DA77FABF8CAB9D9F1ABEDF838AEEF7FBDA84C2E
|
||||
:15336F00D4C780F947715AB2CF45771668FAC57BF8655DB87E3E
|
||||
:153384002E1F4DDC37754C2985E9062F8FA4D04E49B9FC448ADD
|
||||
:15339900EC86D37E5096CE544AF22198B72475D15CD27AE3FDB6
|
||||
:1533AE00790FE2417B30EF999B67316CA4770869BBE407F5F373
|
||||
:1533C300CF6A2023E96403C56A877F6750DBB56CAD4CEF0279DE
|
||||
:1533D800B115E4A2F7D236A79F1DD193AE94CEF6F1BDD3CF6A0E
|
||||
:1533ED0046D29536BAE45DC6EB17B17F24ECB9C980F11CCA42CA
|
||||
:15340200407FDC5F95A18C629C5C787A363E717FD796672D5DEB
|
||||
:15341700687D8F8EB23307FD0BEB086E63F5DF82BC188A914D54
|
||||
:15342C0074279FEC8F67F2697C2D2FD4E2D9A16035C8F103FAC1
|
||||
:153441004928F36E16D798194AE3BA986836E9A5C7C3EAB7121E
|
||||
:15345600CDE1C1F6F659B26519C375E276EAF765DCADC067AE49
|
||||
:15346B00D765339666D22B862034A8B8D66CC9958BDBCA61EE8B
|
||||
:15348000E2AA53A80CB4878769DC0361B5321A8E944399FBEB54
|
||||
:15349500AF6DAB3565181B9BF46A33A47362A73AF895B0E6CE17
|
||||
:1534AA00C23C31D76E387788A0EE07B374D041DE6C0CF3B8563E
|
||||
:1534BF001DFBD424D36F191552B87FF857F43557B896CDACFF5A
|
||||
:1534D40057DB7A174D363F0B013F6B5750AEF7C95C88E62A504F
|
||||
:1534E9000FDEB11D937B64B226BB47ADB1EF6FF0C3388DE3317F
|
||||
:1534FE00CB7DC7F072CFA9AD0D95D7B0BAA97EC6CE6912FB759A
|
||||
:153513009B9F7B59DD29BB5B51560C01AFACE526D440F048BF54
|
||||
:1535280010FDF5D25AF8BA4EED26BBF4C827AB56A26EC011FBD2
|
||||
:15353D00BEA1843605E3BE2F7158F5D682DC52B0CFFCCE6F157A
|
||||
:15355200C8E6F84DAF288BF8E2653067F98ECECC470E8E83CCE6
|
||||
:15356700556BDEAF23EFC276817BD85E18AF9FAA19591A05598C
|
||||
:15357C0007C7A14FB875926FFEE9412DECC8346FBC997F4B99EA
|
||||
:1535910026FDFBFC5BCA34ED6F25D3C45ED04CE77C39F21CC0B6
|
||||
:1535A60095D0707B5B39E93423DE8EB5F98FFF07E47F4C5B0B28
|
||||
:1535BB00B87BA05D776C76109E828943053C05CD2561E11CEEF2
|
||||
:1535D000296D99E44F1C437E1D5C68CE0B835BF79901FA969B53
|
||||
:1535E5008BE8AB035FBF5CFD619C8DB8BA5F564F5EC80B880779
|
||||
:1535FA00AC6B8B5D7766D7BDF63275C734E90BEFBDFE8B80EE1D
|
||||
:15360F00D5C85763BBD2B1D7E7CC6FA08E747744113D5B8AE3A5
|
||||
:15362400C476EB37B0B47623C8F0CF3F35B254968F4F0297D654
|
||||
:153639007C1C8CB7D219C36FB74B1EF505A49F1B77B3B39A97FE
|
||||
:15364E007B91EE4FB862E5CB6A28FBBDC8151D163EAF602F502E
|
||||
:15366300DBC3FE7A05CE67426709A7D8E6703D17D784EB4C771E
|
||||
:15367800AB13A7EAF8D305BC57415A491E48272A92BD18F72EE4
|
||||
:15368D005CB28D1D4AA32E4AC9D4310C1B759D3CA6EA799847E0
|
||||
:1536A2004178937C7B1B7E119EF32BCA966DBAF91990177FAEFD
|
||||
:1536B7000BF263A32DF2BF1AD5E7ED3AC6862645D437CBACD512
|
||||
:1536CC00AC7F9C4B0D4D9E5B61A53F0278F3DB795D58B1BEED6D
|
||||
:1536E1006AF6F5569A0B15C5C5B49847713AB4F7BEE5DE334AFE
|
||||
:1536F60048FECBA5E88FE32588D21FC7FF0771CC8C0D65503E7B
|
||||
:15370B00C5B4E5A8630FB8C4F361B5BBBE4A785D28838C60E796
|
||||
:153720005F39EBBF2AECB2FED3E5F2FC307C7557A525B763FE8C
|
||||
:15373500AE8777A83437FA21F00A90BB8CE8238A144DAAD5302F
|
||||
:15374A0096D079BD7761A31F5F1863525C6AAD8AFB984CDA4A08
|
||||
:15375F00E3901480F1C41E87684CC2B0F7301E3963913D2E5D94
|
||||
:15377400763CC2B108C7A408D9F4288C291A3B618D29563932C9
|
||||
:15378900AB965F3116A06C01E394206F37BA5FCD0BE5192D5589
|
||||
:15379E000E7047A2C956677E580DE31AC6697AD5A1F7A05EDB5A
|
||||
:1537B3006ACD2B733FA0701DC343801F4CCF32CFE97417484EF5
|
||||
:1537C8008379654A2BCD24133E2847CA1C4A639F2B318F699847
|
||||
:1537DD0027B6356C734DF2B3A3D8A6CEBEE1C86B36CC00EBA1A5
|
||||
:1537F2005D5F813E3CA0D37959B439FA5D6B5CDDF3CA4CFFF2E4
|
||||
:1538070006ADF32F82BD5F3659C53C208B7AF62DB0DC719E794D
|
||||
:15381C0036BB98670A5E4BCE6EB27993A523E2C6BB03FCCE58AA
|
||||
:1538310098D136039EFCC73BD45520CFBA07C6D491DC98522753
|
||||
:15384600BB3B17CA1FFC30AE9D511AA9592D9C178D3540BBE016
|
||||
:15385B0086F87883EE96701D8E1B7A716F73849D1FD0CC1378F1
|
||||
:15387000B9D15C797276F9AB12CD4BFFA4722ED1BF09F53756D0
|
||||
:15388500B10A495AACA2BE2DEE75476A58855BFA06E9475E9528
|
||||
:15389A0079B30B75A7825F0AA3AC4B3A51645F00CFE5423CA71A
|
||||
:1538AF003CF4EF02F78CCD6E9AEB94E3BEF81341B47DD3D4FF48
|
||||
:1538C4004610F36D253D9F5C35AB10E363C05797A8EF93B98E87
|
||||
:1538D90052482FC61B8C0BE0CF7F6940B7F412F921679DC02DFA
|
||||
:1538EE006D517F0161685F6F04E340BD704F4F46DD29F0E3E3FC
|
||||
:1539030063C651F487FF17618E7ED64E877B5BCF813F7EC78161
|
||||
:15391800C6783EF0A8CB3A53398234F74FA31D4656B60FEDE209
|
||||
:15392D00BDAC49A71F5450AFB51AE737D2214D100FA83D40DB6E
|
||||
:153942000532DF5B66EE21BB48B5C00B8326C61FDEC26D1FA1AC
|
||||
:15395700FBE170AE7355A66BA9245A672FD0F6C97CCA736254CD
|
||||
:15396C0080388215C75F9DE19772FB2E4DCB6265A4EFAA03DE24
|
||||
:153981002201EB4C23EAB7A0DD41DCCF37C18F49C9C2FE1A2F08
|
||||
:153996009F37EE02BAF1801711FA66BCCABEA3720E7D437141CA
|
||||
:1539AB008B9B3F3CC83F3DA0BEE177F2AD2DE49BB2F38DDBB65E
|
||||
:1539C000677700AF385A86B695E47E964B18B4FE2E4534AEAEF2
|
||||
:1539D500BD9F379B0CC1443FA095D94EE5579BD306CA4392991B
|
||||
:1539EA00813CE3FDB82EB9A3668342BCAA6E637FAD8967CCCFD0
|
||||
:1539FF00F6F3F2678DA341AB7D34429A263337DA02E923905F61
|
||||
:153A1400D702E609417A0BB63F4B236C68A77415CAA076FB725B
|
||||
:153A2900D545FBA3E6EF8C1D3531254A792AFD317043FC83ABCF
|
||||
:153A3E00E11B87BC4B614E70A3B9D7889A0FA4BB4D7D34065FA4
|
||||
:153A5300DCD38BC17F16C215282BE7B36DF1B20CE1009015D890
|
||||
:153A6800519351FACD8C711BE41B07D8FCD85E01572DF015E0BB
|
||||
:153A7D008B362E6508AF85FFD590871FBE8D3077DB00FFE716D1
|
||||
:153A920060DB065C815F37F8F1C06F9E02BF50D0A2477C8E4D94
|
||||
:153AA7005FF7D30915DA5D854FE6979714D18B4378E47103D74A
|
||||
:153ABC00A042F2B826E0FFE5F4E5E83C48448BB958C5D5995BCC
|
||||
:153AD10022D86F4A3B642D4B3A81CD7A359E6991068C52DA2366
|
||||
:153AE600E6869C3C3250667D7A8CCE0570350975C67E4B14E2A1
|
||||
:153AFB00453406F90D215EFC4D05DEA69CC231AD5945BBE28BDE
|
||||
:153B1000E5DEA56CD32B8353CF32E6E4C3360D68999FD8FB05AF
|
||||
:153B25009BC63413FE51074328C0D3A12FC47105C39EB5F48CEF
|
||||
:153B3A005B1CFE047ED99FA0AEDEB2E502C00A3207C1EDD09B26
|
||||
:153B4F00492097DBE9826CF972B6A983F277F46D310DE45551D0
|
||||
:153B6400C9BA280CF32A0B5E8A2FECDF7E6E461F5EC2BB96FCCD
|
||||
:153B7900FB0A75ECFA31D6F1807A030C0DD29726F4F88F11604E
|
||||
:153B8E00B44D64ADF7EBE0CEC03B096F16DE1CBC26BCD3787B99
|
||||
:153BA300758E0CAD3119DE50CE8ACB360D5A75B574E6C9CD7E81
|
||||
:153BB80039DB2DCF7147E7B8E373DC8939EECC1C77768EDB9CD5
|
||||
:153BCD00E366BF9A53FEAF8A74FA013FDDDC6CFB0393483BFFD1
|
||||
:153BE20064C16E531CEA161838AC56D2D9503B1F9873E3DCFA61
|
||||
:153BF70086F8BA48E0D8849ECE219D66F03605EEB3F09E83F799
|
||||
:153C0C0002BC02D0A71ADE2678DBE1ED86578177C34FACB8ECF6
|
||||
:153C2100D004E12DE3D01FDC8837BDC88D784B14B9116F1B8B77
|
||||
:153C3600DC88B778911BF1162B7223DEA2456EC45BA8C88D78AC
|
||||
:153C4B00938BCBFFD58C5D442A1FDC818E8C816D1BF54BF97BFD
|
||||
:153C6000D65DEB9C6B279C5DCE3E03E0576445F89D1BE74F0C29
|
||||
:153C750047DE7314E417908DF427E6310FEA1AC29CBA33CD31E8
|
||||
:153C8A008F00FFC0673A451823CBE545D73C05E3622DFC231DFB
|
||||
:153C9F0079699B7A971778D67C5671076BEC8CCEB778DA4DF0DC
|
||||
:153CB4001F996FF1B23AD6B8DCD11B91D1CE2F8CF93AE48138E6
|
||||
:153CC9009BAE84F11BD29FAB44D9E1D1193B0A20EF9DA91F80D0
|
||||
:153CDE0071793FCA08FAF40AF7F227208EECBDFCF8E48C73B8E8
|
||||
:153CF3009789E311A0D1531C4F8472B7DA67BC41DE597E16F2D1
|
||||
:153D0800F290FC3E9B8FD502BC9B251C0F51BED8AEEF88E3B99A
|
||||
:153D1D009E47F52DD1FD547FCF87DCBD92DCAC23CF6F03B4794F
|
||||
:153D320057EEC6B5306DE33C5CCF1FD399FEA81E80B97B271B90
|
||||
:153D4700A4F8839E0985AB6987B175CCC07B8078905BC9B66F83
|
||||
:153D5C006C587B6A3E8E637ABFE44D511E47459021218D203F57
|
||||
:153D7100AAF330167B2A715D6ECC401B0688E746C9923F10D617
|
||||
:153D86009C385BBEDB378F553C01F965E6E138D3A827696C6ACA
|
||||
:153D9B00A2B109CF137235213A9F7EF662DE539E18E874C79ABA
|
||||
:153DB00054596ED05F5CC12DBF0BD24CCDB76422070F3E5B5772
|
||||
:153DC5006B66FD43D6A7A7914F6D25BB6B98BF74FA030A9ED3D9
|
||||
:153DDA0040987DD1B1A53CC82A3CE4390D79F6824C85E7407863
|
||||
:153DEF00D265A57138407607A62D9BA17C7CC21065EBFED03C4A
|
||||
:153E0400E9413FAA0580E7F3F26306C6AF043E4AF7A59780FC2C
|
||||
:153E19008C770C16DDDF721EF2F8511CDA5E1C6D16587691BFD7
|
||||
:153E2E00CBC63A4570E33883B88C9633CFEBD0665F65039D0EF2
|
||||
:153E4300EC164EF6116FC23CE8CC045BD2E9C07D1EE046FD401A
|
||||
:153E5800A04305DAF9C0B6C1A3DED985BCC7B1FB5D5CA7605144
|
||||
:153E6D009D9CF106EB45FBBCC0EF102E777618E039AA511DA462
|
||||
:153E8200319C7340BDB7CFD89D8D0F68231EE6B9016075D27CEB
|
||||
:153E9700383AD8897BD4FF7CE0E7FB45B9C50890AEA70A7D760A
|
||||
:153EAC00B5E1C0CECBFB691E86FF38C64B368ED6D8703A7A6FBD
|
||||
:153EC100362E03B8BFD60261BE38BFDC5F32D337244FA36ADD4C
|
||||
:153ED600E39AA6F28CE3E3CB5924827BD6796BEF219FFFF2F1E0
|
||||
:153EEB0008F82575BC5BC09BBB57F59EBE56918EAF54EB645735
|
||||
:153F000017E9B4E6B6A30E89C7533C6EDA70B6B225342E4F0ACC
|
||||
:153F1500CCF334D4F167D0F6D8A6AF525E185F405E1F19A77B66
|
||||
:153F2A000BE8FC47570B9D7B00395CFF6662AC13CF44207E1FE7
|
||||
:153F3F00887374AF9C8D779FCF747756A1BC6E1ED3CFDFFC9DFD
|
||||
:153F5400E53F0337D69937272EDFDE0047567BB3DA8F681ED6B2
|
||||
:153F6900779BEEDE60D7049587FDCCA2A74C3875F835DFB5043E
|
||||
:153F7E00F729315CAFCB8E459CFAC6B8D9ED12F5122EC6B94E46
|
||||
:153F930084DBC1DB4BD971E201621C78825DCECF208F775BA70C
|
||||
:153FA8003AD3BD3C543EBB2D76BF9EF7AC063A8AF1A2BAC88FA0
|
||||
:153FBD00E9A87F56A80BCC61ACFA3715EA8270F05D1FA4BA1001
|
||||
:153FD2009EE2636F8927B7D4A8DAEB1E79ACAF707C17E9FAE127
|
||||
:153FE700DC688FCBE6138003E0E99E82CDF1DC8076F2BF1C7DE8
|
||||
:153FFC00CB16AA13EACF3A696F837448EF34A429E63377BF6960
|
||||
:15401100B55751DEAFCBF171ED73D18930968D6D51DA7CD43A54
|
||||
:1540260057969B80F9C2A041F6E1A72D5EEEF415DE3C60489E81
|
||||
:15403B0009D50B3CF77E985B8926F215CDAEFF9199FA43BBA8E9
|
||||
:15405000EA3A46F5AF02BAD9F42D8C21E5C8EFA83F68AA6507E9
|
||||
:15406500DCEA0F17D1164AE4D0ACFEF09BEC21B28F82386BBD10
|
||||
:15407A00C53AEF8DE53CCC863BA12D5BFDA46BD06AC700EB5097
|
||||
:15408F0002CF30EBFDBBC9B6F9B139F4D62D7AD71F5D6E805B09
|
||||
:1540A4008C8F17D1F5908E6966E83A6ED72B45F5429EE3ED1A8C
|
||||
:1540B900A63A2DCCF0CBB1ED3BB42CB45FF0E333686B3FA90FC2
|
||||
:1540CE0041FFB3ECEC5BF5F802B44FA72DFAD8D1CE4A281F618E
|
||||
:1540E300B900B02C84B677A86C76DB3BF99FD0EEE422F8E200AC
|
||||
:1540F8005FBC083ED981CFE24B84CFAE4182AF982F4C4F5B7B51
|
||||
:15410D00C8F8E5E3D69DB37A34B9B1B268CC49FCDE694B85B9DC
|
||||
:15412200AB8F454608B768CB223D9DAF28B43D906D7E81BADD7A
|
||||
:154137005FE5AF95E2D6FCDB17DDAF3E0969020D7CAFF7745A0A
|
||||
:15414C007171CCBB00C3728774E97446E1610E7E10609570CC13
|
||||
:1541610081F683EB92828072A7A6058347FA65909112F78EF437
|
||||
:154176006E41FFD4EF90876F114E1EA37DF073F5C3CB58EEA8CC
|
||||
:15418B006E84B85ECCA72E398C36C1FC5578BF10F827613ECE96
|
||||
:1541A000A4618387FC708F93DC502E4F7B2AC306A5C3B2F461E7
|
||||
:1541B500D4175D5097E13B07AC345B1230A7C77511618DA6D2CC
|
||||
:1541CA00FDBCA87364CFE91156CC7F6BB7A694F49C5713F9BC33
|
||||
:1541DF006FE4239A8275E6214D5DF2C03A841FC74E840561C3C2
|
||||
:1541F4003D8476802170FA88521587BA9EF88AEA631AF0F08C51
|
||||
:15420900F22D1C17EC3CD1FE3CC8C03E4CE7D47D08F24FED3C5F
|
||||
:15421E004CF7FE627BA1B8B1435B84EDBF534D840DEA8475C1C0
|
||||
:154233007B41912E8807A61FD3109F6DA83600E10E2ECE16F0E9
|
||||
:15424800609555C003AEBFE62C3C04BFCF77A67A70AF79421B7B
|
||||
:15425D0000FF11EC2F8013F4C3B50D1C832D788F010E0E289865
|
||||
:154272007F49CF6BEA66C2C301C50BF5431C48782E05F74EF013
|
||||
:15428700CE0D280B6DDA86A0FCBAE0B97EC75EAD65DF04E6FFDB
|
||||
:15429C00AF30B6A326A5BCCACE698B42ECD38D32FF61C79E62DB
|
||||
:1542B100EE9364AF96ECCE74D31AC19251EB6C608AD245CD6D7D
|
||||
:1542C6001AB46D0F7C711FCDC8BD36D3CEF13C18AE55611B6D33
|
||||
:1542DB00C1B934EA1E86DA35F61AE9B58DC2989B4D34B97B3965
|
||||
:1542F00021A2F289B0BA0760AD5726F19E385D977777D1FC14F6
|
||||
:15430500E248C03B44F9639D82FCD94E49FEC4723E26E3789DC3
|
||||
:15431A007D0EE461FCF6E35C2AF628D9BC0D74C886953FCA8CB7
|
||||
:15432F0063D91084B540FA2648DF08E9D1AF56FE44A79307B46F
|
||||
:15434400A74E11C205087F6EC567293F91E666AF6C71E26CC493
|
||||
:154359007200267FC7B495B76EC18D388A60DF00385BE467BB1B
|
||||
:15436E00F88E901183705C2FE882F934970AAB5202F7D2ACF8F1
|
||||
:15438300981FB481000FF9603CD2E77E0DCF015AF769601F6EDA
|
||||
:1543980067F6FC1ADBBC346E97B3AF1F6D3254D3D97DCB0FE76F
|
||||
:1543AD004CE8876D2260E9B05F325FE2388B9E057FC8BFD6990B
|
||||
:1543C200FF901E1F944F7704650CF3B54BE75CD6D9C17D3A8668
|
||||
:1543D70021FF015E6B95057102B9AFA9FED35F53505EF5771D0F
|
||||
:1543EC00B2EEE580303FCEFDD9611CDFB58FBF50C26AB387DBB4
|
||||
:1544010036C2B827DAF30C4B67D09273D066BC9038B0B40A64E3
|
||||
:154416004F3FE61BDA67C151E0932982CF1F4D46C83E04B8311D
|
||||
:15442B00CFEAE8785B6D519E85B90BF05C4A6FF3CFDFD8ED19DF
|
||||
:15444000EB81733B80CDF71CADE934CEA4293E8F48F76DDFA789
|
||||
:15445500FDF632E9F6CF4907ED5DBFDC7A52D4DCABFDFB65D2F4
|
||||
:15446A00DFF52ED2BF7C997491778477AF76EE32E9DE60EF5C67
|
||||
:15447F00DEF49B73F6D3707DA7B8FD01ADA65F9BBDBE31373CC9
|
||||
:15449400F1FADB874FBF53F8FF76FE73C2C5E2F6FF76EB03FFC6
|
||||
:1544A9001FFE47854B45F8F7CDE54BFF67E0B7DB47ECBDA5C765
|
||||
:1544BE00FEB580974916FB24D9B869EA1F94E2B7AD82AE287AF2
|
||||
:1544D3006F573508C7BB56C5EBB6AB74D607656EEF0675DEEA92
|
||||
:1544E800EDAA2CDFA9CDBB6E40F5F7688AC835A8FECA063509AF
|
||||
:1544FD00728BDDA7D75D80B159F236A998DF1F9BD7DEEB35652F
|
||||
:154512001275FF7A70EE12D7502389974B7A3F073C392036A83C
|
||||
:15452700E53D2DEAC3D7372BF53DCD4A50BC4D1D2CF98082F66E
|
||||
:15453C002017F17167AEE2C7F83C77A54A6B0FAB078877200F1F
|
||||
:15455100A9AF4C2AA8DFE584FB28BC59757B1324DFD5DF9450C1
|
||||
:15456600697FC9BE2F7C2E0CAB6C182A0086BD0043A0A87C2C1D
|
||||
:15457B00B70E60C078942FE45F5CF6053BDFE9A27CF3F967F20B
|
||||
:15459000229E150FB3DEB578473AE49D28896B888F3CB3F2BAA4
|
||||
:1545A5009AB10555801B11CAF4AC69061C35288BC416B5F6430B
|
||||
:1545BA007CAF9B0DF4D57F9EEFDD3B3F4934C0759110C0817BDE
|
||||
:1545CF00705791DD9019D81126929358E21EAA1BC074D286E933
|
||||
:1545E40028D65DBC51ADDFB956E52A1DD8F2171DD83A01B66A62
|
||||
:1545F900B181FC1320203AF4F254B6A822C1B45D595499547755
|
||||
:15460E006DDD51680B88E73FE4F3360C8CEA893695ACFDE3E983
|
||||
:154623007BB0DC9C0D075793C2BBA784F99A05837767A3EA852E
|
||||
:15463800F2B06EBDB62E3F2ABD115ECA66F0520F6DA7624D974C
|
||||
:15464D001AE889103CDB4AB62BE580970A31A996B264DF0EBB47
|
||||
:154662006D2EA6BACF947B0ECAD221CC0BF802BAFB1C1890F65F
|
||||
:15467700F5DD372A280BD5F7DCA8CCA53F74226F39ED1BCCF4C2
|
||||
:15468C00A7FAA93D148F3BD5A2066E8AAB3CBB539D07711FE630
|
||||
:1546A10058D06DFF1BF05FD10370427BA9A88CA8DAE31DCADEFE
|
||||
:1546B600131D4AC5A9356A4003BF9DAB55ED233740DBBF41C1A6
|
||||
:1546CB003610009CD6AFB170C1C7B95E996DA0B60D729ADFCD92
|
||||
:1546E000DDA28AF112BCF7C4EFC1BD9ABAEEFE79DCADAAC8AF72
|
||||
:1546F50052C59550DE7577A8E2EA1BD4E192554A04D70156CE75
|
||||
:15470A00C42F0B5AE766287E326CC57FF233AAF844873ABC35B0
|
||||
:15471F00ACB861DCF53E7E9B52FFA1925EB48D2C24C27D9E6CDC
|
||||
:1547340047DFFD684F4A0BABF5A76E51B9931DAA067139618691
|
||||
:15474900169BB08F07E99CCD3AB4A5220C40BAE31D7D34D76B64
|
||||
:15475E0067BDA5DE505F99B7BDAF3EB556D906BC4106FF21F8F1
|
||||
:154773007E1A79CE4FD6ABE250878A72B52CDF8AB29D20263FAF
|
||||
:15478800A3726BEE5429ECC90E080FABC38033A43FB6719C93FD
|
||||
:15479D0094FF03D75B7F0A70A80DA881539F512B4E6EA736B0B1
|
||||
:1547B2000BDAC03CA07D7954EB2BE64B4877A41DE928DB34C57B
|
||||
:1547C70036791DC0D28BF0039EF16EBF1EF84F96DCA5CC837208
|
||||
:1547DC0010FEC1ADD6FFAA8BF900F225C78D71616C58B7278FDB
|
||||
:1547F1006B3856DB36606A85F843BE0773AE054EBBBA1BE290E4
|
||||
:154806003E39C070D71CFD4AEFE3B54AFDC96AC06DB57AB97630
|
||||
:15481B00F4129B6947BF64563B421A94433B0A8A77115E1EB6C7
|
||||
:15483000DB12B6A380067E73DAD2F6C49FAF2F0F6E00FAC4FB9D
|
||||
:15484500B7B35BD7CF0BC6FA39F10ED57157446F5D8F749A376F
|
||||
:15485A00B0B68F9DE8ED73BEF52FBBE87E9DF2C4DABE8A6C6F1C
|
||||
:15486F001FE7019A5FD9A0B9810E1781F688BFAB8916AEDE0ABE
|
||||
:154884006D0BD0E10EA0C30EE2E9C5B428B16991B4EEF5F17365
|
||||
:15489900C29550766CDD14D105DB4D6CDDD13974019AF86EB218
|
||||
:1548AE00E9027CD7B7B6882EEF2BA2CBABA43339D3B7B742BF10
|
||||
:1548C3001E29A213D987863680FE9B6D5A9D063A39B4D9F01E37
|
||||
:1548D800E971A6881E3FB2E9817D3A60D3E2123A006D8A695101
|
||||
:1548ED0016FDD4FAD2E8DAF5EC6ED62B663FD5374FDAD057C62A
|
||||
:15490200FE7A7D79E26FFAC4ECADE4AEFF3CF5579FC8C01DBD70
|
||||
:1549170093F0CE6F6ED05CC07B2F96C5B47207EFD04F2BC4AD95
|
||||
:15492C00C0FFFE42AD5873EF2CBC975F0EEFA9C548F322BCC7E7
|
||||
:1549410009EF4E7D8BF10F3CDF779D8D7F5C13C17EE2E0DF5732
|
||||
:15495600847F17AD6D58F81DB1F15B897C0AC2F0DEF0E23EE01F
|
||||
:15496B00A47F89C6058B66988EECD3DB74B0701E9905CB97015C
|
||||
:15498000CF6286EB7D12BE49E03DA59007DE9FBCF763B7A9F5A9
|
||||
:154995003D5D8A54B254292BB956C1362C02EF61273AFAF6FE68
|
||||
:1549AA000B849D5AA3F84A3EA2784A3E6A8571ABFAD8F537F4B0
|
||||
:1549BF006D8BBB7A11AEC5F69DF2D046BCA5B28BC648F4477B35
|
||||
:1549D40018CE1C05CB47BB9125CED86D8F1F180F75A511AEE79C
|
||||
:1549E900F3793FC429F4FD27A1EFE3D87506A693B85E82F2017F
|
||||
:1549FE008C75FE27ECF8DF82FFFA9779FCFA8E505E2975976B5E
|
||||
:154A1300FC36D4D3629C7597298C2C795F74FC768369A4F38504
|
||||
:104A2800FEFE99F5D6F2FF06E2E5D1A4A89C0000A7
|
||||
:00000001FF
|
||||
928
drivers/atm/sba200e_ecd.data
Normal file
928
drivers/atm/sba200e_ecd.data
Normal file
@@ -0,0 +1,928 @@
|
||||
:150000001F8B0808AC5A10380203736261323030655F65636426
|
||||
:150015002E62696E327D00DC3A0D6C14D7996FD7B3F5AE71CCD4
|
||||
:15002A0078592F3F8DD70F0AA949E8DD022E07F61A1644AA40C3
|
||||
:15003F00012D88A433EE52268844E8924B571792229D1B0F8EB1
|
||||
:15005400013B7DD0C7608813E1640D5E58529C6C909D101DE4AC
|
||||
:1500690016357749A4E4BA8A7227541DC9AA17295C4A2F76455E
|
||||
:15007E00259438EC7DDF9B19EF7831C4A1524F772B8DDF9BF742
|
||||
:15009300BEF7FDBFEFFBDE1B3FFCD3BF7F88B808896E2484FED3
|
||||
:1500A8008890844A880EFD1CB4BBA00DB710128396439B8076CC
|
||||
:1500BD0018DA4E68B51FC3036D16DA1DB8364E88026DE92FBA6D
|
||||
:1500D2001EFE486452BF7C63D90D63AE825E0863FB54E1A984C2
|
||||
:1500E700782F999F6AB59F9E3C49B19D522690D8ED9FFB737D9F
|
||||
:1500FC00FCD38F45DB66F353D2B6AD1433AEF2F2F209D77F491D
|
||||
:15011100BE34E18787275C3FF52678EDF13693B20B7EE47FE17D
|
||||
:15012600E71A20BB45FB4AA95D5E29DC72DD983C8589E52B4C68
|
||||
:15013B00927E7959B9A987A7DA6E4DCF24842D778E97CC7F63BA
|
||||
:15015000F90B6D6DE8BEAEEBF97C299D49C95956A43F7A5BF4D5
|
||||
:150165005F7C512AA1FBB7D87EF4AFBF99905E79919E97FCDF83
|
||||
:15017A00FFB93C759E5BCDF3F48DEFDA29E89C2A8EA109DC0E0B
|
||||
:15018F005FF8FFFE2B387E24ACB3FC6765A432BB6F911CF4C674
|
||||
:1501A400C1977CFA72F2308031121A8EE3BC3E026FE14E96FF67
|
||||
:1501B900025AF9AA21793BD46B5B3B1A708EC8A429FF1CF1557A
|
||||
:1501CE003E4F7C81FDC4977802FA5DC447C2618EEBEA932EC057
|
||||
:1501E3004BB79000C012130F873C52EDEA50657DA14AB86BAFA6
|
||||
:1501F80014D4B75C5C467C1D4F126F20B8231E269759EF9EFE32
|
||||
:15020D009D846F61249CE1FA03844C0B6A716FD52F20EB9C6518
|
||||
:1502220035C1447C7AEB6916F59268404FA9249C341086C4F6C2
|
||||
:15023700182477ACC79FE300570FFC87E3FBC3A4657AEB6A1692
|
||||
:15024C0085F4D4BE7FB34AE4F5AC7D7DB3FA3C213546D2DD045F
|
||||
:150261007C32C81F7230EF6A9E22B7A8B81EE7116EDFCCCB8A9D
|
||||
:1502760067E549751FF5B490DC6C5641483010844C26EF66BEA1
|
||||
:15028B006067FCC3B9C4E721F3D53DC3EE1669F72655BAB04CF6
|
||||
:1502A00095B6AC654B008EF03EFD6EBA6531EA08F113F958A63E
|
||||
:1502B500F8F4EB015853B966BE7AB950A8FEB04D8DB4FF933BA0
|
||||
:1502CA00021254BC2478DA75DB3C456FC2D306E429775C5F2546
|
||||
:1502DF0078A202FFB7626115F9D9AB95B5608BFC601B04DD5402
|
||||
:1502F4000575C0F90BA1C39DD5640A91FBF4DC8A2D0DE780D715
|
||||
:150309001DC0AB3D1FAB26E3C3487898BD07DA0F053964FC6180
|
||||
:15031E00B09F6E2C85F4EFDDC054B2B33F93978886ED30B49447
|
||||
:15033300768879E085CA723BCEF75CC37918AB1763BB718C8F81
|
||||
:15034800E218973A503F887F41CB78FCF545FC0256ACB3E8DA10
|
||||
:15035D0034052D8BEE84341DF8D924F1874DFC62BDC065D1B458
|
||||
:1503720069396575E2BF52823F5CC47F03AE9BF17F2BFD283F5C
|
||||
:15038700BE7DFE1BC41863C362AC4325B1FE8C3D3EF66ED31296
|
||||
:15039C00F6BE39FF0257281DAF69ED17F8883C2F83386A5A1923
|
||||
:1503B1001BB5E418C30B73E3E48AF573539E9BF37F2BFCD76E07
|
||||
:1503C600827FCCEEB1FE1E1B7F838D9FA45929AE521C387FCD8B
|
||||
:1503DB00E143B62C02A73CD433A10CE3F647A7B91FAAFA55D204
|
||||
:1503F00030CFB4AD06B685FE0DBED990327DD38903EC5BB9A572
|
||||
:15040500685F6F5587E09B3474B0AC44A2105B784D2CAD1ECE76
|
||||
:15041A00B85B80BE512D77A9570A85A0D33FD6FD99EB3BC4FAF6
|
||||
:15042F00CE09D78FAD053C57715DCCE12B18A2352F4BE4DF3E26
|
||||
:15044400A3E73F3562F9670D7FEEAC3AFD034D21B14BAC4EB966
|
||||
:15045900475D4C7FC5F6DC3B9020F2BF81EF26793FC4F5605035
|
||||
:15046E0089631EE0D00FC49222DEE3788D3E00FDB481E324B744
|
||||
:15048300A8470EEE8A93DC7B10B366C4F7CDDCA178E9E3ACFDEA
|
||||
:15049800FD956A27C4B7F6F7D7837DE688787987152FBF0532CD
|
||||
:1504AD00C87598AB92BC1BCF26E134E7D056692EE07F3ED0CF67
|
||||
:1504C20033CC96D2CAB56AA12CCB24D72A55EADDC8BAC949C5A3
|
||||
:1504D700A50DB0EEB2E30AC28C421A3D4C5E56C05E0CAB886E6F
|
||||
:1504EC00F23A8C67712DF4FF45113C02DE68FE6D03E4309096C9
|
||||
:15050100DB45AABB203749D1BBD5BB80A7629CBF17F86C6701DD
|
||||
:15051600E06D6788F8BC40FB933677C4BBE135950CFEDCC09CF9
|
||||
:15052B0087FC728B5FC455F5515EED2E3BA9A05ED65592181934
|
||||
:150540001C30B244C0E918E7BB519E705AC4FC2A42FC2496D294
|
||||
:1505550047B7F635873457A377C309F0B30106F089DD3F9C0F86
|
||||
:15056A00364FF16B85424D9DF26B359AFF9457B94EA8B1FCDB9D
|
||||
:15057F009C84327177E57915E18379C83D202BD2385A0672CBE6
|
||||
:1505940003461053742C63CEC97F32C0F601EF8697D559078ED5
|
||||
:1505A900C3BE4D097EC0EE19B0BBD8136BE99A8829F3A21ECFAA
|
||||
:1505BE00CAE3AAB013E634CB4601878D1EADB5725A02721ADA1A
|
||||
:1505D30000748276C8A27FA15F800E9016D959D40FEAE5975DB2
|
||||
:1505E800DF079D844D9D583CD83A09002E874EAA854E56AC5F7D
|
||||
:1505FD002CF0900C0BB60AF9C00FF764AC07F676126B984CB013
|
||||
:1506120055E82BFA3CD80FD619159837071F671F423DF547CC48
|
||||
:150627009D9ABBB94EF94FD5EDFED9920D9ABB2948DDCDE3ED05
|
||||
:15063C007B3FE4F1ACE201DD96CA8CF2A1DC1EB2006AA3679877
|
||||
:150651000CB2CABD9BD88E3B896FAFB6B1C9BBE105F0796ED6EE
|
||||
:1506660014E1A5ACB002FD803221E3D52B26CFBC5F7F80DEBF28
|
||||
:15067B00988492F15AB2470D8C32C12FE9EF63DDD98560AF85B3
|
||||
:1506900006ECCF8CF5F4E05E053D0AD9486CD0C0F501D8C35394
|
||||
:1506A5001C72BD05754ABA6D6364519B29DBDD753F5B485DC4FE
|
||||
:1506BA006BCAFA6BF53A79F216B2E641D6939396B5F5DBC477B6
|
||||
:1506CF004CC8FA30C8BAC39435047BBBE1F7A67CB1E3FA532095
|
||||
:1506E4005F6DF63BEAD4489390AD2C36430DE9A1E66F635D12CB
|
||||
:1506F9003B20628096FFDC38EB2553A0E5B81F85AE5007644910
|
||||
:15070E00D12FE4BE8CF5801EFA8A7AC8BD6A209D523DF4801E4A
|
||||
:1507230074D043D0D24325E80169074B68831F4E194FF38472E3
|
||||
:15073800C0972AEED189F7E6346B6F46C6E6D1C78027EC8760F4
|
||||
:15074D00EF3AF72BEE55C253FAB5151EC10BC417D8AF2761BF9D
|
||||
:150762007ECADD9543AA6BE659D5D53524F6EC11C79EED297B45
|
||||
:15077700C5DEB37E9C3F52DCB335E8FFE8D7CE7D3B0BE05046FB
|
||||
:15078C00BF4346AD9C4C71EEE7B1FC943BCDFDC1CBF1EA46B191
|
||||
:1507A1005788F48AD452BDAC53F4AB5DEB45BC8E06486C8EF056
|
||||
:1507B6005F6EE65EC88572F20A93D6ACC59C974940CE2B4C4D3A
|
||||
:1507CB00B05EFDB8C2662694C06E880F77A4541FFA4FCCB0FC60
|
||||
:1507E00087C7671D931ABD55AB61BFC6581BD118FA4ADA05352E
|
||||
:1507F50041586188A322F20CD3A03568598B1F7CEB04ACF36627
|
||||
:15080A008FA9011DF3FFEF0D51CBE01EF84BB6DB3E6764B09B53
|
||||
:15081F00E9E04BC89773FE51F0AD1524C1B6E9879693F065A3B1
|
||||
:150834001E6581396FB61DCE4A585F7C435A0F9AB4B278CE7380
|
||||
:15084900CCAD4A8E3621FE34B9357E5D33D7E74BD637265BC568
|
||||
:15085E00FAA513ACA7DA492677758B1C6DCF47110FCCDD958C37
|
||||
:1508730034A1FEEDB501FD984A61CE8BF0B1B9803B950925C1C8
|
||||
:15088800A6164C8305238BF5A9CC647C22F0A6D48CF11F7DAC82
|
||||
:15089D00167D35D76F94D64FEB1E76D43FA2AE642C8AB58F2916
|
||||
:1508B200DF196CCD7ACFEA53689DF58F63FD1C0D7D1060A1FEDC
|
||||
:1508C700411CD21AA61EC43D0BF2E27E1A572BE3F1F93E2FEEED
|
||||
:1508DC0053C31FCCC6F17C5BA75C51FF86BE06E7DDA19D24F6BF
|
||||
:1508F10004C39C9E7B40D4893C8BF50E9C875D33CD9A270A7153
|
||||
:1509060003EB2B92DB8E7006C2C9C119702E7E5A9C8BA747FA68
|
||||
:15091B00C59938181D54B1CEC0F544AE15676212AA8F4F8F3447
|
||||
:150930008873309E89CB8066FBFEFBADF3F0BDEAF32EFB3CBC70
|
||||
:15094500D43C7BDE10C78B67CF89F2349E3DDFAA29397B62AE9C
|
||||
:15095A00B6CFC3B992F33087986B3F373B0F7F4D8C7C4CDB1875
|
||||
:15096F00F11C3CA3BA601DC6BA3D10C776BF9B56BC55C7314647
|
||||
:150984008A5A40C43898C739A0853569CD9CA4A7C98449A13EBA
|
||||
:15099900A222060A9B891858EDADFA15F8C48098DB4EACF36D2F
|
||||
:1509AE0091DF1EC423D60B9D9B7024F62763F7BB19657A24259F
|
||||
:1509C3006C00670103C726F7FCB3217C16EC1BA8492A585360D5
|
||||
:1509D8002C47BF7906F9224BD94BA843FB5EE0366C531F98D827
|
||||
:1509ED003613DD0B94C796AA28EB3EBC178056DC0B403BFE5E71
|
||||
:150A020060693CEEBAF15EE0EB6CD6FE17B0D944FAE413D8D15A
|
||||
:150A17005B750FD830CA2C7939CAEB6D9D6DE290470CBF43DE6A
|
||||
:150A2C00042153049FAD7D967D070C8499DC73613C3F729F6190
|
||||
:150A4100E39D01786D5BDBF1E9CE478AF1C5E5EB107ADA94DD30
|
||||
:150A5600D3689F51E58D49A5A67590C5800FAC0FF04CAA79CD1A
|
||||
:150A6B003C8DF05CE80DFC0A748363EE92B161475C9A41E7F61F
|
||||
:150A800060CCB93802B97A659F1AD0D07F1A18C81E708580C77E
|
||||
:150A950031BED23C564648A3E66944597640DFB5C63C7FE1F838
|
||||
:150AAA00E1DA2106B508F7C82F412CEF33EEA4A70D29B9C7210B
|
||||
:150ABF0097CE104EFF119EB74C5C4B268B2B79AA880BE087AD61
|
||||
:150AD40073A08BE8784634F0DDA6F34DE4D11DF2F43878D02783
|
||||
:150AE900290FC2651E30E5D11DF27C2DAE1279AE96C873F536FA
|
||||
:150AFE00E5C938E479C7C1436692F2205CFE7E539E8C439EAFE6
|
||||
:150B1300C55522CFB51279AEDDA63CC991A23C67478A3CE0F891
|
||||
:150B280064E44138D99207FB4B268BAB449ED11279461DF2440C
|
||||
:150B3D00ADFB0C19F3B9E5E3750A53EFFB09D2357D04DF975A45
|
||||
:150B5200EF19EBBDDE7A47FAF83E43BC2799F065A0B1AB4CB4FF
|
||||
:150B6700ECAAF59EB6DEAF59EF17ADF751EBFD1DC0B38B9EE038
|
||||
:150B7C00D8D760AE93BECCC5BD03F47BE86B5CD403D04FD337E7
|
||||
:150B91007994DEC5CC73C5592303EBE05C51334BF33407939EC7
|
||||
:150BA600667FDED3EC053B606D8F3236D05302CF7658BB9ABEDF
|
||||
:150BBB002AF074437F337D83E3FAB74C3E38D2DC4E777313AFA4
|
||||
:150BD0006E0C025EBC6B5841DE6167B6BEBC5CDC59004C15F5B9
|
||||
:150BE50034E2D80B5B5F136359C7D8335BDF1463C8933DF6E484
|
||||
:150BFA00D6BDCB6DFC7751D37E886796E8A7F9768B3EF2B4B65E
|
||||
:150C0F006E60998DD386455C36ACCD2BF216B26011EF5F514FEF
|
||||
:150C2400B3B84BB1743AFC88A9D39CF8EE61CA3EC3CE1F304F8C
|
||||
:150C3900C7CD9BF4EEB6700C9A638CFF9D09F3A1850369071099
|
||||
:150C4E0007CC651F2DCE452C3DC6617E1DE80F75C7A01FA7072F
|
||||
:150C6300399E8FCE099E2E0B3E1FA5CFF15EA1DF1EE3F48870DB
|
||||
:150C780040FF03D73D4D7B67526543E88D85CFE692CA0F962315
|
||||
:150C8D001F9D424715509B2E592E352D0AED5EC861EE6E319754
|
||||
:150CA20011FC56243D8DB3DE949A82A1830B0D98AB5A6EF28FE3
|
||||
:150CB700FAAA807D72FD2BA9E98BDAE7161E82B93F367B9A2BEB
|
||||
:150CCC00B4F2C6CF2EFD2182387F57CB22B8FEB7BD831184FDD0
|
||||
:150CE100E0D269C8FB3B044DE03FA38B7686E019E4CCC444BBDF
|
||||
:150CF6004BE026E1682629DA84E0036A8E0CEE89E9172EABAEBD
|
||||
:150D0B00F735D87FAFB0CA60268EFA31D75D36368BD6D41109F9
|
||||
:150D20006B8602EDB495C755D7FA47A0F6D9CFEEC05C097A3363
|
||||
:150D3500E9268D0ED1EE303A45DB23F4590EE705D7FEC701FEB1
|
||||
:150D4A007BAC2A1806782A6219C20F8A36619C15ED52A1F32969
|
||||
:150D5F001700FEFD7F10B5D5D4600CE0A386C977D2E887F6692B
|
||||
:150D740061875D467AA498DB4808EAADB0226CB30D6C93A007C3
|
||||
:150D8900B81CCCC1D845B6B4CCBA2B17ED45A301DA9DDF273E14
|
||||
:150D9E001E76B7C0318F1D182DF8D1971E85F14A7A02EA055D0D
|
||||
:150DB300E8AF0CCE160BBE8370E6BEC25CB9CD82457D5BFB8D79
|
||||
:150DC80061FF29A029FBDE533B9625AD6F6D507FC1B896FF8DAF
|
||||
:150DDD0011681D62E8C0DBF3AF1BF0CE75E02D104DA9B20FCFF3
|
||||
:150DF20039EF1B121D323E69B0F8A1B3D9F52F4D1A4761BD6C70
|
||||
:150E0700F1C32D7E8ECE29F283B9EE030B36EBE0277B0B7E623A
|
||||
:150E1C000E7E36033FF0CEF904FC6C76F0F39845E33DDC47160B
|
||||
:150E31003F598B9F4A073F98AB5659B0E86F363FD8BF193F51AC
|
||||
:150E4600073FAB811F78E7C909F8796B71919F8FBE30699C1BBB
|
||||
:150E5B00C19C66F28334909FD6D9457E30D79C3161052D37C413
|
||||
:150E7000D68EE694310A676A3BC63A3F0F6874906BF434C4E84F
|
||||
:150E8500CD4C0EDE173FBC2CCDF0FF560EE74E2AD65D9091B78B
|
||||
:150E9A0062CA7F8CE0652EF17B1D79334EFB7959D57995E60779
|
||||
:150EAF0058714DDAB868C5631B5601B86ED8DB7E888DCEF53124
|
||||
:150EC400DACD37037D05F850E85178AEF0049DCB77D105E03353
|
||||
:150ED9000DBC9346C056AB799DB24D35C8A1447D3EC5BAF55427
|
||||
:150EEE00A207E093F41C4F53C60FF79E663564409DB6A597D514
|
||||
:150F03005EBAC23AB67C97EDA99DCFF66E59C8F6F52E639D97C5
|
||||
:150F180056B223B56718DED37CFCDB32DCD30CFFB7E7D9DEF32D
|
||||
:150F2D00ACF2C231F5E0A5FD500FEC5FE2E4EB9D30F155D1D593
|
||||
:150F4200CD6363B176D6B090F8FCCE3121403B3B7A93F1CDD75E
|
||||
:150F57000A378C2B5A3BC77889FA09D44FB08EB7B33B9B26184E
|
||||
:150F6C00875AE06A1DF179434911ABC046F2DCE4318EF6C5F74D
|
||||
:150F81004F46AC1A413EC789CCB844C51D2BBF8AFF6810E6FCBA
|
||||
:150F96009A687BF8A8DBAC7586451B66A4007551554AEDD6878E
|
||||
:150FAB00946EBD5F9926A5D4236543CA91E88072186CF9ACFEB4
|
||||
:150FC00086E27DEF0FAA8005E0837A9722AF632AFA4185833FB6
|
||||
:150FD500BC8390D890187F52AB6CFCC4FE770F2B6EFCFB0A33BF
|
||||
:150FEA003F6A63B934C991E73990C72A925F35CC4A3E8179C4C6
|
||||
:150FFF00CA8567451D63E6AFB366AC039D99F98F5B303D026617
|
||||
:1510140047314F8AFDF09845277B039D3BC6D131F3E559510FD6
|
||||
:15102900D97432169D0F2D3A264C0F33E3709A87AF12D21B76BE
|
||||
:15103E00B5941F48A981E83CBCDFF3FBB5EF468290ABAE5E372C
|
||||
:15105300E5FD40FBEBC6CBD0F782FEEB14380779061290B39AFC
|
||||
:151068005DA1745CA678DF1B66C92CC489A4AB65333D652C022E
|
||||
:15107D001C92FC3DC8435D3C14DD1F3948BA13788676877AE21E
|
||||
:15109200D23D50A3C5468CB974C4705BBA8ED02E234A0F1A8197
|
||||
:1510A7007C8A734F6AE702DA67605C895D0039F2FD5C069C38D8
|
||||
:1510BC000E276206072EAF93E6A617FA9A9DEBEB9443AA61E19E
|
||||
:1510D100C0B5D8475C147049A1FA78B464BD1FD647E97306D4F3
|
||||
:1510E60010D6FAEE09D7E7FE1173537D1C7909C3DC02A833C232
|
||||
:1510FB00B48BE1DD96413A120AFD2FC3E3C238779A19E470422A
|
||||
:15111000D23A0C3FE46037D6BBB17EC3AB751B95DA39718F365C
|
||||
:15112500DE8FCF5A7EAC8FF3E331FFCDA614D9E1BF55502B8C04
|
||||
:15113A00F928F801DA0F7DB4FCC0805A43E6A9A66CF5A66CD11A
|
||||
:15114F00BE66A73F0768170F6A529384E766C29917ECB1733E0C
|
||||
:15116400F1E1FBBE999DCAC54DC4F7E2CCA422D3F9C236ABD16A
|
||||
:151179000EB096AFEE7E085BCF52F13F2D15B383264E79893719
|
||||
:15118E002E43FF568F0947444B8336DF14F65D1D91AB16A81DE5
|
||||
:1511A300EEF90F79AC71EED71FB2E7F1FF6AE4E8DC07251B479E
|
||||
:1511B800B4FB41BFDD5F591C17FB04E498438E36617E801A931D
|
||||
:1511CD004E8BF5604D631CA2520BD51883B37A0061360998CB74
|
||||
:1511E200D6779F4EBCA3A0247692076973837DCF82DF034657E0
|
||||
:1511F700342F36BFD19B7797884F4E7633C487637EB95B7D077F
|
||||
:15120C00713AE82F17B829C33B5949FE0CE87719B80EE95BEBFC
|
||||
:1512210032B80EE89D71F62F3AF158BF83B9E39073F0FBEF1552
|
||||
:15123600568DF74FFC285B8BFB92DE1B09D2798DCC8A0F3FA1C4
|
||||
:15124B000F35EA629F778AEFE5BBA75C413ADC2F3F67DE75C28B
|
||||
:1512600018E4AB1A1BBFA4CD6558B309D81F7EDE4272FD7C9ADA
|
||||
:1512750003B6C2829520374F16EE10F0BA0AE2DD0B5A5D13D6FA
|
||||
:15128A0008E677FE432A9C9E184473435AF339F8E46CD63B4C08
|
||||
:15129F00104FA67AF42893454EE83FF3BB42A11AEF06B789B5BD
|
||||
:1512B40069B17681B69FD5C84FAB776AE759448333656C9E811D
|
||||
:1512C900F489DC6F081EB09F4B19923C5745DC52FEA88DDBE4E5
|
||||
:1512DE0011F6DA589FA78C2CD058A44D6FACD2A6477EA04D6DF9
|
||||
:1512F30044BE376975CDB67C923C5B2D956F3273820F7BACC455
|
||||
:151308007E7C18BF7D9F03DB65E24B08A9C63AC6E53BA7BEE98E
|
||||
:15131D00C2FBC734D64D747A10725E6CC8C0DA424A0E31D7BBE7
|
||||
:15133200E7D5FF065E7B5CC48BF6C77BF9465AD358456B227E15
|
||||
:151347007A47E366D0D32A5ADBB8CEB237E2A8965F1577D4E057
|
||||
:15135C000C34289F51CB80C60298AF86BE1BFA088773F6B90BB5
|
||||
:15137100E15DD638AE0F26E78571BD8CB2027D19F8284CA5ECCB
|
||||
:1513860008E953189C8702AE3EF17DE059F17F5203D67D685A64
|
||||
:15139B009CD1719F797D57D4368823337C4755D7CC4EF57052CB
|
||||
:1513B0006AA9B9705E9D23EE5933868EDF5E760E88EF34384755
|
||||
:1513C5008E0DB1CBE2FB0C65B3C8A9E508432C18F17DA56F880C
|
||||
:1513DA00CDD2BE6A126B89398EDF4DF4248EFFBC89C883064DB6
|
||||
:1513EF00A6F03B8821AF1950A330EED79AC5B817DEA980AB6D72
|
||||
:1514040092F05E22F6BA7118FC026582FD5F8D7715B3A2A71B27
|
||||
:15141900C59D456ED038AC4942EF788FF70CC43C5BC6A0252368
|
||||
:15142E00CA11B1F27D7D01CF75FF43CC13064755A4D993BC91CC
|
||||
:151443001988C3038611280C0F1CD6E045326894648038C168C9
|
||||
:151458002556E40688EE7B5CD089266EB450729055768B5B5FCA
|
||||
:15146D003081041F5CF34C206BE1DE84CD94932B2203071A3D8B
|
||||
:15148200ACCBDE79BB68A5AE721677C7D5B9DEECD69E4779615E
|
||||
:151497008D6CDC65AB38E7BEAFBBDFCC9BC9A0E0DED5FD987AC3
|
||||
:1514AC006FBEEEF77D5F7FFDF5F77DDDFD7547F5F31B315A88AC
|
||||
:1514C1001BB88ED10BB618607BCEF31C0253B2E941318E59B05A
|
||||
:1514D600E751CCF18671A03F4CDCB28FC53814642D3F01387A39
|
||||
:1514EB00433155770FB3BC0699D9A328ABEF954FB03595493179
|
||||
:151500002F4698A20CB3BD8A291B2C2060E47206562A6057702E
|
||||
:151515006D46C454576DDF30DD1B292025CAB0698761DCE8CF5F
|
||||
:15152A00819102899467C3E8203CE5C8192A83AFA9C032D15E21
|
||||
:15153F00DC8F21F4769E6B22BEBFF4E59C7F70B1EFE3D4E291CB
|
||||
:151554003FC5FFF019EAE881BE606BC0316AD10929C3F44592AE
|
||||
:1515690030FAF4188BBB3F01BB07D1C3168CBB93E9B888CB7601
|
||||
:15157E00C1548AC935947C3DCD6728F916EDE819566B6CBC2309
|
||||
:151593004EF46F7DA14186B319437E5C0345D9C8C3B42F1C65B4
|
||||
:1515A800F07A019F12B1117B029F3EDC2F92193EA6035EFC1FE0
|
||||
:1515BD008E1956FFA7447F768BFE64BA60C90D6224A00FF3A197
|
||||
:1515D200D7696F826C29B2D96359B4C7259E72CEF3BD2FD3E9DE
|
||||
:1515E700C559F685CBFB75B6CF555344C27ADD1915C74C0DDB68
|
||||
:1515FC0013E730B2613AACC00E2BC6711C376BC1E339C47B8D20
|
||||
:15161100CCE1A1E409E0F7049D3FC9E4EED3053F0C0636CD57B4
|
||||
:15162600191773BF8421C3372C8708FA8C3DC3678CD9888F0E7C
|
||||
:15163B009BF9EA933CF549BAFE5B5CD600837773773ADE8E53ED
|
||||
:151650006931CC3E443BF19DB5C90BBC5B6D82F729479CE97FDA
|
||||
:15166500C09B29DF579729B7607BF3C0A40DD3614E3B2C67FFB1
|
||||
:15167A0091E9BB1863D6F8B58FED8E9CB18D4FE7C7710DCBAE50
|
||||
:15168F00F58D9EE71BABEC255B19C674ED8BC82CCBA6A03CAC55
|
||||
:1516A400727C5F72A1536BC8299F85B4EF47DA71A3028C776FB2
|
||||
:1516B900C4B945C6BD0EC0157E28639F5037702C5865E5F6325F
|
||||
:1516CE0090834BE0614F1B8EA21C1C56FBB9FE71989E0B037C5D
|
||||
:1516E3007B2C983703D3F3C0667AB261D8A62E5B9B2D58671E54
|
||||
:1516F80058A1C70ED38D4431D8B685423E246AA0FDC0F1E915CD
|
||||
:15170D00FA1E4FEB3BC0D017D8D63A4811616B1AA8BF5EA6BF42
|
||||
:1517220031C3D2F39907713D3C418FC2B8F785B86DCB8743BE31
|
||||
:15173700611C5086397BF230D6331B6CF350B4EF681FB7A15DC2
|
||||
:15174C00C1B526F8EEC0C2B8CAF0839EC14490E683CB36B861D9
|
||||
:15176100AFBF203F5C0678AB43D8DF626E732D99615C500F659D
|
||||
:1517760079E5E5CDDFD6591F27B43E7DB8EDC0C284CA7310AFE4
|
||||
:15178B00436EFF8BB8B09D5FD507C68DF0F58D7165F76B42D8B7
|
||||
:1517A0007BCB77737B9C2DEB6C7B9C8717F886F302710A3E0187
|
||||
:1517B500F76CC4C7F6C3F3C8214F7D92AE9FCDDF6E9BDEE11865
|
||||
:1517CA007678A68F71E2993EC60B3CD3C733C903DBEF9E3EC6AB
|
||||
:1517DF009D9EE9E359CA8161FD57ECDF66E6BC221EC371CE7D03
|
||||
:1517F40003CA7489CDF7C15397785C62129B2F9473CA245B99AC
|
||||
:1518090037A7CC652B5B905356642B5B2C0B3F129834E23DC8D7
|
||||
:15181E00972EF2CBAD582446838A3390893D6294E5EA425F6464
|
||||
:15183300628FA8C6E38C9CD853CEE4C8C8BE924647DD2AE853AA
|
||||
:1518480098670742867C3B2105072B357D32E5763A3AD5367878
|
||||
:15185D004A20935E85AFC3FE0874EA70F4F7E5646A805EE941AA
|
||||
:15187200044EC44576EDFFFFFDD5D610F7D86729370D75A835F8
|
||||
:15188700F749EBACBD4DDC2F24EDFA293667688F9E1A67CFD1D9
|
||||
:15189C00532CC7AA3D796A929DC989D2C446BE16678B410D07AF
|
||||
:1518B10019FE18E539713F71ABF7F3BC65EE67BBC1CF0E829F2F
|
||||
:1518C600051FC9E456C2E466F9EA1AE083783AD5F2CF84EC22A0
|
||||
:1518DB000E263BB47D51C0E307F847F749AB91D6D98D7C8C8CD2
|
||||
:1518F000C013D71B1D0A8B154DFCBF212BF68CD107BF617F17F3
|
||||
:15190500B179E0A4896D045924842C12421609218B04CAA2F079
|
||||
:15191A005E57A33D7EB95EF9E158F228CB033395AEC0D1422EFD
|
||||
:15192F002B0EBB13600702F12CD83D00EB0B9CB66045089B0F62
|
||||
:15194400B05B03A30863FB3A5CA6572E810C4196172F4D9765C3
|
||||
:15195900C37AE2BE700965E95F7DBDEDBADEF69CCBA30F054261
|
||||
:15196E001F3EAA26EEDAEA6C3E2B24E2AE075E9CC0EBDA3CBC7E
|
||||
:15198300C6A17E29E3B574F58DF4C1F5F27B3C0FBF8582DF525A
|
||||
:15199800A0DD1F9AAEBFFA35F4B77322E52E8076B44F4C6F471A
|
||||
:1519AD0012F0344F603BBCAB6F54976EA43DF13CED91447B1A71
|
||||
:1519C200818773F7417BBE01FDD6FF8236297E2A2BA594D97E0D
|
||||
:1519D700B0798EBB0889001CFF4BA4D6D88DEF01D550403A8B99
|
||||
:1519EC0015CD9495EA57D91E33D899FA08AE37478DF001EE1352
|
||||
:151A010095837CAE32FE32F86249077FD8CDD64B0DA837161922
|
||||
:151A1600328B9A4E9A139F72DC7EC09B9AAD1B53F0DFC1FFBBA4
|
||||
:151A2B002E7C9ACDCF0551F70A3C1B20DEF42A9C1E51393DA4D7
|
||||
:151A400083F4D02BDBE92D867A454D43663DD0DB2D709CFE9440
|
||||
:151A5500D3EB14F4E0BFCB2E4F59C8B3086489E5ED5524AB7C94
|
||||
:151A6A008E65FFAA7879434EF95C513E26CACB73CAE789F2E328
|
||||
:151A7F00A2DCCBCA278D1A9A39CF92823652D2A5E2DE9D0B7DD7
|
||||
:151A940074CEF9956E888768D4B905E28CAD55B8AEA977AD2A29
|
||||
:151AA90056A4A02AE29A9E8517D5AAD0BE60AD2D5F60CF48D3BE
|
||||
:151ABE000728ABE7DB3FAC0AD8E01FFFF0E5AB085FB3F5832A70
|
||||
:151AD3007B7EC18537BFFF1AC29FF8DB9F559162DCDBEE373A7F
|
||||
:151AE800FFE5856AAF4FDF4A1E236E974ADCD3F8B4E58F2987E0
|
||||
:151AFD00B2FD338F35264DB4210E0F9FC331989CDD362B3EC2C4
|
||||
:151B12007A3341D7A7D6F2DC19ACDB5337ACCE8C3C12D85FC732
|
||||
:151B2700EC391DB5EC39945967724637E69FEF1B9FA7DCF14B5D
|
||||
:151B3C002977661E46B55EDDAFE2BE0AC48DEEEE8551753D59D3
|
||||
:151B51001EF490E5AB16298EE0799045CF42AA6ED0FDC17369BF
|
||||
:151B6600B9C4D99AC4CD4C1E740FC6284E88F50673CADDB672FB
|
||||
:151B7B0009CA3B3372ED2E9048B70BCA1D65D07FA2CE22E6D307
|
||||
:151B9000F8B73741FD0651FF0EB0FF3EE1DFB0CC07651584EB9F
|
||||
:151BA50013FE5F7261402B81FF8B6C75965C8869DE1C7E1E8494
|
||||
:151BBA007E4A4462A60B7C6CF96F53EEE8D594BBF9CBD42CD1C5
|
||||
:151BCF00BE7511B0D3A03F5976C52BF45442F9839E86927F6EF3
|
||||
:151BE400E84E320BF50CE3600B37AE5FE21EA16CE30B73854FA4
|
||||
:151BF90047980F360222BFA108F02E00F97B9712B7EEE7BABFE7
|
||||
:151C0E00600DE016FB3054F8F31749BFD13B3AA8BEB90CF7E984
|
||||
:151C230002068F654B0C561EA830D07717B863DA0F963E5CEE8D
|
||||
:151C3800AD8CD2D65732F1168577A90F2255788EC2EF1CFC9498
|
||||
:151C4D005EB0AFF01B17BFD65EBEFE85F82EFE12D7BF94C6F455
|
||||
:151C6200BC4CC0A3FFC1E161012F009F5683EF7480CE837E2B7B
|
||||
:151C770000FF50CCD618264DE9DB84BC823E830E9896DCADF9D7
|
||||
:151C8C000796596D9394037406B3ADD4083C4A48D17FA6DC93CD
|
||||
:151CA100249BAEEE22B370AD1BF1FF33CC476702DD31A81376E8
|
||||
:151CB600733F65E191051EF932E76DF493947B90E7F5883A101A
|
||||
:151CCB0007D1210DC7EC646A361B23B837D6F7F7C7198C4CCED0
|
||||
:151CE00026DE9F0EF277F883F2CED48D9AB89FD6377A5C9D2F99
|
||||
:151CF500B1F50E93EFB3454DDC575B6BA3C3D71DFB8DC7C61FD8
|
||||
:151D0A001B5F363A98A53F37A3FE209FA043814ADCA386B8203C
|
||||
:151D1F003C443146DBAFAC0BB01C45CC8D8BBC4B95C819C3C77B
|
||||
:151D340072E8BF303D7CED9BF68A7557BE8E3BC2F70C020ADF8D
|
||||
:151D49002F40BA387EC227CDE7593FDC40FC373E8438D2F3B0B3
|
||||
:151D5E00AFE741D0065A69FA79F475DB3AF0CB69FB17A5E3B899
|
||||
:151D7300D62B1BEC9C14192D20E037D8FA3EE0A0631B591E841D
|
||||
:151D8800CF9A67CD2103EC0C12CA784CD834FCBEFB5EE296C690
|
||||
:151D9D005FD2E40F5F52ED362D6D77D99C6CC448FDD57B923824
|
||||
:151DB2003324A32D66F3191AA37790C120E6EA4FFDFB7095BD05
|
||||
:151DC7006F6E1263BBA482E45D1FE56B9BBAC03B22F026742EFA
|
||||
:151DDC003FC0ABC738DE25C7B3F0CE1078C757E7E0457B08F1E8
|
||||
:151DF100D5BE85FD2A3BAF0F3610F126393E7D19EEC9CB83B482
|
||||
:151E06003039AC4BC933BAAB28C6D6F966029DB961AA3922869F
|
||||
:151E1B007128296D91944EE316F91D6D2C95F279A25230334FC2
|
||||
:151E30000D1B1877EE72A0ADAA6DB4CEDD635E358B4B587EE23F
|
||||
:151E4500A4A9E2B3B8A291C80FBCCAE64201E554E8D13CED0713
|
||||
:151E5A00FF15E847FFD5CFFCD7BE8523AA67B4EB5E466F5CEA4B
|
||||
:151E6F00A49571CE7B38A67B301E13F082484C972B13AC7D8726
|
||||
:151E8400C801D584B1ECDA30C8F6D1BE85361EFAC411194EB76D
|
||||
:151E99006F6E6830687DCBED46FA7D1A3FFDFD997CEC7DE0FFB5
|
||||
:151EAE003DBAE0875E831F80CB601F91173B4D07DF4FDF9375AB
|
||||
:151EC3002604ED1501BE8B47F83C5FC44F203B2E1F9E4F922D53
|
||||
:151ED80047B9EBD5ACFD0B186FC88303FA1AD73F43C9237B8A4E
|
||||
:151EED00F95C4DFF25C07BC351D5E5116B64C0D3C5421DCF3873
|
||||
:151F0200CFC2F2B64D3C470A7DCC3231BFAB653A12D7FF14CA3C
|
||||
:151F17002CDE19DF507FD7261607B33C8E7A51EF7BB67AD5C94A
|
||||
:151F2C00D7F7C04F47786213DBD3D0314F00DB82F349E4A3F77A
|
||||
:151F4100A598EA1DE5FC20DCA2DB2AF09DCC4377C446779BA8EC
|
||||
:151F5600F7B6ADDE7AA08BF5466DF5DA44BD9FE4E16F7DF2845B
|
||||
:151F6B008EE3EA1CE3F16F74F403B5789E06F83BCC746798AD4C
|
||||
:151F800015F7FE1DF04A0619AFB5365EDB05EEF7F3F03A6EE3A1
|
||||
:151F95006197A8F78F7978BD60ABB75BD4FBD7AFE035BA39C326
|
||||
:151FAA006BFDD7F05A6FE33529700F6C9ECE6B7C7386875F8943
|
||||
:151FBF007A439BAFD19F9B33FD59738DFEACB1D1BD68F5671EA7
|
||||
:151FD400BA2336BA13567F5E836E77038EAFB328031AB6D3C5F7
|
||||
:151FE900F68AFB3F106EE9FC7EA87F84C4D23ADFE0E43A7FD59C
|
||||
:151FFE00C1755E6FC8D00E3B39ED8E86AFA00D741B045D8B5E7B
|
||||
:1520130083AD9D0D02474F7E1C14C7ACB516ADE6DA3C3C4FF630
|
||||
:152028005AC6DEB1F18CE771E5E394F92FBCB7473E4D31CE73E4
|
||||
:15203D00157569FB206E94C197C9F5EF6A0B8C33DA41DCA3B7F4
|
||||
:15205200D9A01F40BBF2D91EEB3B9F23A61ED18755D417BEF704
|
||||
:15206700774085F9EA1E9C9FAE67B832BEE12EC055007E216DFF
|
||||
:15207C005743C3AA6B438CD954664F2D7FA1A33D8D317B2AD7C5
|
||||
:1520910001FF60471DB6F7ACF61663BE4EBFEA5848B514E65951
|
||||
:1520A600E0BAEF659EFBC57D5382D3A7C29E86FB786C07BE8FF4
|
||||
:1520BB00B765909DE791C3BA46D12F4586C12FBDADB9A2670C99
|
||||
:1520D000F44D79FDC98F32F33B9ECFD0A9F970BB1AD712C4FFBC
|
||||
:1520E500A9546A5EEE5C8FAF47B2FD70B3640AECAB1BC656B88C
|
||||
:1520FA00D4A0A18E36B4C5AE426E93252BCEC6F32DBF4BA57368
|
||||
:15210F003F9529969F39DF9E372855F27B70545B3DBC8028B73B
|
||||
:152124001EFA84C30A9EA11AA188E7093C4355E6C0DBD558FC4D
|
||||
:15213900EB284E3462F92DA141ED96D0DBA8336615D6C19800DF
|
||||
:15214E00F3A901EEDB1A3333FFDFD618ECCF6218A3101F4D680E
|
||||
:15216300FCFBB7D1A77B0B3C1DDA7BBFCDF0E49F6271928DA775
|
||||
:152178008451454EAEF1298E80451BEF02BA83D18C52ACEFBB81
|
||||
:15218D00F50B33FDBEEE8B349DE492936B0BD2795F309F147980
|
||||
:1521A200F8C8D7FC5B3127A28F9AEC2C5729CB19BA17C5217371
|
||||
:1521B7005CBC6E9CA2FCC12D9AB2BC17FAFA347CD36B4ACA69E7
|
||||
:1521CC00B3D1164F5E7C84906714E79AB30E316FCD43E7218C26
|
||||
:1521E1005DF2E2F69B4EF94DC07DD620B4CF94A2EF9A986F8196
|
||||
:1521F600EB9F69DF8DF38A42317E11EFB7C57D14A20CFFE7B9AD
|
||||
:15220B00EF83E596A21E4DCC40BE127482E78C5397E0CF65E79A
|
||||
:1522200003FA1BF945BCBE6082E51BB1BC0FF9A4897CC83F5F73
|
||||
:152235008EBC73DD13EBF1150319FD463C138F703CFE298E9FB9
|
||||
:15224A00E34D30F9CCFF791775C01C0EEFAFE823C32A9EA3C3D2
|
||||
:15225F0098977F9330B14ED63800FCC707ECF7C9F07623FEC926
|
||||
:152274004778FB389D78161D6B4D00EB323926B91C6FD9DA6987
|
||||
:15228900E23D116C4E63A7993E5F1B32382F1586CCE4526BF06A
|
||||
:15229E009C8480E112F9A00C1E1EA44F2DC5D8F518CB47B4F334
|
||||
:1522B300E07D6D39B5F71DD431257908F7E6A9A5272CC606DB7A
|
||||
:1522C8007A9874AAECDEA8B0C1E4827C61B904EDA515BA819379
|
||||
:1522DD00E4C2A24E8D1EB8533B7F21E526E3036CFEEDC53E92E8
|
||||
:1522F2004F6992F22EF545F8F9796BEEB2A070FAFCA9A36E8876
|
||||
:15230700CDE7B2E650E327CD7B6F740E15FE4BD3D229CC23ECDB
|
||||
:15231C0077F2F969B64E711D425E4A845C589F04A33C7F4D1EC1
|
||||
:1523310030713E8DFE0CF5097580C94AE773E9A35FA6E6D8F47E
|
||||
:15234600384B9F59DE7800C63E9D30E6F9028DB87EE2519697DC
|
||||
:15235B007F88FE14E6E9CF287706AFC098BC2BE965E7B07B1FA4
|
||||
:15237000E5F4E38FE2251B0798DE610E97809B083F27E6B551F3
|
||||
:152385005137915357C04D841F15E3DDC2FF9EF8E67CCE37023B
|
||||
:15239A006E22BC55E03F27EA2673EA0AB889F0B502FF3281BF77
|
||||
:1523AF0053D4C57AF8BED8666FBA6D65F88E67DBF04C9B0BF426
|
||||
:1523C400A8107C95A40C98282F49DEAFA19F092883788676EE70
|
||||
:1523D900DC505F9504F3D3F91D135A9132642ED22FADF5557FB6
|
||||
:1523EE00A64991D3E66B51E71617CFFB9C373332638D14993002
|
||||
:152403002D9D9D09B62D7915D7D13263E0FBE02325766E884EE9
|
||||
:152418001B8F627CA5ED0AE2900F0E68BD85832AF23677ABDF7C
|
||||
:15242D00B4C633D301B409101B3892EFB2FD46FEFD88993B9E8E
|
||||
:1524420079FE24D08431631F272FDDDCA925FE89AFF3C9C2A6AC
|
||||
:152457007DDD38D98BB9A2D618E91960392BB2F0A7385696619D
|
||||
:15246C006E00C41A8FB1B5F7CCDED306C51910E7A9FEF0FD47F0
|
||||
:15248100DB78AA2DF83FB0D139F1445819A04E4F17936729E02E
|
||||
:15249600ABFF2CE377E9E7397E1778C13A44EEC03326265B170D
|
||||
:1524AB00298E373A0FC6B43ED015796D8CDFCF00B8703D05C6F8
|
||||
:1524C000E33C764700F8662CC77BC33087D8F2BFB8BFAA46965F
|
||||
:1524D500D2420FDEBDD7618CFF3A435BCE1387B8224097AF4988
|
||||
:1524EA0098D85F7DE0F7E5B303C6154113FB378B2694BB7268E4
|
||||
:1524FF0066B7BFA4B1C1463F6CA3AFE4A12FD9E82FCE43DF7F80
|
||||
:1525140083F431BEE8AC0C18162FC8C3D825CEC362A0954B5FF5
|
||||
:152529003E3BC46829910103EF4082B9B789B18FA4F03B8F16DC
|
||||
:15253E004706E861887BD0A74DD9E31C5C7393FD66679DA1E108
|
||||
:152553005D60532FFAABD87E5FC96D2BFC75CD41E54F2A2AB7BB
|
||||
:152568002A0FFEF1A60794CDDFDBD9DEF2EC4E6553CBB696A616
|
||||
:15257D009D2D41A5FAF107B7EF686968DDFEDDEFB4B63F5EBE5C
|
||||
:15259200F2EE9501A5E4999DAD4FEFD8B1FDB9C79B9E6F0AADAF
|
||||
:1525A7005A55B9EAEE157F7497F2D4D3DB5A762A81CAB255156B
|
||||
:1525BC006595ABE125581E0896DFADF8D3FB5B16BDB2B2E696EB
|
||||
:1525D100B6EDED654F6E7FB6ADACA9B9A96DE70B65CF363DFDA7
|
||||
:1525E6005CD9CE1D4F96B5EC6C2B7BEA85B2A6A66D0CB66DFB24
|
||||
:1525FB00F6B6953B6F5B758F72A7D2D2FC74BBD2DCF254D3775B
|
||||
:15261000B7B52B4FB6363DF79D16A564577BCBAEF61548E5FA76
|
||||
:15262500F037EF78FAF9961D654F41B31E6F6A7FF6F1E61DCF95
|
||||
:15263A00AF7CF2B67B2AAE853F8D9E9D679AE30B37EE67F71A4D
|
||||
:15264F00F88DB9BE8AC612A59CAEC4B35CD6398D88B406EFD1B8
|
||||
:1526640038143AD25640FA8DC6DFA7D2E7341A958DE627BF703B
|
||||
:15267900AC91E48735BF526DF861EC7D0CB6C40BCF37D176E26F
|
||||
:15268E003E09DD6FB47E9172FF74A9146C50866829942D22C3C6
|
||||
:1526A3005521A587B2F2B0B4370030B4376B6D30AC27830F04B5
|
||||
:1526B8009C66B752B4CEF2090BC036CE203C96C0FF5701F73E78
|
||||
:1526CD00F9E5368C13CFFD756A16F2653FD7603FD310BDC2F71F
|
||||
:1526E200CABA58FD12A31FEA13F9B2E9856FCE027D3B4FB48D99
|
||||
:1526F700B0B3D32B1D642EF2877C78959314DB3003E6A998E3FD
|
||||
:15270C0046C657E03EA9D7577DA7866DEF02393A7F52A9E1B5D5
|
||||
:152721006A7EC0C5D7AB0E1961E58746CD08D08678CA0BDF5BC8
|
||||
:1527360074F01C97B77A850630D34EF3A1548AD1EC62FD72CC9E
|
||||
:15274B003C9D4ACDC1FBC4F8BA738F7113F805C439F916AEE733
|
||||
:152760000700768CF1E5047F7908F90AEFC775B9F956BF5967CC
|
||||
:152775006CA2BFC3BEBBCCFA0EF7571405C69DDC957029F7980F
|
||||
:15278A00CEEAE3D0DF07186E1C8738068B94D7CCD22F1D6BED4A
|
||||
:15279F00EBBF28734BDEF67EA87927E5FAAAF2D27752B3ECFD49
|
||||
:1527B40081FCC8C08FD7D65F6D1197114DFEEC556C93121D4848
|
||||
:1527C900CCC13BE7E8622314ED4890E2B6464F926CF14697828B
|
||||
:1527DE003F3EC7EEC3F3F96AA1ED0F18787F29CE1DDF9470BE3A
|
||||
:1527F300A41A18D348EF3FA3E11D51F5B8CF12C6B3DB611693D4
|
||||
:15280800F6EA41D50C55AEDBA414ACFBD079D1F0856E67EB8DA0
|
||||
:15281D00462235EB23B12F128AF6D09BB2F4A01EF3BFE763BD01
|
||||
:1528320066A8773ABDAF1231F07EEE40B49A12F915EA666D83D9
|
||||
:15284700793795F63ADCEB35DC4767F617BEDFE3C0F58C8BFC2C
|
||||
:15285C00CEAAE601889DCB204E78925E29242ECFD880F69872A0
|
||||
:152871007370AE72F3AA3796CE0FBEBAECD6E018C091DED4894A
|
||||
:15288600D4AC658A23C8F8917B0C5C7376C1383C0F7A9FDE0F44
|
||||
:15289B001B3FC6FDF1F831F32F1696A86C7D186CE4D142116F97
|
||||
:1528B000290EB6761A075C565DAB5E3BD4395837A0E29DA7C812
|
||||
:1528C5002FAEE7E6D2C2F18BDFB7C2F7EF39385FB8A679E10D71
|
||||
:1528DA001C3F7BE9E2A241CDFBDF47282A4A6D14CFB45F64E72D
|
||||
:1528EF00E7CCD0EB6A1FE05D5454AADD8577C28E47D55272D174
|
||||
:15290400E80C9D68C33D2E05FBA96E8566429FA0AE38770F1B8D
|
||||
:15291900B8B71FC4F58EF08F791F88B18B31B4C4E6610AF015FA
|
||||
:15292E006A64FC877F6C8E4DA5DCA70B783BD7439FAECDD37719
|
||||
:15294300308F9E9FDBA6DEA914CBE9403CEDE2FB4530C69CE3B3
|
||||
:152958003A8C83FD4601CC4B42C923863196725BDFCE80B1811F
|
||||
:15296D0036F0AC903BEEA7A22CC22007AB4E3F94B1F7F1970D63
|
||||
:15298200CCA762FB8F50A7F48D6CD95F0539E6E315C7ED82680B
|
||||
:1529970007F57FCE653E359CFD1D933FEA33B305FB0D4BD6BDC7
|
||||
:1529AC0020EBDAE88079F5B8F0F9F676A34E8A761FFD0D6F378E
|
||||
:1529C100F63DE2DB05F84A599F458C5D2C6E133AFA2BAEA378CF
|
||||
:1529D6007EDA51F780867B86DFB2F450F40997670657E8379C5D
|
||||
:1529EB00E736D00DE083E9C6A2A2B59AEF178EA0A523783CBFC9
|
||||
:152A00008DEFB30A1D39A3625CB78C9C5987FAE1AD4C30BD3021
|
||||
:152A1500F565AAEBFD214D025BBB4CE8035F0FC8EEFF1190B788
|
||||
:152A2A004F3EC6E29DD9A01F5EB0BF577E2DE46E8D0BDB37B8AA
|
||||
:152A3F00679D4FEE2B717C437D94FD343A30AE7A218EAC17FDA3
|
||||
:152A54003EC3A623EDA023AD1F701D71809C25A123E597B99C53
|
||||
:152A690059EE01F6FFF14C3F223E4FB84D6BFDB7B672B0676627
|
||||
:152A7E0049B4CEF447FFA7BDEF8F8EE2B8F3AC1EF54833D22015
|
||||
:152A93005AC3CC20B0905A443892A33833625024598481B05E2D
|
||||
:152AA8009910769673B2DD92B0C7B1BD109B64B93B6E1FEF85E7
|
||||
:152ABD00C42318890137B8E913589615337224AF7C0B398507C9
|
||||
:152AD200397C4F24E2C239B021DC2C211C9764F1388FD8BAACE3
|
||||
:152AE700CF283E62E3C466EEFBA9EE1E8D846CECDDBDF7EE8F21
|
||||
:152AFC009B7EF3BAEBF7B7BEDF6F557DABEA5BDF5A69AC4D3DC0
|
||||
:152B110064AC4ED519D4075AF65353DC2E34E6371EB9869F2B10
|
||||
:152B26000ACEB2EE45FDB55654BA5B0DDE817DA2914EC869824F
|
||||
:152B3B007B50C5FAD98475AE1E32F7037C3D69949F0DE4EB5DA3
|
||||
:152B5000B09131CED8A10527686E3ACCD7BEA454B701BDC4D514
|
||||
:152B6500A9935CDE8BA786C193F324B9DB582D9F34747AFBF5F8
|
||||
:152B7A0011F5B46C86B3EA61EDEA07C8832E36E6FE07F17305BB
|
||||
:152B8F005F77BC253C273C2C7C56F00937D8AFD97F633F64DFE9
|
||||
:152BA40063C3EC5966B0DD6C07DBCEFE9A6D618FB38DEC61F62A
|
||||
:152BB90020EB600AFB125BCFFE8C7D917D81B5B17BD96AB68A61
|
||||
:152BCE00AD642BD8729A41B6B066D6C41AD93216664B59030BD8
|
||||
:152BE300B120FB0CBB9B7D9AD5D3F3297617ABA3A7967D929E0F
|
||||
:152BF8003BD9127A6AE8F9043D8BE9A9A647A6A78A3F95F42CC7
|
||||
:152C0D00E24F057FEEE0CF42EB59C09F72EB999F7B02D6E3CFE1
|
||||
:152C22003DBEBC675EDEE39DF694CD78A45B9EB9B73CA5B33E15
|
||||
:152C3700733EF0F17CE85372DBA7F8233FEEDB3E2E6E3B338E52
|
||||
:152C4C00F3B1C15A4DE6674B4856A96CEA8C32F928FC6AC84FD6
|
||||
:152C6100B7BE6BE93B6D7DD7D3B724D037FA96CA5A8A1FD17442
|
||||
:152C7600D6A6A569522C098A26C98B8F4A31FAA7E89F597C1419
|
||||
:152C8B00E598B6496BB90D3659B6FCDC969F407E31CBAFD8F202
|
||||
:152CA00073905FCAF22BB1FC0AC80FF95199FC2CAAC4A2412BC1
|
||||
:152CB5002FE8F906AD3CA0D71BB4D2428F374869A202F66465D7
|
||||
:152CCA002D880E49BE4BA3D975BF93E469F845B99D8790EE4D6B
|
||||
:152CDF00090DAE3375D4FEABFB5D679A558E9F0F091BFD90302C
|
||||
:152CF4006E7F87C24A298CFC0DF88B679B555E76BACEB07167CF
|
||||
:152D0900E31CF5485B30EA2F719AE8329F770775CCF318EAC994
|
||||
:152D1E00D3043B815FE0507298F1E3A7AC70EA135BE5C5866EE7
|
||||
:152D3300E593FA2FA67F94E245D15F4A8B0DD105BBA3B3BFA3AF
|
||||
:152D4800C2549C74DEB7E498FAD62D7F8EFFF1EC5CE82698E770
|
||||
:152D5D00F7656DD2B4C76AEA6D705D4699EB74145ADFFC9CB4E6
|
||||
:152D720083788DD11C34D8447DA783251C4D4611ECA1469AD5B9
|
||||
:152D8700C9EA66BE1E37F943E732E0046EAC898E533A0F6B8218
|
||||
:152D9C004EB4514FB8A08E5673C90D4611BB8B60BFCB700622DC
|
||||
:152DB1009DE959FC24C1F463F25B06FADADA996B124159E77EE0
|
||||
:152DC600E0EF029CCB151A44A29914EF6A10313F96AAF537A019
|
||||
:152DDB003B2F85A8C826BD9EAF3BC17E6C33D7C9803BEA28A727
|
||||
:152DF00032EA74942F9E2957A5785D186F57BCAE01EF28EA9AFF
|
||||
:152E05000E72191A71391FC3DE6230A8C5799B68D2225CD728D1
|
||||
:152E1A0002FF58766E1BC58972FB879095CD33CF312DC2F5F20E
|
||||
:152E2F0037F133A82CB8C53C03CDB659F714242D5D08ACEBCEA1
|
||||
:152E440025A012345F49E83A4B28D8DF81FBAD15E23296DEA113
|
||||
:152E59007B64B1814577C2AE9C8BA565DDB4FF6AEA31D5670A9B
|
||||
:152E6E001A789E941F5F47C277B4574F2E882B42AA17DF464EDC
|
||||
:152E8300CF23FA5FFB50BF0AF9A02ECA670DA62768DE242EFB76
|
||||
:152E9800EE83DFA5FC5FEE833FFCEAC9AF7F865F39F9F5CCF080
|
||||
:152EAD00DBBA82E0925EEBFBFA83AF874860D63CF2157D1B3BFC
|
||||
:152EC200A355AC7C5D6DAF7A25F46CD3045FB75814BF44F57999
|
||||
:152ED7004A5BB4F2BCEABA4FE336CACB2DBBF3934F88CBC4D496
|
||||
:152EEC0090EEA0F15196BFDFC7F4EB862B69DAE3E476D4C70FBC
|
||||
:152F01003406307FA2F298FEB7C61DC2EB2AF051CC5E098D3CFA
|
||||
:152F1600F86623C142B4BD42F09DD7056D9FFAEC86D7B43B22A6
|
||||
:152F2B005486B4CF20DCC56FAE581D72ED46F93B47D94821CDB2
|
||||
:152F4000E3BE33EA725DA3F05DFDAEB6D7C9FFE97ED3FD3796FB
|
||||
:152F5500FB3FF59FC966FD7DF679C0E8CFFB128E333AF0B68DCF
|
||||
:152F6A008D6BF11F14367CEB5B850DD07FE84F3FAB2CBCF0B4B0
|
||||
:152F7F005270FEA2BA865D0A2D1C3FA9422748F8C900F4F5CCDC
|
||||
:152F94003A120D70EED52FFD07F5FA43578C85C2CB14E792E1D4
|
||||
:152FA9008A1F69C4BC15F94F3E745E77A50A1B469F285CC6F5AF
|
||||
:152FBE00645FE26BDE47138E14D1FAB88E7AFCE1507738708AB3
|
||||
:152FD300F2977EA3A12E12608EFE68D485FD1069D75189C3FEC9
|
||||
:152FE800E3A3AF513B2C96F726B3244F16C9DDF1FD714D11D6BF
|
||||
:152FFD0069D44E7FAEC36E288D00EC2917F610B4E464F5EF0D02
|
||||
:153012008ABBE74DB97E5994E26F8FAD6EE0EBAF05E6594D31D5
|
||||
:15302700F56DEA279D0DB1F1C30D4C3FAE4F82FFB0BE47E1EB7B
|
||||
:15303C00C95F4C1D211EEAE6F6486A2D7B41BCBDE97BB9DDF0EB
|
||||
:153051005ADED648AE4DEDA5B616D744A2ABC4B430DE2EA635C4
|
||||
:15306600E08D3D3257EA00EC1D733BA2E5A9842EB85EC63C93F4
|
||||
:15307B00DB0B052FA28DB8CE216CC88842EE4E258CBBE21AF7B7
|
||||
:153090007FEF27541EB921134ED2D4D013131BCA486E445B997A
|
||||
:1530A500AC1E321606529D63379DCB0897C6E9F7B22E89E06916
|
||||
:1530BA00A5322EA16D05FB349DFAE156CA97A5068C8BBC7E4946
|
||||
:1530CF009DDAA91424C0DEEED6C24C3F053BDAA3E82F7747CE85
|
||||
:1530E4002BBF7EB4B0A18F752B7DF1034AE91271595F64AF3217
|
||||
:1530F9003FD1ABEEDFA929FB9B2F73D952CA1CEC5BB3A4F2B3DC
|
||||
:15310E007C8F28181FC5DA6BD9A204F600F58A14AF8FB986EDC6
|
||||
:1531230032EDF5E3BB4D24193AF39A2EB411EFEAA78DFDE39A1A
|
||||
:1531380082F541576A80D2ED028EF95E5E79E6A0519179CEA8B5
|
||||
:15314D0025BC54503D338524165038DA67ADBC8BDB6EE1794811
|
||||
:153162009A7191E6A1E5F2533AB7B1B841D3289D8EBE418C1DA2
|
||||
:15317700D3C3991F50DC5DD4467A699C1B509167762EF4786000
|
||||
:15318C004B80BAFC7327D583F15EC5BBB257756843AA6B7CB87A
|
||||
:1531A10011E7E87DA78E98F6BC4F33B6003A00D029A39FB8AE2A
|
||||
:1531B60047A57AF73BD6ED53134579776CA4B1D69FD4BEF10F46
|
||||
:1531CB00E28F0F0A9C667C0FC4977981EB03F25B806033057EB2
|
||||
:1531E0002CC1F5B78013733F24C9F7438CF15EA53CD3D317CC90
|
||||
:1531F500BC9092566ABC0F2958ABA9A2AC191E17F6B807B4DAA8
|
||||
:15320A00C881469CF3F277116FD1BCB63C0EF7712360B985B33F
|
||||
:15321F0003AA392E1C307C194F03FCB0B6EFCAED8FF4F13D009A
|
||||
:15323400077097EED56B389DCCF3C9021BD1A0476D9E4B1EE5BE
|
||||
:153249007DE9AF282F612DFAB214A7AF903CA20616751B4F47B0
|
||||
:15325E00CC73AC584B17BEA071BBBA12A7B3693B5AE23CFF9D4E
|
||||
:15327300A35761D392EA8DF56831437D5BFA3AA7435946C4B92C
|
||||
:15328800E57980A79CDB5F4A76DA773430FD4903F6C100A7902A
|
||||
:15329D00F986569B9917CAEFFBD1E783BEBCDFCFF5F9D4FF6FB5
|
||||
:1532B2002A6CF765DEC638C06DAB48991EE3B1F7B37EDFFBE0EC
|
||||
:1532C700779306C0B12FB34F7768BD6A598BB9E7EFA07E03F7AF
|
||||
:1532DC00DE7858EF520FF1D042D61B02FDCE7D798A77CF59B649
|
||||
:1532F1007F2F73DDAF894ECE7B4437B845BEDF11E7FB58A037C4
|
||||
:15330600E8CB6D5EA19D133D67D292E3DEA2C3ED70FB9169045F
|
||||
:15331B001AE4E3DEA6C7C7A04131A7419FB5CF33458BDBD220BD
|
||||
:153330006FECB5F11F1B87BDB4D2603E2DBCB14F86605F8345EF
|
||||
:15334500BB466F3CF1C946295644E36C972E901FFAB1CDDF28C2
|
||||
:15335A006C38F147FB3CA0D99F9413ADBC8B3443A03A8176A8A8
|
||||
:15336F00A3B9E7639681F290B77DBE7D4A7E32E9B1208F16DB67
|
||||
:15338400393C49D3EE0E85635F51CAEC3304EBBE1BB8953CFDD8
|
||||
:15339900E3AD79E9B77E39A7E7CBF583FBD830D7DBDC049A7748
|
||||
:1533AE000D2B1ED9C9FBE92D5C0F50D31744CCBE29D7EEA8CE2A
|
||||
:1533C300C2268CCBF4BEEF3CC701B553DFB63F98F5CDCCB8F661
|
||||
:1533D8000BF6DCCB03C9CE052413C82C7534C8C68F4658E668BC
|
||||
:1533ED00F93F66DDF41E25F728F98F3659E93F28BE32313DBE77
|
||||
:15340200CB8A8F717EE0EDBC32B1DF48F391FCB4A80F9F7B51F9
|
||||
:153417007D6E92FCD28AF573792CFED499934A2189F6A2DC9BBD
|
||||
:15342C00849D9A62F97412679ECDFDA0717EE651928FD13C2606
|
||||
:15344100A17B324B1A4E1FC8BA81878167B3EE9979E6C3C6F7CB
|
||||
:1534560031296DABFC8C7EFD558D64259C19485A7CF8EF0DCEEC
|
||||
:15346B00BB416EB37E723FC98F0D241F7D1CDE9C7CB5574F3836
|
||||
:15348000481E1D11DB275FD58C84A3CF6895F71B6FDF44FB88C7
|
||||
:153495005B73952EE32A6422A23FF657652A231F2737AE4CC7E0
|
||||
:1534AA0027F6772DF9D6D47FD60774C8D202B52FD491DC46F8DA
|
||||
:1534BF00DF91FC188C72BBDF763E727A2A1FDFEFB3AE0A9CED31
|
||||
:1534D4000994C32EB47E91CADC06BBF91968DC46344FA6562FE1
|
||||
:1534E9003C15527F10AF0B753735F13EAB88D1DC287D9F562434
|
||||
:1534FE003C4C7DCB9A19B2A6639928DFA7CB99681FEC1CBB5C2A
|
||||
:15351300D514DE66C9998B1B8B694EE3A8547859B08B0879DDE3
|
||||
:15352800D915524B23A17031953D54754F634546A631B3562FB7
|
||||
:15353D00CF0475C1D3A2767F3BA439C769FE986E326C7BD4D0FD
|
||||
:1535520001E132BFD445F2674D4874134CD1AF8C32FDA17E5706
|
||||
:1535670012FB88FF9ABF332B1CCB6ED5BF29B7F4306AAD7E2D55
|
||||
:15357C0048FD5A9302B9DF2B0B413E9709364DD94049BF30BA8B
|
||||
:15359100607C405D60DD59E0A3711C63314BBF64940957D55FDC
|
||||
:1535A60057977E96914CCED88426B1DF34FA846B6A69B5B301F8
|
||||
:1535BB0072648464F60A6158D593DD4A39E618D46FA29F14DD49
|
||||
:1535D000AF73FB344CDA31FA00FBEF212ECBC1760CB91792FC9F
|
||||
:1535E5008DB7FD5F2817B5E7DC83669A8FF23F9CCD06642ABF7B
|
||||
:1535FA00D1CA9FDBF69F257FFB1F4F4DE57DA7FCA73C0DEC3F98
|
||||
:15360F0049B566F92E8259B6E250BF1E58287F32945F1FF84BF5
|
||||
:15362400DC864D11CDA95ED259E685A33E6AE7C998735945E6DD
|
||||
:15363900A08EFE14BC8A7DF5329219DA16F42E8D903C8631F194
|
||||
:15364E004B4E9DCB608DCF68215BEEDAF47EF603E52ECFBBD91D
|
||||
:153663000F94BB9A6691BB1CE78EA890BD206FD9F2574EEE8AAB
|
||||
:153678000C37E28CBB6F25CEBABFAE35DD9CDE1FF23E9368DB97
|
||||
:15368D0056FD686331D7C99ED03CEC64A3EFD4FF22584E6A8B1D
|
||||
:1536A200334B7278704D38DB6D3CC006D104E1E9DECC1C93BEB6
|
||||
:1536B700382B6386EB62F2B87A37A1A1006E2B0C7E080B4085CD
|
||||
:1536CC006486DF091AAF3E088F243B841D6DD7D41BEF645DC0D6
|
||||
:1536E1002770566FE1B0E63D138715B3E010694EBFF32F8B4708
|
||||
:1536F6003FE457C2E3A2C089CECBC063747F5FECF733AE95B49A
|
||||
:15370B007065F3FFEDDCF2CCF4D103FA1AD6A7DD4FF39DEFFF58
|
||||
:15372000AC77A92C9F1AA5514CF30A24A74A970C9FD54E45E8FD
|
||||
:153735005348BF34B6B1CB5A99F0867AC7CA6BEA216A87341F91
|
||||
:15374A006FC01AB85466A898FBB2F401CD357E90DE07B53B5395
|
||||
:15375F00628397E6805EF6BAEA3D754515F8BD15A3DCBE14B79D
|
||||
:15377400AFF4438C1B716D60FC07E13B28DE1D142F30DE13B21D
|
||||
:153789006D3F4994066D54A638B63F6C3FC11FEDAB32736F4889
|
||||
:15379E009A28E434E736A7CE5EE16D0AF76905327786A6EC5777
|
||||
:1537B3005DE1FD43F0D5D2507EF9F2AB81696EE9D5CA696EE8E9
|
||||
:1537C8005BCDA7B2E673B8BAF3E03A990757771E5C272DB8FEA1
|
||||
:1537DD0084E072E6C175320FAE25A19976B582164FE7E0CAF8FC
|
||||
:1537F200A7C3955934CD0D9EA9A0B1B531833E90DF11C9F8DC00
|
||||
:153807004700EF8C111DC61AE711CFCC3F457C263F63283769B9
|
||||
:15381C009E9E7E5E0F73FB865D7DF192443BDCDBF85D55C7FA7E
|
||||
:15383100A00F5570866091BBFA1DE7BECD797284AFDD3CAF0766
|
||||
:15384600E5471BCDB897B5EB2B8A96791E7885E629BFD45DF29A
|
||||
:15385B00F7FAEBE5FF61C47F37939F7A463DD07F4CADD7CC6F34
|
||||
:15387000CCF37B46275698F98C52BE3E2BCF1B2B3636DECDFE86
|
||||
:15388500A681CFD3F3E2222DF2C84F778EE2EC78F2921294FFC4
|
||||
:15389A006229FC21BFD134EECFF0FD0C64B8684F0AF323A42D33
|
||||
:1538AF00C6990FE25D9C27ACD8FF3CE763F4AFA2957FE9B4EFA6
|
||||
:1538C400F92187F9DD572CCF0DD15B7770BD769DE7EF786E8FEB
|
||||
:1538D900CA714CF3761FC9FF46E405458A24D472C23F3FDF2953
|
||||
:1538EE009936FF6FF72799272924D7ABD85767D24E2E1749FE99
|
||||
:15390300B862CB455C4642D8C7908F6CD9C8929366958F201BEC
|
||||
:1539180041460A731B30391947D3CF99328E598ECCCAE5DF195D
|
||||
:15392D00F320EB92DCE492771B23D7B2AEE294962C26B8C3914D
|
||||
:153942004483BD76514E7216E224AF8166DD3AAB15DBB75F33B8
|
||||
:15395700E5AEF11FF3701DE141C20FD2B3D4555D583041E3BBD3
|
||||
:15396C00466D21A915A612712F9523A58EF5A19F04DF214FCC1D
|
||||
:15398100DFC17FB5F2ABFDE6BC7E265FF7F2FE653EC9C5DE53D5
|
||||
:153996007B492619D3C08315046BEB1FF3E55FAB8E54B7792958
|
||||
:1539AB00677BE6CDACBF96E4DD6DBF356556BE1741F09D79D3A5
|
||||
:1539C0004C531630CF6FB9ACFDDFD1F9CC4D7329F7C83CD38DB4
|
||||
:1539D500F3A3DB1DCC7D86FEE6FCB0D6B28F62EA383953423B4C
|
||||
:1539EA00F33569F6D962CF4F894F4E35ABAB683EE6EC1A547BD6
|
||||
:1539FF00D3834AA5EC6C59287FFA73580BE669A43A35771E3916
|
||||
:153A14005A4D7C24F488B16ADD29615D59E879E3505D985DEFCD
|
||||
:153A2900D2B6FC149750CD9C0F4D2F7F55BC6EE93FAB9C5BF459
|
||||
:153A3E00C7829D35F35989242D56A12F0E5D0DD843724A7FCB73
|
||||
:153A5300F57BEF4ABDDF0ADDBFC03743E8C3B84E1FB761111D23
|
||||
:153A680036D6523CBB3CF8B7927BEACE013E472F96024D9DA766
|
||||
:153A7D0003B0AF54DBF95E00F936987A72E5ACC4131BA4B1734E
|
||||
:153A9200897AA72C34632FD513AB366E90BFF8CD2EDDD4AB1599
|
||||
:153AA7007B2E5AF32BA7B443FD1585C13E682FE250BDB0372D1B
|
||||
:153ABC0043F78FFCC4D8A031067FFA7EA390B92F5BE98AC87D98
|
||||
:153AD10095FCF11E221AC35ED698C33CB3DB0B9AFB26614796E4
|
||||
:153AE600158DC02EE7354DBAF08C02BDEC729C75938E692ECFE7
|
||||
:153AFB0011751DD1769E2CB6176506349CF3A8A07E349041FC40
|
||||
:153B1000BD3B30C60996EDC0BB52AD4B258F797608B675E6F2B3
|
||||
:153B25003C87FB711F93CB8CE32B4F894B85915BD3B26811D7DC
|
||||
:153B3A00D7D6096F61BF797616FA59B09B0A3D948C1F77C324AA
|
||||
:153B4F0072F73188F2756333D14D24BC78A82DC7E89BCDB21F0F
|
||||
:153B64001B8CB9B458E6C747C52B5DEA7B3E3BDF8A5CBE492BCA
|
||||
:153B7900DF98653B7B0FF52D63458C9F1966E9B8C1F793A4B0E2
|
||||
:153B8E00265436758A995AC395811FD12AD3C4CB2FCF4C92FB54
|
||||
:153BA3004CA79449519EB14EACB3EF59B049E17D5BE596CE8A23
|
||||
:153BB8000C6C185CEE14E5AF196301933F6A284D6D26DD5F4F2A
|
||||
:153BCD00E9C3945FEB3CE60E527A13B63FE9036CB0B3BC0A7361
|
||||
:153BE20028669F5B8E744632EF187B16449508CF53E98C929B8F
|
||||
:153BF700E21F5D4DEF18E55D4873DAFB33878C48E6E9BEB68CD8
|
||||
:153C0C00DE1FA537F6A8A3F43D4EE10A9595F65AB6C4598AE365
|
||||
:153C210000F64B61F3B13393321EA17C63049B0FFC4AB8AAA7B5
|
||||
:153C3600B78BDEB0D12B5378057DAFA63C7CF4AEA1F9DA26FA1D
|
||||
:153C4B009E9807DE265C915F1BF989D4D75C24BF60C0A4476CD9
|
||||
:153C6000864D72E795B84A7C57E295C5E50579F412008F3C64E5
|
||||
:153C7500604D35280F515F3764CC464FF33C53588B3A58C9DDD8
|
||||
:153C8A00A987C2683785CDB216E53AAD757A39BF43A8CB30756C
|
||||
:153C9F001D841E3B8F149559D537C8CFB5080BE2EA947DA00895
|
||||
:153CB400C50B6B8CF2EB015E7CB5B9BE6DE2EF3106D6A9B8178D
|
||||
:153CC90061B1DCBE946DFD5DB7F21BC6EC7CD8D62E2DF8736B0E
|
||||
:153CDE00FF6BEBA0B685BE7B6467BB2B074FB3BE10E310C27EAD
|
||||
:153CF30063EAC9D7DBFD13F9457F0E5DD365CB5D046B8C997058
|
||||
:153D0800DBF4E6772A5AE9026CF972B6B599E76FEB8B230DE54F
|
||||
:153D1D005552CA5A7918F22A0ADC8A2FB46F9F30759E439A7424
|
||||
:153D3200501D4772753C7701753CA2AE8149D46F0EEB9317007C
|
||||
:153D4700306C5F99FB57F2CF281AFD23F48FD23F46FF2DF48FD5
|
||||
:153D5C00D35FA77F8AFEA3F41FFF9919976DED36EB6A9EF9E018
|
||||
:153D71006E7D867B74863B3DC33D39C32DBD36DD1D9CE18ECEF0
|
||||
:153D8600706F99E1D667B8475FCB3B9342F86913A6DBB78880A5
|
||||
:153D9B0076BED19C5DB049AA97BFEBB85ACACF365BF9548E74A6
|
||||
:153DB000626D684D6C43D87F7258AFBD083A4DE14D21F726FA49
|
||||
:153DC5006FA37F92FE7DF41FA1FF09FA9FA1FF65FA4FD0FFC613
|
||||
:153DDA0045332E3B36CCF196B2E94F6EE04DCF73036FF13C37CD
|
||||
:153DEF00F0B625CF0DBCC5F2DCC05B34CF0DBC45F2DCC05B3084
|
||||
:153E0400CF0DBCC9F9E5BF36657F93974F6E7F73CA006F433FFD
|
||||
:153E19005A7C62C33DB67D048EB3D9EC7F107E3D2C0FBF33E3C5
|
||||
:153E2E00FC33C3D1F78C91FC42B2947E7A0E734357B658165B92
|
||||
:153E4300FA04E676D137F5332D1E1A238BE5459FBD48E36205B5
|
||||
:153E58007D838EA2B44BDD5C467DD65C56F218AB6989CC35FBFF
|
||||
:153E6D00B407E83B3CD7ECCB2A59CD725BFF49869D72DCFB4582
|
||||
:153E820079006793A5347E53FA8952C80E2F4ED9E92019F152A8
|
||||
:153E970055178DCB872123E8932B9CCB4F531CB96CF6F1C91EC9
|
||||
:153EAC00E7B0378FF1689299363AEC781E2A77A7659780E49DE9
|
||||
:153EC100E597292F3797F7A7F7631504EF7609E321E48BDDFA81
|
||||
:153ED6009E18CEA5BDA8EF881CE6F5777FC6D92EC9753AFA7C2A
|
||||
:153EEB009C112A5B79006BB9DA9639D89F1AD499FEA2EE178621
|
||||
:153F0000D516D6CDE377BB87156141138DAD83460DD54D243929
|
||||
:153F150097DB268FEED52ECEC538A6774A65499EC7988764486F
|
||||
:153F2A004AE3925FD4451A8BDDA558571EA4BEFC450378AE91FA
|
||||
:153F3F004CF903B0A63DD3E5BB9139ACE434E5979A8371A6469B
|
||||
:153F54004FF0B1A9968F4D380F2B2C08727B0A976F66DDC5F1B1
|
||||
:153F6900AE1667B45695E56AFD8D15C2F2CD94E6CC5C5326B23D
|
||||
:153F7E00F1E0B5740FA7F477653D4EBC29A57772BB7EC85FBA96
|
||||
:153F9300F02905E78C00B33732B854245945A43C2729CF769297
|
||||
:153FA800A9708E49E4BAD87C1C862D490379A0BD8BB161C323AE
|
||||
:153FBD009BF7BA66B91EFF8B9A9FFA7C51FE9E81F8B8FB976419
|
||||
:153FD200B00D1305243FE3CEC7BCFBA71294C7DFC588F762B02A
|
||||
:153FE700B561DA75FFCF6CB0C5436E8C33C065A498B9DF269E84
|
||||
:153FFC007D8B75B5D8B09B3819E17D13F2E0677ED892161BEE59
|
||||
:15401100EB0437F45D890E25B02303DE100907176F64DDF6BD19
|
||||
:1540260005F9750AE4D5C91E6F502FAEB740FD1DE0728ED39C6C
|
||||
:15403B00233AA6F13A4883FD34F7A07AEF9EB2731CEBD27ADD53
|
||||
:15405000CCBD8660B5D37C2ED2DD029D8B9F1CF9E5618F5C6F8D
|
||||
:15406500F8B9AEB24A6D76B561C32ECA87F9BC0DDF18E3250BE4
|
||||
:15407A00476B2D386D3D4E0B977EEC15D7539837262EF7154C5C
|
||||
:15408F00B50DC95DA39AF7EBF6F1F28C5343CB59380C1D8CAC5D
|
||||
:1540A400B96796CD7EEB5498FC123AEE46294B3FA9965DB84765
|
||||
:1540B900914EAD542B65472BD7C94EEF864E94DB9D3F6E5A70DC
|
||||
:1540CE0036B0257C5C1E7531F715AAE32F88F7D8D6E7795E88FB
|
||||
:1540E300EF425F1F1EE2F7AEF0F34BADF5FCDC0EC9E1FA77E3C0
|
||||
:1540F800832D38D303FC3E8D7B0B49A6B5F0EEF5669C2DF321EE
|
||||
:15410D00AF674EEAD71F7C69F92FC88D3A8B99E1D9F98D706485
|
||||
:15412200F29BC93F9ECC71FD40C6D91E681DE6E5A19D99F4946F
|
||||
:15413700394EEDFE5A6C5D82B51884EB95E38361BBBE51613A5F
|
||||
:15414C005F42CFE6664C6801DC36DEDE1C1FE27D8027467D8299
|
||||
:1541610055CE2F288F8F5AA7CA8C7379B0783A2FB6BD9D75AFA9
|
||||
:15417600263A7A62797591BFA7439F3257179AC398F5AFCDD556
|
||||
:15418B00057088AD9FE675E1788A0D7E209E9C528D6AAD9364C6
|
||||
:1541A000515FD7A9FD5C671573A30187D54F100EA84F77E7EEE2
|
||||
:1541B5004C487769E7FE68EB0FD7F33A411FDC4EFB08A503BD44
|
||||
:1541CA00FB284D7E3FB3ED7D935F3DF2615D8E0D695F8F0C8732
|
||||
:1541DF0050367851DA3E669E8B4C0FD37CA11BFB9D567D877409
|
||||
:1541F400BBAD88992386E41E56CBA8CF3D48732B4F06FD8A6685
|
||||
:15420900D5FFC454FD892FE6B79EE4F59F4F74B3E89B1B438A6B
|
||||
:15421E00D1DFF1F6A0C1DE7FAE3DDC840D9FF0B169EDE1B7E3CD
|
||||
:15423300C7B85D1FE0ACE121D35E01CA798EED6D215E36DB49B7
|
||||
:154248006BB7C9C7046B4F1C67F0F5CE03B8B3217A7206BD7508
|
||||
:15425D0093DE5563CB0D727B624379743DA623CD145D87AC7ADB
|
||||
:154272002579BDD0E794B5EEE5755A98129783F76D5AE6F89743
|
||||
:15428700FCC414EE0A49E83DD4FECC7B42CC7AFC35F1A7CD8B26
|
||||
:15429C005E36D6524AE503961B04CB42E2BD6345D379EFDCFF00
|
||||
:1542B10026BE93F3E08B117CB13CF8641B3EB35FE2F86CEDE6C9
|
||||
:1542C600F0E5F70BF1EBA6CE03DE62CCBC07588F24B694E68D22
|
||||
:1542DB0039F1776D5ECACD5DBD2CDCCB710B5B2C7D93D9921C44
|
||||
:1542F000EF916CF32B9C55785EBC478A99F36F6FE4B0FA32A58C
|
||||
:15430500F1578BED6517FA1487C0CAE6212C7D4C972EA414DCF3
|
||||
:15431A00F17094609530E610FF6C06AFBA20776A5A2070A253C4
|
||||
:15432F00261929FE646FFB0EF827DF411FBEC375EE24D7DB9887
|
||||
:15434400A8DABB8CA5C7742328B4239FCAC45ED89CF3CDC7FD16
|
||||
:1543590068E49FC07AB5B4D710293FECCD7337952BF23DC1BDA2
|
||||
:15436E00064F87B2F4BDD07F9E87BB95BBCC343BE234A7C7BA03
|
||||
:15438300886BAD063D0E3FD7A1B3E6F412BF4F604CDFD9A6299D
|
||||
:1543980005EBAEABF16CD6DBFB794D419D454A539938B201F0C4
|
||||
:1543AD0063EC042C80CD4F75692218FC174E28F36354D7B3DF2C
|
||||
:1543C20056BD4CA33E3CA57C1FE38295A77876402519D88B7446
|
||||
:1543D70076DD7B28FFE4BEE3FC1E66F00B8F1B3DB6C3B5FB1DAF
|
||||
:1543EC003503D8A84EA80BBB3EA0812EC003D34F6AC06723D44E
|
||||
:154401005C28DCC6C5E51C1ECCB27278C07A6DDAC443E08762E3
|
||||
:154416004B721D742486B52EF2EF457B219CC00F6B1B18834D1B
|
||||
:15442B00784F120E8E28C8BF60DDEFD5ED1C0F479432AA1F70F9
|
||||
:1544400020E15C15D5DB853B83A82CD84C0E52F99581894EDBE9
|
||||
:154455001EB2699F27AEE9C4837B162495B7D884B628C8FEB2C2
|
||||
:15446A0046163F97B3D7F917DC1E32B79BD4C6D70896F49B67EE
|
||||
:15447F005B933C5D24B30B7756B8E98D7D6023F6EE149FE33C0E
|
||||
:1544940023D6AAC0A3F5984B439736D8A4E937B89E663F8DB948
|
||||
:1544A900E3F15A67BBE00AAB623CA40E10AC55CA28EEB9D475D6
|
||||
:1544BE00F9402B9F9F521C89FA0E8FFCC51697FCB51649FED26B
|
||||
:1544D30072312A63BC1EBF4AF230DE9D984B455FE43695FDCD24
|
||||
:1544E800B261E60F9971703C4861F594BE96D2D7507AF855C8F3
|
||||
:1544FD005F6AB1F3207E6AF150B88BC2AFAEF81ACFCFC3E766D2
|
||||
:15451200BFDB61C7D9827208265FF3A499B76EC20D1C85D136AC
|
||||
:1545270008CE7AF9D556B1396864281CEB05AD349F1692215583
|
||||
:15453C008A630FD88C8FFC8807FC22E58378FC7C020EA4C7CC33
|
||||
:15455100FB80D0869B9835BF06CF4B435639239DB02952CE6D45
|
||||
:154566004F987E9833C18FEB1B9A67316E992F098249CF9C3FD4
|
||||
:15457B00E55F61CF7FB85E2A95CFEF384B195BDEBD75CE659ECD
|
||||
:154590007D1DD11186FE07772CF8ADFEC69FFE8EEABBF01D0521
|
||||
:1545A500F2AAAFF59879AF1085F930F767C731BE6BAFFCB680E3
|
||||
:1545BA00558C1F6FDC42E39EC79A67983AB0A69C833B095CF13E
|
||||
:1545CF00234BE793ECE943BEC111138E5C3F99E4F0F9228930CA
|
||||
:1545E400B76F426EE4591E196AACC8CB333777A13E97A7B7FA20
|
||||
:1545F900CFDF5AFC8C7A606E47B079AFF2359D9AA934F9E76932
|
||||
:15460E00F9FDE74F69FF384BBAC333D211BFEBB3AD27453287BE
|
||||
:15462300B4FF394BFACD1F21FDB559D2856F0BEF216D6296747F
|
||||
:15463800EFB1DB9737F9FE8CFD27ACEFE4F31FD6FCDF9DBEBE22
|
||||
:15464D0031335CFAC38787C76F17FE7F3BFF19E19E7CFEFFB008
|
||||
:15466200F581FF1FFE4F0A97F2F0EF9DD92FFD3F03BFC51FD198
|
||||
:154677008F971EED6B9E287359ECCBDC46536D67B7147B641541
|
||||
:15468C0035454FD9A3AA46E1B82BDA73EF6E15ED14E3A4A76CC6
|
||||
:1546A100933A67F56E55961FD7E6DCDBA5FAD6698A47A8567DC5
|
||||
:1546B600A5D56A82E416AB4D6FB84163B35456AB22BF7F6A5E9C
|
||||
:1546CB0087EED314EC110BEB30778969D0A813E582F6AF539F69
|
||||
:1546E000ECF754ABC5EBEAD5E7EEAB53AAD6D52901CF236A774F
|
||||
:1546F500C1A714DCC5B8488CD973151FE28BC22754BEF6B0BABF
|
||||
:15470A008BF71DE843AA4A130AF413ED702F0FAF539D65712E7A
|
||||
:15471F00DF553D1057F9FE1264E459605865C15042301C22180D
|
||||
:15473400FC79E5A3DC4A8201F178BE947F7ED937AC7C27F3F2CE
|
||||
:15474900CD665FC97A60EB20C4DAD7331640DEF18298067C644E
|
||||
:15475E009999D7DD8CCD9B4FB8F15099EEB57584A36A6591A745
|
||||
:154773005EADF88CD8EE645D1D557F25B61F9A9BE034C0BA4825
|
||||
:1547880090E0C01EDC5DDC76DA14EC5EAE07833DB8F813BC6EA9
|
||||
:15479D0004D3390BA631D4DD73BF5AB56FBD2A94DAB0656FDA01
|
||||
:1547B200B0B5106CE59E6AEE1F2701D1A697BBB45EF5709876A1
|
||||
:1547C7002B8B4A13EAFE9D7B72BC003CFF219BB56060BC9EB026
|
||||
:1547DC000966EE374F3E8172D3161CB81FEC0C7DCFD54C18CA91
|
||||
:1547F100F6D5A865541EEAD66E9D4D81D226C74BD1145EAA8851
|
||||
:15480600774AD6B6AAFE75610ECFAE82DD4A31E1A5C493500B35
|
||||
:15481B0059A2638FC59B8B79DDA7CA9DA0B2740A2B237C11DDC4
|
||||
:15483000BD360CA07D55DBFD0A64A1AA75F72B33E94F8DA8AC8E
|
||||
:1548450098EF1B4CB5A7AA33033C9E70BE5EF53F105345F6B844
|
||||
:15485A003A87E23E27B080D3FA36E8BB641DC149FC52521A56D0
|
||||
:15486F00B51F352B87CE362B25E7D7AA7E8DFCF6AD56B5CFAF8A
|
||||
:1548840021DE5FA38007FC84D3AAB5262EC498D02EB34D9CB7E4
|
||||
:15489900494EF3398587544FAC0077EBF8DCD8ABA96CEB9C2374
|
||||
:1548AE003CAC7AC455AA67259577EF63AA67F51A756FC12A05F2
|
||||
:1548C300FA1EE2CAA9F84501F31C188F9F0899F15FFEAAEA3924
|
||||
:1548D800DDACEEDD19529C34EE96FDE811A5EA3305EDB0BDEDB4
|
||||
:1548ED008A873ADCE3CD1D07610F4D0BA955E71F528573CDAA2E
|
||||
:15490200467105D7142DB6A28D07F8B9B10DB005E4EAA274A731
|
||||
:154917009A3BF85CAF89B51796053B8ACA9A3AAA92EB955DD473
|
||||
:15492C0037C8E4DF43EFBF449FF3F71B554F4FB30AB95A961F63
|
||||
:15494100866CE7F224BEAA0A6B1F5779D8CBCD141E52F712CEDB
|
||||
:15495600407FF038E624C5FF5168AF3A4F38D4BA54FFF9AFAA3B
|
||||
:15496B0025E776731ED84F3C3087685F1CD13AF2FB25D01DB469
|
||||
:15498000E33AF5164DC193F7122CED809FF08CBB49D7D177A2D7
|
||||
:1549950060B33287CA01FCDD3BCDEF5537B37EF44BB61B7169FF
|
||||
:1549AA006CD83090C51A8EC9DB064DAD803FF47B34E79A67F3A6
|
||||
:1549BF00D5368AC3CF47100C9B67E80797FDA842A93A574EB8AA
|
||||
:1549D4002D5767E3A337D9141FFD9A997C041A14131F053C9B2E
|
||||
:1549E900395E9EB378097CE4D7C86F062FED8EFFF9C6E2C026AC
|
||||
:1549FE00A24FAC73377B78E39C40B453F03CA6DAEE92C8C31BD2
|
||||
:154A130041A7395DEB3BD8D9F60EFB5D75CDC1EF702A8EAFEF25
|
||||
:154A280028196FEF10DC44F34F546B4EA2C34DA23DF07737A785
|
||||
:154A3D0085A3BD44DB4174788CE8B087F7E9F9B428B0689130FA
|
||||
:154A5200EF8EF209AE4F50D9D10D67385DC037D10D6333E84242
|
||||
:154A670034F13E60D185FA5DEFFA3CBADC994797B7B8CEEF5418
|
||||
:154A7C00DBDE49EDBA378F4EDCFE38F100FCB75BB4BA803BFF2F
|
||||
:154A91002CDA6CFA98F4B894478FBFB3E88136EDB768710B1D40
|
||||
:154AA6008836F9B4288A7C65636164FD46B68DB57BC6BFD23197
|
||||
:154ABB0047DAD451C4FECDC6E2F8BFEDF08C3FCCDD557FC5DBED
|
||||
:154AD000ABD7C3C81D799CE35DDC5EAD39A8EFBD5914D58A6DA5
|
||||
:154AE500BC533B2DF1ECA4FEEF5FA9256B9F9C86F7E2D9F09E3E
|
||||
:154AFA005C0C9AE7E13DC6F16ED7371FFFD4E77BEFB5F08F35C1
|
||||
:154B0F0011B4131BFFDE3CFC3BF8DA8689DF5E0BBFA5E8A7280A
|
||||
:154B2400AC92E65AF96DC04EFF261F174C9A211DE8A658743081
|
||||
:154B3900711E9E06CBB708CF9E94D0FE32BD13D4F714521EB8D2
|
||||
:154B4E00FFFDD0171F51ABD6B52A52C152A5A8E01E053CECA121
|
||||
:154B6300BE879D6DEE38F4530A3BBF56F1167C5E71177CC10C75
|
||||
:154B7800135675B0FBD674EC8A39DA01D762E084CA261E292BCC
|
||||
:154B8D00941D7C8C843FECB9D87314940FBBA705F6D86D8D1FA2
|
||||
:154BA20088075D7FC0F55A36EBA338B9B6FF32B57D8C5D9768CE
|
||||
:154BB7003A89F512C80734D6F94E5BF1BF4FDF55D744BCBD27B6
|
||||
:154BCC00785E4975BF63E8117EC65230EF62A69125EB8D0C3DF1
|
||||
:154BE1006A308DEB88C1DF37B5DE5AFC7F00E871AED038A00037
|
||||
:014BF60000BE
|
||||
:00000001FF
|
||||
311
drivers/atm/suni.c
Normal file
311
drivers/atm/suni.c
Normal file
@@ -0,0 +1,311 @@
|
||||
/* drivers/atm/suni.c - PMC PM5346 SUNI (PHY) driver */
|
||||
|
||||
/* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */
|
||||
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/jiffies.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/atmdev.h>
|
||||
#include <linux/sonet.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/capability.h>
|
||||
#include <linux/atm_suni.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/param.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/atomic.h>
|
||||
|
||||
#include "suni.h"
|
||||
|
||||
|
||||
#if 0
|
||||
#define DPRINTK(format,args...) printk(KERN_DEBUG format,##args)
|
||||
#else
|
||||
#define DPRINTK(format,args...)
|
||||
#endif
|
||||
|
||||
|
||||
struct suni_priv {
|
||||
struct k_sonet_stats sonet_stats; /* link diagnostics */
|
||||
int loop_mode; /* loopback mode */
|
||||
struct atm_dev *dev; /* device back-pointer */
|
||||
struct suni_priv *next; /* next SUNI */
|
||||
};
|
||||
|
||||
|
||||
#define PRIV(dev) ((struct suni_priv *) dev->phy_data)
|
||||
|
||||
#define PUT(val,reg) dev->ops->phy_put(dev,val,SUNI_##reg)
|
||||
#define GET(reg) dev->ops->phy_get(dev,SUNI_##reg)
|
||||
#define REG_CHANGE(mask,shift,value,reg) \
|
||||
PUT((GET(reg) & ~(mask)) | ((value) << (shift)),reg)
|
||||
|
||||
|
||||
static struct timer_list poll_timer;
|
||||
static struct suni_priv *sunis = NULL;
|
||||
static DEFINE_SPINLOCK(sunis_lock);
|
||||
|
||||
|
||||
#define ADD_LIMITED(s,v) \
|
||||
atomic_add((v),&stats->s); \
|
||||
if (atomic_read(&stats->s) < 0) atomic_set(&stats->s,INT_MAX);
|
||||
|
||||
|
||||
static void suni_hz(unsigned long from_timer)
|
||||
{
|
||||
struct suni_priv *walk;
|
||||
struct atm_dev *dev;
|
||||
struct k_sonet_stats *stats;
|
||||
|
||||
for (walk = sunis; walk; walk = walk->next) {
|
||||
dev = walk->dev;
|
||||
stats = &walk->sonet_stats;
|
||||
PUT(0,MRI); /* latch counters */
|
||||
udelay(1);
|
||||
ADD_LIMITED(section_bip,(GET(RSOP_SBL) & 0xff) |
|
||||
((GET(RSOP_SBM) & 0xff) << 8));
|
||||
ADD_LIMITED(line_bip,(GET(RLOP_LBL) & 0xff) |
|
||||
((GET(RLOP_LB) & 0xff) << 8) |
|
||||
((GET(RLOP_LBM) & 0xf) << 16));
|
||||
ADD_LIMITED(path_bip,(GET(RPOP_PBL) & 0xff) |
|
||||
((GET(RPOP_PBM) & 0xff) << 8));
|
||||
ADD_LIMITED(line_febe,(GET(RLOP_LFL) & 0xff) |
|
||||
((GET(RLOP_LF) & 0xff) << 8) |
|
||||
((GET(RLOP_LFM) & 0xf) << 16));
|
||||
ADD_LIMITED(path_febe,(GET(RPOP_PFL) & 0xff) |
|
||||
((GET(RPOP_PFM) & 0xff) << 8));
|
||||
ADD_LIMITED(corr_hcs,GET(RACP_CHEC) & 0xff);
|
||||
ADD_LIMITED(uncorr_hcs,GET(RACP_UHEC) & 0xff);
|
||||
ADD_LIMITED(rx_cells,(GET(RACP_RCCL) & 0xff) |
|
||||
((GET(RACP_RCC) & 0xff) << 8) |
|
||||
((GET(RACP_RCCM) & 7) << 16));
|
||||
ADD_LIMITED(tx_cells,(GET(TACP_TCCL) & 0xff) |
|
||||
((GET(TACP_TCC) & 0xff) << 8) |
|
||||
((GET(TACP_TCCM) & 7) << 16));
|
||||
}
|
||||
if (from_timer) mod_timer(&poll_timer,jiffies+HZ);
|
||||
}
|
||||
|
||||
|
||||
#undef ADD_LIMITED
|
||||
|
||||
|
||||
static int fetch_stats(struct atm_dev *dev,struct sonet_stats __user *arg,int zero)
|
||||
{
|
||||
struct sonet_stats tmp;
|
||||
int error = 0;
|
||||
|
||||
sonet_copy_stats(&PRIV(dev)->sonet_stats,&tmp);
|
||||
if (arg) error = copy_to_user(arg,&tmp,sizeof(tmp));
|
||||
if (zero && !error) sonet_subtract_stats(&PRIV(dev)->sonet_stats,&tmp);
|
||||
return error ? -EFAULT : 0;
|
||||
}
|
||||
|
||||
|
||||
#define HANDLE_FLAG(flag,reg,bit) \
|
||||
if (todo & flag) { \
|
||||
if (set) PUT(GET(reg) | bit,reg); \
|
||||
else PUT(GET(reg) & ~bit,reg); \
|
||||
todo &= ~flag; \
|
||||
}
|
||||
|
||||
|
||||
static int change_diag(struct atm_dev *dev,void __user *arg,int set)
|
||||
{
|
||||
int todo;
|
||||
|
||||
if (get_user(todo,(int __user *)arg)) return -EFAULT;
|
||||
HANDLE_FLAG(SONET_INS_SBIP,TSOP_DIAG,SUNI_TSOP_DIAG_DBIP8);
|
||||
HANDLE_FLAG(SONET_INS_LBIP,TLOP_DIAG,SUNI_TLOP_DIAG_DBIP);
|
||||
HANDLE_FLAG(SONET_INS_PBIP,TPOP_CD,SUNI_TPOP_DIAG_DB3);
|
||||
HANDLE_FLAG(SONET_INS_FRAME,RSOP_CIE,SUNI_RSOP_CIE_FOOF);
|
||||
HANDLE_FLAG(SONET_INS_LAIS,TSOP_CTRL,SUNI_TSOP_CTRL_LAIS);
|
||||
HANDLE_FLAG(SONET_INS_PAIS,TPOP_CD,SUNI_TPOP_DIAG_PAIS);
|
||||
HANDLE_FLAG(SONET_INS_LOS,TSOP_DIAG,SUNI_TSOP_DIAG_DLOS);
|
||||
HANDLE_FLAG(SONET_INS_HCS,TACP_CS,SUNI_TACP_CS_DHCS);
|
||||
return put_user(todo,(int __user *)arg) ? -EFAULT : 0;
|
||||
}
|
||||
|
||||
|
||||
#undef HANDLE_FLAG
|
||||
|
||||
|
||||
static int get_diag(struct atm_dev *dev,void __user *arg)
|
||||
{
|
||||
int set;
|
||||
|
||||
set = 0;
|
||||
if (GET(TSOP_DIAG) & SUNI_TSOP_DIAG_DBIP8) set |= SONET_INS_SBIP;
|
||||
if (GET(TLOP_DIAG) & SUNI_TLOP_DIAG_DBIP) set |= SONET_INS_LBIP;
|
||||
if (GET(TPOP_CD) & SUNI_TPOP_DIAG_DB3) set |= SONET_INS_PBIP;
|
||||
/* SONET_INS_FRAME is one-shot only */
|
||||
if (GET(TSOP_CTRL) & SUNI_TSOP_CTRL_LAIS) set |= SONET_INS_LAIS;
|
||||
if (GET(TPOP_CD) & SUNI_TPOP_DIAG_PAIS) set |= SONET_INS_PAIS;
|
||||
if (GET(TSOP_DIAG) & SUNI_TSOP_DIAG_DLOS) set |= SONET_INS_LOS;
|
||||
if (GET(TACP_CS) & SUNI_TACP_CS_DHCS) set |= SONET_INS_HCS;
|
||||
return put_user(set,(int __user *)arg) ? -EFAULT : 0;
|
||||
}
|
||||
|
||||
|
||||
static int set_loopback(struct atm_dev *dev,int mode)
|
||||
{
|
||||
unsigned char control;
|
||||
|
||||
control = GET(MCT) & ~(SUNI_MCT_DLE | SUNI_MCT_LLE);
|
||||
switch (mode) {
|
||||
case ATM_LM_NONE:
|
||||
break;
|
||||
case ATM_LM_LOC_PHY:
|
||||
control |= SUNI_MCT_DLE;
|
||||
break;
|
||||
case ATM_LM_RMT_PHY:
|
||||
control |= SUNI_MCT_LLE;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
PUT(control,MCT);
|
||||
PRIV(dev)->loop_mode = mode;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int suni_ioctl(struct atm_dev *dev,unsigned int cmd,void __user *arg)
|
||||
{
|
||||
switch (cmd) {
|
||||
case SONET_GETSTATZ:
|
||||
case SONET_GETSTAT:
|
||||
return fetch_stats(dev, arg, cmd == SONET_GETSTATZ);
|
||||
case SONET_SETDIAG:
|
||||
return change_diag(dev,arg,1);
|
||||
case SONET_CLRDIAG:
|
||||
return change_diag(dev,arg,0);
|
||||
case SONET_GETDIAG:
|
||||
return get_diag(dev,arg);
|
||||
case SONET_SETFRAMING:
|
||||
if (arg != SONET_FRAME_SONET) return -EINVAL;
|
||||
return 0;
|
||||
case SONET_GETFRAMING:
|
||||
return put_user(SONET_FRAME_SONET,(int __user *)arg) ?
|
||||
-EFAULT : 0;
|
||||
case SONET_GETFRSENSE:
|
||||
return -EINVAL;
|
||||
case ATM_SETLOOP:
|
||||
return set_loopback(dev,(int)(unsigned long)arg);
|
||||
case ATM_GETLOOP:
|
||||
return put_user(PRIV(dev)->loop_mode,(int __user *)arg) ?
|
||||
-EFAULT : 0;
|
||||
case ATM_QUERYLOOP:
|
||||
return put_user(ATM_LM_LOC_PHY | ATM_LM_RMT_PHY,
|
||||
(int __user *) arg) ? -EFAULT : 0;
|
||||
default:
|
||||
return -ENOIOCTLCMD;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void poll_los(struct atm_dev *dev)
|
||||
{
|
||||
dev->signal = GET(RSOP_SIS) & SUNI_RSOP_SIS_LOSV ? ATM_PHY_SIG_LOST :
|
||||
ATM_PHY_SIG_FOUND;
|
||||
}
|
||||
|
||||
|
||||
static void suni_int(struct atm_dev *dev)
|
||||
{
|
||||
poll_los(dev);
|
||||
printk(KERN_NOTICE "%s(itf %d): signal %s\n",dev->type,dev->number,
|
||||
dev->signal == ATM_PHY_SIG_LOST ? "lost" : "detected again");
|
||||
}
|
||||
|
||||
|
||||
static int suni_start(struct atm_dev *dev)
|
||||
{
|
||||
unsigned long flags;
|
||||
int first;
|
||||
|
||||
if (!(dev->phy_data = kmalloc(sizeof(struct suni_priv),GFP_KERNEL)))
|
||||
return -ENOMEM;
|
||||
|
||||
PRIV(dev)->dev = dev;
|
||||
spin_lock_irqsave(&sunis_lock,flags);
|
||||
first = !sunis;
|
||||
PRIV(dev)->next = sunis;
|
||||
sunis = PRIV(dev);
|
||||
spin_unlock_irqrestore(&sunis_lock,flags);
|
||||
memset(&PRIV(dev)->sonet_stats,0,sizeof(struct k_sonet_stats));
|
||||
PUT(GET(RSOP_CIE) | SUNI_RSOP_CIE_LOSE,RSOP_CIE);
|
||||
/* interrupt on loss of signal */
|
||||
poll_los(dev); /* ... and clear SUNI interrupts */
|
||||
if (dev->signal == ATM_PHY_SIG_LOST)
|
||||
printk(KERN_WARNING "%s(itf %d): no signal\n",dev->type,
|
||||
dev->number);
|
||||
PRIV(dev)->loop_mode = ATM_LM_NONE;
|
||||
suni_hz(0); /* clear SUNI counters */
|
||||
(void) fetch_stats(dev,NULL,1); /* clear kernel counters */
|
||||
if (first) {
|
||||
init_timer(&poll_timer);
|
||||
poll_timer.expires = jiffies+HZ;
|
||||
poll_timer.function = suni_hz;
|
||||
poll_timer.data = 1;
|
||||
#if 0
|
||||
printk(KERN_DEBUG "[u] p=0x%lx,n=0x%lx\n",(unsigned long) poll_timer.list.prev,
|
||||
(unsigned long) poll_timer.list.next);
|
||||
#endif
|
||||
add_timer(&poll_timer);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int suni_stop(struct atm_dev *dev)
|
||||
{
|
||||
struct suni_priv **walk;
|
||||
unsigned long flags;
|
||||
|
||||
/* let SAR driver worry about stopping interrupts */
|
||||
spin_lock_irqsave(&sunis_lock,flags);
|
||||
for (walk = &sunis; *walk != PRIV(dev);
|
||||
walk = &PRIV((*walk)->dev)->next);
|
||||
*walk = PRIV((*walk)->dev)->next;
|
||||
if (!sunis) del_timer_sync(&poll_timer);
|
||||
spin_unlock_irqrestore(&sunis_lock,flags);
|
||||
kfree(PRIV(dev));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static const struct atmphy_ops suni_ops = {
|
||||
.start = suni_start,
|
||||
.ioctl = suni_ioctl,
|
||||
.interrupt = suni_int,
|
||||
.stop = suni_stop,
|
||||
};
|
||||
|
||||
|
||||
int suni_init(struct atm_dev *dev)
|
||||
{
|
||||
unsigned char mri;
|
||||
|
||||
mri = GET(MRI); /* reset SUNI */
|
||||
PUT(mri | SUNI_MRI_RESET,MRI);
|
||||
PUT(mri,MRI);
|
||||
PUT((GET(MT) & SUNI_MT_DS27_53),MT); /* disable all tests */
|
||||
REG_CHANGE(SUNI_TPOP_APM_S,SUNI_TPOP_APM_S_SHIFT,SUNI_TPOP_S_SONET,
|
||||
TPOP_APM); /* use SONET */
|
||||
REG_CHANGE(SUNI_TACP_IUCHP_CLP,0,SUNI_TACP_IUCHP_CLP,
|
||||
TACP_IUCHP); /* idle cells */
|
||||
PUT(SUNI_IDLE_PATTERN,TACP_IUCPOP);
|
||||
dev->phy = &suni_ops;
|
||||
return 0;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(suni_init);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
211
drivers/atm/suni.h
Normal file
211
drivers/atm/suni.h
Normal file
@@ -0,0 +1,211 @@
|
||||
/* drivers/atm/suni.h - PMC PM5346 SUNI (PHY) declarations */
|
||||
|
||||
/* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */
|
||||
|
||||
|
||||
#ifndef DRIVER_ATM_SUNI_H
|
||||
#define DRIVER_ATM_SUNI_H
|
||||
|
||||
#include <linux/atmdev.h>
|
||||
#include <linux/atmioc.h>
|
||||
|
||||
|
||||
/* SUNI registers */
|
||||
|
||||
#define SUNI_MRI 0x00 /* Master Reset and Identity / Load
|
||||
Meter */
|
||||
#define SUNI_MC 0x01 /* Master Configuration */
|
||||
#define SUNI_MIS 0x02 /* Master Interrupt Status */
|
||||
/* no 0x03 */
|
||||
#define SUNI_MCM 0x04 /* Master Clock Monitor */
|
||||
#define SUNI_MCT 0x05 /* Master Control */
|
||||
#define SUNI_CSCS 0x06 /* Clock Synthesis Control and Status */
|
||||
#define SUNI_CRCS 0x07 /* Clock Recovery Control and Status */
|
||||
/* 0x08-0x0F reserved */
|
||||
#define SUNI_RSOP_CIE 0x10 /* RSOP Control/Interrupt Enable */
|
||||
#define SUNI_RSOP_SIS 0x11 /* RSOP Status/Interrupt Status */
|
||||
#define SUNI_RSOP_SBL 0x12 /* RSOP Section BIP-8 LSB */
|
||||
#define SUNI_RSOP_SBM 0x13 /* RSOP Section BIP-8 MSB */
|
||||
#define SUNI_TSOP_CTRL 0x14 /* TSOP Control */
|
||||
#define SUNI_TSOP_DIAG 0x15 /* TSOP Diagnostic */
|
||||
/* 0x16-0x17 reserved */
|
||||
#define SUNI_RLOP_CS 0x18 /* RLOP Control/Status */
|
||||
#define SUNI_RLOP_IES 0x19 /* RLOP Interrupt Enable/Status */
|
||||
#define SUNI_RLOP_LBL 0x1A /* RLOP Line BIP-8/24 LSB */
|
||||
#define SUNI_RLOP_LB 0x1B /* RLOP Line BIP-8/24 */
|
||||
#define SUNI_RLOP_LBM 0x1C /* RLOP Line BIP-8/24 MSB */
|
||||
#define SUNI_RLOP_LFL 0x1D /* RLOP Line FEBE LSB */
|
||||
#define SUNI_RLOP_LF 0x1E /* RLOP Line FEBE */
|
||||
#define SUNI_RLOP_LFM 0x1F /* RLOP Line FEBE MSB */
|
||||
#define SUNI_TLOP_CTRL 0x20 /* TLOP Control */
|
||||
#define SUNI_TLOP_DIAG 0x21 /* TLOP Diagnostic */
|
||||
/* 0x22-0x2F reserved */
|
||||
#define SUNI_RPOP_SC 0x30 /* RPOP Status/Control */
|
||||
#define SUNI_RPOP_IS 0x31 /* RPOP Interrupt Status */
|
||||
/* 0x32 reserved */
|
||||
#define SUNI_RPOP_IE 0x33 /* RPOP Interrupt Enable */
|
||||
/* 0x34-0x36 reserved */
|
||||
#define SUNI_RPOP_PSL 0x37 /* RPOP Path Signal Label */
|
||||
#define SUNI_RPOP_PBL 0x38 /* RPOP Path BIP-8 LSB */
|
||||
#define SUNI_RPOP_PBM 0x39 /* RPOP Path BIP-8 MSB */
|
||||
#define SUNI_RPOP_PFL 0x3A /* RPOP Path FEBE LSB */
|
||||
#define SUNI_RPOP_PFM 0x3B /* RPOP Path FEBE MSB */
|
||||
/* 0x3C reserved */
|
||||
#define SUNI_RPOP_PBC 0x3D /* RPOP Path BIP-8 Configuration */
|
||||
/* 0x3E-0x3F reserved */
|
||||
#define SUNI_TPOP_CD 0x40 /* TPOP Control/Diagnostic */
|
||||
#define SUNI_TPOP_PC 0x41 /* TPOP Pointer Control */
|
||||
/* 0x42-0x44 reserved */
|
||||
#define SUNI_TPOP_APL 0x45 /* TPOP Arbitrary Pointer LSB */
|
||||
#define SUNI_TPOP_APM 0x46 /* TPOP Arbitrary Pointer MSB */
|
||||
/* 0x47 reserved */
|
||||
#define SUNI_TPOP_PSL 0x48 /* TPOP Path Signal Label */
|
||||
#define SUNI_TPOP_PS 0x49 /* TPOP Path Status */
|
||||
/* 0x4A-0x4F reserved */
|
||||
#define SUNI_RACP_CS 0x50 /* RACP Control/Status */
|
||||
#define SUNI_RACP_IES 0x51 /* RACP Interrupt Enable/Status */
|
||||
#define SUNI_RACP_MHP 0x52 /* RACP Match Header Pattern */
|
||||
#define SUNI_RACP_MHM 0x53 /* RACP Match Header Mask */
|
||||
#define SUNI_RACP_CHEC 0x54 /* RACP Correctable HCS Error Count */
|
||||
#define SUNI_RACP_UHEC 0x55 /* RACP Uncorrectable HCS Err Count */
|
||||
#define SUNI_RACP_RCCL 0x56 /* RACP Receive Cell Counter LSB */
|
||||
#define SUNI_RACP_RCC 0x57 /* RACP Receive Cell Counter */
|
||||
#define SUNI_RACP_RCCM 0x58 /* RACP Receive Cell Counter MSB */
|
||||
#define SUNI_RACP_CFG 0x59 /* RACP Configuration */
|
||||
/* 0x5A-0x5F reserved */
|
||||
#define SUNI_TACP_CS 0x60 /* TACP Control/Status */
|
||||
#define SUNI_TACP_IUCHP 0x61 /* TACP Idle/Unassigned Cell Hdr Pat */
|
||||
#define SUNI_TACP_IUCPOP 0x62 /* TACP Idle/Unassigned Cell Payload
|
||||
Octet Pattern */
|
||||
#define SUNI_TACP_FIFO 0x63 /* TACP FIFO Configuration */
|
||||
#define SUNI_TACP_TCCL 0x64 /* TACP Transmit Cell Counter LSB */
|
||||
#define SUNI_TACP_TCC 0x65 /* TACP Transmit Cell Counter */
|
||||
#define SUNI_TACP_TCCM 0x66 /* TACP Transmit Cell Counter MSB */
|
||||
#define SUNI_TACP_CFG 0x67 /* TACP Configuration */
|
||||
/* 0x68-0x7F reserved */
|
||||
#define SUNI_MT 0x80 /* Master Test */
|
||||
/* 0x81-0xFF reserved */
|
||||
|
||||
/* SUNI register values */
|
||||
|
||||
|
||||
/* MRI is reg 0 */
|
||||
#define SUNI_MRI_ID 0x0f /* R, SUNI revision number */
|
||||
#define SUNI_MRI_ID_SHIFT 0
|
||||
#define SUNI_MRI_TYPE 0x70 /* R, SUNI type (lite is 011) */
|
||||
#define SUNI_MRI_TYPE_SHIFT 4
|
||||
#define SUNI_MRI_RESET 0x80 /* RW, reset & power down chip
|
||||
0: normal operation
|
||||
1: reset & low power */
|
||||
/* MCT is reg 5 */
|
||||
#define SUNI_MCT_LOOPT 0x01 /* RW, timing source, 0: from
|
||||
TRCLK+/- */
|
||||
#define SUNI_MCT_DLE 0x02 /* RW, diagnostic loopback */
|
||||
#define SUNI_MCT_LLE 0x04 /* RW, line loopback */
|
||||
#define SUNI_MCT_FIXPTR 0x20 /* RW, disable transmit payload pointer
|
||||
adjustments
|
||||
0: payload ptr controlled by TPOP
|
||||
ptr control reg
|
||||
1: payload pointer fixed at 522 */
|
||||
#define SUNI_MCT_LCDV 0x40 /* R, loss of cell delineation */
|
||||
#define SUNI_MCT_LCDE 0x80 /* RW, loss of cell delineation
|
||||
interrupt (1: on) */
|
||||
/* RSOP_CIE is reg 0x10 */
|
||||
#define SUNI_RSOP_CIE_OOFE 0x01 /* RW, enable interrupt on frame alarm
|
||||
state change */
|
||||
#define SUNI_RSOP_CIE_LOFE 0x02 /* RW, enable interrupt on loss of
|
||||
frame state change */
|
||||
#define SUNI_RSOP_CIE_LOSE 0x04 /* RW, enable interrupt on loss of
|
||||
signal state change */
|
||||
#define SUNI_RSOP_CIE_BIPEE 0x08 /* RW, enable interrupt on section
|
||||
BIP-8 error (B1) */
|
||||
#define SUNI_RSOP_CIE_FOOF 0x20 /* W, force RSOP out of frame at next
|
||||
boundary */
|
||||
#define SUNI_RSOP_CIE_DDS 0x40 /* RW, disable scrambling */
|
||||
|
||||
/* RSOP_SIS is reg 0x11 */
|
||||
#define SUNI_RSOP_SIS_OOFV 0x01 /* R, out of frame */
|
||||
#define SUNI_RSOP_SIS_LOFV 0x02 /* R, loss of frame */
|
||||
#define SUNI_RSOP_SIS_LOSV 0x04 /* R, loss of signal */
|
||||
#define SUNI_RSOP_SIS_OOFI 0x08 /* R, out of frame interrupt */
|
||||
#define SUNI_RSOP_SIS_LOFI 0x10 /* R, loss of frame interrupt */
|
||||
#define SUNI_RSOP_SIS_LOSI 0x20 /* R, loss of signal interrupt */
|
||||
#define SUNI_RSOP_SIS_BIPEI 0x40 /* R, section BIP-8 interrupt */
|
||||
|
||||
/* TSOP_CTRL is reg 0x14 */
|
||||
#define SUNI_TSOP_CTRL_LAIS 0x01 /* insert alarm indication signal */
|
||||
#define SUNI_TSOP_CTRL_DS 0x40 /* disable scrambling */
|
||||
|
||||
/* TSOP_DIAG is reg 0x15 */
|
||||
#define SUNI_TSOP_DIAG_DFP 0x01 /* insert single bit error cont. */
|
||||
#define SUNI_TSOP_DIAG_DBIP8 0x02 /* insert section BIP err (cont) */
|
||||
#define SUNI_TSOP_DIAG_DLOS 0x04 /* set line to zero (loss of signal) */
|
||||
|
||||
/* TLOP_DIAG is reg 0x21 */
|
||||
#define SUNI_TLOP_DIAG_DBIP 0x01 /* insert line BIP err (continuously) */
|
||||
|
||||
/* TPOP_DIAG is reg 0x40 */
|
||||
#define SUNI_TPOP_DIAG_PAIS 0x01 /* insert STS path alarm ind (cont) */
|
||||
#define SUNI_TPOP_DIAG_DB3 0x02 /* insert path BIP err (continuously) */
|
||||
|
||||
/* TPOP_APM is reg 0x46 */
|
||||
#define SUNI_TPOP_APM_APTR 0x03 /* RW, arbitrary pointer, upper 2
|
||||
bits */
|
||||
#define SUNI_TPOP_APM_APTR_SHIFT 0
|
||||
#define SUNI_TPOP_APM_S 0x0c /* RW, "unused" bits of payload
|
||||
pointer */
|
||||
#define SUNI_TPOP_APM_S_SHIFT 2
|
||||
#define SUNI_TPOP_APM_NDF 0xf0 /* RW, NDF bits */
|
||||
#define SUNI_TPOP_APM_NDF_SHIFT 4
|
||||
|
||||
#define SUNI_TPOP_S_SONET 0 /* set S bits to 00 */
|
||||
#define SUNI_TPOP_S_SDH 2 /* set S bits to 10 */
|
||||
|
||||
/* RACP_IES is reg 0x51 */
|
||||
#define SUNI_RACP_IES_FOVRI 0x02 /* R, FIFO overrun */
|
||||
#define SUNI_RACP_IES_UHCSI 0x04 /* R, uncorrectable HCS error */
|
||||
#define SUNI_RACP_IES_CHCSI 0x08 /* R, correctable HCS error */
|
||||
#define SUNI_RACP_IES_OOCDI 0x10 /* R, change of cell delineation
|
||||
state */
|
||||
#define SUNI_RACP_IES_FIFOE 0x20 /* RW, enable FIFO overrun interrupt */
|
||||
#define SUNI_RACP_IES_HCSE 0x40 /* RW, enable HCS error interrupt */
|
||||
#define SUNI_RACP_IES_OOCDE 0x80 /* RW, enable cell delineation state
|
||||
change interrupt */
|
||||
|
||||
/* TACP_CS is reg 0x60 */
|
||||
#define SUNI_TACP_CS_FIFORST 0x01 /* RW, reset transmit FIFO (sticky) */
|
||||
#define SUNI_TACP_CS_DSCR 0x02 /* RW, disable payload scrambling */
|
||||
#define SUNI_TACP_CS_HCAADD 0x04 /* RW, add coset polynomial to HCS */
|
||||
#define SUNI_TACP_CS_DHCS 0x10 /* RW, insert HCS errors */
|
||||
#define SUNI_TACP_CS_FOVRI 0x20 /* R, FIFO overrun */
|
||||
#define SUNI_TACP_CS_TSOCI 0x40 /* R, TSOC input high */
|
||||
#define SUNI_TACP_CS_FIFOE 0x80 /* RW, enable FIFO overrun interrupt */
|
||||
|
||||
/* TACP_IUCHP is reg 0x61 */
|
||||
#define SUNI_TACP_IUCHP_CLP 0x01 /* RW, 8th bit of 4th octet of i/u
|
||||
pattern */
|
||||
#define SUNI_TACP_IUCHP_PTI 0x0e /* RW, 5th-7th bits of 4th octet of i/u
|
||||
pattern */
|
||||
#define SUNI_TACP_IUCHP_PTI_SHIFT 1
|
||||
#define SUNI_TACP_IUCHP_GFC 0xf0 /* RW, 1st-4th bits of 1st octet of i/u
|
||||
pattern */
|
||||
#define SUNI_TACP_IUCHP_GFC_SHIFT 4
|
||||
|
||||
/* MT is reg 0x80 */
|
||||
#define SUNI_MT_HIZIO 0x01 /* RW, all but data bus & MP interface
|
||||
tri-state */
|
||||
#define SUNI_MT_HIZDATA 0x02 /* W, also tri-state data bus */
|
||||
#define SUNI_MT_IOTST 0x04 /* RW, enable test mode */
|
||||
#define SUNI_MT_DBCTRL 0x08 /* W, control data bus by CSB pin */
|
||||
#define SUNI_MT_PMCTST 0x10 /* W, PMC test mode */
|
||||
#define SUNI_MT_DS27_53 0x80 /* RW, select between 8- or 16- bit */
|
||||
|
||||
|
||||
#define SUNI_IDLE_PATTERN 0x6a /* idle pattern */
|
||||
|
||||
|
||||
#ifdef __KERNEL__
|
||||
int suni_init(struct atm_dev *dev);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
20
drivers/atm/tonga.h
Normal file
20
drivers/atm/tonga.h
Normal file
@@ -0,0 +1,20 @@
|
||||
/* drivers/atm/tonga.h - Efficient Networks Tonga (PCI bridge) declarations */
|
||||
|
||||
/* Written 1995 by Werner Almesberger, EPFL LRC */
|
||||
|
||||
|
||||
#ifndef DRIVER_ATM_TONGA_H
|
||||
#define DRIVER_ATM_TONGA_H
|
||||
|
||||
#define PCI_TONGA_CTRL 0x60 /* control register */
|
||||
|
||||
#define END_SWAP_DMA 0x80 /* endian swap on DMA */
|
||||
#define END_SWAP_BYTE 0x40 /* endian swap on slave byte accesses */
|
||||
#define END_SWAP_WORD 0x20 /* endian swap on slave word accesses */
|
||||
#define SEPROM_MAGIC 0x0c /* obscure required pattern (ASIC only) */
|
||||
#define SEPROM_DATA 0x02 /* serial EEPROM data (ASIC only) */
|
||||
#define SEPROM_CLK 0x01 /* serial EEPROM clock (ASIC only) */
|
||||
|
||||
#define SEPROM_ESI_BASE 64 /* start of ESI in serial EEPROM */
|
||||
|
||||
#endif
|
||||
292
drivers/atm/uPD98401.h
Normal file
292
drivers/atm/uPD98401.h
Normal file
@@ -0,0 +1,292 @@
|
||||
/* drivers/atm/uPD98401.h - NEC uPD98401 (SAR) declarations */
|
||||
|
||||
/* Written 1995 by Werner Almesberger, EPFL LRC */
|
||||
|
||||
|
||||
#ifndef DRIVERS_ATM_uPD98401_H
|
||||
#define DRIVERS_ATM_uPD98401_H
|
||||
|
||||
|
||||
#define MAX_CRAM_SIZE (1 << 18) /* 2^18 words */
|
||||
#define RAM_INCREMENT 1024 /* check in 4 kB increments */
|
||||
|
||||
#define uPD98401_PORTS 0x24 /* probably more ? */
|
||||
|
||||
|
||||
/*
|
||||
* Commands
|
||||
*/
|
||||
|
||||
#define uPD98401_OPEN_CHAN 0x20000000 /* open channel */
|
||||
#define uPD98401_CHAN_ADDR 0x0003fff8 /* channel address */
|
||||
#define uPD98401_CHAN_ADDR_SHIFT 3
|
||||
#define uPD98401_CLOSE_CHAN 0x24000000 /* close channel */
|
||||
#define uPD98401_CHAN_RT 0x02000000 /* RX/TX (0 TX, 1 RX) */
|
||||
#define uPD98401_DEACT_CHAN 0x28000000 /* deactivate channel */
|
||||
#define uPD98401_TX_READY 0x30000000 /* TX ready */
|
||||
#define uPD98401_ADD_BAT 0x34000000 /* add batches */
|
||||
#define uPD98401_POOL 0x000f0000 /* pool number */
|
||||
#define uPD98401_POOL_SHIFT 16
|
||||
#define uPD98401_POOL_NUMBAT 0x0000ffff /* number of batches */
|
||||
#define uPD98401_NOP 0x3f000000 /* NOP */
|
||||
#define uPD98401_IND_ACC 0x00000000 /* Indirect Access */
|
||||
#define uPD98401_IA_RW 0x10000000 /* Read/Write (0 W, 1 R) */
|
||||
#define uPD98401_IA_B3 0x08000000 /* Byte select, 1 enable */
|
||||
#define uPD98401_IA_B2 0x04000000
|
||||
#define uPD98401_IA_B1 0x02000000
|
||||
#define uPD98401_IA_B0 0x01000000
|
||||
#define uPD98401_IA_BALL 0x0f000000 /* whole longword */
|
||||
#define uPD98401_IA_TGT 0x000c0000 /* Target */
|
||||
#define uPD98401_IA_TGT_SHIFT 18
|
||||
#define uPD98401_IA_TGT_CM 0 /* - Control Memory */
|
||||
#define uPD98401_IA_TGT_SAR 1 /* - uPD98401 registers */
|
||||
#define uPD98401_IA_TGT_PHY 3 /* - PHY device */
|
||||
#define uPD98401_IA_ADDR 0x0003ffff
|
||||
|
||||
/*
|
||||
* Command Register Status
|
||||
*/
|
||||
|
||||
#define uPD98401_BUSY 0x80000000 /* SAR is busy */
|
||||
#define uPD98401_LOCKED 0x40000000 /* SAR is locked by other CPU */
|
||||
|
||||
/*
|
||||
* Indications
|
||||
*/
|
||||
|
||||
/* Normal (AAL5) Receive Indication */
|
||||
#define uPD98401_AAL5_UINFO 0xffff0000 /* user-supplied information */
|
||||
#define uPD98401_AAL5_UINFO_SHIFT 16
|
||||
#define uPD98401_AAL5_SIZE 0x0000ffff /* PDU size (in _CELLS_ !!) */
|
||||
#define uPD98401_AAL5_CHAN 0x7fff0000 /* Channel number */
|
||||
#define uPD98401_AAL5_CHAN_SHIFT 16
|
||||
#define uPD98401_AAL5_ERR 0x00008000 /* Error indication */
|
||||
#define uPD98401_AAL5_CI 0x00004000 /* Congestion Indication */
|
||||
#define uPD98401_AAL5_CLP 0x00002000 /* CLP (>= 1 cell had CLP=1) */
|
||||
#define uPD98401_AAL5_ES 0x00000f00 /* Error Status */
|
||||
#define uPD98401_AAL5_ES_SHIFT 8
|
||||
#define uPD98401_AAL5_ES_NONE 0 /* No error */
|
||||
#define uPD98401_AAL5_ES_FREE 1 /* Receiver free buf underflow */
|
||||
#define uPD98401_AAL5_ES_FIFO 2 /* Receiver FIFO overrun */
|
||||
#define uPD98401_AAL5_ES_TOOBIG 3 /* Maximum length violation */
|
||||
#define uPD98401_AAL5_ES_CRC 4 /* CRC error */
|
||||
#define uPD98401_AAL5_ES_ABORT 5 /* User abort */
|
||||
#define uPD98401_AAL5_ES_LENGTH 6 /* Length violation */
|
||||
#define uPD98401_AAL5_ES_T1 7 /* T1 error (timeout) */
|
||||
#define uPD98401_AAL5_ES_DEACT 8 /* Deactivated with DEACT_CHAN */
|
||||
#define uPD98401_AAL5_POOL 0x0000001f /* Free buffer pool number */
|
||||
|
||||
/* Raw Cell Indication */
|
||||
#define uPD98401_RAW_UINFO uPD98401_AAL5_UINFO
|
||||
#define uPD98401_RAW_UINFO_SHIFT uPD98401_AAL5_UINFO_SHIFT
|
||||
#define uPD98401_RAW_HEC 0x000000ff /* HEC */
|
||||
#define uPD98401_RAW_CHAN uPD98401_AAL5_CHAN
|
||||
#define uPD98401_RAW_CHAN_SHIFT uPD98401_AAL5_CHAN_SHIFT
|
||||
|
||||
/* Transmit Indication */
|
||||
#define uPD98401_TXI_CONN 0x7fff0000 /* Connection Number */
|
||||
#define uPD98401_TXI_CONN_SHIFT 16
|
||||
#define uPD98401_TXI_ACTIVE 0x00008000 /* Channel remains active */
|
||||
#define uPD98401_TXI_PQP 0x00007fff /* Packet Queue Pointer */
|
||||
|
||||
/*
|
||||
* Directly Addressable Registers
|
||||
*/
|
||||
|
||||
#define uPD98401_GMR 0x00 /* General Mode Register */
|
||||
#define uPD98401_GSR 0x01 /* General Status Register */
|
||||
#define uPD98401_IMR 0x02 /* Interrupt Mask Register */
|
||||
#define uPD98401_RQU 0x03 /* Receive Queue Underrun */
|
||||
#define uPD98401_RQA 0x04 /* Receive Queue Alert */
|
||||
#define uPD98401_ADDR 0x05 /* Last Burst Address */
|
||||
#define uPD98401_VER 0x06 /* Version Number */
|
||||
#define uPD98401_SWR 0x07 /* Software Reset */
|
||||
#define uPD98401_CMR 0x08 /* Command Register */
|
||||
#define uPD98401_CMR_L 0x09 /* Command Register and Lock/Unlock */
|
||||
#define uPD98401_CER 0x0a /* Command Extension Register */
|
||||
#define uPD98401_CER_L 0x0b /* Command Ext Reg and Lock/Unlock */
|
||||
|
||||
#define uPD98401_MSH(n) (0x10+(n)) /* Mailbox n Start Address High */
|
||||
#define uPD98401_MSL(n) (0x14+(n)) /* Mailbox n Start Address High */
|
||||
#define uPD98401_MBA(n) (0x18+(n)) /* Mailbox n Bottom Address */
|
||||
#define uPD98401_MTA(n) (0x1c+(n)) /* Mailbox n Tail Address */
|
||||
#define uPD98401_MWA(n) (0x20+(n)) /* Mailbox n Write Address */
|
||||
|
||||
/* GMR is at 0x00 */
|
||||
#define uPD98401_GMR_ONE 0x80000000 /* Must be set to one */
|
||||
#define uPD98401_GMR_SLM 0x40000000 /* Address mode (0 word, 1 byte) */
|
||||
#define uPD98401_GMR_CPE 0x00008000 /* Control Memory Parity Enable */
|
||||
#define uPD98401_GMR_LP 0x00004000 /* Loopback */
|
||||
#define uPD98401_GMR_WA 0x00002000 /* Early Bus Write Abort/RDY */
|
||||
#define uPD98401_GMR_RA 0x00001000 /* Early Read Abort/RDY */
|
||||
#define uPD98401_GMR_SZ 0x00000f00 /* Burst Size Enable */
|
||||
#define uPD98401_BURST16 0x00000800 /* 16-word burst */
|
||||
#define uPD98401_BURST8 0x00000400 /* 8-word burst */
|
||||
#define uPD98401_BURST4 0x00000200 /* 4-word burst */
|
||||
#define uPD98401_BURST2 0x00000100 /* 2-word burst */
|
||||
#define uPD98401_GMR_AD 0x00000080 /* Address (burst resolution) Disable */
|
||||
#define uPD98401_GMR_BO 0x00000040 /* Byte Order (0 little, 1 big) */
|
||||
#define uPD98401_GMR_PM 0x00000020 /* Bus Parity Mode (0 byte, 1 word)*/
|
||||
#define uPD98401_GMR_PC 0x00000010 /* Bus Parity Control (0even,1odd) */
|
||||
#define uPD98401_GMR_BPE 0x00000008 /* Bus Parity Enable */
|
||||
#define uPD98401_GMR_DR 0x00000004 /* Receive Drop Mode (0drop,1don't)*/
|
||||
#define uPD98401_GMR_SE 0x00000002 /* Shapers Enable */
|
||||
#define uPD98401_GMR_RE 0x00000001 /* Receiver Enable */
|
||||
|
||||
/* GSR is at 0x01, IMR is at 0x02 */
|
||||
#define uPD98401_INT_PI 0x80000000 /* PHY interrupt */
|
||||
#define uPD98401_INT_RQA 0x40000000 /* Receive Queue Alert */
|
||||
#define uPD98401_INT_RQU 0x20000000 /* Receive Queue Underrun */
|
||||
#define uPD98401_INT_RD 0x10000000 /* Receiver Deactivated */
|
||||
#define uPD98401_INT_SPE 0x08000000 /* System Parity Error */
|
||||
#define uPD98401_INT_CPE 0x04000000 /* Control Memory Parity Error */
|
||||
#define uPD98401_INT_SBE 0x02000000 /* System Bus Error */
|
||||
#define uPD98401_INT_IND 0x01000000 /* Initialization Done */
|
||||
#define uPD98401_INT_RCR 0x0000ff00 /* Raw Cell Received */
|
||||
#define uPD98401_INT_RCR_SHIFT 8
|
||||
#define uPD98401_INT_MF 0x000000f0 /* Mailbox Full */
|
||||
#define uPD98401_INT_MF_SHIFT 4
|
||||
#define uPD98401_INT_MM 0x0000000f /* Mailbox Modified */
|
||||
|
||||
/* VER is at 0x06 */
|
||||
#define uPD98401_MAJOR 0x0000ff00 /* Major revision */
|
||||
#define uPD98401_MAJOR_SHIFT 8
|
||||
#define uPD98401_MINOR 0x000000ff /* Minor revision */
|
||||
|
||||
/*
|
||||
* Indirectly Addressable Registers
|
||||
*/
|
||||
|
||||
#define uPD98401_IM(n) (0x40000+(n)) /* Scheduler n I and M */
|
||||
#define uPD98401_X(n) (0x40010+(n)) /* Scheduler n X */
|
||||
#define uPD98401_Y(n) (0x40020+(n)) /* Scheduler n Y */
|
||||
#define uPD98401_PC(n) (0x40030+(n)) /* Scheduler n P, C, p and c */
|
||||
#define uPD98401_PS(n) (0x40040+(n)) /* Scheduler n priority and status */
|
||||
|
||||
/* IM contents */
|
||||
#define uPD98401_IM_I 0xff000000 /* I */
|
||||
#define uPD98401_IM_I_SHIFT 24
|
||||
#define uPD98401_IM_M 0x00ffffff /* M */
|
||||
|
||||
/* PC contents */
|
||||
#define uPD98401_PC_P 0xff000000 /* P */
|
||||
#define uPD98401_PC_P_SHIFT 24
|
||||
#define uPD98401_PC_C 0x00ff0000 /* C */
|
||||
#define uPD98401_PC_C_SHIFT 16
|
||||
#define uPD98401_PC_p 0x0000ff00 /* p */
|
||||
#define uPD98401_PC_p_SHIFT 8
|
||||
#define uPD98401_PC_c 0x000000ff /* c */
|
||||
|
||||
/* PS contents */
|
||||
#define uPD98401_PS_PRIO 0xf0 /* Priority level (0 high, 15 low) */
|
||||
#define uPD98401_PS_PRIO_SHIFT 4
|
||||
#define uPD98401_PS_S 0x08 /* Scan - must be 0 (internal) */
|
||||
#define uPD98401_PS_R 0x04 /* Round Robin (internal) */
|
||||
#define uPD98401_PS_A 0x02 /* Active (internal) */
|
||||
#define uPD98401_PS_E 0x01 /* Enabled */
|
||||
|
||||
#define uPD98401_TOS 0x40100 /* Top of Stack Control Memory Address */
|
||||
#define uPD98401_SMA 0x40200 /* Shapers Control Memory Start Address */
|
||||
#define uPD98401_PMA 0x40201 /* Receive Pool Control Memory Start Address */
|
||||
#define uPD98401_T1R 0x40300 /* T1 Register */
|
||||
#define uPD98401_VRR 0x40301 /* VPI/VCI Reduction Register/Recv. Shutdown */
|
||||
#define uPD98401_TSR 0x40302 /* Time-Stamp Register */
|
||||
|
||||
/* VRR is at 0x40301 */
|
||||
#define uPD98401_VRR_SDM 0x80000000 /* Shutdown Mode */
|
||||
#define uPD98401_VRR_SHIFT 0x000f0000 /* VPI/VCI Shift */
|
||||
#define uPD98401_VRR_SHIFT_SHIFT 16
|
||||
#define uPD98401_VRR_MASK 0x0000ffff /* VPI/VCI mask */
|
||||
|
||||
/*
|
||||
* TX packet descriptor
|
||||
*/
|
||||
|
||||
#define uPD98401_TXPD_SIZE 16 /* descriptor size (in bytes) */
|
||||
|
||||
#define uPD98401_TXPD_V 0x80000000 /* Valid bit */
|
||||
#define uPD98401_TXPD_DP 0x40000000 /* Descriptor (1) or Pointer (0) */
|
||||
#define uPD98401_TXPD_SM 0x20000000 /* Single (1) or Multiple (0) */
|
||||
#define uPD98401_TXPD_CLPM 0x18000000 /* CLP mode */
|
||||
#define uPD98401_CLPM_0 0 /* 00 CLP = 0 */
|
||||
#define uPD98401_CLPM_1 3 /* 11 CLP = 1 */
|
||||
#define uPD98401_CLPM_LAST 1 /* 01 CLP unless last cell */
|
||||
#define uPD98401_TXPD_CLPM_SHIFT 27
|
||||
#define uPD98401_TXPD_PTI 0x07000000 /* PTI pattern */
|
||||
#define uPD98401_TXPD_PTI_SHIFT 24
|
||||
#define uPD98401_TXPD_GFC 0x00f00000 /* GFC pattern */
|
||||
#define uPD98401_TXPD_GFC_SHIFT 20
|
||||
#define uPD98401_TXPD_C10 0x00040000 /* insert CRC-10 */
|
||||
#define uPD98401_TXPD_AAL5 0x00020000 /* AAL5 processing */
|
||||
#define uPD98401_TXPD_MB 0x00010000 /* TX mailbox number */
|
||||
#define uPD98401_TXPD_UU 0x0000ff00 /* CPCS-UU */
|
||||
#define uPD98401_TXPD_UU_SHIFT 8
|
||||
#define uPD98401_TXPD_CPI 0x000000ff /* CPI */
|
||||
|
||||
/*
|
||||
* TX buffer descriptor
|
||||
*/
|
||||
|
||||
#define uPD98401_TXBD_SIZE 8 /* descriptor size (in bytes) */
|
||||
|
||||
#define uPD98401_TXBD_LAST 0x80000000 /* last buffer in packet */
|
||||
|
||||
/*
|
||||
* TX VC table
|
||||
*/
|
||||
|
||||
/* 1st word has the same structure as in a TX packet descriptor */
|
||||
#define uPD98401_TXVC_L 0x80000000 /* last buffer */
|
||||
#define uPD98401_TXVC_SHP 0x0f000000 /* shaper number */
|
||||
#define uPD98401_TXVC_SHP_SHIFT 24
|
||||
#define uPD98401_TXVC_VPI 0x00ff0000 /* VPI */
|
||||
#define uPD98401_TXVC_VPI_SHIFT 16
|
||||
#define uPD98401_TXVC_VCI 0x0000ffff /* VCI */
|
||||
#define uPD98401_TXVC_QRP 6 /* Queue Read Pointer is in word 6 */
|
||||
|
||||
/*
|
||||
* RX free buffer pools descriptor
|
||||
*/
|
||||
|
||||
#define uPD98401_RXFP_ALERT 0x70000000 /* low water mark */
|
||||
#define uPD98401_RXFP_ALERT_SHIFT 28
|
||||
#define uPD98401_RXFP_BFSZ 0x0f000000 /* buffer size, 64*2^n */
|
||||
#define uPD98401_RXFP_BFSZ_SHIFT 24
|
||||
#define uPD98401_RXFP_BTSZ 0x00ff0000 /* batch size, n+1 */
|
||||
#define uPD98401_RXFP_BTSZ_SHIFT 16
|
||||
#define uPD98401_RXFP_REMAIN 0x0000ffff /* remaining batches in pool */
|
||||
|
||||
/*
|
||||
* RX VC table
|
||||
*/
|
||||
|
||||
#define uPD98401_RXVC_BTSZ 0xff000000 /* remaining free buffers in batch */
|
||||
#define uPD98401_RXVC_BTSZ_SHIFT 24
|
||||
#define uPD98401_RXVC_MB 0x00200000 /* RX mailbox number */
|
||||
#define uPD98401_RXVC_POOL 0x001f0000 /* free buffer pool number */
|
||||
#define uPD98401_RXVC_POOL_SHIFT 16
|
||||
#define uPD98401_RXVC_UINFO 0x0000ffff /* user-supplied information */
|
||||
#define uPD98401_RXVC_T1 0xffff0000 /* T1 timestamp */
|
||||
#define uPD98401_RXVC_T1_SHIFT 16
|
||||
#define uPD98401_RXVC_PR 0x00008000 /* Packet Reception, 1 if busy */
|
||||
#define uPD98401_RXVC_DR 0x00004000 /* FIFO Drop */
|
||||
#define uPD98401_RXVC_OD 0x00001000 /* Drop OAM cells */
|
||||
#define uPD98401_RXVC_AR 0x00000800 /* AAL5 or raw cell; 1 if AAL5 */
|
||||
#define uPD98401_RXVC_MAXSEG 0x000007ff /* max number of segments per PDU */
|
||||
#define uPD98401_RXVC_REM 0xfffe0000 /* remaining words in curr buffer */
|
||||
#define uPD98401_RXVC_REM_SHIFT 17
|
||||
#define uPD98401_RXVC_CLP 0x00010000 /* CLP received */
|
||||
#define uPD98401_RXVC_BFA 0x00008000 /* Buffer Assigned */
|
||||
#define uPD98401_RXVC_BTA 0x00004000 /* Batch Assigned */
|
||||
#define uPD98401_RXVC_CI 0x00002000 /* Congestion Indication */
|
||||
#define uPD98401_RXVC_DD 0x00001000 /* Dropping incoming cells */
|
||||
#define uPD98401_RXVC_DP 0x00000800 /* like PR ? */
|
||||
#define uPD98401_RXVC_CURSEG 0x000007ff /* Current Segment count */
|
||||
|
||||
/*
|
||||
* RX lookup table
|
||||
*/
|
||||
|
||||
#define uPD98401_RXLT_ENBL 0x8000 /* Enable */
|
||||
|
||||
#endif
|
||||
265
drivers/atm/uPD98402.c
Normal file
265
drivers/atm/uPD98402.c
Normal file
@@ -0,0 +1,265 @@
|
||||
/* drivers/atm/uPD98402.c - NEC uPD98402 (PHY) declarations */
|
||||
|
||||
/* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */
|
||||
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/sched.h> /* for jiffies */
|
||||
#include <linux/mm.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/atmdev.h>
|
||||
#include <linux/sonet.h>
|
||||
#include <linux/init.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/atomic.h>
|
||||
|
||||
#include "uPD98402.h"
|
||||
|
||||
|
||||
#if 0
|
||||
#define DPRINTK(format,args...) printk(KERN_DEBUG format,##args)
|
||||
#else
|
||||
#define DPRINTK(format,args...)
|
||||
#endif
|
||||
|
||||
|
||||
struct uPD98402_priv {
|
||||
struct k_sonet_stats sonet_stats;/* link diagnostics */
|
||||
unsigned char framing; /* SONET/SDH framing */
|
||||
int loop_mode; /* loopback mode */
|
||||
spinlock_t lock;
|
||||
};
|
||||
|
||||
|
||||
#define PRIV(dev) ((struct uPD98402_priv *) dev->phy_data)
|
||||
|
||||
#define PUT(val,reg) dev->ops->phy_put(dev,val,uPD98402_##reg)
|
||||
#define GET(reg) dev->ops->phy_get(dev,uPD98402_##reg)
|
||||
|
||||
|
||||
static int fetch_stats(struct atm_dev *dev,struct sonet_stats __user *arg,int zero)
|
||||
{
|
||||
struct sonet_stats tmp;
|
||||
int error = 0;
|
||||
|
||||
atomic_add(GET(HECCT),&PRIV(dev)->sonet_stats.uncorr_hcs);
|
||||
sonet_copy_stats(&PRIV(dev)->sonet_stats,&tmp);
|
||||
if (arg) error = copy_to_user(arg,&tmp,sizeof(tmp));
|
||||
if (zero && !error) {
|
||||
/* unused fields are reported as -1, but we must not "adjust"
|
||||
them */
|
||||
tmp.corr_hcs = tmp.tx_cells = tmp.rx_cells = 0;
|
||||
sonet_subtract_stats(&PRIV(dev)->sonet_stats,&tmp);
|
||||
}
|
||||
return error ? -EFAULT : 0;
|
||||
}
|
||||
|
||||
|
||||
static int set_framing(struct atm_dev *dev,unsigned char framing)
|
||||
{
|
||||
static const unsigned char sonet[] = { 1,2,3,0 };
|
||||
static const unsigned char sdh[] = { 1,0,0,2 };
|
||||
const char *set;
|
||||
unsigned long flags;
|
||||
|
||||
switch (framing) {
|
||||
case SONET_FRAME_SONET:
|
||||
set = sonet;
|
||||
break;
|
||||
case SONET_FRAME_SDH:
|
||||
set = sdh;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
spin_lock_irqsave(&PRIV(dev)->lock, flags);
|
||||
PUT(set[0],C11T);
|
||||
PUT(set[1],C12T);
|
||||
PUT(set[2],C13T);
|
||||
PUT((GET(MDR) & ~uPD98402_MDR_SS_MASK) | (set[3] <<
|
||||
uPD98402_MDR_SS_SHIFT),MDR);
|
||||
spin_unlock_irqrestore(&PRIV(dev)->lock, flags);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int get_sense(struct atm_dev *dev,u8 __user *arg)
|
||||
{
|
||||
unsigned long flags;
|
||||
unsigned char s[3];
|
||||
|
||||
spin_lock_irqsave(&PRIV(dev)->lock, flags);
|
||||
s[0] = GET(C11R);
|
||||
s[1] = GET(C12R);
|
||||
s[2] = GET(C13R);
|
||||
spin_unlock_irqrestore(&PRIV(dev)->lock, flags);
|
||||
return (put_user(s[0], arg) || put_user(s[1], arg+1) ||
|
||||
put_user(s[2], arg+2) || put_user(0xff, arg+3) ||
|
||||
put_user(0xff, arg+4) || put_user(0xff, arg+5)) ? -EFAULT : 0;
|
||||
}
|
||||
|
||||
|
||||
static int set_loopback(struct atm_dev *dev,int mode)
|
||||
{
|
||||
unsigned char mode_reg;
|
||||
|
||||
mode_reg = GET(MDR) & ~(uPD98402_MDR_TPLP | uPD98402_MDR_ALP |
|
||||
uPD98402_MDR_RPLP);
|
||||
switch (__ATM_LM_XTLOC(mode)) {
|
||||
case __ATM_LM_NONE:
|
||||
break;
|
||||
case __ATM_LM_PHY:
|
||||
mode_reg |= uPD98402_MDR_TPLP;
|
||||
break;
|
||||
case __ATM_LM_ATM:
|
||||
mode_reg |= uPD98402_MDR_ALP;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
switch (__ATM_LM_XTRMT(mode)) {
|
||||
case __ATM_LM_NONE:
|
||||
break;
|
||||
case __ATM_LM_PHY:
|
||||
mode_reg |= uPD98402_MDR_RPLP;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
PUT(mode_reg,MDR);
|
||||
PRIV(dev)->loop_mode = mode;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int uPD98402_ioctl(struct atm_dev *dev,unsigned int cmd,void __user *arg)
|
||||
{
|
||||
switch (cmd) {
|
||||
|
||||
case SONET_GETSTATZ:
|
||||
case SONET_GETSTAT:
|
||||
return fetch_stats(dev,arg, cmd == SONET_GETSTATZ);
|
||||
case SONET_SETFRAMING:
|
||||
return set_framing(dev, (int)(unsigned long)arg);
|
||||
case SONET_GETFRAMING:
|
||||
return put_user(PRIV(dev)->framing,(int __user *)arg) ?
|
||||
-EFAULT : 0;
|
||||
case SONET_GETFRSENSE:
|
||||
return get_sense(dev,arg);
|
||||
case ATM_SETLOOP:
|
||||
return set_loopback(dev, (int)(unsigned long)arg);
|
||||
case ATM_GETLOOP:
|
||||
return put_user(PRIV(dev)->loop_mode,(int __user *)arg) ?
|
||||
-EFAULT : 0;
|
||||
case ATM_QUERYLOOP:
|
||||
return put_user(ATM_LM_LOC_PHY | ATM_LM_LOC_ATM |
|
||||
ATM_LM_RMT_PHY,(int __user *)arg) ? -EFAULT : 0;
|
||||
default:
|
||||
return -ENOIOCTLCMD;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#define ADD_LIMITED(s,v) \
|
||||
{ atomic_add(GET(v),&PRIV(dev)->sonet_stats.s); \
|
||||
if (atomic_read(&PRIV(dev)->sonet_stats.s) < 0) \
|
||||
atomic_set(&PRIV(dev)->sonet_stats.s,INT_MAX); }
|
||||
|
||||
|
||||
static void stat_event(struct atm_dev *dev)
|
||||
{
|
||||
unsigned char events;
|
||||
|
||||
events = GET(PCR);
|
||||
if (events & uPD98402_PFM_PFEB) ADD_LIMITED(path_febe,PFECB);
|
||||
if (events & uPD98402_PFM_LFEB) ADD_LIMITED(line_febe,LECCT);
|
||||
if (events & uPD98402_PFM_B3E) ADD_LIMITED(path_bip,B3ECT);
|
||||
if (events & uPD98402_PFM_B2E) ADD_LIMITED(line_bip,B2ECT);
|
||||
if (events & uPD98402_PFM_B1E) ADD_LIMITED(section_bip,B1ECT);
|
||||
}
|
||||
|
||||
|
||||
#undef ADD_LIMITED
|
||||
|
||||
|
||||
static void uPD98402_int(struct atm_dev *dev)
|
||||
{
|
||||
static unsigned long silence = 0;
|
||||
unsigned char reason;
|
||||
|
||||
while ((reason = GET(PICR))) {
|
||||
if (reason & uPD98402_INT_LOS)
|
||||
printk(KERN_NOTICE "%s(itf %d): signal lost\n",
|
||||
dev->type,dev->number);
|
||||
if (reason & uPD98402_INT_PFM) stat_event(dev);
|
||||
if (reason & uPD98402_INT_PCO) {
|
||||
(void) GET(PCOCR); /* clear interrupt cause */
|
||||
atomic_add(GET(HECCT),
|
||||
&PRIV(dev)->sonet_stats.uncorr_hcs);
|
||||
}
|
||||
if ((reason & uPD98402_INT_RFO) &&
|
||||
(time_after(jiffies, silence) || silence == 0)) {
|
||||
printk(KERN_WARNING "%s(itf %d): uPD98402 receive "
|
||||
"FIFO overflow\n",dev->type,dev->number);
|
||||
silence = (jiffies+HZ/2)|1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static int uPD98402_start(struct atm_dev *dev)
|
||||
{
|
||||
DPRINTK("phy_start\n");
|
||||
if (!(dev->dev_data = kmalloc(sizeof(struct uPD98402_priv),GFP_KERNEL)))
|
||||
return -ENOMEM;
|
||||
spin_lock_init(&PRIV(dev)->lock);
|
||||
memset(&PRIV(dev)->sonet_stats,0,sizeof(struct k_sonet_stats));
|
||||
(void) GET(PCR); /* clear performance events */
|
||||
PUT(uPD98402_PFM_FJ,PCMR); /* ignore frequency adj */
|
||||
(void) GET(PCOCR); /* clear overflows */
|
||||
PUT(~uPD98402_PCO_HECC,PCOMR);
|
||||
(void) GET(PICR); /* clear interrupts */
|
||||
PUT(~(uPD98402_INT_PFM | uPD98402_INT_ALM | uPD98402_INT_RFO |
|
||||
uPD98402_INT_LOS),PIMR); /* enable them */
|
||||
(void) fetch_stats(dev,NULL,1); /* clear kernel counters */
|
||||
atomic_set(&PRIV(dev)->sonet_stats.corr_hcs,-1);
|
||||
atomic_set(&PRIV(dev)->sonet_stats.tx_cells,-1);
|
||||
atomic_set(&PRIV(dev)->sonet_stats.rx_cells,-1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int uPD98402_stop(struct atm_dev *dev)
|
||||
{
|
||||
/* let SAR driver worry about stopping interrupts */
|
||||
kfree(PRIV(dev));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static const struct atmphy_ops uPD98402_ops = {
|
||||
.start = uPD98402_start,
|
||||
.ioctl = uPD98402_ioctl,
|
||||
.interrupt = uPD98402_int,
|
||||
.stop = uPD98402_stop,
|
||||
};
|
||||
|
||||
|
||||
int uPD98402_init(struct atm_dev *dev)
|
||||
{
|
||||
DPRINTK("phy_init\n");
|
||||
dev->phy = &uPD98402_ops;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
EXPORT_SYMBOL(uPD98402_init);
|
||||
|
||||
static __init int uPD98402_module_init(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
module_init(uPD98402_module_init);
|
||||
/* module_exit not defined so not unloadable */
|
||||
106
drivers/atm/uPD98402.h
Normal file
106
drivers/atm/uPD98402.h
Normal file
@@ -0,0 +1,106 @@
|
||||
/* drivers/atm/uPD98402.h - NEC uPD98402 (PHY) declarations */
|
||||
|
||||
/* Written 1995 by Werner Almesberger, EPFL LRC */
|
||||
|
||||
|
||||
#ifndef DRIVERS_ATM_uPD98402_H
|
||||
#define DRIVERS_ATM_uPD98402_H
|
||||
|
||||
/*
|
||||
* Registers
|
||||
*/
|
||||
|
||||
#define uPD98402_CMR 0x00 /* Command Register */
|
||||
#define uPD98402_MDR 0x01 /* Mode Register */
|
||||
#define uPD98402_PICR 0x02 /* PHY Interrupt Cause Register */
|
||||
#define uPD98402_PIMR 0x03 /* PHY Interrupt Mask Register */
|
||||
#define uPD98402_ACR 0x04 /* Alarm Cause Register */
|
||||
#define uPD98402_ACMR 0x05 /* Alarm Cause Mask Register */
|
||||
#define uPD98402_PCR 0x06 /* Performance Cause Register */
|
||||
#define uPD98402_PCMR 0x07 /* Performance Cause Mask Register */
|
||||
#define uPD98402_IACM 0x08 /* Internal Alarm Cause Mask Register */
|
||||
#define uPD98402_B1ECT 0x09 /* B1 Error Count Register */
|
||||
#define uPD98402_B2ECT 0x0a /* B2 Error Count Register */
|
||||
#define uPD98402_B3ECT 0x0b /* B3 Error Count Regster */
|
||||
#define uPD98402_PFECB 0x0c /* Path FEBE Count Register */
|
||||
#define uPD98402_LECCT 0x0d /* Line FEBE Count Register */
|
||||
#define uPD98402_HECCT 0x0e /* HEC Error Count Register */
|
||||
#define uPD98402_FJCT 0x0f /* Frequence Justification Count Reg */
|
||||
#define uPD98402_PCOCR 0x10 /* Perf. Counter Overflow Cause Reg */
|
||||
#define uPD98402_PCOMR 0x11 /* Perf. Counter Overflow Mask Reg */
|
||||
#define uPD98402_C11T 0x20 /* C11T Data Register */
|
||||
#define uPD98402_C12T 0x21 /* C12T Data Register */
|
||||
#define uPD98402_C13T 0x22 /* C13T Data Register */
|
||||
#define uPD98402_F1T 0x23 /* F1T Data Register */
|
||||
#define uPD98402_K2T 0x25 /* K2T Data Register */
|
||||
#define uPD98402_C2T 0x26 /* C2T Data Register */
|
||||
#define uPD98402_F2T 0x27 /* F2T Data Register */
|
||||
#define uPD98402_C11R 0x30 /* C11T Data Register */
|
||||
#define uPD98402_C12R 0x31 /* C12T Data Register */
|
||||
#define uPD98402_C13R 0x32 /* C13T Data Register */
|
||||
#define uPD98402_F1R 0x33 /* F1T Data Register */
|
||||
#define uPD98402_K2R 0x35 /* K2T Data Register */
|
||||
#define uPD98402_C2R 0x36 /* C2T Data Register */
|
||||
#define uPD98402_F2R 0x37 /* F2T Data Register */
|
||||
|
||||
/* CMR is at 0x00 */
|
||||
#define uPD98402_CMR_PFRF 0x01 /* Send path FERF */
|
||||
#define uPD98402_CMR_LFRF 0x02 /* Send line FERF */
|
||||
#define uPD98402_CMR_PAIS 0x04 /* Send path AIS */
|
||||
#define uPD98402_CMR_LAIS 0x08 /* Send line AIS */
|
||||
|
||||
/* MDR is at 0x01 */
|
||||
#define uPD98402_MDR_ALP 0x01 /* ATM layer loopback */
|
||||
#define uPD98402_MDR_TPLP 0x02 /* PMD loopback, to host */
|
||||
#define uPD98402_MDR_RPLP 0x04 /* PMD loopback, to network */
|
||||
#define uPD98402_MDR_SS0 0x08 /* SS0 */
|
||||
#define uPD98402_MDR_SS1 0x10 /* SS1 */
|
||||
#define uPD98402_MDR_SS_MASK 0x18 /* mask */
|
||||
#define uPD98402_MDR_SS_SHIFT 3 /* shift */
|
||||
#define uPD98402_MDR_HEC 0x20 /* disable HEC inbound processing */
|
||||
#define uPD98402_MDR_FSR 0x40 /* disable frame scrambler */
|
||||
#define uPD98402_MDR_CSR 0x80 /* disable cell scrambler */
|
||||
|
||||
/* PICR is at 0x02, PIMR is at 0x03 */
|
||||
#define uPD98402_INT_PFM 0x01 /* performance counter has changed */
|
||||
#define uPD98402_INT_ALM 0x02 /* line fault */
|
||||
#define uPD98402_INT_RFO 0x04 /* receive FIFO overflow */
|
||||
#define uPD98402_INT_PCO 0x08 /* performance counter overflow */
|
||||
#define uPD98402_INT_OTD 0x20 /* OTD has occurred */
|
||||
#define uPD98402_INT_LOS 0x40 /* Loss Of Signal */
|
||||
#define uPD98402_INT_LOF 0x80 /* Loss Of Frame */
|
||||
|
||||
/* ACR is as 0x04, ACMR is at 0x05 */
|
||||
#define uPD98402_ALM_PFRF 0x01 /* path FERF */
|
||||
#define uPD98402_ALM_LFRF 0x02 /* line FERF */
|
||||
#define uPD98402_ALM_PAIS 0x04 /* path AIS */
|
||||
#define uPD98402_ALM_LAIS 0x08 /* line AIS */
|
||||
#define uPD98402_ALM_LOD 0x10 /* loss of delineation */
|
||||
#define uPD98402_ALM_LOP 0x20 /* loss of pointer */
|
||||
#define uPD98402_ALM_OOF 0x40 /* out of frame */
|
||||
|
||||
/* PCR is at 0x06, PCMR is at 0x07 */
|
||||
#define uPD98402_PFM_PFEB 0x01 /* path FEBE */
|
||||
#define uPD98402_PFM_LFEB 0x02 /* line FEBE */
|
||||
#define uPD98402_PFM_B3E 0x04 /* B3 error */
|
||||
#define uPD98402_PFM_B2E 0x08 /* B2 error */
|
||||
#define uPD98402_PFM_B1E 0x10 /* B1 error */
|
||||
#define uPD98402_PFM_FJ 0x20 /* frequency justification */
|
||||
|
||||
/* IACM is at 0x08 */
|
||||
#define uPD98402_IACM_PFRF 0x01 /* don't generate path FERF */
|
||||
#define uPD98402_IACM_LFRF 0x02 /* don't generate line FERF */
|
||||
|
||||
/* PCOCR is at 0x010, PCOMR is at 0x11 */
|
||||
#define uPD98402_PCO_B1EC 0x01 /* B1ECT overflow */
|
||||
#define uPD98402_PCO_B2EC 0x02 /* B2ECT overflow */
|
||||
#define uPD98402_PCO_B3EC 0x04 /* B3ECT overflow */
|
||||
#define uPD98402_PCO_PFBC 0x08 /* PFEBC overflow */
|
||||
#define uPD98402_PCO_LFBC 0x10 /* LFEVC overflow */
|
||||
#define uPD98402_PCO_HECC 0x20 /* HECCT overflow */
|
||||
#define uPD98402_PCO_FJC 0x40 /* FJCT overflow */
|
||||
|
||||
|
||||
int uPD98402_init(struct atm_dev *dev);
|
||||
|
||||
#endif
|
||||
1646
drivers/atm/zatm.c
Normal file
1646
drivers/atm/zatm.c
Normal file
File diff suppressed because it is too large
Load Diff
103
drivers/atm/zatm.h
Normal file
103
drivers/atm/zatm.h
Normal file
@@ -0,0 +1,103 @@
|
||||
/* drivers/atm/zatm.h - ZeitNet ZN122x device driver declarations */
|
||||
|
||||
/* Written 1995-1998 by Werner Almesberger, EPFL LRC/ICA */
|
||||
|
||||
|
||||
#ifndef DRIVER_ATM_ZATM_H
|
||||
#define DRIVER_ATM_ZATM_H
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/atm.h>
|
||||
#include <linux/atmdev.h>
|
||||
#include <linux/sonet.h>
|
||||
#include <linux/pci.h>
|
||||
|
||||
|
||||
#define DEV_LABEL "zatm"
|
||||
|
||||
#define MAX_AAL5_PDU 10240 /* allocate for AAL5 PDUs of this size */
|
||||
#define MAX_RX_SIZE_LD 14 /* ceil(log2((MAX_AAL5_PDU+47)/48)) */
|
||||
|
||||
#define LOW_MARK 12 /* start adding new buffers if less than 12 */
|
||||
#define HIGH_MARK 30 /* stop adding buffers after reaching 30 */
|
||||
#define OFF_CNG_THRES 5 /* threshold for offset changes */
|
||||
|
||||
#define RX_SIZE 2 /* RX lookup entry size (in bytes) */
|
||||
#define NR_POOLS 32 /* number of free buffer pointers */
|
||||
#define POOL_SIZE 8 /* buffer entry size (in bytes) */
|
||||
#define NR_SHAPERS 16 /* number of shapers */
|
||||
#define SHAPER_SIZE 4 /* shaper entry size (in bytes) */
|
||||
#define VC_SIZE 32 /* VC dsc (TX or RX) size (in bytes) */
|
||||
|
||||
#define RING_ENTRIES 32 /* ring entries (without back pointer) */
|
||||
#define RING_WORDS 4 /* ring element size */
|
||||
#define RING_SIZE (sizeof(unsigned long)*(RING_ENTRIES+1)*RING_WORDS)
|
||||
|
||||
#define NR_MBX 4 /* four mailboxes */
|
||||
#define MBX_RX_0 0 /* mailbox indices */
|
||||
#define MBX_RX_1 1
|
||||
#define MBX_TX_0 2
|
||||
#define MBX_TX_1 3
|
||||
|
||||
struct zatm_vcc {
|
||||
/*-------------------------------- RX part */
|
||||
int rx_chan; /* RX channel, 0 if none */
|
||||
int pool; /* free buffer pool */
|
||||
/*-------------------------------- TX part */
|
||||
int tx_chan; /* TX channel, 0 if none */
|
||||
int shaper; /* shaper, <0 if none */
|
||||
struct sk_buff_head tx_queue; /* list of buffers in transit */
|
||||
wait_queue_head_t tx_wait; /* for close */
|
||||
u32 *ring; /* transmit ring */
|
||||
int ring_curr; /* current write position */
|
||||
int txing; /* number of transmits in progress */
|
||||
struct sk_buff_head backlog; /* list of buffers waiting for ring */
|
||||
};
|
||||
|
||||
struct zatm_dev {
|
||||
/*-------------------------------- TX part */
|
||||
int tx_bw; /* remaining bandwidth */
|
||||
u32 free_shapers; /* bit set */
|
||||
int ubr; /* UBR shaper; -1 if none */
|
||||
int ubr_ref_cnt; /* number of VCs using UBR shaper */
|
||||
/*-------------------------------- RX part */
|
||||
int pool_ref[NR_POOLS]; /* free buffer pool usage counters */
|
||||
volatile struct sk_buff *last_free[NR_POOLS];
|
||||
/* last entry in respective pool */
|
||||
struct sk_buff_head pool[NR_POOLS];/* free buffer pools */
|
||||
struct zatm_pool_info pool_info[NR_POOLS]; /* pool information */
|
||||
/*-------------------------------- maps */
|
||||
struct atm_vcc **tx_map; /* TX VCCs */
|
||||
struct atm_vcc **rx_map; /* RX VCCs */
|
||||
int chans; /* map size, must be 2^n */
|
||||
/*-------------------------------- mailboxes */
|
||||
unsigned long mbx_start[NR_MBX];/* start addresses */
|
||||
u16 mbx_end[NR_MBX]; /* end offset (in bytes) */
|
||||
/*-------------------------------- other pointers */
|
||||
u32 pool_base; /* Free buffer pool dsc (word addr) */
|
||||
/*-------------------------------- ZATM links */
|
||||
struct atm_dev *more; /* other ZATM devices */
|
||||
/*-------------------------------- general information */
|
||||
int mem; /* RAM on board (in bytes) */
|
||||
int khz; /* timer clock */
|
||||
int copper; /* PHY type */
|
||||
unsigned char irq; /* IRQ */
|
||||
unsigned int base; /* IO base address */
|
||||
struct pci_dev *pci_dev; /* PCI stuff */
|
||||
spinlock_t lock;
|
||||
};
|
||||
|
||||
|
||||
#define ZATM_DEV(d) ((struct zatm_dev *) (d)->dev_data)
|
||||
#define ZATM_VCC(d) ((struct zatm_vcc *) (d)->dev_data)
|
||||
|
||||
|
||||
struct zatm_skb_prv {
|
||||
struct atm_skb_data _; /* reserved */
|
||||
u32 *dsc; /* pointer to skb's descriptor */
|
||||
};
|
||||
|
||||
#define ZATM_PRV_DSC(skb) (((struct zatm_skb_prv *) (skb)->cb)->dsc)
|
||||
|
||||
#endif
|
||||
34
drivers/atm/zeprom.h
Normal file
34
drivers/atm/zeprom.h
Normal file
@@ -0,0 +1,34 @@
|
||||
/* drivers/atm/zeprom.h - ZeitNet ZN122x EEPROM (NM93C46) declarations */
|
||||
|
||||
/* Written 1995,1996 by Werner Almesberger, EPFL LRC */
|
||||
|
||||
|
||||
#ifndef DRIVER_ATM_ZEPROM_H
|
||||
#define DRIVER_ATM_ZEPROM_H
|
||||
|
||||
/* Different versions use different control registers */
|
||||
|
||||
#define ZEPROM_V1_REG PCI_VENDOR_ID /* PCI register */
|
||||
#define ZEPROM_V2_REG 0x40
|
||||
|
||||
/* Bits in contol register */
|
||||
|
||||
#define ZEPROM_SK 0x80000000 /* strobe (probably on raising edge) */
|
||||
#define ZEPROM_CS 0x40000000 /* Chip Select */
|
||||
#define ZEPROM_DI 0x20000000 /* Data Input */
|
||||
#define ZEPROM_DO 0x10000000 /* Data Output */
|
||||
|
||||
#define ZEPROM_SIZE 32 /* 32 bytes */
|
||||
#define ZEPROM_V1_ESI_OFF 24 /* ESI offset in EEPROM (V1) */
|
||||
#define ZEPROM_V2_ESI_OFF 4 /* ESI offset in EEPROM (V2) */
|
||||
|
||||
#define ZEPROM_CMD_LEN 3 /* commands are three bits */
|
||||
#define ZEPROM_ADDR_LEN 6 /* addresses are six bits */
|
||||
|
||||
/* Commands (3 bits) */
|
||||
|
||||
#define ZEPROM_CMD_READ 6
|
||||
|
||||
/* No other commands are needed. */
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user