mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-08 15:04:45 +00:00
[SCSI] aci7xxx_old: delete decade+ obsolete driver
After getting warnings in an allyesconfig build[1] from this driver, I decided to remind myself just how old it was, and whether it warranted fixing. In the Kconfig help text, I found: "This driver will eventually be phased out entirely" Going back to the history archive, I see the line was added[2] in Feb 2002, when we moved from v2.4.2.1 ---> v2.4.2.2 So, with over a decade of notification, and multiple major releases since then, I think we can justify removing this. Currently we have people wasting time building it during routine testing, and then wasting more time re-researching the known reported warnings, only to find that nobody really is willing to integrate the fixes[3] for it. A quick search didn't seem to indicate any active user base for it. If someone happens to have a quirky _old_ card that the eleven year old "new" driver doesn't work with, then it is entirely reasonable that they stick with a kernel version that predates this removal. [1] drivers/scsi/aic7xxx_old.c: In function ‘aic7xxx_register’: drivers/scsi/aic7xxx_old.c:7901:5: warning: case value ‘257’ not in enumerated type ‘ahc_chip’ [-Wswitch] drivers/scsi/aic7xxx_old.c:7898:5: warning: case value ‘513’ not in enumerated type ‘ahc_chip’ [-Wswitch] drivers/scsi/aic7xxx_old.c: In function ‘aic7xxx_load_seeprom’: drivers/scsi/aic7xxx_old.c:8517:5: warning: case value ‘257’ not in enumerated type ‘ahc_chip’ [-Wswitch] drivers/scsi/aic7xxx_old.c:8510:5: warning: case value ‘513’ not in enumerated type ‘ahc_chip’ [-Wswitch] [2] http://git.kernel.org/cgit/linux/kernel/git/tglx/history.git commit 44e8778c [3] https://lkml.org/lkml/2012/10/29/215 Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> Acked-by: Hannes Reinecke <hare@suse.de> Acked-by: Doug Ledford <dledford@redhat.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
parent
59ab3c9323
commit
1a4049ddfd
@ -42,8 +42,6 @@ aic79xx.txt
|
||||
- Adaptec Ultra320 SCSI host adapters
|
||||
aic7xxx.txt
|
||||
- info on driver for Adaptec controllers
|
||||
aic7xxx_old.txt
|
||||
- info on driver for Adaptec controllers, old generation
|
||||
arcmsr_spec.txt
|
||||
- ARECA FIRMWARE SPEC (for IOP331 adapter)
|
||||
dc395x.txt
|
||||
|
@ -1,511 +0,0 @@
|
||||
AIC7xxx Driver for Linux
|
||||
|
||||
Introduction
|
||||
----------------------------
|
||||
The AIC7xxx SCSI driver adds support for Adaptec (http://www.adaptec.com)
|
||||
SCSI controllers and chipsets. Major portions of the driver and driver
|
||||
development are shared between both Linux and FreeBSD. Support for the
|
||||
AIC-7xxx chipsets have been in the default Linux kernel since approximately
|
||||
linux-1.1.x and fairly stable since linux-1.2.x, and are also in FreeBSD
|
||||
2.1.0 or later.
|
||||
|
||||
Supported cards/chipsets
|
||||
----------------------------
|
||||
Adaptec Cards
|
||||
----------------------------
|
||||
AHA-274x
|
||||
AHA-274xT
|
||||
AHA-2842
|
||||
AHA-2910B
|
||||
AHA-2920C
|
||||
AHA-2930
|
||||
AHA-2930U
|
||||
AHA-2930CU
|
||||
AHA-2930U2
|
||||
AHA-2940
|
||||
AHA-2940W
|
||||
AHA-2940U
|
||||
AHA-2940UW
|
||||
AHA-2940UW-PRO
|
||||
AHA-2940AU
|
||||
AHA-2940U2W
|
||||
AHA-2940U2
|
||||
AHA-2940U2B
|
||||
AHA-2940U2BOEM
|
||||
AHA-2944D
|
||||
AHA-2944WD
|
||||
AHA-2944UD
|
||||
AHA-2944UWD
|
||||
AHA-2950U2
|
||||
AHA-2950U2W
|
||||
AHA-2950U2B
|
||||
AHA-29160M
|
||||
AHA-3940
|
||||
AHA-3940U
|
||||
AHA-3940W
|
||||
AHA-3940UW
|
||||
AHA-3940AUW
|
||||
AHA-3940U2W
|
||||
AHA-3950U2B
|
||||
AHA-3950U2D
|
||||
AHA-3960D
|
||||
AHA-39160M
|
||||
AHA-3985
|
||||
AHA-3985U
|
||||
AHA-3985W
|
||||
AHA-3985UW
|
||||
|
||||
Motherboard Chipsets
|
||||
----------------------------
|
||||
AIC-777x
|
||||
AIC-785x
|
||||
AIC-786x
|
||||
AIC-787x
|
||||
AIC-788x
|
||||
AIC-789x
|
||||
AIC-3860
|
||||
|
||||
Bus Types
|
||||
----------------------------
|
||||
W - Wide SCSI, SCSI-3, 16bit bus, 68pin connector, will also support
|
||||
SCSI-1/SCSI-2 50pin devices, transfer rates up to 20MB/s.
|
||||
U - Ultra SCSI, transfer rates up to 40MB/s.
|
||||
U2- Ultra 2 SCSI, transfer rates up to 80MB/s.
|
||||
D - Differential SCSI.
|
||||
T - Twin Channel SCSI. Up to 14 SCSI devices.
|
||||
|
||||
AHA-274x - EISA SCSI controller
|
||||
AHA-284x - VLB SCSI controller
|
||||
AHA-29xx - PCI SCSI controller
|
||||
AHA-394x - PCI controllers with two separate SCSI controllers on-board.
|
||||
AHA-398x - PCI RAID controllers with three separate SCSI controllers
|
||||
on-board.
|
||||
|
||||
Not Supported Devices
|
||||
------------------------------
|
||||
Adaptec Cards
|
||||
----------------------------
|
||||
AHA-2920 (Only the cards that use the Future Domain chipset are not
|
||||
supported, any 2920 cards based on Adaptec AIC chipsets,
|
||||
such as the 2920C, are supported)
|
||||
AAA-13x Raid Adapters
|
||||
AAA-113x Raid Port Card
|
||||
|
||||
Motherboard Chipsets
|
||||
----------------------------
|
||||
AIC-7810
|
||||
|
||||
Bus Types
|
||||
----------------------------
|
||||
R - Raid Port busses are not supported.
|
||||
|
||||
The hardware RAID devices sold by Adaptec are *NOT* supported by this
|
||||
driver (and will people please stop emailing me about them, they are
|
||||
a totally separate beast from the bare SCSI controllers and this driver
|
||||
cannot be retrofitted in any sane manner to support the hardware RAID
|
||||
features on those cards - Doug Ledford).
|
||||
|
||||
|
||||
People
|
||||
------------------------------
|
||||
Justin T Gibbs gibbs@plutotech.com
|
||||
(BSD Driver Author)
|
||||
Dan Eischen deischen@iworks.InterWorks.org
|
||||
(Original Linux Driver Co-maintainer)
|
||||
Dean Gehnert deang@teleport.com
|
||||
(Original Linux FTP/patch maintainer)
|
||||
Jess Johnson jester@frenzy.com
|
||||
(AIC7xxx FAQ author)
|
||||
Doug Ledford dledford@redhat.com
|
||||
(Current Linux aic7xxx-5.x.x Driver/Patch/FTP maintainer)
|
||||
|
||||
Special thanks go to John Aycock (aycock@cpsc.ucalgary.ca), the original
|
||||
author of the driver. John has since retired from the project. Thanks
|
||||
again for all his work!
|
||||
|
||||
Mailing list
|
||||
------------------------------
|
||||
There is a mailing list available for users who want to track development
|
||||
and converse with other users and developers. This list is for both
|
||||
FreeBSD and Linux support of the AIC7xxx chipsets.
|
||||
|
||||
To subscribe to the AIC7xxx mailing list send mail to the list server,
|
||||
with "subscribe AIC7xxx" in the body (no Subject: required):
|
||||
To: majordomo@FreeBSD.ORG
|
||||
---
|
||||
subscribe AIC7xxx
|
||||
|
||||
To unsubscribe from the list, send mail to the list server with:
|
||||
To: majordomo@FreeBSD.ORG
|
||||
---
|
||||
unsubscribe AIC7xxx
|
||||
|
||||
Send regular messages and replies to: AIC7xxx@FreeBSD.ORG
|
||||
|
||||
Boot Command line options
|
||||
------------------------------
|
||||
"aic7xxx=no_reset" - Eliminate the SCSI bus reset during startup.
|
||||
Some SCSI devices need the initial reset that this option disables
|
||||
in order to work. If you have problems at bootup, please make sure
|
||||
you aren't using this option.
|
||||
|
||||
"aic7xxx=reverse_scan" - Certain PCI motherboards scan for devices at
|
||||
bootup by scanning from the highest numbered PCI device to the
|
||||
lowest numbered PCI device, others do just the opposite and scan
|
||||
from lowest to highest numbered PCI device. There is no reliable
|
||||
way to autodetect this ordering. So, we default to the most common
|
||||
order, which is lowest to highest. Then, in case your motherboard
|
||||
scans from highest to lowest, we have this option. If your BIOS
|
||||
finds the drives on controller A before controller B but the linux
|
||||
kernel finds your drives on controller B before A, then you should
|
||||
use this option.
|
||||
|
||||
"aic7xxx=extended" - Force the driver to detect extended drive translation
|
||||
on your controller. This helps those people who have cards without
|
||||
a SEEPROM make sure that linux and all other operating systems think
|
||||
the same way about your hard drives.
|
||||
|
||||
"aic7xxx=scbram" - Some cards have external SCB RAM that can be used to
|
||||
give the card more hardware SCB slots. This allows the driver to use
|
||||
that SCB RAM. Without this option, the driver won't touch the SCB
|
||||
RAM because it is known to cause problems on a few cards out there
|
||||
(such as 3985 class cards).
|
||||
|
||||
"aic7xxx=irq_trigger:x" - Replace x with either 0 or 1 to force the kernel
|
||||
to use the correct IRQ type for your card. This only applies to EISA
|
||||
based controllers. On these controllers, 0 is for Edge triggered
|
||||
interrupts, and 1 is for Level triggered interrupts. If you aren't
|
||||
sure or don't know which IRQ trigger type your EISA card uses, then
|
||||
let the kernel autodetect the trigger type.
|
||||
|
||||
"aic7xxx=verbose" - This option can be used in one of two ways. If you
|
||||
simply specify aic7xxx=verbose, then the kernel will automatically
|
||||
pick the default set of verbose messages for you to see.
|
||||
Alternatively, you can specify the command as
|
||||
"aic7xxx=verbose:0xXXXX" where the X entries are replaced with
|
||||
hexadecimal digits. This option is a bit field type option. For
|
||||
a full listing of the available options, search for the
|
||||
#define VERBOSE_xxxxxx lines in the aic7xxx.c file. If you want
|
||||
verbose messages, then it is recommended that you simply use the
|
||||
aic7xxx=verbose variant of this command.
|
||||
|
||||
"aic7xxx=pci_parity:x" - This option controls whether or not the driver
|
||||
enables PCI parity error checking on the PCI bus. By default, this
|
||||
checking is disabled. To enable the checks, simply specify pci_parity
|
||||
with no value afterwords. To reverse the parity from even to odd,
|
||||
supply any number other than 0 or 255. In short:
|
||||
pci_parity - Even parity checking (even is the normal PCI parity)
|
||||
pci_parity:x - Where x > 0, Odd parity checking
|
||||
pci_parity:0 - No check (default)
|
||||
NOTE: In order to get Even PCI parity checking, you must use the
|
||||
version of the option that does not include the : and a number at
|
||||
the end (unless you want to enter exactly 2^32 - 1 as the number).
|
||||
|
||||
"aic7xxx=no_probe" - This option will disable the probing for any VLB
|
||||
based 2842 controllers and any EISA based controllers. This is
|
||||
needed on certain newer motherboards where the normal EISA I/O ranges
|
||||
have been claimed by other PCI devices. Probing on those machines
|
||||
will often result in the machine crashing or spontaneously rebooting
|
||||
during startup. Examples of machines that need this are the
|
||||
Dell PowerEdge 6300 machines.
|
||||
|
||||
"aic7xxx=seltime:2" - This option controls how long the card waits
|
||||
during a device selection sequence for the device to respond.
|
||||
The original SCSI spec says that this "should be" 256ms. This
|
||||
is generally not required with modern devices. However, some
|
||||
very old SCSI I devices need the full 256ms. Most modern devices
|
||||
can run fine with only 64ms. The default for this option is
|
||||
64ms. If you need to change this option, then use the following
|
||||
table to set the proper value in the example above:
|
||||
0 - 256ms
|
||||
1 - 128ms
|
||||
2 - 64ms
|
||||
3 - 32ms
|
||||
|
||||
"aic7xxx=panic_on_abort" - This option is for debugging and will cause
|
||||
the driver to panic the linux kernel and freeze the system the first
|
||||
time the drivers abort or reset routines are called. This is most
|
||||
helpful when some problem causes infinite reset loops that scroll too
|
||||
fast to see. By using this option, you can write down what the errors
|
||||
actually are and send that information to me so it can be fixed.
|
||||
|
||||
"aic7xxx=dump_card" - This option will print out the *entire* set of
|
||||
configuration registers on the card during the init sequence. This
|
||||
is a debugging aid used to see exactly what state the card is in
|
||||
when we finally finish our initialization routines. If you don't
|
||||
have documentation on the chipsets, this will do you absolutely
|
||||
no good unless you are simply trying to write all the information
|
||||
down in order to send it to me.
|
||||
|
||||
"aic7xxx=dump_sequencer" - This is the same as the above options except
|
||||
that instead of dumping the register contents on the card, this
|
||||
option dumps the contents of the sequencer program RAM. This gives
|
||||
the ability to verify that the instructions downloaded to the
|
||||
card's sequencer are indeed what they are supposed to be. Again,
|
||||
unless you have documentation to tell you how to interpret these
|
||||
numbers, then it is totally useless.
|
||||
|
||||
"aic7xxx=override_term:0xffffffff" - This option is used to force the
|
||||
termination on your SCSI controllers to a particular setting. This
|
||||
is a bit mask variable that applies for up to 8 aic7xxx SCSI channels.
|
||||
Each channel gets 4 bits, divided as follows:
|
||||
bit 3 2 1 0
|
||||
| | | Enable/Disable Single Ended Low Byte Termination
|
||||
| | En/Disable Single Ended High Byte Termination
|
||||
| En/Disable Low Byte LVD Termination
|
||||
En/Disable High Byte LVD Termination
|
||||
|
||||
The upper 2 bits that deal with LVD termination only apply to Ultra2
|
||||
controllers. Furthermore, due to the current Ultra2 controller
|
||||
designs, these bits are tied together such that setting either bit
|
||||
enables both low and high byte LVD termination. It is not possible
|
||||
to only set high or low byte LVD termination in this manner. This is
|
||||
an artifact of the BIOS definition on Ultra2 controllers. For other
|
||||
controllers, the only important bits are the two lowest bits. Setting
|
||||
the higher bits on non-Ultra2 controllers has no effect. A few
|
||||
examples of how to use this option:
|
||||
|
||||
Enable low and high byte termination on a non-ultra2 controller that
|
||||
is the first aic7xxx controller (the correct bits are 0011),
|
||||
aic7xxx=override_term:0x3
|
||||
|
||||
Enable all termination on the third aic7xxx controller, high byte
|
||||
termination on the second aic7xxx controller, and low and high byte
|
||||
SE termination on the first aic7xxx controller
|
||||
(bits are 1111 0010 0011),
|
||||
aic7xxx=override_term:0xf23
|
||||
|
||||
No attempt has been made to make this option non-cryptic. It really
|
||||
shouldn't be used except in dire circumstances, and if that happens,
|
||||
I'm probably going to be telling you what to set this to anyway :)
|
||||
|
||||
"aic7xxx=stpwlev:0xffffffff" - This option is used to control the STPWLEV
|
||||
bit in the DEVCONFIG PCI register. Currently, this is one of the
|
||||
very few registers that we have absolutely *no* way of detecting
|
||||
what the variable should be. It depends entirely on how the chipset
|
||||
and external terminators were coupled by the card/motherboard maker.
|
||||
Further, a chip reset (at power up) always sets this bit to 0. If
|
||||
there is no BIOS to run on the chipset/card (such as with a 2910C
|
||||
or a motherboard controller with the BIOS totally disabled) then
|
||||
the variable may not get set properly. Of course, if the proper
|
||||
setting was 0, then that's what it would be after the reset, but if
|
||||
the proper setting is actually 1.....you get the picture. Now, since
|
||||
we can't detect this at all, I've added this option to force the
|
||||
setting. If you have a BIOS on your controller then you should never
|
||||
need to use this option. However, if you are having lots of SCSI
|
||||
reset problems and can't seem to get them knocked out, this may help.
|
||||
|
||||
Here's a test to know for certain if you need this option. Make
|
||||
a boot floppy that you can use to boot your computer up and that
|
||||
will detect the aic7xxx controller. Next, power down your computer.
|
||||
While it's down, unplug all SCSI cables from your Adaptec SCSI
|
||||
controller. Boot the system back up to the Adaptec EZ-SCSI BIOS
|
||||
and then make sure that termination is enabled on your adapter (if
|
||||
you have an Adaptec BIOS of course). Next, boot up the floppy you
|
||||
made and wait for it to detect the aic7xxx controller. If the kernel
|
||||
finds the controller fine, says scsi : x hosts and then tries to
|
||||
detect your devices like normal, up to the point where it fails to
|
||||
mount your root file system and panics, then you're fine. If, on
|
||||
the other hand, the system goes into an infinite reset loop, then
|
||||
you need to use this option and/or the previous option to force the
|
||||
proper termination settings on your controller. If this happens,
|
||||
then you next need to figure out what your settings should be.
|
||||
|
||||
To find the correct settings, power your machine back down, connect
|
||||
back up the SCSI cables, and boot back into your machine like normal.
|
||||
However, boot with the aic7xxx=verbose:0x39 option. Record the
|
||||
initial DEVCONFIG values for each of your aic7xxx controllers as
|
||||
they are listed, and also record what the machine is detecting as
|
||||
the proper termination on your controllers. NOTE: the order in
|
||||
which the initial DEVCONFIG values are printed out is not guaranteed
|
||||
to be the same order as the SCSI controllers are registered. The
|
||||
above option and this option both work on the order of the SCSI
|
||||
controllers as they are registered, so make sure you match the right
|
||||
DEVCONFIG values with the right controllers if you have more than
|
||||
one aic7xxx controller.
|
||||
|
||||
Once you have the detected termination settings and the initial
|
||||
DEVCONFIG values for each controller, then figure out what the
|
||||
termination on each of the controllers *should* be. Hopefully, that
|
||||
part is correct, but it could possibly be wrong if there is
|
||||
bogus cable detection logic on your controller or something similar.
|
||||
If all the controllers have the correct termination settings, then
|
||||
don't set the aic7xxx=override_term variable at all, leave it alone.
|
||||
Next, on any controllers that go into an infinite reset loop when
|
||||
you unplug all the SCSI cables, get the starting DEVCONFIG value.
|
||||
If the initial DEVCONFIG value is divisible by 2, then the correct
|
||||
setting for that controller is 0. If it's an odd number, then
|
||||
the correct setting for that controller is 1. For any other
|
||||
controllers that didn't have an infinite reset problem, then reverse
|
||||
the above options. If DEVCONFIG was even, then the correct setting
|
||||
is 1, if not then the correct setting is 0.
|
||||
|
||||
Now that you know what the correct setting was for each controller,
|
||||
we need to encode that into the aic7xxx=stpwlev:0x... variable.
|
||||
This variable is a bit field encoded variable. Bit 0 is for the first
|
||||
aic7xxx controller, bit 1 for the next, etc. Put all these bits
|
||||
together and you get a number. For example, if the third aic7xxx
|
||||
needed a 1, but the second and first both needed a 0, then the bits
|
||||
would be 100 in binary. This then translates to 0x04. You would
|
||||
therefore set aic7xxx=stpwlev:0x04. This is fairly standard binary
|
||||
to hexadecimal conversions here. If you aren't up to speed on the
|
||||
binary->hex conversion then send an email to the aic7xxx mailing
|
||||
list and someone can help you out.
|
||||
|
||||
"aic7xxx=tag_info:{{8,8..},{8,8..},..}" - This option is used to disable
|
||||
or enable Tagged Command Queueing (TCQ) on specific devices. As of
|
||||
driver version 5.1.11, TCQ is now either on or off by default
|
||||
according to the setting you choose during the make config process.
|
||||
In order to en/disable TCQ for certain devices at boot time, a user
|
||||
may use this boot param. The driver will then parse this message out
|
||||
and en/disable the specific device entries that are present based upon
|
||||
the value given. The param line is parsed in the following manner:
|
||||
|
||||
{ - first instance indicates the start of this parameter values
|
||||
second instance is the start of entries for a particular
|
||||
device entry
|
||||
} - end the entries for a particular host adapter, or end the entire
|
||||
set of parameter entries
|
||||
, - move to next entry. Inside of a set of device entries, this
|
||||
moves us to the next device on the list. Outside of device
|
||||
entries, this moves us to the next host adapter
|
||||
. - Same effect as , but is safe to use with insmod.
|
||||
x - the number to enter into the array at this position.
|
||||
0 = Enable tagged queueing on this device and use the default
|
||||
queue depth
|
||||
1-254 = Enable tagged queueing on this device and use this
|
||||
number as the queue depth
|
||||
255 = Disable tagged queueing on this device.
|
||||
Note: anything above 32 for an actual queue depth is wasteful
|
||||
and not recommended.
|
||||
|
||||
A few examples of how this can be used:
|
||||
|
||||
tag_info:{{8,12,,0,,255,4}}
|
||||
This line will only effect the first aic7xxx card registered. It
|
||||
will set scsi id 0 to a queue depth of 8, id 1 to 12, leave id 2
|
||||
at the default, set id 3 to tagged queueing enabled and use the
|
||||
default queue depth, id 4 default, id 5 disabled, and id 6 to 4.
|
||||
Any not specified entries stay at the default value, repeated
|
||||
commas with no value specified will simply increment to the next id
|
||||
without changing anything for the missing values.
|
||||
|
||||
tag_info:{,,,{,,,255}}
|
||||
First, second, and third adapters at default values. Fourth
|
||||
adapter, id 3 is disabled. Notice that leading commas simply
|
||||
increment what the first number effects, and there are no need
|
||||
for trailing commas. When you close out an adapter, or the
|
||||
entire entry, anything not explicitly set stays at the default
|
||||
value.
|
||||
|
||||
A final note on this option. The scanner I used for this isn't
|
||||
perfect or highly robust. If you mess the line up, the worst that
|
||||
should happen is that the line will get ignored. If you don't
|
||||
close out the entire entry with the final bracket, then any other
|
||||
aic7xxx options after this will get ignored. So, in general, be
|
||||
sure of what you are entering, and after you have it right, just
|
||||
add it to the lilo.conf file so there won't be any mistakes. As
|
||||
a means of checking this parser, the entire tag_info array for
|
||||
each card is now printed out in the /proc/scsi/aic7xxx/x file. You
|
||||
can use that to verify that your options were parsed correctly.
|
||||
|
||||
Boot command line options may be combined to form the proper set of options
|
||||
a user might need. For example, the following is valid:
|
||||
|
||||
aic7xxx=verbose,extended,irq_trigger:1
|
||||
|
||||
The only requirement is that individual options be separated by a comma or
|
||||
a period on the command line.
|
||||
|
||||
Module Loading command options
|
||||
------------------------------
|
||||
When loading the aic7xxx driver as a module, the exact same options are
|
||||
available to the user. However, the syntax to specify the options changes
|
||||
slightly. For insmod, you need to wrap the aic7xxx= argument in quotes
|
||||
and replace all ',' with '.'. So, for example, a valid insmod line
|
||||
would be:
|
||||
|
||||
insmod aic7xxx aic7xxx='verbose.irq_trigger:1.extended'
|
||||
|
||||
This line should result in the *exact* same behaviour as if you typed
|
||||
it in at the lilo prompt and the driver was compiled into the kernel
|
||||
instead of being a module. The reason for the single quote is so that
|
||||
the shell won't try to interpret anything in the line, such as {.
|
||||
Insmod assumes any options starting with a letter instead of a number
|
||||
is a character string (which is what we want) and by switching all of
|
||||
the commas to periods, insmod won't interpret this as more than one
|
||||
string and write junk into our binary image. I consider it a bug in
|
||||
the insmod program that even if you wrap your string in quotes (quotes
|
||||
that pass the shell mind you and that insmod sees) it still treats
|
||||
a comma inside of those quotes as starting a new variable, resulting
|
||||
in memory scribbles if you don't switch the commas to periods.
|
||||
|
||||
|
||||
Kernel Compile options
|
||||
------------------------------
|
||||
The various kernel compile time options for this driver are now fairly
|
||||
well documented in the file drivers/scsi/Kconfig. In order to
|
||||
see this documentation, you need to use one of the advanced configuration
|
||||
programs (menuconfig and xconfig). If you are using the "make menuconfig"
|
||||
method of configuring your kernel, then you would simply highlight the
|
||||
option in question and hit the ? key. If you are using the "make xconfig"
|
||||
method of configuring your kernel, then simply click on the help button
|
||||
next to the option you have questions about. The help information from
|
||||
the Configure.help file will then get automatically displayed.
|
||||
|
||||
/proc support
|
||||
------------------------------
|
||||
The /proc support for the AIC7xxx can be found in the /proc/scsi/aic7xxx/
|
||||
directory. That directory contains a file for each SCSI controller in
|
||||
the system. Each file presents the current configuration and transfer
|
||||
statistics (enabled with #define in aic7xxx.c) for each controller.
|
||||
|
||||
Thanks to Michael Neuffer for his upper-level SCSI help, and
|
||||
Matthew Jacob for statistics support.
|
||||
|
||||
Debugging the driver
|
||||
------------------------------
|
||||
Should you have problems with this driver, and would like some help in
|
||||
getting them solved, there are a couple debugging items built into
|
||||
the driver to facilitate getting the needed information from the system.
|
||||
In general, I need a complete description of the problem, with as many
|
||||
logs as possible concerning what happens. To help with this, there is
|
||||
a command option aic7xxx=panic_on_abort. This option, when set, forces
|
||||
the driver to panic the kernel on the first SCSI abort issued by the
|
||||
mid level SCSI code. If your system is going to reset loops and you
|
||||
can't read the screen, then this is what you need. Not only will it
|
||||
stop the system, but it also prints out a large amount of state
|
||||
information in the process. Second, if you specify the option
|
||||
"aic7xxx=verbose:0x1ffff", the system will print out *SOOOO* much
|
||||
information as it runs that you won't be able to see anything.
|
||||
However, this can actually be very useful if your machine simply
|
||||
locks up when trying to boot, since it will pin-point what was last
|
||||
happening (in regards to the aic7xxx driver) immediately prior to
|
||||
the lockup. This is really only useful if your machine simply can
|
||||
not boot up successfully. If you can get your machine to run, then
|
||||
this will produce far too much information.
|
||||
|
||||
FTP sites
|
||||
------------------------------
|
||||
ftp://ftp.redhat.com/pub/aic/
|
||||
- Out of date. I used to keep stuff here, but too many people
|
||||
complained about having a hard time getting into Red Hat's ftp
|
||||
server. So use the web site below instead.
|
||||
ftp://ftp.pcnet.com/users/eischen/Linux/
|
||||
- Dan Eischen's driver distribution area
|
||||
ftp://ekf2.vsb.cz/pub/linux/kernel/aic7xxx/ftp.teleport.com/
|
||||
- European Linux mirror of Teleport site
|
||||
|
||||
Web sites
|
||||
------------------------------
|
||||
http://people.redhat.com/dledford/
|
||||
- My web site, also the primary aic7xxx site with several related
|
||||
pages.
|
||||
|
||||
Dean W. Gehnert
|
||||
deang@teleport.com
|
||||
|
||||
$Revision: 3.0 $
|
||||
|
||||
Modified by Doug Ledford 1998-2000
|
||||
|
@ -484,7 +484,6 @@ M: Hannes Reinecke <hare@suse.de>
|
||||
L: linux-scsi@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/scsi/aic7xxx/
|
||||
F: drivers/scsi/aic7xxx_old/
|
||||
|
||||
AIMSLAB FM RADIO RECEIVER DRIVER
|
||||
M: Hans Verkuil <hverkuil@xs4all.nl>
|
||||
|
@ -499,47 +499,6 @@ config SCSI_AACRAID
|
||||
|
||||
|
||||
source "drivers/scsi/aic7xxx/Kconfig.aic7xxx"
|
||||
|
||||
config SCSI_AIC7XXX_OLD
|
||||
tristate "Adaptec AIC7xxx support (old driver)"
|
||||
depends on (ISA || EISA || PCI ) && SCSI
|
||||
help
|
||||
WARNING This driver is an older aic7xxx driver and is no longer
|
||||
under active development. Adaptec, Inc. is writing a new driver to
|
||||
take the place of this one, and it is recommended that whenever
|
||||
possible, people should use the new Adaptec written driver instead
|
||||
of this one. This driver will eventually be phased out entirely.
|
||||
|
||||
This is support for the various aic7xxx based Adaptec SCSI
|
||||
controllers. These include the 274x EISA cards; 284x VLB cards;
|
||||
2902, 2910, 293x, 294x, 394x, 3985 and several other PCI and
|
||||
motherboard based SCSI controllers from Adaptec. It does not support
|
||||
the AAA-13x RAID controllers from Adaptec, nor will it likely ever
|
||||
support them. It does not support the 2920 cards from Adaptec that
|
||||
use the Future Domain SCSI controller chip. For those cards, you
|
||||
need the "Future Domain 16xx SCSI support" driver.
|
||||
|
||||
In general, if the controller is based on an Adaptec SCSI controller
|
||||
chip from the aic777x series or the aic78xx series, this driver
|
||||
should work. The only exception is the 7810 which is specifically
|
||||
not supported (that's the RAID controller chip on the AAA-13x
|
||||
cards).
|
||||
|
||||
Note that the AHA2920 SCSI host adapter is *not* supported by this
|
||||
driver; choose "Future Domain 16xx SCSI support" instead if you have
|
||||
one of those.
|
||||
|
||||
Information on the configuration options for this controller can be
|
||||
found by checking the help file for each of the available
|
||||
configuration options. You should read
|
||||
<file:Documentation/scsi/aic7xxx_old.txt> at a minimum before
|
||||
contacting the maintainer with any questions. The SCSI-HOWTO,
|
||||
available from <http://www.tldp.org/docs.html#howto>, can also
|
||||
be of great help.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called aic7xxx_old.
|
||||
|
||||
source "drivers/scsi/aic7xxx/Kconfig.aic79xx"
|
||||
source "drivers/scsi/aic94xx/Kconfig"
|
||||
source "drivers/scsi/mvsas/Kconfig"
|
||||
|
@ -70,7 +70,6 @@ obj-$(CONFIG_SCSI_AHA1740) += aha1740.o
|
||||
obj-$(CONFIG_SCSI_AIC7XXX) += aic7xxx/
|
||||
obj-$(CONFIG_SCSI_AIC79XX) += aic7xxx/
|
||||
obj-$(CONFIG_SCSI_AACRAID) += aacraid/
|
||||
obj-$(CONFIG_SCSI_AIC7XXX_OLD) += aic7xxx_old.o
|
||||
obj-$(CONFIG_SCSI_AIC94XX) += aic94xx/
|
||||
obj-$(CONFIG_SCSI_PM8001) += pm8001/
|
||||
obj-$(CONFIG_SCSI_ISCI) += isci/
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,28 +0,0 @@
|
||||
/*+M*************************************************************************
|
||||
* Adaptec AIC7xxx device driver for Linux.
|
||||
*
|
||||
* Copyright (c) 1994 John Aycock
|
||||
* The University of Calgary Department of Computer Science.
|
||||
*
|
||||
* 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, 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; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Id: aic7xxx.h,v 3.2 1996/07/23 03:37:26 deang Exp $
|
||||
*-M*************************************************************************/
|
||||
#ifndef _aic7xxx_h
|
||||
#define _aic7xxx_h
|
||||
|
||||
#define AIC7XXX_H_VERSION "5.2.0"
|
||||
|
||||
#endif /* _aic7xxx_h */
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,270 +0,0 @@
|
||||
/*+M*************************************************************************
|
||||
* Adaptec AIC7xxx device driver proc support for Linux.
|
||||
*
|
||||
* Copyright (c) 1995, 1996 Dean W. Gehnert
|
||||
*
|
||||
* 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, 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; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* ----------------------------------------------------------------
|
||||
* o Modified from the EATA-DMA /proc support.
|
||||
* o Additional support for device block statistics provided by
|
||||
* Matthew Jacob.
|
||||
* o Correction of overflow by Heinz Mauelshagen
|
||||
* o Adittional corrections by Doug Ledford
|
||||
*
|
||||
* Dean W. Gehnert, deang@teleport.com, 05/01/96
|
||||
*
|
||||
* $Id: aic7xxx_proc.c,v 4.1 1997/06/97 08:23:42 deang Exp $
|
||||
*-M*************************************************************************/
|
||||
|
||||
|
||||
#define HDRB \
|
||||
" 0 - 4K 4 - 16K 16 - 64K 64 - 256K 256K - 1M 1M+"
|
||||
|
||||
|
||||
/*+F*************************************************************************
|
||||
* Function:
|
||||
* aic7xxx_show_info
|
||||
*
|
||||
* Description:
|
||||
* Return information to handle /proc support for the driver.
|
||||
*-F*************************************************************************/
|
||||
int
|
||||
aic7xxx_show_info(struct seq_file *m, struct Scsi_Host *HBAptr)
|
||||
{
|
||||
struct aic7xxx_host *p;
|
||||
struct aic_dev_data *aic_dev;
|
||||
struct scsi_device *sdptr;
|
||||
unsigned char i;
|
||||
unsigned char tindex;
|
||||
|
||||
for(p=first_aic7xxx; p && p->host != HBAptr; p=p->next)
|
||||
;
|
||||
|
||||
if (!p)
|
||||
{
|
||||
seq_printf(m, "Can't find adapter for host number %d\n", HBAptr->host_no);
|
||||
return 0;
|
||||
}
|
||||
|
||||
p = (struct aic7xxx_host *) HBAptr->hostdata;
|
||||
|
||||
seq_printf(m, "Adaptec AIC7xxx driver version: ");
|
||||
seq_printf(m, "%s/", AIC7XXX_C_VERSION);
|
||||
seq_printf(m, "%s", AIC7XXX_H_VERSION);
|
||||
seq_printf(m, "\n");
|
||||
seq_printf(m, "Adapter Configuration:\n");
|
||||
seq_printf(m, " SCSI Adapter: %s\n",
|
||||
board_names[p->board_name_index]);
|
||||
if (p->flags & AHC_TWIN)
|
||||
seq_printf(m, " Twin Channel Controller ");
|
||||
else
|
||||
{
|
||||
char *channel = "";
|
||||
char *ultra = "";
|
||||
char *wide = "Narrow ";
|
||||
if (p->flags & AHC_MULTI_CHANNEL)
|
||||
{
|
||||
channel = " Channel A";
|
||||
if (p->flags & (AHC_CHNLB|AHC_CHNLC))
|
||||
channel = (p->flags & AHC_CHNLB) ? " Channel B" : " Channel C";
|
||||
}
|
||||
if (p->features & AHC_WIDE)
|
||||
wide = "Wide ";
|
||||
if (p->features & AHC_ULTRA3)
|
||||
{
|
||||
switch(p->chip & AHC_CHIPID_MASK)
|
||||
{
|
||||
case AHC_AIC7892:
|
||||
case AHC_AIC7899:
|
||||
ultra = "Ultra-160/m LVD/SE ";
|
||||
break;
|
||||
default:
|
||||
ultra = "Ultra-3 LVD/SE ";
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (p->features & AHC_ULTRA2)
|
||||
ultra = "Ultra-2 LVD/SE ";
|
||||
else if (p->features & AHC_ULTRA)
|
||||
ultra = "Ultra ";
|
||||
seq_printf(m, " %s%sController%s ",
|
||||
ultra, wide, channel);
|
||||
}
|
||||
switch(p->chip & ~AHC_CHIPID_MASK)
|
||||
{
|
||||
case AHC_VL:
|
||||
seq_printf(m, "at VLB slot %d\n", p->pci_device_fn);
|
||||
break;
|
||||
case AHC_EISA:
|
||||
seq_printf(m, "at EISA slot %d\n", p->pci_device_fn);
|
||||
break;
|
||||
default:
|
||||
seq_printf(m, "at PCI %d/%d/%d\n", p->pci_bus,
|
||||
PCI_SLOT(p->pci_device_fn), PCI_FUNC(p->pci_device_fn));
|
||||
break;
|
||||
}
|
||||
if( !(p->maddr) )
|
||||
{
|
||||
seq_printf(m, " Programmed I/O Base: %lx\n", p->base);
|
||||
}
|
||||
else
|
||||
{
|
||||
seq_printf(m, " PCI MMAPed I/O Base: 0x%lx\n", p->mbase);
|
||||
}
|
||||
if( (p->chip & (AHC_VL | AHC_EISA)) )
|
||||
{
|
||||
seq_printf(m, " BIOS Memory Address: 0x%08x\n", p->bios_address);
|
||||
}
|
||||
seq_printf(m, " Adapter SEEPROM Config: %s\n",
|
||||
(p->flags & AHC_SEEPROM_FOUND) ? "SEEPROM found and used." :
|
||||
((p->flags & AHC_USEDEFAULTS) ? "SEEPROM not found, using defaults." :
|
||||
"SEEPROM not found, using leftover BIOS values.") );
|
||||
seq_printf(m, " Adaptec SCSI BIOS: %s\n",
|
||||
(p->flags & AHC_BIOS_ENABLED) ? "Enabled" : "Disabled");
|
||||
seq_printf(m, " IRQ: %d\n", HBAptr->irq);
|
||||
seq_printf(m, " SCBs: Active %d, Max Active %d,\n",
|
||||
p->activescbs, p->max_activescbs);
|
||||
seq_printf(m, " Allocated %d, HW %d, "
|
||||
"Page %d\n", p->scb_data->numscbs, p->scb_data->maxhscbs,
|
||||
p->scb_data->maxscbs);
|
||||
if (p->flags & AHC_EXTERNAL_SRAM)
|
||||
seq_printf(m, " Using External SCB SRAM\n");
|
||||
seq_printf(m, " Interrupts: %ld", p->isr_count);
|
||||
if (p->chip & AHC_EISA)
|
||||
{
|
||||
seq_printf(m, " %s\n",
|
||||
(p->pause & IRQMS) ? "(Level Sensitive)" : "(Edge Triggered)");
|
||||
}
|
||||
else
|
||||
{
|
||||
seq_printf(m, "\n");
|
||||
}
|
||||
seq_printf(m, " BIOS Control Word: 0x%04x\n",
|
||||
p->bios_control);
|
||||
seq_printf(m, " Adapter Control Word: 0x%04x\n",
|
||||
p->adapter_control);
|
||||
seq_printf(m, " Extended Translation: %sabled\n",
|
||||
(p->flags & AHC_EXTEND_TRANS_A) ? "En" : "Dis");
|
||||
seq_printf(m, "Disconnect Enable Flags: 0x%04x\n", p->discenable);
|
||||
if (p->features & (AHC_ULTRA | AHC_ULTRA2))
|
||||
{
|
||||
seq_printf(m, " Ultra Enable Flags: 0x%04x\n", p->ultraenb);
|
||||
}
|
||||
seq_printf(m, "Default Tag Queue Depth: %d\n", aic7xxx_default_queue_depth);
|
||||
seq_printf(m, " Tagged Queue By Device array for aic7xxx host "
|
||||
"instance %d:\n", p->instance);
|
||||
seq_printf(m, " {");
|
||||
for(i=0; i < (MAX_TARGETS - 1); i++)
|
||||
seq_printf(m, "%d,",aic7xxx_tag_info[p->instance].tag_commands[i]);
|
||||
seq_printf(m, "%d}\n",aic7xxx_tag_info[p->instance].tag_commands[i]);
|
||||
|
||||
seq_printf(m, "\n");
|
||||
seq_printf(m, "Statistics:\n\n");
|
||||
list_for_each_entry(aic_dev, &p->aic_devs, list)
|
||||
{
|
||||
sdptr = aic_dev->SDptr;
|
||||
tindex = sdptr->channel << 3 | sdptr->id;
|
||||
seq_printf(m, "(scsi%d:%d:%d:%d)\n",
|
||||
p->host_no, sdptr->channel, sdptr->id, sdptr->lun);
|
||||
seq_printf(m, " Device using %s/%s",
|
||||
(aic_dev->cur.width == MSG_EXT_WDTR_BUS_16_BIT) ?
|
||||
"Wide" : "Narrow",
|
||||
(aic_dev->cur.offset != 0) ?
|
||||
"Sync transfers at " : "Async transfers.\n" );
|
||||
if (aic_dev->cur.offset != 0)
|
||||
{
|
||||
struct aic7xxx_syncrate *sync_rate;
|
||||
unsigned char options = aic_dev->cur.options;
|
||||
int period = aic_dev->cur.period;
|
||||
int rate = (aic_dev->cur.width ==
|
||||
MSG_EXT_WDTR_BUS_16_BIT) ? 1 : 0;
|
||||
|
||||
sync_rate = aic7xxx_find_syncrate(p, &period, 0, &options);
|
||||
if (sync_rate != NULL)
|
||||
{
|
||||
seq_printf(m, "%s MByte/sec, offset %d\n",
|
||||
sync_rate->rate[rate],
|
||||
aic_dev->cur.offset );
|
||||
}
|
||||
else
|
||||
{
|
||||
seq_printf(m, "3.3 MByte/sec, offset %d\n",
|
||||
aic_dev->cur.offset );
|
||||
}
|
||||
}
|
||||
seq_printf(m, " Transinfo settings: ");
|
||||
seq_printf(m, "current(%d/%d/%d/%d), ",
|
||||
aic_dev->cur.period,
|
||||
aic_dev->cur.offset,
|
||||
aic_dev->cur.width,
|
||||
aic_dev->cur.options);
|
||||
seq_printf(m, "goal(%d/%d/%d/%d), ",
|
||||
aic_dev->goal.period,
|
||||
aic_dev->goal.offset,
|
||||
aic_dev->goal.width,
|
||||
aic_dev->goal.options);
|
||||
seq_printf(m, "user(%d/%d/%d/%d)\n",
|
||||
p->user[tindex].period,
|
||||
p->user[tindex].offset,
|
||||
p->user[tindex].width,
|
||||
p->user[tindex].options);
|
||||
if(sdptr->simple_tags)
|
||||
{
|
||||
seq_printf(m, " Tagged Command Queueing Enabled, Ordered Tags %s, Depth %d/%d\n", sdptr->ordered_tags ? "Enabled" : "Disabled", sdptr->queue_depth, aic_dev->max_q_depth);
|
||||
}
|
||||
if(aic_dev->barrier_total)
|
||||
seq_printf(m, " Total transfers %ld:\n (%ld/%ld/%ld/%ld reads/writes/REQ_BARRIER/Ordered Tags)\n",
|
||||
aic_dev->r_total+aic_dev->w_total, aic_dev->r_total, aic_dev->w_total,
|
||||
aic_dev->barrier_total, aic_dev->ordered_total);
|
||||
else
|
||||
seq_printf(m, " Total transfers %ld:\n (%ld/%ld reads/writes)\n",
|
||||
aic_dev->r_total+aic_dev->w_total, aic_dev->r_total, aic_dev->w_total);
|
||||
seq_printf(m, "%s\n", HDRB);
|
||||
seq_printf(m, " Reads:");
|
||||
for (i = 0; i < ARRAY_SIZE(aic_dev->r_bins); i++)
|
||||
{
|
||||
seq_printf(m, " %10ld", aic_dev->r_bins[i]);
|
||||
}
|
||||
seq_printf(m, "\n");
|
||||
seq_printf(m, " Writes:");
|
||||
for (i = 0; i < ARRAY_SIZE(aic_dev->w_bins); i++)
|
||||
{
|
||||
seq_printf(m, " %10ld", aic_dev->w_bins[i]);
|
||||
}
|
||||
seq_printf(m, "\n");
|
||||
seq_printf(m, "\n\n");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Overrides for Emacs so that we follow Linus's tabbing style.
|
||||
* Emacs will notice this stuff at the end of the file and automatically
|
||||
* adjust the settings for this buffer only. This must remain at the end
|
||||
* of the file.
|
||||
* ---------------------------------------------------------------------------
|
||||
* Local variables:
|
||||
* c-indent-level: 2
|
||||
* c-brace-imaginary-offset: 0
|
||||
* c-brace-offset: -2
|
||||
* c-argdecl-indent: 2
|
||||
* c-label-offset: -2
|
||||
* c-continued-statement-offset: 2
|
||||
* c-continued-brace-offset: 0
|
||||
* indent-tabs-mode: nil
|
||||
* tab-width: 8
|
||||
* End:
|
||||
*/
|
@ -1,629 +0,0 @@
|
||||
/*
|
||||
* DO NOT EDIT - This file is automatically generated.
|
||||
*/
|
||||
|
||||
#define SCSISEQ 0x00
|
||||
#define TEMODE 0x80
|
||||
#define ENSELO 0x40
|
||||
#define ENSELI 0x20
|
||||
#define ENRSELI 0x10
|
||||
#define ENAUTOATNO 0x08
|
||||
#define ENAUTOATNI 0x04
|
||||
#define ENAUTOATNP 0x02
|
||||
#define SCSIRSTO 0x01
|
||||
|
||||
#define SXFRCTL0 0x01
|
||||
#define DFON 0x80
|
||||
#define DFPEXP 0x40
|
||||
#define FAST20 0x20
|
||||
#define CLRSTCNT 0x10
|
||||
#define SPIOEN 0x08
|
||||
#define SCAMEN 0x04
|
||||
#define CLRCHN 0x02
|
||||
|
||||
#define SXFRCTL1 0x02
|
||||
#define BITBUCKET 0x80
|
||||
#define SWRAPEN 0x40
|
||||
#define ENSPCHK 0x20
|
||||
#define STIMESEL 0x18
|
||||
#define ENSTIMER 0x04
|
||||
#define ACTNEGEN 0x02
|
||||
#define STPWEN 0x01
|
||||
|
||||
#define SCSISIGO 0x03
|
||||
#define CDO 0x80
|
||||
#define IOO 0x40
|
||||
#define MSGO 0x20
|
||||
#define ATNO 0x10
|
||||
#define SELO 0x08
|
||||
#define BSYO 0x04
|
||||
#define REQO 0x02
|
||||
#define ACKO 0x01
|
||||
|
||||
#define SCSISIGI 0x03
|
||||
#define ATNI 0x10
|
||||
#define SELI 0x08
|
||||
#define BSYI 0x04
|
||||
#define REQI 0x02
|
||||
#define ACKI 0x01
|
||||
|
||||
#define SCSIRATE 0x04
|
||||
#define WIDEXFER 0x80
|
||||
#define SXFR_ULTRA2 0x7f
|
||||
#define SXFR 0x70
|
||||
#define SOFS 0x0f
|
||||
|
||||
#define SCSIID 0x05
|
||||
#define SCSIOFFSET 0x05
|
||||
#define SOFS_ULTRA2 0x7f
|
||||
|
||||
#define SCSIDATL 0x06
|
||||
|
||||
#define SCSIDATH 0x07
|
||||
|
||||
#define STCNT 0x08
|
||||
|
||||
#define OPTIONMODE 0x08
|
||||
#define AUTORATEEN 0x80
|
||||
#define AUTOACKEN 0x40
|
||||
#define ATNMGMNTEN 0x20
|
||||
#define BUSFREEREV 0x10
|
||||
#define EXPPHASEDIS 0x08
|
||||
#define SCSIDATL_IMGEN 0x04
|
||||
#define AUTO_MSGOUT_DE 0x02
|
||||
#define DIS_MSGIN_DUALEDGE 0x01
|
||||
|
||||
#define CLRSINT0 0x0b
|
||||
#define CLRSELDO 0x40
|
||||
#define CLRSELDI 0x20
|
||||
#define CLRSELINGO 0x10
|
||||
#define CLRSWRAP 0x08
|
||||
#define CLRSPIORDY 0x02
|
||||
|
||||
#define SSTAT0 0x0b
|
||||
#define TARGET 0x80
|
||||
#define SELDO 0x40
|
||||
#define SELDI 0x20
|
||||
#define SELINGO 0x10
|
||||
#define IOERR 0x08
|
||||
#define SWRAP 0x08
|
||||
#define SDONE 0x04
|
||||
#define SPIORDY 0x02
|
||||
#define DMADONE 0x01
|
||||
|
||||
#define CLRSINT1 0x0c
|
||||
#define CLRSELTIMEO 0x80
|
||||
#define CLRATNO 0x40
|
||||
#define CLRSCSIRSTI 0x20
|
||||
#define CLRBUSFREE 0x08
|
||||
#define CLRSCSIPERR 0x04
|
||||
#define CLRPHASECHG 0x02
|
||||
#define CLRREQINIT 0x01
|
||||
|
||||
#define SSTAT1 0x0c
|
||||
#define SELTO 0x80
|
||||
#define ATNTARG 0x40
|
||||
#define SCSIRSTI 0x20
|
||||
#define PHASEMIS 0x10
|
||||
#define BUSFREE 0x08
|
||||
#define SCSIPERR 0x04
|
||||
#define PHASECHG 0x02
|
||||
#define REQINIT 0x01
|
||||
|
||||
#define SSTAT2 0x0d
|
||||
#define OVERRUN 0x80
|
||||
#define SHVALID 0x40
|
||||
#define WIDE_RES 0x20
|
||||
#define SFCNT 0x1f
|
||||
#define EXP_ACTIVE 0x10
|
||||
#define CRCVALERR 0x08
|
||||
#define CRCENDERR 0x04
|
||||
#define CRCREQERR 0x02
|
||||
#define DUAL_EDGE_ERROR 0x01
|
||||
|
||||
#define SSTAT3 0x0e
|
||||
#define SCSICNT 0xf0
|
||||
#define OFFCNT 0x0f
|
||||
|
||||
#define SCSIID_ULTRA2 0x0f
|
||||
#define OID 0x0f
|
||||
|
||||
#define SIMODE0 0x10
|
||||
#define ENSELDO 0x40
|
||||
#define ENSELDI 0x20
|
||||
#define ENSELINGO 0x10
|
||||
#define ENIOERR 0x08
|
||||
#define ENSWRAP 0x08
|
||||
#define ENSDONE 0x04
|
||||
#define ENSPIORDY 0x02
|
||||
#define ENDMADONE 0x01
|
||||
|
||||
#define SIMODE1 0x11
|
||||
#define ENSELTIMO 0x80
|
||||
#define ENATNTARG 0x40
|
||||
#define ENSCSIRST 0x20
|
||||
#define ENPHASEMIS 0x10
|
||||
#define ENBUSFREE 0x08
|
||||
#define ENSCSIPERR 0x04
|
||||
#define ENPHASECHG 0x02
|
||||
#define ENREQINIT 0x01
|
||||
|
||||
#define SCSIBUSL 0x12
|
||||
|
||||
#define SCSIBUSH 0x13
|
||||
|
||||
#define SHADDR 0x14
|
||||
|
||||
#define SELTIMER 0x18
|
||||
#define STAGE6 0x20
|
||||
#define STAGE5 0x10
|
||||
#define STAGE4 0x08
|
||||
#define STAGE3 0x04
|
||||
#define STAGE2 0x02
|
||||
#define STAGE1 0x01
|
||||
|
||||
#define SELID 0x19
|
||||
#define SELID_MASK 0xf0
|
||||
#define ONEBIT 0x08
|
||||
|
||||
#define SPIOCAP 0x1b
|
||||
#define SOFT1 0x80
|
||||
#define SOFT0 0x40
|
||||
#define SOFTCMDEN 0x20
|
||||
#define HAS_BRDCTL 0x10
|
||||
#define SEEPROM 0x08
|
||||
#define EEPROM 0x04
|
||||
#define ROM 0x02
|
||||
#define SSPIOCPS 0x01
|
||||
|
||||
#define BRDCTL 0x1d
|
||||
#define BRDDAT7 0x80
|
||||
#define BRDDAT6 0x40
|
||||
#define BRDDAT5 0x20
|
||||
#define BRDDAT4 0x10
|
||||
#define BRDSTB 0x10
|
||||
#define BRDCS 0x08
|
||||
#define BRDDAT3 0x08
|
||||
#define BRDDAT2 0x04
|
||||
#define BRDRW 0x04
|
||||
#define BRDRW_ULTRA2 0x02
|
||||
#define BRDCTL1 0x02
|
||||
#define BRDSTB_ULTRA2 0x01
|
||||
#define BRDCTL0 0x01
|
||||
|
||||
#define SEECTL 0x1e
|
||||
#define EXTARBACK 0x80
|
||||
#define EXTARBREQ 0x40
|
||||
#define SEEMS 0x20
|
||||
#define SEERDY 0x10
|
||||
#define SEECS 0x08
|
||||
#define SEECK 0x04
|
||||
#define SEEDO 0x02
|
||||
#define SEEDI 0x01
|
||||
|
||||
#define SBLKCTL 0x1f
|
||||
#define DIAGLEDEN 0x80
|
||||
#define DIAGLEDON 0x40
|
||||
#define AUTOFLUSHDIS 0x20
|
||||
#define ENAB40 0x08
|
||||
#define ENAB20 0x04
|
||||
#define SELWIDE 0x02
|
||||
#define XCVR 0x01
|
||||
|
||||
#define SRAM_BASE 0x20
|
||||
|
||||
#define TARG_SCSIRATE 0x20
|
||||
|
||||
#define ULTRA_ENB 0x30
|
||||
|
||||
#define DISC_DSB 0x32
|
||||
|
||||
#define MSG_OUT 0x34
|
||||
|
||||
#define DMAPARAMS 0x35
|
||||
#define PRELOADEN 0x80
|
||||
#define WIDEODD 0x40
|
||||
#define SCSIEN 0x20
|
||||
#define SDMAENACK 0x10
|
||||
#define SDMAEN 0x10
|
||||
#define HDMAEN 0x08
|
||||
#define HDMAENACK 0x08
|
||||
#define DIRECTION 0x04
|
||||
#define FIFOFLUSH 0x02
|
||||
#define FIFORESET 0x01
|
||||
|
||||
#define SEQ_FLAGS 0x36
|
||||
#define IDENTIFY_SEEN 0x80
|
||||
#define SCBPTR_VALID 0x20
|
||||
#define DPHASE 0x10
|
||||
#define AMTARGET 0x08
|
||||
#define WIDE_BUS 0x02
|
||||
#define TWIN_BUS 0x01
|
||||
|
||||
#define SAVED_TCL 0x37
|
||||
|
||||
#define SG_COUNT 0x38
|
||||
|
||||
#define SG_NEXT 0x39
|
||||
|
||||
#define LASTPHASE 0x3d
|
||||
#define P_MESGIN 0xe0
|
||||
#define PHASE_MASK 0xe0
|
||||
#define P_STATUS 0xc0
|
||||
#define P_MESGOUT 0xa0
|
||||
#define P_COMMAND 0x80
|
||||
#define CDI 0x80
|
||||
#define IOI 0x40
|
||||
#define P_DATAIN 0x40
|
||||
#define MSGI 0x20
|
||||
#define P_BUSFREE 0x01
|
||||
#define P_DATAOUT 0x00
|
||||
|
||||
#define WAITING_SCBH 0x3e
|
||||
|
||||
#define DISCONNECTED_SCBH 0x3f
|
||||
|
||||
#define FREE_SCBH 0x40
|
||||
|
||||
#define HSCB_ADDR 0x41
|
||||
|
||||
#define SCBID_ADDR 0x45
|
||||
|
||||
#define TMODE_CMDADDR 0x49
|
||||
|
||||
#define KERNEL_QINPOS 0x4d
|
||||
|
||||
#define QINPOS 0x4e
|
||||
|
||||
#define QOUTPOS 0x4f
|
||||
|
||||
#define TMODE_CMDADDR_NEXT 0x50
|
||||
|
||||
#define ARG_1 0x51
|
||||
#define RETURN_1 0x51
|
||||
#define SEND_MSG 0x80
|
||||
#define SEND_SENSE 0x40
|
||||
#define SEND_REJ 0x20
|
||||
#define MSGOUT_PHASEMIS 0x10
|
||||
|
||||
#define ARG_2 0x52
|
||||
#define RETURN_2 0x52
|
||||
|
||||
#define LAST_MSG 0x53
|
||||
|
||||
#define PREFETCH_CNT 0x54
|
||||
|
||||
#define SCSICONF 0x5a
|
||||
#define TERM_ENB 0x80
|
||||
#define RESET_SCSI 0x40
|
||||
#define HWSCSIID 0x0f
|
||||
#define HSCSIID 0x07
|
||||
|
||||
#define HOSTCONF 0x5d
|
||||
|
||||
#define HA_274_BIOSCTRL 0x5f
|
||||
#define BIOSMODE 0x30
|
||||
#define BIOSDISABLED 0x30
|
||||
#define CHANNEL_B_PRIMARY 0x08
|
||||
|
||||
#define SEQCTL 0x60
|
||||
#define PERRORDIS 0x80
|
||||
#define PAUSEDIS 0x40
|
||||
#define FAILDIS 0x20
|
||||
#define FASTMODE 0x10
|
||||
#define BRKADRINTEN 0x08
|
||||
#define STEP 0x04
|
||||
#define SEQRESET 0x02
|
||||
#define LOADRAM 0x01
|
||||
|
||||
#define SEQRAM 0x61
|
||||
|
||||
#define SEQADDR0 0x62
|
||||
|
||||
#define SEQADDR1 0x63
|
||||
#define SEQADDR1_MASK 0x01
|
||||
|
||||
#define ACCUM 0x64
|
||||
|
||||
#define SINDEX 0x65
|
||||
|
||||
#define DINDEX 0x66
|
||||
|
||||
#define ALLONES 0x69
|
||||
|
||||
#define ALLZEROS 0x6a
|
||||
|
||||
#define NONE 0x6a
|
||||
|
||||
#define FLAGS 0x6b
|
||||
#define ZERO 0x02
|
||||
#define CARRY 0x01
|
||||
|
||||
#define SINDIR 0x6c
|
||||
|
||||
#define DINDIR 0x6d
|
||||
|
||||
#define FUNCTION1 0x6e
|
||||
|
||||
#define STACK 0x6f
|
||||
|
||||
#define TARG_OFFSET 0x70
|
||||
|
||||
#define BCTL 0x84
|
||||
#define ACE 0x08
|
||||
#define ENABLE 0x01
|
||||
|
||||
#define DSCOMMAND0 0x84
|
||||
#define INTSCBRAMSEL 0x08
|
||||
#define RAMPS 0x04
|
||||
#define USCBSIZE32 0x02
|
||||
#define CIOPARCKEN 0x01
|
||||
|
||||
#define DSCOMMAND 0x84
|
||||
#define CACHETHEN 0x80
|
||||
#define DPARCKEN 0x40
|
||||
#define MPARCKEN 0x20
|
||||
#define EXTREQLCK 0x10
|
||||
|
||||
#define BUSTIME 0x85
|
||||
#define BOFF 0xf0
|
||||
#define BON 0x0f
|
||||
|
||||
#define BUSSPD 0x86
|
||||
#define DFTHRSH 0xc0
|
||||
#define STBOFF 0x38
|
||||
#define STBON 0x07
|
||||
|
||||
#define DSPCISTATUS 0x86
|
||||
#define DFTHRSH_100 0xc0
|
||||
|
||||
#define HCNTRL 0x87
|
||||
#define POWRDN 0x40
|
||||
#define SWINT 0x10
|
||||
#define IRQMS 0x08
|
||||
#define PAUSE 0x04
|
||||
#define INTEN 0x02
|
||||
#define CHIPRST 0x01
|
||||
#define CHIPRSTACK 0x01
|
||||
|
||||
#define HADDR 0x88
|
||||
|
||||
#define HCNT 0x8c
|
||||
|
||||
#define SCBPTR 0x90
|
||||
|
||||
#define INTSTAT 0x91
|
||||
#define SEQINT_MASK 0xf1
|
||||
#define DATA_OVERRUN 0xe1
|
||||
#define MSGIN_PHASEMIS 0xd1
|
||||
#define TRACEPOINT2 0xc1
|
||||
#define SEQ_SG_FIXUP 0xb1
|
||||
#define AWAITING_MSG 0xa1
|
||||
#define RESIDUAL 0x81
|
||||
#define BAD_STATUS 0x71
|
||||
#define REJECT_MSG 0x61
|
||||
#define WIDE_RESIDUE 0x51
|
||||
#define EXTENDED_MSG 0x41
|
||||
#define NO_MATCH 0x31
|
||||
#define NO_IDENT 0x21
|
||||
#define SEND_REJECT 0x11
|
||||
#define INT_PEND 0x0f
|
||||
#define BRKADRINT 0x08
|
||||
#define SCSIINT 0x04
|
||||
#define CMDCMPLT 0x02
|
||||
#define BAD_PHASE 0x01
|
||||
#define SEQINT 0x01
|
||||
|
||||
#define CLRINT 0x92
|
||||
#define CLRPARERR 0x10
|
||||
#define CLRBRKADRINT 0x08
|
||||
#define CLRSCSIINT 0x04
|
||||
#define CLRCMDINT 0x02
|
||||
#define CLRSEQINT 0x01
|
||||
|
||||
#define ERROR 0x92
|
||||
#define CIOPARERR 0x80
|
||||
#define PCIERRSTAT 0x40
|
||||
#define MPARERR 0x20
|
||||
#define DPARERR 0x10
|
||||
#define SQPARERR 0x08
|
||||
#define ILLOPCODE 0x04
|
||||
#define DSCTMOUT 0x02
|
||||
#define ILLSADDR 0x02
|
||||
#define ILLHADDR 0x01
|
||||
|
||||
#define DFCNTRL 0x93
|
||||
|
||||
#define DFSTATUS 0x94
|
||||
#define PRELOAD_AVAIL 0x80
|
||||
#define DWORDEMP 0x20
|
||||
#define MREQPEND 0x10
|
||||
#define HDONE 0x08
|
||||
#define DFTHRESH 0x04
|
||||
#define FIFOFULL 0x02
|
||||
#define FIFOEMP 0x01
|
||||
|
||||
#define DFDAT 0x99
|
||||
|
||||
#define SCBCNT 0x9a
|
||||
#define SCBAUTO 0x80
|
||||
#define SCBCNT_MASK 0x1f
|
||||
|
||||
#define QINFIFO 0x9b
|
||||
|
||||
#define QINCNT 0x9c
|
||||
|
||||
#define SCSIDATL_IMG 0x9c
|
||||
|
||||
#define QOUTFIFO 0x9d
|
||||
|
||||
#define CRCCONTROL1 0x9d
|
||||
#define CRCONSEEN 0x80
|
||||
#define CRCVALCHKEN 0x40
|
||||
#define CRCENDCHKEN 0x20
|
||||
#define CRCREQCHKEN 0x10
|
||||
#define TARGCRCENDEN 0x08
|
||||
#define TARGCRCCNTEN 0x04
|
||||
|
||||
#define SCSIPHASE 0x9e
|
||||
#define SP_STATUS 0x20
|
||||
#define SP_COMMAND 0x10
|
||||
#define SP_MSG_IN 0x08
|
||||
#define SP_MSG_OUT 0x04
|
||||
#define SP_DATA_IN 0x02
|
||||
#define SP_DATA_OUT 0x01
|
||||
|
||||
#define QOUTCNT 0x9e
|
||||
|
||||
#define SFUNCT 0x9f
|
||||
#define ALT_MODE 0x80
|
||||
|
||||
#define SCB_CONTROL 0xa0
|
||||
#define MK_MESSAGE 0x80
|
||||
#define DISCENB 0x40
|
||||
#define TAG_ENB 0x20
|
||||
#define DISCONNECTED 0x04
|
||||
#define SCB_TAG_TYPE 0x03
|
||||
|
||||
#define SCB_BASE 0xa0
|
||||
|
||||
#define SCB_TCL 0xa1
|
||||
#define TID 0xf0
|
||||
#define SELBUSB 0x08
|
||||
#define LID 0x07
|
||||
|
||||
#define SCB_TARGET_STATUS 0xa2
|
||||
|
||||
#define SCB_SGCOUNT 0xa3
|
||||
|
||||
#define SCB_SGPTR 0xa4
|
||||
|
||||
#define SCB_RESID_SGCNT 0xa8
|
||||
|
||||
#define SCB_RESID_DCNT 0xa9
|
||||
|
||||
#define SCB_DATAPTR 0xac
|
||||
|
||||
#define SCB_DATACNT 0xb0
|
||||
|
||||
#define SCB_CMDPTR 0xb4
|
||||
|
||||
#define SCB_CMDLEN 0xb8
|
||||
|
||||
#define SCB_TAG 0xb9
|
||||
|
||||
#define SCB_NEXT 0xba
|
||||
|
||||
#define SCB_PREV 0xbb
|
||||
|
||||
#define SCB_BUSYTARGETS 0xbc
|
||||
|
||||
#define SEECTL_2840 0xc0
|
||||
#define CS_2840 0x04
|
||||
#define CK_2840 0x02
|
||||
#define DO_2840 0x01
|
||||
|
||||
#define STATUS_2840 0xc1
|
||||
#define EEPROM_TF 0x80
|
||||
#define BIOS_SEL 0x60
|
||||
#define ADSEL 0x1e
|
||||
#define DI_2840 0x01
|
||||
|
||||
#define CCHADDR 0xe0
|
||||
|
||||
#define CCHCNT 0xe8
|
||||
|
||||
#define CCSGRAM 0xe9
|
||||
|
||||
#define CCSGADDR 0xea
|
||||
|
||||
#define CCSGCTL 0xeb
|
||||
#define CCSGDONE 0x80
|
||||
#define CCSGEN 0x08
|
||||
#define FLAG 0x02
|
||||
#define CCSGRESET 0x01
|
||||
|
||||
#define CCSCBRAM 0xec
|
||||
|
||||
#define CCSCBADDR 0xed
|
||||
|
||||
#define CCSCBCTL 0xee
|
||||
#define CCSCBDONE 0x80
|
||||
#define ARRDONE 0x40
|
||||
#define CCARREN 0x10
|
||||
#define CCSCBEN 0x08
|
||||
#define CCSCBDIR 0x04
|
||||
#define CCSCBRESET 0x01
|
||||
|
||||
#define CCSCBCNT 0xef
|
||||
|
||||
#define CCSCBPTR 0xf1
|
||||
|
||||
#define HNSCB_QOFF 0xf4
|
||||
|
||||
#define HESCB_QOFF 0xf5
|
||||
|
||||
#define SNSCB_QOFF 0xf6
|
||||
|
||||
#define SESCB_QOFF 0xf7
|
||||
|
||||
#define SDSCB_QOFF 0xf8
|
||||
|
||||
#define QOFF_CTLSTA 0xfa
|
||||
#define ESTABLISH_SCB_AVAIL 0x80
|
||||
#define SCB_AVAIL 0x40
|
||||
#define SNSCB_ROLLOVER 0x20
|
||||
#define SDSCB_ROLLOVER 0x10
|
||||
#define SESCB_ROLLOVER 0x08
|
||||
#define SCB_QSIZE 0x07
|
||||
#define SCB_QSIZE_256 0x06
|
||||
|
||||
#define DFF_THRSH 0xfb
|
||||
#define WR_DFTHRSH 0x70
|
||||
#define WR_DFTHRSH_MAX 0x70
|
||||
#define WR_DFTHRSH_90 0x60
|
||||
#define WR_DFTHRSH_85 0x50
|
||||
#define WR_DFTHRSH_75 0x40
|
||||
#define WR_DFTHRSH_63 0x30
|
||||
#define WR_DFTHRSH_50 0x20
|
||||
#define WR_DFTHRSH_25 0x10
|
||||
#define RD_DFTHRSH_MAX 0x07
|
||||
#define RD_DFTHRSH 0x07
|
||||
#define RD_DFTHRSH_90 0x06
|
||||
#define RD_DFTHRSH_85 0x05
|
||||
#define RD_DFTHRSH_75 0x04
|
||||
#define RD_DFTHRSH_63 0x03
|
||||
#define RD_DFTHRSH_50 0x02
|
||||
#define RD_DFTHRSH_25 0x01
|
||||
#define WR_DFTHRSH_MIN 0x00
|
||||
#define RD_DFTHRSH_MIN 0x00
|
||||
|
||||
#define SG_CACHEPTR 0xfc
|
||||
#define SG_USER_DATA 0xfc
|
||||
#define LAST_SEG 0x02
|
||||
#define LAST_SEG_DONE 0x01
|
||||
|
||||
|
||||
#define CMD_GROUP2_BYTE_DELTA 0xfa
|
||||
#define MAX_OFFSET_8BIT 0x0f
|
||||
#define BUS_16_BIT 0x01
|
||||
#define QINFIFO_OFFSET 0x02
|
||||
#define CMD_GROUP5_BYTE_DELTA 0x0b
|
||||
#define CMD_GROUP_CODE_SHIFT 0x05
|
||||
#define MAX_OFFSET_ULTRA2 0x7f
|
||||
#define MAX_OFFSET_16BIT 0x08
|
||||
#define BUS_8_BIT 0x00
|
||||
#define QOUTFIFO_OFFSET 0x01
|
||||
#define UNTAGGEDSCB_OFFSET 0x00
|
||||
#define CCSGRAM_MAXSEGS 0x10
|
||||
#define SCB_LIST_NULL 0xff
|
||||
#define SG_SIZEOF 0x08
|
||||
#define CMD_GROUP4_BYTE_DELTA 0x04
|
||||
#define CMD_GROUP0_BYTE_DELTA 0xfc
|
||||
#define HOST_MSG 0xff
|
||||
#define BUS_32_BIT 0x02
|
||||
#define CCSGADDR_MAX 0x80
|
||||
|
||||
|
||||
/* Downloaded Constant Definitions */
|
||||
#define TMODE_NUMCMDS 0x00
|
@ -1,817 +0,0 @@
|
||||
/*
|
||||
* DO NOT EDIT - This file is automatically generated.
|
||||
*/
|
||||
static unsigned char seqprog[] = {
|
||||
0xff, 0x6a, 0x06, 0x08,
|
||||
0x7f, 0x02, 0x04, 0x08,
|
||||
0x12, 0x6a, 0x00, 0x00,
|
||||
0xff, 0x6a, 0xd6, 0x09,
|
||||
0xff, 0x6a, 0xdc, 0x09,
|
||||
0x00, 0x65, 0xca, 0x58,
|
||||
0xf7, 0x01, 0x02, 0x08,
|
||||
0xff, 0x4e, 0xc8, 0x08,
|
||||
0xbf, 0x60, 0xc0, 0x08,
|
||||
0x60, 0x0b, 0x86, 0x68,
|
||||
0x40, 0x00, 0x0c, 0x68,
|
||||
0x08, 0x1f, 0x3e, 0x10,
|
||||
0x60, 0x0b, 0x86, 0x68,
|
||||
0x40, 0x00, 0x0c, 0x68,
|
||||
0x08, 0x1f, 0x3e, 0x10,
|
||||
0xff, 0x3e, 0x48, 0x60,
|
||||
0x40, 0xfa, 0x10, 0x78,
|
||||
0xff, 0xf6, 0xd4, 0x08,
|
||||
0x01, 0x4e, 0x9c, 0x18,
|
||||
0x40, 0x60, 0xc0, 0x00,
|
||||
0x00, 0x4d, 0x10, 0x70,
|
||||
0x01, 0x4e, 0x9c, 0x18,
|
||||
0xbf, 0x60, 0xc0, 0x08,
|
||||
0x00, 0x6a, 0x86, 0x5c,
|
||||
0xff, 0x4e, 0xc8, 0x18,
|
||||
0x02, 0x6a, 0x70, 0x5b,
|
||||
0xff, 0x52, 0x20, 0x09,
|
||||
0x0d, 0x6a, 0x6a, 0x00,
|
||||
0x00, 0x52, 0xe6, 0x5b,
|
||||
0x03, 0xb0, 0x52, 0x31,
|
||||
0xff, 0xb0, 0x52, 0x09,
|
||||
0xff, 0xb1, 0x54, 0x09,
|
||||
0xff, 0xb2, 0x56, 0x09,
|
||||
0xff, 0xa3, 0x50, 0x09,
|
||||
0xff, 0x3e, 0x74, 0x09,
|
||||
0xff, 0x90, 0x7c, 0x08,
|
||||
0xff, 0x3e, 0x20, 0x09,
|
||||
0x00, 0x65, 0x4e, 0x58,
|
||||
0x00, 0x65, 0x0c, 0x40,
|
||||
0xf7, 0x1f, 0xca, 0x08,
|
||||
0x08, 0xa1, 0xc8, 0x08,
|
||||
0x00, 0x65, 0xca, 0x00,
|
||||
0xff, 0x65, 0x3e, 0x08,
|
||||
0xf0, 0xa1, 0xc8, 0x08,
|
||||
0x0f, 0x0f, 0x1e, 0x08,
|
||||
0x00, 0x0f, 0x1e, 0x00,
|
||||
0xf0, 0xa1, 0xc8, 0x08,
|
||||
0x0f, 0x05, 0x0a, 0x08,
|
||||
0x00, 0x05, 0x0a, 0x00,
|
||||
0xff, 0x6a, 0x0c, 0x08,
|
||||
0x5a, 0x6a, 0x00, 0x04,
|
||||
0x12, 0x65, 0x02, 0x00,
|
||||
0x31, 0x6a, 0xca, 0x00,
|
||||
0x80, 0x37, 0x6e, 0x68,
|
||||
0xff, 0x65, 0xca, 0x18,
|
||||
0xff, 0x37, 0xdc, 0x08,
|
||||
0xff, 0x6e, 0xc8, 0x08,
|
||||
0x00, 0x6c, 0x76, 0x78,
|
||||
0x20, 0x01, 0x02, 0x00,
|
||||
0x4c, 0x37, 0xc8, 0x28,
|
||||
0x08, 0x1f, 0x7e, 0x78,
|
||||
0x08, 0x37, 0x6e, 0x00,
|
||||
0x08, 0x64, 0xc8, 0x00,
|
||||
0x70, 0x64, 0xca, 0x18,
|
||||
0xff, 0x6c, 0x0a, 0x08,
|
||||
0x20, 0x64, 0xca, 0x18,
|
||||
0xff, 0x6c, 0x08, 0x0c,
|
||||
0x40, 0x0b, 0x96, 0x68,
|
||||
0x20, 0x6a, 0x16, 0x00,
|
||||
0xf0, 0x19, 0x6e, 0x08,
|
||||
0x08, 0x6a, 0x18, 0x00,
|
||||
0x08, 0x11, 0x22, 0x00,
|
||||
0x08, 0x6a, 0x66, 0x58,
|
||||
0x08, 0x6a, 0x68, 0x00,
|
||||
0x00, 0x65, 0xaa, 0x40,
|
||||
0x12, 0x6a, 0x00, 0x00,
|
||||
0x40, 0x6a, 0x16, 0x00,
|
||||
0xff, 0x3e, 0x20, 0x09,
|
||||
0xff, 0xba, 0x7c, 0x08,
|
||||
0xff, 0xa1, 0x6e, 0x08,
|
||||
0x08, 0x6a, 0x18, 0x00,
|
||||
0x08, 0x11, 0x22, 0x00,
|
||||
0x08, 0x6a, 0x66, 0x58,
|
||||
0x80, 0x6a, 0x68, 0x00,
|
||||
0x80, 0x36, 0x6c, 0x00,
|
||||
0x00, 0x65, 0xba, 0x5b,
|
||||
0xff, 0x3d, 0xc8, 0x08,
|
||||
0xbf, 0x64, 0xe2, 0x78,
|
||||
0x80, 0x64, 0xc8, 0x71,
|
||||
0xa0, 0x64, 0xf8, 0x71,
|
||||
0xc0, 0x64, 0xf0, 0x71,
|
||||
0xe0, 0x64, 0x38, 0x72,
|
||||
0x01, 0x6a, 0x22, 0x01,
|
||||
0x00, 0x65, 0xaa, 0x40,
|
||||
0xf7, 0x11, 0x22, 0x08,
|
||||
0x00, 0x65, 0xca, 0x58,
|
||||
0xff, 0x06, 0xd4, 0x08,
|
||||
0xf7, 0x01, 0x02, 0x08,
|
||||
0x09, 0x0c, 0xc4, 0x78,
|
||||
0x08, 0x0c, 0x0c, 0x68,
|
||||
0x01, 0x6a, 0x22, 0x01,
|
||||
0xff, 0x6a, 0x26, 0x09,
|
||||
0x02, 0x6a, 0x08, 0x30,
|
||||
0xff, 0x6a, 0x08, 0x08,
|
||||
0xdf, 0x01, 0x02, 0x08,
|
||||
0x01, 0x6a, 0x7a, 0x00,
|
||||
0xff, 0x6a, 0x6c, 0x0c,
|
||||
0x04, 0x14, 0x10, 0x31,
|
||||
0x03, 0xa9, 0x18, 0x31,
|
||||
0x03, 0xa9, 0x10, 0x30,
|
||||
0x08, 0x6a, 0xcc, 0x00,
|
||||
0xa9, 0x6a, 0xd0, 0x5b,
|
||||
0x00, 0x65, 0x02, 0x41,
|
||||
0xa8, 0x6a, 0x6a, 0x00,
|
||||
0x79, 0x6a, 0x6a, 0x00,
|
||||
0x40, 0x3d, 0xea, 0x68,
|
||||
0x04, 0x35, 0x6a, 0x00,
|
||||
0x00, 0x65, 0x2a, 0x5b,
|
||||
0x80, 0x6a, 0xd4, 0x01,
|
||||
0x10, 0x36, 0xd6, 0x68,
|
||||
0x10, 0x36, 0x6c, 0x00,
|
||||
0x07, 0xac, 0x10, 0x31,
|
||||
0x05, 0xa3, 0x70, 0x30,
|
||||
0x03, 0x8c, 0x10, 0x30,
|
||||
0x88, 0x6a, 0xcc, 0x00,
|
||||
0xac, 0x6a, 0xc8, 0x5b,
|
||||
0x00, 0x65, 0xc2, 0x5b,
|
||||
0x38, 0x6a, 0xcc, 0x00,
|
||||
0xa3, 0x6a, 0xcc, 0x5b,
|
||||
0xff, 0x38, 0x12, 0x69,
|
||||
0x80, 0x02, 0x04, 0x00,
|
||||
0xe7, 0x35, 0x6a, 0x08,
|
||||
0x03, 0x69, 0x18, 0x31,
|
||||
0x03, 0x69, 0x10, 0x30,
|
||||
0xff, 0x6a, 0x10, 0x00,
|
||||
0xff, 0x6a, 0x12, 0x00,
|
||||
0xff, 0x6a, 0x14, 0x00,
|
||||
0x22, 0x38, 0xc8, 0x28,
|
||||
0x01, 0x38, 0x1c, 0x61,
|
||||
0x02, 0x64, 0xc8, 0x00,
|
||||
0x01, 0x38, 0x1c, 0x61,
|
||||
0xbf, 0x35, 0x6a, 0x08,
|
||||
0xff, 0x64, 0xf8, 0x09,
|
||||
0xff, 0x35, 0x26, 0x09,
|
||||
0x80, 0x02, 0xa4, 0x69,
|
||||
0x10, 0x0c, 0x7a, 0x69,
|
||||
0x80, 0x94, 0x22, 0x79,
|
||||
0x00, 0x35, 0x0a, 0x5b,
|
||||
0x80, 0x02, 0xa4, 0x69,
|
||||
0xff, 0x65, 0x94, 0x79,
|
||||
0x01, 0x38, 0x70, 0x71,
|
||||
0xff, 0x38, 0x70, 0x18,
|
||||
0xff, 0x38, 0x94, 0x79,
|
||||
0x80, 0xea, 0x4a, 0x61,
|
||||
0xef, 0x38, 0xc8, 0x18,
|
||||
0x80, 0x6a, 0xc8, 0x00,
|
||||
0x00, 0x65, 0x3c, 0x49,
|
||||
0x33, 0x38, 0xc8, 0x28,
|
||||
0xff, 0x64, 0xd0, 0x09,
|
||||
0x04, 0x39, 0xc0, 0x31,
|
||||
0x09, 0x6a, 0xd6, 0x01,
|
||||
0x80, 0xeb, 0x42, 0x79,
|
||||
0xf7, 0xeb, 0xd6, 0x09,
|
||||
0x08, 0xeb, 0x46, 0x69,
|
||||
0x01, 0x6a, 0xd6, 0x01,
|
||||
0x08, 0xe9, 0x10, 0x31,
|
||||
0x03, 0x8c, 0x10, 0x30,
|
||||
0xff, 0x38, 0x70, 0x18,
|
||||
0x88, 0x6a, 0xcc, 0x00,
|
||||
0x39, 0x6a, 0xce, 0x5b,
|
||||
0x08, 0x6a, 0x18, 0x01,
|
||||
0xff, 0x6a, 0x1a, 0x09,
|
||||
0xff, 0x6a, 0x1c, 0x09,
|
||||
0x0d, 0x93, 0x26, 0x01,
|
||||
0x00, 0x65, 0x78, 0x5c,
|
||||
0x88, 0x6a, 0xcc, 0x00,
|
||||
0x00, 0x65, 0x6a, 0x5c,
|
||||
0x00, 0x65, 0xc2, 0x5b,
|
||||
0xff, 0x6a, 0xc8, 0x08,
|
||||
0x08, 0x39, 0x72, 0x18,
|
||||
0x00, 0x3a, 0x74, 0x20,
|
||||
0x00, 0x65, 0x02, 0x41,
|
||||
0x01, 0x0c, 0x6c, 0x79,
|
||||
0x10, 0x0c, 0x02, 0x79,
|
||||
0x10, 0x0c, 0x7a, 0x69,
|
||||
0x01, 0xfc, 0x70, 0x79,
|
||||
0xff, 0x6a, 0x70, 0x08,
|
||||
0x01, 0x0c, 0x76, 0x79,
|
||||
0x10, 0x0c, 0x02, 0x79,
|
||||
0x00, 0x65, 0xae, 0x59,
|
||||
0x01, 0xfc, 0x94, 0x69,
|
||||
0x40, 0x0d, 0x84, 0x69,
|
||||
0xb1, 0x6a, 0x22, 0x01,
|
||||
0x00, 0x65, 0x94, 0x41,
|
||||
0x2e, 0xfc, 0xa2, 0x28,
|
||||
0x3f, 0x38, 0xc8, 0x08,
|
||||
0x00, 0x51, 0x94, 0x71,
|
||||
0xff, 0x6a, 0xc8, 0x08,
|
||||
0xf8, 0x39, 0x72, 0x18,
|
||||
0xff, 0x3a, 0x74, 0x20,
|
||||
0x01, 0x38, 0x70, 0x18,
|
||||
0x00, 0x65, 0x86, 0x41,
|
||||
0x03, 0x08, 0x52, 0x31,
|
||||
0xff, 0x38, 0x50, 0x09,
|
||||
0x12, 0x01, 0x02, 0x00,
|
||||
0xff, 0x08, 0x52, 0x09,
|
||||
0xff, 0x09, 0x54, 0x09,
|
||||
0xff, 0x0a, 0x56, 0x09,
|
||||
0xff, 0x38, 0x50, 0x09,
|
||||
0x00, 0x65, 0xaa, 0x40,
|
||||
0x10, 0x0c, 0xa4, 0x79,
|
||||
0x00, 0x65, 0xae, 0x59,
|
||||
0x7f, 0x02, 0x04, 0x08,
|
||||
0xe1, 0x6a, 0x22, 0x01,
|
||||
0x00, 0x65, 0xaa, 0x40,
|
||||
0x04, 0x93, 0xc2, 0x69,
|
||||
0xdf, 0x93, 0x26, 0x09,
|
||||
0x20, 0x93, 0xb2, 0x69,
|
||||
0x02, 0x93, 0x26, 0x01,
|
||||
0x01, 0x94, 0xb6, 0x79,
|
||||
0x01, 0x94, 0xb6, 0x79,
|
||||
0x01, 0x94, 0xb6, 0x79,
|
||||
0x01, 0x94, 0xb6, 0x79,
|
||||
0x01, 0x94, 0xb6, 0x79,
|
||||
0x10, 0x94, 0xc0, 0x69,
|
||||
0xd7, 0x93, 0x26, 0x09,
|
||||
0x28, 0x93, 0xc4, 0x69,
|
||||
0xff, 0x6a, 0xd4, 0x0c,
|
||||
0x00, 0x65, 0x2a, 0x5b,
|
||||
0x05, 0xb4, 0x10, 0x31,
|
||||
0x02, 0x6a, 0x1a, 0x31,
|
||||
0x03, 0x8c, 0x10, 0x30,
|
||||
0x88, 0x6a, 0xcc, 0x00,
|
||||
0xb4, 0x6a, 0xcc, 0x5b,
|
||||
0xff, 0x6a, 0x1a, 0x09,
|
||||
0xff, 0x6a, 0x1c, 0x09,
|
||||
0x00, 0x65, 0xc2, 0x5b,
|
||||
0x3d, 0x6a, 0x0a, 0x5b,
|
||||
0xac, 0x6a, 0x26, 0x01,
|
||||
0x04, 0x0b, 0xde, 0x69,
|
||||
0x04, 0x0b, 0xe4, 0x69,
|
||||
0x10, 0x0c, 0xe0, 0x79,
|
||||
0x02, 0x03, 0xe8, 0x79,
|
||||
0x11, 0x0c, 0xe4, 0x79,
|
||||
0xd7, 0x93, 0x26, 0x09,
|
||||
0x28, 0x93, 0xea, 0x69,
|
||||
0x12, 0x01, 0x02, 0x00,
|
||||
0x00, 0x65, 0xaa, 0x40,
|
||||
0x00, 0x65, 0x2a, 0x5b,
|
||||
0xff, 0x06, 0x44, 0x09,
|
||||
0x00, 0x65, 0xaa, 0x40,
|
||||
0x10, 0x3d, 0x06, 0x00,
|
||||
0xff, 0x34, 0xca, 0x08,
|
||||
0x80, 0x65, 0x1c, 0x62,
|
||||
0x0f, 0xa1, 0xca, 0x08,
|
||||
0x07, 0xa1, 0xca, 0x08,
|
||||
0x40, 0xa0, 0xc8, 0x08,
|
||||
0x00, 0x65, 0xca, 0x00,
|
||||
0x80, 0x65, 0xca, 0x00,
|
||||
0x80, 0xa0, 0x0c, 0x7a,
|
||||
0xff, 0x65, 0x0c, 0x08,
|
||||
0x00, 0x65, 0x1e, 0x42,
|
||||
0x20, 0xa0, 0x24, 0x7a,
|
||||
0xff, 0x65, 0x0c, 0x08,
|
||||
0x00, 0x65, 0xba, 0x5b,
|
||||
0xa0, 0x3d, 0x2c, 0x62,
|
||||
0x23, 0xa0, 0x0c, 0x08,
|
||||
0x00, 0x65, 0xba, 0x5b,
|
||||
0xa0, 0x3d, 0x2c, 0x62,
|
||||
0x00, 0xb9, 0x24, 0x42,
|
||||
0xff, 0x65, 0x24, 0x62,
|
||||
0xa1, 0x6a, 0x22, 0x01,
|
||||
0xff, 0x6a, 0xd4, 0x08,
|
||||
0x10, 0x51, 0x2c, 0x72,
|
||||
0x40, 0x6a, 0x18, 0x00,
|
||||
0xff, 0x65, 0x0c, 0x08,
|
||||
0x00, 0x65, 0xba, 0x5b,
|
||||
0xa0, 0x3d, 0xf6, 0x71,
|
||||
0x40, 0x6a, 0x18, 0x00,
|
||||
0xff, 0x34, 0xa6, 0x08,
|
||||
0x80, 0x34, 0x34, 0x62,
|
||||
0x7f, 0xa0, 0x40, 0x09,
|
||||
0x08, 0x6a, 0x68, 0x00,
|
||||
0x00, 0x65, 0xaa, 0x40,
|
||||
0x64, 0x6a, 0x00, 0x5b,
|
||||
0x80, 0x64, 0xaa, 0x6a,
|
||||
0x04, 0x64, 0x8c, 0x72,
|
||||
0x02, 0x64, 0x92, 0x72,
|
||||
0x00, 0x6a, 0x54, 0x72,
|
||||
0x03, 0x64, 0xa6, 0x72,
|
||||
0x01, 0x64, 0x88, 0x72,
|
||||
0x07, 0x64, 0xe8, 0x72,
|
||||
0x08, 0x64, 0x50, 0x72,
|
||||
0x23, 0x64, 0xec, 0x72,
|
||||
0x11, 0x6a, 0x22, 0x01,
|
||||
0x07, 0x6a, 0xf2, 0x5a,
|
||||
0xff, 0x06, 0xd4, 0x08,
|
||||
0x00, 0x65, 0xaa, 0x40,
|
||||
0xff, 0xa8, 0x58, 0x6a,
|
||||
0xff, 0xa2, 0x70, 0x7a,
|
||||
0x01, 0x6a, 0x6a, 0x00,
|
||||
0x00, 0xb9, 0xe6, 0x5b,
|
||||
0xff, 0xa2, 0x70, 0x7a,
|
||||
0x71, 0x6a, 0x22, 0x01,
|
||||
0xff, 0x6a, 0xd4, 0x08,
|
||||
0x40, 0x51, 0x70, 0x62,
|
||||
0x0d, 0x6a, 0x6a, 0x00,
|
||||
0x00, 0xb9, 0xe6, 0x5b,
|
||||
0xff, 0x3e, 0x74, 0x09,
|
||||
0xff, 0x90, 0x7c, 0x08,
|
||||
0x00, 0x65, 0x4e, 0x58,
|
||||
0x00, 0x65, 0xbc, 0x40,
|
||||
0x20, 0xa0, 0x78, 0x6a,
|
||||
0xff, 0x37, 0xc8, 0x08,
|
||||
0x00, 0x6a, 0x90, 0x5b,
|
||||
0xff, 0x6a, 0xa6, 0x5b,
|
||||
0xff, 0xf8, 0xc8, 0x08,
|
||||
0xff, 0x4f, 0xc8, 0x08,
|
||||
0x01, 0x6a, 0x90, 0x5b,
|
||||
0x00, 0xb9, 0xa6, 0x5b,
|
||||
0x01, 0x4f, 0x9e, 0x18,
|
||||
0x02, 0x6a, 0x22, 0x01,
|
||||
0x00, 0x65, 0x80, 0x5c,
|
||||
0x00, 0x65, 0xbc, 0x40,
|
||||
0x41, 0x6a, 0x22, 0x01,
|
||||
0x00, 0x65, 0xaa, 0x40,
|
||||
0x04, 0xa0, 0x40, 0x01,
|
||||
0x00, 0x65, 0x98, 0x5c,
|
||||
0x00, 0x65, 0xbc, 0x40,
|
||||
0x10, 0x36, 0x50, 0x7a,
|
||||
0x05, 0x38, 0x46, 0x31,
|
||||
0x04, 0x14, 0x58, 0x31,
|
||||
0x03, 0xa9, 0x60, 0x31,
|
||||
0xa3, 0x6a, 0xcc, 0x00,
|
||||
0x38, 0x6a, 0xcc, 0x5b,
|
||||
0xac, 0x6a, 0xcc, 0x00,
|
||||
0x14, 0x6a, 0xce, 0x5b,
|
||||
0xa9, 0x6a, 0xd0, 0x5b,
|
||||
0x00, 0x65, 0x50, 0x42,
|
||||
0xef, 0x36, 0x6c, 0x08,
|
||||
0x00, 0x65, 0x50, 0x42,
|
||||
0x0f, 0x64, 0xc8, 0x08,
|
||||
0x07, 0x64, 0xc8, 0x08,
|
||||
0x00, 0x37, 0x6e, 0x00,
|
||||
0xff, 0x6a, 0xa4, 0x00,
|
||||
0x00, 0x65, 0x60, 0x5b,
|
||||
0xff, 0x51, 0xbc, 0x72,
|
||||
0x20, 0x36, 0xc6, 0x7a,
|
||||
0x00, 0x90, 0x4e, 0x5b,
|
||||
0x00, 0x65, 0xc8, 0x42,
|
||||
0xff, 0x06, 0xd4, 0x08,
|
||||
0x00, 0x65, 0xba, 0x5b,
|
||||
0xe0, 0x3d, 0xe2, 0x62,
|
||||
0x20, 0x12, 0xe2, 0x62,
|
||||
0x51, 0x6a, 0xf6, 0x5a,
|
||||
0x00, 0x65, 0x48, 0x5b,
|
||||
0xff, 0x37, 0xc8, 0x08,
|
||||
0x00, 0xa1, 0xda, 0x62,
|
||||
0x04, 0xa0, 0xda, 0x7a,
|
||||
0xfb, 0xa0, 0x40, 0x09,
|
||||
0x80, 0x36, 0x6c, 0x00,
|
||||
0x80, 0xa0, 0x50, 0x7a,
|
||||
0x7f, 0xa0, 0x40, 0x09,
|
||||
0xff, 0x6a, 0xf2, 0x5a,
|
||||
0x00, 0x65, 0x50, 0x42,
|
||||
0x04, 0xa0, 0xe0, 0x7a,
|
||||
0x00, 0x65, 0x98, 0x5c,
|
||||
0x00, 0x65, 0xe2, 0x42,
|
||||
0x00, 0x65, 0x80, 0x5c,
|
||||
0x31, 0x6a, 0x22, 0x01,
|
||||
0x0c, 0x6a, 0xf2, 0x5a,
|
||||
0x00, 0x65, 0x50, 0x42,
|
||||
0x61, 0x6a, 0x22, 0x01,
|
||||
0x00, 0x65, 0x50, 0x42,
|
||||
0x51, 0x6a, 0xf6, 0x5a,
|
||||
0x51, 0x6a, 0x22, 0x01,
|
||||
0x00, 0x65, 0x50, 0x42,
|
||||
0x10, 0x3d, 0x06, 0x00,
|
||||
0xff, 0x65, 0x68, 0x0c,
|
||||
0xff, 0x06, 0xd4, 0x08,
|
||||
0x01, 0x0c, 0xf8, 0x7a,
|
||||
0x04, 0x0c, 0xfa, 0x6a,
|
||||
0xe0, 0x03, 0x7a, 0x08,
|
||||
0xe0, 0x3d, 0x06, 0x63,
|
||||
0xff, 0x65, 0xcc, 0x08,
|
||||
0xff, 0x12, 0xda, 0x0c,
|
||||
0xff, 0x06, 0xd4, 0x0c,
|
||||
0xd1, 0x6a, 0x22, 0x01,
|
||||
0x00, 0x65, 0xaa, 0x40,
|
||||
0xff, 0x65, 0x26, 0x09,
|
||||
0x01, 0x0b, 0x1a, 0x6b,
|
||||
0x10, 0x0c, 0x0c, 0x7b,
|
||||
0x04, 0x0b, 0x14, 0x6b,
|
||||
0xff, 0x6a, 0xca, 0x08,
|
||||
0x04, 0x93, 0x18, 0x6b,
|
||||
0x01, 0x94, 0x16, 0x7b,
|
||||
0x10, 0x94, 0x18, 0x6b,
|
||||
0x80, 0x3d, 0x1e, 0x73,
|
||||
0x0f, 0x04, 0x22, 0x6b,
|
||||
0x02, 0x03, 0x22, 0x7b,
|
||||
0x11, 0x0c, 0x1e, 0x7b,
|
||||
0xc7, 0x93, 0x26, 0x09,
|
||||
0xff, 0x99, 0xd4, 0x08,
|
||||
0x38, 0x93, 0x24, 0x6b,
|
||||
0xff, 0x6a, 0xd4, 0x0c,
|
||||
0x80, 0x36, 0x28, 0x6b,
|
||||
0x21, 0x6a, 0x22, 0x05,
|
||||
0xff, 0x65, 0x20, 0x09,
|
||||
0xff, 0x51, 0x36, 0x63,
|
||||
0xff, 0x37, 0xc8, 0x08,
|
||||
0xa1, 0x6a, 0x42, 0x43,
|
||||
0xff, 0x51, 0xc8, 0x08,
|
||||
0xb9, 0x6a, 0x42, 0x43,
|
||||
0xff, 0x90, 0xa4, 0x08,
|
||||
0xff, 0xba, 0x46, 0x73,
|
||||
0xff, 0xba, 0x20, 0x09,
|
||||
0xff, 0x65, 0xca, 0x18,
|
||||
0x00, 0x6c, 0x3a, 0x63,
|
||||
0xff, 0x90, 0xca, 0x0c,
|
||||
0xff, 0x6a, 0xca, 0x04,
|
||||
0x20, 0x36, 0x5a, 0x7b,
|
||||
0x00, 0x90, 0x2e, 0x5b,
|
||||
0xff, 0x65, 0x5a, 0x73,
|
||||
0xff, 0x52, 0x58, 0x73,
|
||||
0xff, 0xba, 0xcc, 0x08,
|
||||
0xff, 0x52, 0x20, 0x09,
|
||||
0xff, 0x66, 0x74, 0x09,
|
||||
0xff, 0x65, 0x20, 0x0d,
|
||||
0xff, 0xba, 0x7e, 0x0c,
|
||||
0x00, 0x6a, 0x86, 0x5c,
|
||||
0x0d, 0x6a, 0x6a, 0x00,
|
||||
0x00, 0x51, 0xe6, 0x43,
|
||||
0xff, 0x3f, 0xb4, 0x73,
|
||||
0xff, 0x6a, 0xa2, 0x00,
|
||||
0x00, 0x3f, 0x2e, 0x5b,
|
||||
0xff, 0x65, 0xb4, 0x73,
|
||||
0x20, 0x36, 0x6c, 0x00,
|
||||
0x20, 0xa0, 0x6e, 0x6b,
|
||||
0xff, 0xb9, 0xa2, 0x0c,
|
||||
0xff, 0x6a, 0xa2, 0x04,
|
||||
0xff, 0x65, 0xa4, 0x08,
|
||||
0xe0, 0x6a, 0xcc, 0x00,
|
||||
0x45, 0x6a, 0xda, 0x5b,
|
||||
0x01, 0x6a, 0xd0, 0x01,
|
||||
0x09, 0x6a, 0xd6, 0x01,
|
||||
0x80, 0xeb, 0x7a, 0x7b,
|
||||
0x01, 0x6a, 0xd6, 0x01,
|
||||
0x01, 0xe9, 0xa4, 0x34,
|
||||
0x88, 0x6a, 0xcc, 0x00,
|
||||
0x45, 0x6a, 0xda, 0x5b,
|
||||
0x01, 0x6a, 0x18, 0x01,
|
||||
0xff, 0x6a, 0x1a, 0x09,
|
||||
0xff, 0x6a, 0x1c, 0x09,
|
||||
0x0d, 0x6a, 0x26, 0x01,
|
||||
0x00, 0x65, 0x78, 0x5c,
|
||||
0xff, 0x99, 0xa4, 0x0c,
|
||||
0xff, 0x65, 0xa4, 0x08,
|
||||
0xe0, 0x6a, 0xcc, 0x00,
|
||||
0x45, 0x6a, 0xda, 0x5b,
|
||||
0x01, 0x6a, 0xd0, 0x01,
|
||||
0x01, 0x6a, 0xdc, 0x05,
|
||||
0x88, 0x6a, 0xcc, 0x00,
|
||||
0x45, 0x6a, 0xda, 0x5b,
|
||||
0x01, 0x6a, 0x18, 0x01,
|
||||
0xff, 0x6a, 0x1a, 0x09,
|
||||
0xff, 0x6a, 0x1c, 0x09,
|
||||
0x01, 0x6a, 0x26, 0x05,
|
||||
0x01, 0x65, 0xd8, 0x31,
|
||||
0x09, 0xee, 0xdc, 0x01,
|
||||
0x80, 0xee, 0xaa, 0x7b,
|
||||
0xff, 0x6a, 0xdc, 0x0d,
|
||||
0xff, 0x65, 0x32, 0x09,
|
||||
0x0a, 0x93, 0x26, 0x01,
|
||||
0x00, 0x65, 0x78, 0x44,
|
||||
0xff, 0x37, 0xc8, 0x08,
|
||||
0x00, 0x6a, 0x70, 0x5b,
|
||||
0xff, 0x52, 0xa2, 0x0c,
|
||||
0x01, 0x0c, 0xba, 0x7b,
|
||||
0x04, 0x0c, 0xba, 0x6b,
|
||||
0xe0, 0x03, 0x06, 0x08,
|
||||
0xe0, 0x03, 0x7a, 0x0c,
|
||||
0xff, 0x8c, 0x10, 0x08,
|
||||
0xff, 0x8d, 0x12, 0x08,
|
||||
0xff, 0x8e, 0x14, 0x0c,
|
||||
0xff, 0x6c, 0xda, 0x08,
|
||||
0xff, 0x6c, 0xda, 0x08,
|
||||
0xff, 0x6c, 0xda, 0x08,
|
||||
0xff, 0x6c, 0xda, 0x08,
|
||||
0xff, 0x6c, 0xda, 0x08,
|
||||
0xff, 0x6c, 0xda, 0x08,
|
||||
0xff, 0x6c, 0xda, 0x0c,
|
||||
0x3d, 0x64, 0xa4, 0x28,
|
||||
0x55, 0x64, 0xc8, 0x28,
|
||||
0x00, 0x6c, 0xda, 0x18,
|
||||
0xff, 0x52, 0xc8, 0x08,
|
||||
0x00, 0x6c, 0xda, 0x20,
|
||||
0xff, 0x6a, 0xc8, 0x08,
|
||||
0x00, 0x6c, 0xda, 0x20,
|
||||
0x00, 0x6c, 0xda, 0x24,
|
||||
0xff, 0x65, 0xc8, 0x08,
|
||||
0xe0, 0x6a, 0xcc, 0x00,
|
||||
0x41, 0x6a, 0xd6, 0x5b,
|
||||
0xff, 0x90, 0xe2, 0x09,
|
||||
0x20, 0x6a, 0xd0, 0x01,
|
||||
0x04, 0x35, 0xf8, 0x7b,
|
||||
0x1d, 0x6a, 0xdc, 0x01,
|
||||
0xdc, 0xee, 0xf4, 0x63,
|
||||
0x00, 0x65, 0x0e, 0x44,
|
||||
0x01, 0x6a, 0xdc, 0x01,
|
||||
0x20, 0xa0, 0xd8, 0x31,
|
||||
0x09, 0xee, 0xdc, 0x01,
|
||||
0x80, 0xee, 0xfe, 0x7b,
|
||||
0x11, 0x6a, 0xdc, 0x01,
|
||||
0x50, 0xee, 0x02, 0x64,
|
||||
0x20, 0x6a, 0xd0, 0x01,
|
||||
0x09, 0x6a, 0xdc, 0x01,
|
||||
0x88, 0xee, 0x08, 0x64,
|
||||
0x19, 0x6a, 0xdc, 0x01,
|
||||
0xd8, 0xee, 0x0c, 0x64,
|
||||
0xff, 0x6a, 0xdc, 0x09,
|
||||
0x18, 0xee, 0x10, 0x6c,
|
||||
0xff, 0x6a, 0xd4, 0x0c,
|
||||
0x88, 0x6a, 0xcc, 0x00,
|
||||
0x41, 0x6a, 0xd6, 0x5b,
|
||||
0x20, 0x6a, 0x18, 0x01,
|
||||
0xff, 0x6a, 0x1a, 0x09,
|
||||
0xff, 0x6a, 0x1c, 0x09,
|
||||
0xff, 0x35, 0x26, 0x09,
|
||||
0x04, 0x35, 0x3c, 0x6c,
|
||||
0xa0, 0x6a, 0xca, 0x00,
|
||||
0x20, 0x65, 0xc8, 0x18,
|
||||
0xff, 0x6c, 0x32, 0x09,
|
||||
0xff, 0x6c, 0x32, 0x09,
|
||||
0xff, 0x6c, 0x32, 0x09,
|
||||
0xff, 0x6c, 0x32, 0x09,
|
||||
0xff, 0x6c, 0x32, 0x09,
|
||||
0xff, 0x6c, 0x32, 0x09,
|
||||
0xff, 0x6c, 0x32, 0x09,
|
||||
0xff, 0x6c, 0x32, 0x09,
|
||||
0x00, 0x65, 0x26, 0x64,
|
||||
0x0a, 0x93, 0x26, 0x01,
|
||||
0x00, 0x65, 0x78, 0x44,
|
||||
0xa0, 0x6a, 0xcc, 0x00,
|
||||
0xe8, 0x6a, 0xc8, 0x00,
|
||||
0x01, 0x94, 0x40, 0x6c,
|
||||
0x10, 0x94, 0x42, 0x6c,
|
||||
0x08, 0x94, 0x54, 0x6c,
|
||||
0x08, 0x94, 0x54, 0x6c,
|
||||
0x08, 0x94, 0x54, 0x6c,
|
||||
0x00, 0x65, 0x68, 0x5c,
|
||||
0x08, 0x64, 0xc8, 0x18,
|
||||
0x00, 0x8c, 0xca, 0x18,
|
||||
0x00, 0x65, 0x4a, 0x4c,
|
||||
0x00, 0x65, 0x40, 0x44,
|
||||
0xf7, 0x93, 0x26, 0x09,
|
||||
0x08, 0x93, 0x56, 0x6c,
|
||||
0x00, 0x65, 0x68, 0x5c,
|
||||
0x08, 0x64, 0xc8, 0x18,
|
||||
0x08, 0x64, 0x58, 0x64,
|
||||
0xff, 0x6a, 0xd4, 0x0c,
|
||||
0x00, 0x65, 0x78, 0x5c,
|
||||
0x00, 0x65, 0x68, 0x5c,
|
||||
0x00, 0x65, 0x68, 0x5c,
|
||||
0x00, 0x65, 0x68, 0x5c,
|
||||
0xff, 0x99, 0xda, 0x08,
|
||||
0xff, 0x99, 0xda, 0x08,
|
||||
0xff, 0x99, 0xda, 0x08,
|
||||
0xff, 0x99, 0xda, 0x08,
|
||||
0xff, 0x99, 0xda, 0x08,
|
||||
0xff, 0x99, 0xda, 0x08,
|
||||
0xff, 0x99, 0xda, 0x08,
|
||||
0xff, 0x99, 0xda, 0x0c,
|
||||
0x08, 0x94, 0x78, 0x7c,
|
||||
0xf7, 0x93, 0x26, 0x09,
|
||||
0x08, 0x93, 0x7c, 0x6c,
|
||||
0xff, 0x6a, 0xd4, 0x0c,
|
||||
0xff, 0x40, 0x74, 0x09,
|
||||
0xff, 0x90, 0x80, 0x08,
|
||||
0xff, 0x6a, 0x72, 0x05,
|
||||
0xff, 0x40, 0x94, 0x64,
|
||||
0xff, 0x3f, 0x8c, 0x64,
|
||||
0xff, 0x6a, 0xca, 0x04,
|
||||
0xff, 0x3f, 0x20, 0x09,
|
||||
0x01, 0x6a, 0x6a, 0x00,
|
||||
0x00, 0xb9, 0xe6, 0x5b,
|
||||
0xff, 0xba, 0x7e, 0x0c,
|
||||
0xff, 0x40, 0x20, 0x09,
|
||||
0xff, 0xba, 0x80, 0x0c,
|
||||
0xff, 0x3f, 0x74, 0x09,
|
||||
0xff, 0x90, 0x7e, 0x0c,
|
||||
};
|
||||
|
||||
static int aic7xxx_patch15_func(struct aic7xxx_host *p);
|
||||
|
||||
static int
|
||||
aic7xxx_patch15_func(struct aic7xxx_host *p)
|
||||
{
|
||||
return ((p->bugs & AHC_BUG_SCBCHAN_UPLOAD) != 0);
|
||||
}
|
||||
|
||||
static int aic7xxx_patch14_func(struct aic7xxx_host *p);
|
||||
|
||||
static int
|
||||
aic7xxx_patch14_func(struct aic7xxx_host *p)
|
||||
{
|
||||
return ((p->bugs & AHC_BUG_PCI_2_1_RETRY) != 0);
|
||||
}
|
||||
|
||||
static int aic7xxx_patch13_func(struct aic7xxx_host *p);
|
||||
|
||||
static int
|
||||
aic7xxx_patch13_func(struct aic7xxx_host *p)
|
||||
{
|
||||
return ((p->features & AHC_WIDE) != 0);
|
||||
}
|
||||
|
||||
static int aic7xxx_patch12_func(struct aic7xxx_host *p);
|
||||
|
||||
static int
|
||||
aic7xxx_patch12_func(struct aic7xxx_host *p)
|
||||
{
|
||||
return ((p->bugs & AHC_BUG_AUTOFLUSH) != 0);
|
||||
}
|
||||
|
||||
static int aic7xxx_patch11_func(struct aic7xxx_host *p);
|
||||
|
||||
static int
|
||||
aic7xxx_patch11_func(struct aic7xxx_host *p)
|
||||
{
|
||||
return ((p->features & AHC_ULTRA2) == 0);
|
||||
}
|
||||
|
||||
static int aic7xxx_patch10_func(struct aic7xxx_host *p);
|
||||
|
||||
static int
|
||||
aic7xxx_patch10_func(struct aic7xxx_host *p)
|
||||
{
|
||||
return ((p->features & AHC_CMD_CHAN) == 0);
|
||||
}
|
||||
|
||||
static int aic7xxx_patch9_func(struct aic7xxx_host *p);
|
||||
|
||||
static int
|
||||
aic7xxx_patch9_func(struct aic7xxx_host *p)
|
||||
{
|
||||
return ((p->chip & AHC_CHIPID_MASK) == AHC_AIC7895);
|
||||
}
|
||||
|
||||
static int aic7xxx_patch8_func(struct aic7xxx_host *p);
|
||||
|
||||
static int
|
||||
aic7xxx_patch8_func(struct aic7xxx_host *p)
|
||||
{
|
||||
return ((p->features & AHC_ULTRA) != 0);
|
||||
}
|
||||
|
||||
static int aic7xxx_patch7_func(struct aic7xxx_host *p);
|
||||
|
||||
static int
|
||||
aic7xxx_patch7_func(struct aic7xxx_host *p)
|
||||
{
|
||||
return ((p->features & AHC_ULTRA2) != 0);
|
||||
}
|
||||
|
||||
static int aic7xxx_patch6_func(struct aic7xxx_host *p);
|
||||
|
||||
static int
|
||||
aic7xxx_patch6_func(struct aic7xxx_host *p)
|
||||
{
|
||||
return ((p->flags & AHC_PAGESCBS) == 0);
|
||||
}
|
||||
|
||||
static int aic7xxx_patch5_func(struct aic7xxx_host *p);
|
||||
|
||||
static int
|
||||
aic7xxx_patch5_func(struct aic7xxx_host *p)
|
||||
{
|
||||
return ((p->flags & AHC_PAGESCBS) != 0);
|
||||
}
|
||||
|
||||
static int aic7xxx_patch4_func(struct aic7xxx_host *p);
|
||||
|
||||
static int
|
||||
aic7xxx_patch4_func(struct aic7xxx_host *p)
|
||||
{
|
||||
return ((p->features & AHC_QUEUE_REGS) != 0);
|
||||
}
|
||||
|
||||
static int aic7xxx_patch3_func(struct aic7xxx_host *p);
|
||||
|
||||
static int
|
||||
aic7xxx_patch3_func(struct aic7xxx_host *p)
|
||||
{
|
||||
return ((p->features & AHC_TWIN) != 0);
|
||||
}
|
||||
|
||||
static int aic7xxx_patch2_func(struct aic7xxx_host *p);
|
||||
|
||||
static int
|
||||
aic7xxx_patch2_func(struct aic7xxx_host *p)
|
||||
{
|
||||
return ((p->features & AHC_QUEUE_REGS) == 0);
|
||||
}
|
||||
|
||||
static int aic7xxx_patch1_func(struct aic7xxx_host *p);
|
||||
|
||||
static int
|
||||
aic7xxx_patch1_func(struct aic7xxx_host *p)
|
||||
{
|
||||
return ((p->features & AHC_CMD_CHAN) != 0);
|
||||
}
|
||||
|
||||
static int aic7xxx_patch0_func(struct aic7xxx_host *p);
|
||||
|
||||
static int
|
||||
aic7xxx_patch0_func(struct aic7xxx_host *p)
|
||||
{
|
||||
return (0);
|
||||
}
|
||||
|
||||
struct sequencer_patch {
|
||||
int (*patch_func)(struct aic7xxx_host *);
|
||||
unsigned int begin :10,
|
||||
skip_instr :10,
|
||||
skip_patch :12;
|
||||
} sequencer_patches[] = {
|
||||
{ aic7xxx_patch1_func, 3, 2, 1 },
|
||||
{ aic7xxx_patch2_func, 7, 1, 1 },
|
||||
{ aic7xxx_patch2_func, 8, 1, 1 },
|
||||
{ aic7xxx_patch3_func, 11, 4, 1 },
|
||||
{ aic7xxx_patch4_func, 16, 3, 2 },
|
||||
{ aic7xxx_patch0_func, 19, 4, 1 },
|
||||
{ aic7xxx_patch5_func, 23, 1, 1 },
|
||||
{ aic7xxx_patch6_func, 26, 1, 1 },
|
||||
{ aic7xxx_patch1_func, 29, 1, 2 },
|
||||
{ aic7xxx_patch0_func, 30, 3, 1 },
|
||||
{ aic7xxx_patch3_func, 39, 4, 1 },
|
||||
{ aic7xxx_patch7_func, 43, 3, 2 },
|
||||
{ aic7xxx_patch0_func, 46, 3, 1 },
|
||||
{ aic7xxx_patch8_func, 52, 7, 1 },
|
||||
{ aic7xxx_patch3_func, 60, 3, 1 },
|
||||
{ aic7xxx_patch7_func, 63, 2, 1 },
|
||||
{ aic7xxx_patch7_func, 102, 1, 2 },
|
||||
{ aic7xxx_patch0_func, 103, 2, 1 },
|
||||
{ aic7xxx_patch7_func, 107, 2, 1 },
|
||||
{ aic7xxx_patch9_func, 109, 1, 1 },
|
||||
{ aic7xxx_patch10_func, 110, 2, 1 },
|
||||
{ aic7xxx_patch7_func, 113, 1, 2 },
|
||||
{ aic7xxx_patch0_func, 114, 1, 1 },
|
||||
{ aic7xxx_patch1_func, 118, 1, 1 },
|
||||
{ aic7xxx_patch1_func, 121, 3, 3 },
|
||||
{ aic7xxx_patch11_func, 123, 1, 1 },
|
||||
{ aic7xxx_patch0_func, 124, 5, 1 },
|
||||
{ aic7xxx_patch7_func, 132, 1, 1 },
|
||||
{ aic7xxx_patch9_func, 133, 1, 1 },
|
||||
{ aic7xxx_patch10_func, 134, 3, 1 },
|
||||
{ aic7xxx_patch7_func, 137, 3, 2 },
|
||||
{ aic7xxx_patch0_func, 140, 2, 1 },
|
||||
{ aic7xxx_patch7_func, 142, 5, 2 },
|
||||
{ aic7xxx_patch0_func, 147, 3, 1 },
|
||||
{ aic7xxx_patch7_func, 150, 1, 2 },
|
||||
{ aic7xxx_patch0_func, 151, 2, 1 },
|
||||
{ aic7xxx_patch1_func, 153, 15, 4 },
|
||||
{ aic7xxx_patch11_func, 166, 1, 2 },
|
||||
{ aic7xxx_patch0_func, 167, 1, 1 },
|
||||
{ aic7xxx_patch0_func, 168, 10, 1 },
|
||||
{ aic7xxx_patch7_func, 181, 1, 2 },
|
||||
{ aic7xxx_patch0_func, 182, 2, 1 },
|
||||
{ aic7xxx_patch7_func, 184, 18, 1 },
|
||||
{ aic7xxx_patch1_func, 202, 3, 3 },
|
||||
{ aic7xxx_patch7_func, 204, 1, 1 },
|
||||
{ aic7xxx_patch0_func, 205, 4, 1 },
|
||||
{ aic7xxx_patch7_func, 210, 2, 1 },
|
||||
{ aic7xxx_patch7_func, 215, 13, 3 },
|
||||
{ aic7xxx_patch12_func, 218, 1, 1 },
|
||||
{ aic7xxx_patch12_func, 219, 4, 1 },
|
||||
{ aic7xxx_patch1_func, 229, 3, 3 },
|
||||
{ aic7xxx_patch11_func, 231, 1, 1 },
|
||||
{ aic7xxx_patch0_func, 232, 5, 1 },
|
||||
{ aic7xxx_patch11_func, 237, 1, 2 },
|
||||
{ aic7xxx_patch0_func, 238, 9, 1 },
|
||||
{ aic7xxx_patch13_func, 254, 1, 2 },
|
||||
{ aic7xxx_patch0_func, 255, 1, 1 },
|
||||
{ aic7xxx_patch4_func, 316, 1, 2 },
|
||||
{ aic7xxx_patch0_func, 317, 1, 1 },
|
||||
{ aic7xxx_patch2_func, 320, 1, 1 },
|
||||
{ aic7xxx_patch1_func, 330, 3, 2 },
|
||||
{ aic7xxx_patch0_func, 333, 5, 1 },
|
||||
{ aic7xxx_patch13_func, 341, 1, 2 },
|
||||
{ aic7xxx_patch0_func, 342, 1, 1 },
|
||||
{ aic7xxx_patch5_func, 347, 1, 1 },
|
||||
{ aic7xxx_patch11_func, 389, 15, 2 },
|
||||
{ aic7xxx_patch14_func, 402, 1, 1 },
|
||||
{ aic7xxx_patch1_func, 441, 7, 2 },
|
||||
{ aic7xxx_patch0_func, 448, 8, 1 },
|
||||
{ aic7xxx_patch1_func, 457, 4, 2 },
|
||||
{ aic7xxx_patch0_func, 461, 6, 1 },
|
||||
{ aic7xxx_patch1_func, 467, 4, 2 },
|
||||
{ aic7xxx_patch0_func, 471, 3, 1 },
|
||||
{ aic7xxx_patch10_func, 481, 10, 1 },
|
||||
{ aic7xxx_patch1_func, 500, 22, 5 },
|
||||
{ aic7xxx_patch11_func, 508, 4, 1 },
|
||||
{ aic7xxx_patch7_func, 512, 7, 3 },
|
||||
{ aic7xxx_patch15_func, 512, 5, 2 },
|
||||
{ aic7xxx_patch0_func, 517, 2, 1 },
|
||||
{ aic7xxx_patch10_func, 522, 50, 3 },
|
||||
{ aic7xxx_patch14_func, 543, 17, 2 },
|
||||
{ aic7xxx_patch0_func, 560, 4, 1 },
|
||||
{ aic7xxx_patch10_func, 572, 4, 1 },
|
||||
{ aic7xxx_patch5_func, 576, 2, 1 },
|
||||
{ aic7xxx_patch5_func, 579, 9, 1 },
|
||||
|
||||
};
|
@ -1,49 +0,0 @@
|
||||
/* Messages (1 byte) */ /* I/T (M)andatory or (O)ptional */
|
||||
#define MSG_CMDCOMPLETE 0x00 /* M/M */
|
||||
#define MSG_EXTENDED 0x01 /* O/O */
|
||||
#define MSG_SAVEDATAPOINTER 0x02 /* O/O */
|
||||
#define MSG_RESTOREPOINTERS 0x03 /* O/O */
|
||||
#define MSG_DISCONNECT 0x04 /* O/O */
|
||||
#define MSG_INITIATOR_DET_ERR 0x05 /* M/M */
|
||||
#define MSG_ABORT 0x06 /* O/M */
|
||||
#define MSG_MESSAGE_REJECT 0x07 /* M/M */
|
||||
#define MSG_NOOP 0x08 /* M/M */
|
||||
#define MSG_PARITY_ERROR 0x09 /* M/M */
|
||||
#define MSG_LINK_CMD_COMPLETE 0x0a /* O/O */
|
||||
#define MSG_LINK_CMD_COMPLETEF 0x0b /* O/O */
|
||||
#define MSG_BUS_DEV_RESET 0x0c /* O/M */
|
||||
#define MSG_ABORT_TAG 0x0d /* O/O */
|
||||
#define MSG_CLEAR_QUEUE 0x0e /* O/O */
|
||||
#define MSG_INIT_RECOVERY 0x0f /* O/O */
|
||||
#define MSG_REL_RECOVERY 0x10 /* O/O */
|
||||
#define MSG_TERM_IO_PROC 0x11 /* O/O */
|
||||
|
||||
/* Messages (2 byte) */
|
||||
#define MSG_SIMPLE_Q_TAG 0x20 /* O/O */
|
||||
#define MSG_HEAD_OF_Q_TAG 0x21 /* O/O */
|
||||
#define MSG_ORDERED_Q_TAG 0x22 /* O/O */
|
||||
#define MSG_IGN_WIDE_RESIDUE 0x23 /* O/O */
|
||||
|
||||
/* Identify message */ /* M/M */
|
||||
#define MSG_IDENTIFYFLAG 0x80
|
||||
#define MSG_IDENTIFY_DISCFLAG 0x40
|
||||
#define MSG_IDENTIFY(lun, disc) (((disc) ? 0xc0 : MSG_IDENTIFYFLAG) | (lun))
|
||||
#define MSG_ISIDENTIFY(m) ((m) & MSG_IDENTIFYFLAG)
|
||||
|
||||
/* Extended messages (opcode and length) */
|
||||
#define MSG_EXT_SDTR 0x01
|
||||
#define MSG_EXT_SDTR_LEN 0x03
|
||||
|
||||
#define MSG_EXT_WDTR 0x03
|
||||
#define MSG_EXT_WDTR_LEN 0x02
|
||||
#define MSG_EXT_WDTR_BUS_8_BIT 0x00
|
||||
#define MSG_EXT_WDTR_BUS_16_BIT 0x01
|
||||
#define MSG_EXT_WDTR_BUS_32_BIT 0x02
|
||||
|
||||
#define MSG_EXT_PPR 0x04
|
||||
#define MSG_EXT_PPR_LEN 0x06
|
||||
#define MSG_EXT_PPR_OPTION_ST 0x00
|
||||
#define MSG_EXT_PPR_OPTION_DT_CRC 0x02
|
||||
#define MSG_EXT_PPR_OPTION_DT_UNITS 0x03
|
||||
#define MSG_EXT_PPR_OPTION_DT_CRC_QUICK 0x04
|
||||
#define MSG_EXT_PPR_OPTION_DT_UNITS_QUICK 0x05
|
@ -1,135 +0,0 @@
|
||||
/*
|
||||
* Instruction formats for the sequencer program downloaded to
|
||||
* Aic7xxx SCSI host adapters
|
||||
*
|
||||
* Copyright (c) 1997, 1998 Justin T. Gibbs.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions, and the following disclaimer,
|
||||
* without modification, immediately at the beginning of the file.
|
||||
* 2. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* Where this Software is combined with software released under the terms of
|
||||
* the GNU General Public License ("GPL") and the terms of the GPL would require the
|
||||
* combined work to also be released under the terms of the GPL, the terms
|
||||
* and conditions of this License will apply in addition to those of the
|
||||
* GPL with the exception of any terms or conditions of this License that
|
||||
* conflict with, or are expressly prohibited by, the GPL.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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.
|
||||
*
|
||||
* $Id: sequencer.h,v 1.3 1997/09/27 19:37:31 gibbs Exp $
|
||||
*/
|
||||
|
||||
#ifdef __LITTLE_ENDIAN_BITFIELD
|
||||
struct ins_format1 {
|
||||
unsigned int
|
||||
immediate : 8,
|
||||
source : 9,
|
||||
destination : 9,
|
||||
ret : 1,
|
||||
opcode : 4,
|
||||
parity : 1;
|
||||
};
|
||||
|
||||
struct ins_format2 {
|
||||
unsigned int
|
||||
shift_control : 8,
|
||||
source : 9,
|
||||
destination : 9,
|
||||
ret : 1,
|
||||
opcode : 4,
|
||||
parity : 1;
|
||||
};
|
||||
|
||||
struct ins_format3 {
|
||||
unsigned int
|
||||
immediate : 8,
|
||||
source : 9,
|
||||
address : 10,
|
||||
opcode : 4,
|
||||
parity : 1;
|
||||
};
|
||||
#elif defined(__BIG_ENDIAN_BITFIELD)
|
||||
struct ins_format1 {
|
||||
unsigned int
|
||||
parity : 1,
|
||||
opcode : 4,
|
||||
ret : 1,
|
||||
destination : 9,
|
||||
source : 9,
|
||||
immediate : 8;
|
||||
};
|
||||
|
||||
struct ins_format2 {
|
||||
unsigned int
|
||||
parity : 1,
|
||||
opcode : 4,
|
||||
ret : 1,
|
||||
destination : 9,
|
||||
source : 9,
|
||||
shift_control : 8;
|
||||
};
|
||||
|
||||
struct ins_format3 {
|
||||
unsigned int
|
||||
parity : 1,
|
||||
opcode : 4,
|
||||
address : 10,
|
||||
source : 9,
|
||||
immediate : 8;
|
||||
};
|
||||
#endif
|
||||
|
||||
union ins_formats {
|
||||
struct ins_format1 format1;
|
||||
struct ins_format2 format2;
|
||||
struct ins_format3 format3;
|
||||
unsigned char bytes[4];
|
||||
unsigned int integer;
|
||||
};
|
||||
struct instruction {
|
||||
union ins_formats format;
|
||||
unsigned int srcline;
|
||||
struct symbol *patch_label;
|
||||
struct {
|
||||
struct instruction *stqe_next;
|
||||
} links;
|
||||
};
|
||||
|
||||
#define AIC_OP_OR 0x0
|
||||
#define AIC_OP_AND 0x1
|
||||
#define AIC_OP_XOR 0x2
|
||||
#define AIC_OP_ADD 0x3
|
||||
#define AIC_OP_ADC 0x4
|
||||
#define AIC_OP_ROL 0x5
|
||||
#define AIC_OP_BMOV 0x6
|
||||
|
||||
#define AIC_OP_JMP 0x8
|
||||
#define AIC_OP_JC 0x9
|
||||
#define AIC_OP_JNC 0xa
|
||||
#define AIC_OP_CALL 0xb
|
||||
#define AIC_OP_JNE 0xc
|
||||
#define AIC_OP_JNZ 0xd
|
||||
#define AIC_OP_JE 0xe
|
||||
#define AIC_OP_JZ 0xf
|
||||
|
||||
/* Pseudo Ops */
|
||||
#define AIC_OP_SHL 0x10
|
||||
#define AIC_OP_SHR 0x20
|
||||
#define AIC_OP_ROR 0x30
|
Loading…
Reference in New Issue
Block a user