Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
798c67c3
Commit
798c67c3
authored
Oct 11, 2002
by
Rolf Eike Beer
Committed by
Linus Torvalds
Oct 11, 2002
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[PATCH] improve NCR53c710 SCSI driver
parent
5f8c40c2
Changes
4
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
1118 additions
and
828 deletions
+1118
-828
drivers/scsi/sim710.c
drivers/scsi/sim710.c
+380
-217
drivers/scsi/sim710.h
drivers/scsi/sim710.h
+17
-3
drivers/scsi/sim710.scr
drivers/scsi/sim710.scr
+49
-27
drivers/scsi/sim710_d.h_shipped
drivers/scsi/sim710_d.h_shipped
+672
-581
No files found.
drivers/scsi/sim710.c
View file @
798c67c3
This diff is collapsed.
Click to expand it.
drivers/scsi/sim710.h
View file @
798c67c3
...
@@ -24,7 +24,7 @@ int sim710_release(struct Scsi_Host *);
...
@@ -24,7 +24,7 @@ int sim710_release(struct Scsi_Host *);
#include <scsi/scsicam.h>
#include <scsi/scsicam.h>
#define SIM710_SCSI { proc_name: "sim710", \
#define SIM710_SCSI { proc_name: "sim710", \
name: "
Simple 53c710",
\
name: "
53c710",
\
detect: sim710_detect, \
detect: sim710_detect, \
release: sim710_release, \
release: sim710_release, \
queuecommand: sim710_queuecommand, \
queuecommand: sim710_queuecommand, \
...
@@ -413,7 +413,7 @@ int sim710_release(struct Scsi_Host *);
...
@@ -413,7 +413,7 @@ int sim710_release(struct Scsi_Host *);
#define CTEST3_800_FM 0x02
/* Fetch mode pin */
#define CTEST3_800_FM 0x02
/* Fetch mode pin */
/* bit 0 is reserved on 800 series chips */
/* bit 0 is reserved on 800 series chips */
#define CTEST4_REG_
4
00 (0x18^bE)
/* Chip test 4 rw */
#define CTEST4_REG_
7
00 (0x18^bE)
/* Chip test 4 rw */
#define CTEST4_REG_800 (0x21^bE)
/* Chip test 4 rw */
#define CTEST4_REG_800 (0x21^bE)
/* Chip test 4 rw */
/* 0x80 is reserved on 700 series chips */
/* 0x80 is reserved on 700 series chips */
#define CTEST4_800_BDIS 0x80
/* Burst mode disable */
#define CTEST4_800_BDIS 0x80
/* Burst mode disable */
...
@@ -791,6 +791,20 @@ int sim710_release(struct Scsi_Host *);
...
@@ -791,6 +791,20 @@ int sim710_release(struct Scsi_Host *);
#define ISTAT_REG ISTAT_REG_700
#define ISTAT_REG ISTAT_REG_700
#define SCRATCH_REG SCRATCHB_REG_10
#define SCRATCH_REG SCRATCHB_REG_10
#define ADDER_REG ADDER_REG_10
#define SIEN_REG SIEN_REG_700
#define SDID_REG SDID_REG_700
#define CTEST0_REG CTEST0_REG_700
#define CTEST1_REG CTEST1_REG_700
#define CTEST2_REG CTEST2_REG_700
#define CTEST3_REG CTEST3_REG_700
#define CTEST4_REG CTEST4_REG_700
#define CTEST5_REG CTEST5_REG_700
#define CTEST6_REG CTEST6_REG_700
#define SODL_REG SODL_REG_700
#define SBDL_REG SBDL_REG_700
#define SIDL_REG SIDL_REG_700
#define LCRC_REG LCRC_REG_10
#ifdef MEM_MAPPED
#ifdef MEM_MAPPED
#define NCR_read8(address) \
#define NCR_read8(address) \
...
...
drivers/scsi/sim710.scr
View file @
798c67c3
...
@@ -15,15 +15,12 @@ ABSOLUTE dsa_size = 2088
...
@@ -15,15 +15,12 @@ ABSOLUTE dsa_size = 2088
ABSOLUTE reselected_identify = 0
ABSOLUTE reselected_identify = 0
ABSOLUTE msgin_buf = 0
ABSOLUTE msgin_buf = 0
ABSOLUTE msg_reject = 0
ABSOLUTE test1_src = 0
ABSOLUTE test1_dst = 0
/* Interrupt values passed back to driver */
/* Interrupt values passed back to driver */
ABSOLUTE int_bad_extmsg1a = 0xab930000
ABSOLUTE int_bad_extmsg1b = 0xab930001
ABSOLUTE int_bad_extmsg2a = 0xab930002
ABSOLUTE int_bad_extmsg2b = 0xab930003
ABSOLUTE int_bad_extmsg3a = 0xab930004
ABSOLUTE int_bad_extmsg3b = 0xab930005
ABSOLUTE int_bad_msg1 = 0xab930006
ABSOLUTE int_bad_msg1 = 0xab930006
ABSOLUTE int_bad_msg2 = 0xab930007
ABSOLUTE int_bad_msg2 = 0xab930007
ABSOLUTE int_bad_msg3 = 0xab930008
ABSOLUTE int_bad_msg3 = 0xab930008
...
@@ -47,9 +44,9 @@ ABSOLUTE int_disc1 = 0xab930019
...
@@ -47,9 +44,9 @@ ABSOLUTE int_disc1 = 0xab930019
ABSOLUTE int_disc2 = 0xab93001a
ABSOLUTE int_disc2 = 0xab93001a
ABSOLUTE int_disc3 = 0xab93001b
ABSOLUTE int_disc3 = 0xab93001b
ABSOLUTE int_not_rej = 0xab93001c
ABSOLUTE int_not_rej = 0xab93001c
ABSOLUTE int_test1 = 0xab93001d
/* Bit field settings used to record status in SCRATCH0 */
/* Bit field settings used to record status in SCRATCH */
ABSOLUTE had_select = 0x01
ABSOLUTE had_select = 0x01
ABSOLUTE had_msgout = 0x02
ABSOLUTE had_msgout = 0x02
...
@@ -60,6 +57,9 @@ ABSOLUTE had_status = 0x20
...
@@ -60,6 +57,9 @@ ABSOLUTE had_status = 0x20
ABSOLUTE had_msgin = 0x40
ABSOLUTE had_msgin = 0x40
ABSOLUTE had_extmsg = 0x80
ABSOLUTE had_extmsg = 0x80
/* Bit field settings used to record status in SCRATCH1 */
ABSOLUTE did_reject = 0x01
/* These scripts are heavily based on the examples in the NCR 53C710
/* These scripts are heavily based on the examples in the NCR 53C710
* Programmer's Guide (Preliminary).
* Programmer's Guide (Preliminary).
...
@@ -68,7 +68,6 @@ ABSOLUTE had_extmsg = 0x80
...
@@ -68,7 +68,6 @@ ABSOLUTE had_extmsg = 0x80
ENTRY do_select
ENTRY do_select
do_select:
do_select:
CLEAR TARGET
CLEAR TARGET
MOVE SCRATCH0 & 0 TO SCRATCH0
; Enable selection timer
; Enable selection timer
MOVE CTEST7 & 0xef TO CTEST7
MOVE CTEST7 & 0xef TO CTEST7
SELECT ATN FROM dsa_select, reselect
SELECT ATN FROM dsa_select, reselect
...
@@ -401,17 +400,23 @@ ext_msg1:
...
@@ -401,17 +400,23 @@ ext_msg1:
MOVE SCRATCH0 | had_extmsg TO SCRATCH0
MOVE SCRATCH0 | had_extmsg TO SCRATCH0
CLEAR ACK
CLEAR ACK
MOVE 1, msgin_buf + 1, WHEN MSG_IN
MOVE 1, msgin_buf + 1, WHEN MSG_IN
JUMP ext_msg1a, IF 0x03
JUMP reject_msg1, IF NOT 0x03 ; Only handle SDTR
INT int_bad_extmsg1a
ext_msg1a:
CLEAR ACK
CLEAR ACK
MOVE 1, msgin_buf + 2, WHEN MSG_IN
MOVE 1, msgin_buf + 2, WHEN MSG_IN
JUMP ext_msg1b, IF 0x01 ; Must be SDTR
JUMP reject_msg1, IF NOT 0x01 ; Only handle SDTR
INT int_bad_extmsg1b
ext_msg1b:
CLEAR ACK
CLEAR ACK
MOVE 2, msgin_buf + 3, WHEN MSG_IN
MOVE 2, msgin_buf + 3, WHEN MSG_IN
INT int_msg_sdtr1
INT int_msg_sdtr1
reject_msg1:
MOVE SCRATCH1 | did_reject TO SCRATCH1
SET ATN
CLEAR ACK
JUMP reject_msg1a, WHEN NOT MSG_IN
MOVE 1, msgin_buf + 7, WHEN MSG_IN
JUMP reject_msg1
reject_msg1a:
MOVE 1, msg_reject, WHEN MSG_OUT
JUMP redo_msgin1
disc1:
disc1:
CLEAR ACK
CLEAR ACK
ENTRY wait_disc1
ENTRY wait_disc1
...
@@ -446,17 +451,23 @@ ext_msg2:
...
@@ -446,17 +451,23 @@ ext_msg2:
MOVE SCRATCH0 | had_extmsg TO SCRATCH0
MOVE SCRATCH0 | had_extmsg TO SCRATCH0
CLEAR ACK
CLEAR ACK
MOVE 1, msgin_buf + 1, WHEN MSG_IN
MOVE 1, msgin_buf + 1, WHEN MSG_IN
JUMP ext_msg2a, IF 0x03
JUMP reject_msg2, IF NOT 0x03 ; Only handle SDTR
INT int_bad_extmsg2a
ext_msg2a:
CLEAR ACK
CLEAR ACK
MOVE 1, msgin_buf + 2, WHEN MSG_IN
MOVE 1, msgin_buf + 2, WHEN MSG_IN
JUMP ext_msg2b, IF 0x01 ; Must be SDTR
JUMP reject_msg2, IF NOT 0x01 ; Only handle SDTR
INT int_bad_extmsg2b
ext_msg2b:
CLEAR ACK
CLEAR ACK
MOVE 2, msgin_buf + 3, WHEN MSG_IN
MOVE 2, msgin_buf + 3, WHEN MSG_IN
INT int_msg_sdtr2
INT int_msg_sdtr2
reject_msg2:
MOVE SCRATCH1 | did_reject TO SCRATCH1
SET ATN
CLEAR ACK
JUMP reject_msg2a, WHEN NOT MSG_IN
MOVE 1, msgin_buf + 7, WHEN MSG_IN
JUMP reject_msg2
reject_msg2a:
MOVE 1, msg_reject, WHEN MSG_OUT
JUMP redo_msgin2
disc2:
disc2:
CLEAR ACK
CLEAR ACK
ENTRY wait_disc2
ENTRY wait_disc2
...
@@ -491,17 +502,23 @@ ext_msg3:
...
@@ -491,17 +502,23 @@ ext_msg3:
MOVE SCRATCH0 | had_extmsg TO SCRATCH0
MOVE SCRATCH0 | had_extmsg TO SCRATCH0
CLEAR ACK
CLEAR ACK
MOVE 1, msgin_buf + 1, WHEN MSG_IN
MOVE 1, msgin_buf + 1, WHEN MSG_IN
JUMP ext_msg3a, IF 0x03
JUMP reject_msg3, IF NOT 0x03 ; Only handle SDTR
INT int_bad_extmsg3a
ext_msg3a:
CLEAR ACK
CLEAR ACK
MOVE 1, msgin_buf + 2, WHEN MSG_IN
MOVE 1, msgin_buf + 2, WHEN MSG_IN
JUMP ext_msg3b, IF 0x01 ; Must be SDTR
JUMP reject_msg3, IF NOT 0x01 ; Only handle SDTR
INT int_bad_extmsg3b
ext_msg3b:
CLEAR ACK
CLEAR ACK
MOVE 2, msgin_buf + 3, WHEN MSG_IN
MOVE 2, msgin_buf + 3, WHEN MSG_IN
INT int_msg_sdtr3
INT int_msg_sdtr3
reject_msg3:
MOVE SCRATCH1 | did_reject TO SCRATCH1
SET ATN
CLEAR ACK
JUMP reject_msg3a, WHEN NOT MSG_IN
MOVE 1, msgin_buf + 7, WHEN MSG_IN
JUMP reject_msg3
reject_msg3a:
MOVE 1, msg_reject, WHEN MSG_OUT
JUMP redo_msgin3
disc3:
disc3:
CLEAR ACK
CLEAR ACK
ENTRY wait_disc3
ENTRY wait_disc3
...
@@ -552,3 +569,8 @@ patch_new_dsa:
...
@@ -552,3 +569,8 @@ patch_new_dsa:
selected:
selected:
INT int_selected
INT int_selected
ENTRY test1
test1:
MOVE MEMORY 4, test1_src, test1_dst
INT int_test1
drivers/scsi/sim710_d.h_shipped
View file @
798c67c3
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment