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
Kirill Smelkov
linux
Commits
88544416
Commit
88544416
authored
Jun 02, 2004
by
Tom 'spot' Callaway
Committed by
David S. Miller
Jun 02, 2004
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[SBUS]: Stop using drivers/scsi/{scsi,hosts}.h in drivers.
parent
9c5cdec2
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
106 additions
and
88 deletions
+106
-88
drivers/scsi/esp.c
drivers/scsi/esp.c
+61
-63
drivers/scsi/esp.h
drivers/scsi/esp.h
+14
-3
drivers/scsi/qlogicpti.c
drivers/scsi/qlogicpti.c
+19
-21
drivers/scsi/qlogicpti.h
drivers/scsi/qlogicpti.h
+12
-1
No files found.
drivers/scsi/esp.c
View file @
88544416
...
@@ -26,8 +26,6 @@
...
@@ -26,8 +26,6 @@
#include <linux/spinlock.h>
#include <linux/spinlock.h>
#include <linux/interrupt.h>
#include <linux/interrupt.h>
#include "scsi.h"
#include "hosts.h"
#include "esp.h"
#include "esp.h"
#include <asm/sbus.h>
#include <asm/sbus.h>
...
@@ -366,7 +364,7 @@ static char *phase_string(int phase)
...
@@ -366,7 +364,7 @@ static char *phase_string(int phase)
}
}
#ifdef DEBUG_STATE_MACHINE
#ifdef DEBUG_STATE_MACHINE
static
inline
void
esp_advance_phase
(
Scsi_C
mnd
*
s
,
int
newphase
)
static
inline
void
esp_advance_phase
(
struct
scsi_c
mnd
*
s
,
int
newphase
)
{
{
ESPLOG
((
"<%s>"
,
phase_string
(
newphase
)));
ESPLOG
((
"<%s>"
,
phase_string
(
newphase
)));
s
->
SCp
.
sent_command
=
s
->
SCp
.
phase
;
s
->
SCp
.
sent_command
=
s
->
SCp
.
phase
;
...
@@ -419,48 +417,48 @@ static inline void esp_cmd(struct esp *esp, u8 cmd)
...
@@ -419,48 +417,48 @@ static inline void esp_cmd(struct esp *esp, u8 cmd)
* Note that these are per-ESP queues, not global queues like
* Note that these are per-ESP queues, not global queues like
* the aha152x driver uses.
* the aha152x driver uses.
*/
*/
static
inline
void
append_SC
(
Scsi_Cmnd
**
SC
,
Scsi_C
mnd
*
new_SC
)
static
inline
void
append_SC
(
struct
scsi_cmnd
**
SC
,
struct
scsi_c
mnd
*
new_SC
)
{
{
Scsi_C
mnd
*
end
;
struct
scsi_c
mnd
*
end
;
new_SC
->
host_scribble
=
(
unsigned
char
*
)
NULL
;
new_SC
->
host_scribble
=
(
unsigned
char
*
)
NULL
;
if
(
!*
SC
)
if
(
!*
SC
)
*
SC
=
new_SC
;
*
SC
=
new_SC
;
else
{
else
{
for
(
end
=*
SC
;
end
->
host_scribble
;
end
=
(
Scsi_C
mnd
*
)
end
->
host_scribble
)
for
(
end
=*
SC
;
end
->
host_scribble
;
end
=
(
struct
scsi_c
mnd
*
)
end
->
host_scribble
)
;
;
end
->
host_scribble
=
(
unsigned
char
*
)
new_SC
;
end
->
host_scribble
=
(
unsigned
char
*
)
new_SC
;
}
}
}
}
static
inline
void
prepend_SC
(
Scsi_Cmnd
**
SC
,
Scsi_C
mnd
*
new_SC
)
static
inline
void
prepend_SC
(
struct
scsi_cmnd
**
SC
,
struct
scsi_c
mnd
*
new_SC
)
{
{
new_SC
->
host_scribble
=
(
unsigned
char
*
)
*
SC
;
new_SC
->
host_scribble
=
(
unsigned
char
*
)
*
SC
;
*
SC
=
new_SC
;
*
SC
=
new_SC
;
}
}
static
inline
Scsi_Cmnd
*
remove_first_SC
(
Scsi_C
mnd
**
SC
)
static
inline
struct
scsi_cmnd
*
remove_first_SC
(
struct
scsi_c
mnd
**
SC
)
{
{
Scsi_C
mnd
*
ptr
;
struct
scsi_c
mnd
*
ptr
;
ptr
=
*
SC
;
ptr
=
*
SC
;
if
(
ptr
)
if
(
ptr
)
*
SC
=
(
Scsi_C
mnd
*
)
(
*
SC
)
->
host_scribble
;
*
SC
=
(
struct
scsi_c
mnd
*
)
(
*
SC
)
->
host_scribble
;
return
ptr
;
return
ptr
;
}
}
static
inline
Scsi_Cmnd
*
remove_SC
(
Scsi_C
mnd
**
SC
,
int
target
,
int
lun
)
static
inline
struct
scsi_cmnd
*
remove_SC
(
struct
scsi_c
mnd
**
SC
,
int
target
,
int
lun
)
{
{
Scsi_C
mnd
*
ptr
,
*
prev
;
struct
scsi_c
mnd
*
ptr
,
*
prev
;
for
(
ptr
=
*
SC
,
prev
=
NULL
;
for
(
ptr
=
*
SC
,
prev
=
NULL
;
ptr
&&
((
ptr
->
device
->
id
!=
target
)
||
(
ptr
->
device
->
lun
!=
lun
));
ptr
&&
((
ptr
->
device
->
id
!=
target
)
||
(
ptr
->
device
->
lun
!=
lun
));
prev
=
ptr
,
ptr
=
(
Scsi_C
mnd
*
)
ptr
->
host_scribble
)
prev
=
ptr
,
ptr
=
(
struct
scsi_c
mnd
*
)
ptr
->
host_scribble
)
;
;
if
(
ptr
)
{
if
(
ptr
)
{
if
(
prev
)
if
(
prev
)
prev
->
host_scribble
=
ptr
->
host_scribble
;
prev
->
host_scribble
=
ptr
->
host_scribble
;
else
else
*
SC
=
(
Scsi_C
mnd
*
)
ptr
->
host_scribble
;
*
SC
=
(
struct
scsi_c
mnd
*
)
ptr
->
host_scribble
;
}
}
return
ptr
;
return
ptr
;
}
}
...
@@ -1062,7 +1060,7 @@ static void __init esp_init_swstate(struct esp *esp)
...
@@ -1062,7 +1060,7 @@ static void __init esp_init_swstate(struct esp *esp)
esp
->
prev_hme_dmacsr
=
0xffffffff
;
esp
->
prev_hme_dmacsr
=
0xffffffff
;
}
}
static
int
__init
detect_one_esp
(
Scsi_Host_T
emplate
*
tpnt
,
struct
sbus_dev
*
esp_dev
,
static
int
__init
detect_one_esp
(
struct
scsi_host_t
emplate
*
tpnt
,
struct
sbus_dev
*
esp_dev
,
struct
sbus_dev
*
espdma
,
struct
sbus_bus
*
sbus
,
struct
sbus_dev
*
espdma
,
struct
sbus_bus
*
sbus
,
int
id
,
int
hme
)
int
id
,
int
hme
)
{
{
...
@@ -1137,7 +1135,7 @@ static int __init detect_one_esp(Scsi_Host_Template *tpnt, struct sbus_dev *esp_
...
@@ -1137,7 +1135,7 @@ static int __init detect_one_esp(Scsi_Host_Template *tpnt, struct sbus_dev *esp_
#include <asm/sun4paddr.h>
#include <asm/sun4paddr.h>
static
int
__init
esp_detect
(
Scsi_Host_T
emplate
*
tpnt
)
static
int
__init
esp_detect
(
struct
scsi_host_t
emplate
*
tpnt
)
{
{
static
struct
sbus_dev
esp_dev
;
static
struct
sbus_dev
esp_dev
;
int
esps_in_use
=
0
;
int
esps_in_use
=
0
;
...
@@ -1162,7 +1160,7 @@ static int __init esp_detect(Scsi_Host_Template *tpnt)
...
@@ -1162,7 +1160,7 @@ static int __init esp_detect(Scsi_Host_Template *tpnt)
#else
/* !CONFIG_SUN4 */
#else
/* !CONFIG_SUN4 */
static
int
__init
esp_detect
(
Scsi_Host_T
emplate
*
tpnt
)
static
int
__init
esp_detect
(
struct
scsi_host_t
emplate
*
tpnt
)
{
{
struct
sbus_bus
*
sbus
;
struct
sbus_bus
*
sbus
;
struct
sbus_dev
*
esp_dev
,
*
sbdev_iter
;
struct
sbus_dev
*
esp_dev
,
*
sbdev_iter
;
...
@@ -1428,7 +1426,7 @@ static int esp_proc_info(struct Scsi_Host *host, char *buffer, char **start, off
...
@@ -1428,7 +1426,7 @@ static int esp_proc_info(struct Scsi_Host *host, char *buffer, char **start, off
return
esp_host_info
(
esp
,
buffer
,
offset
,
length
);
return
esp_host_info
(
esp
,
buffer
,
offset
,
length
);
}
}
static
void
esp_get_dmabufs
(
struct
esp
*
esp
,
Scsi_C
mnd
*
sp
)
static
void
esp_get_dmabufs
(
struct
esp
*
esp
,
struct
scsi_c
mnd
*
sp
)
{
{
if
(
sp
->
use_sg
==
0
)
{
if
(
sp
->
use_sg
==
0
)
{
sp
->
SCp
.
this_residual
=
sp
->
request_bufflen
;
sp
->
SCp
.
this_residual
=
sp
->
request_bufflen
;
...
@@ -1453,7 +1451,7 @@ static void esp_get_dmabufs(struct esp *esp, Scsi_Cmnd *sp)
...
@@ -1453,7 +1451,7 @@ static void esp_get_dmabufs(struct esp *esp, Scsi_Cmnd *sp)
}
}
}
}
static
void
esp_release_dmabufs
(
struct
esp
*
esp
,
Scsi_C
mnd
*
sp
)
static
void
esp_release_dmabufs
(
struct
esp
*
esp
,
struct
scsi_c
mnd
*
sp
)
{
{
if
(
sp
->
use_sg
)
{
if
(
sp
->
use_sg
)
{
sbus_unmap_sg
(
esp
->
sdev
,
sp
->
buffer
,
sp
->
use_sg
,
sbus_unmap_sg
(
esp
->
sdev
,
sp
->
buffer
,
sp
->
use_sg
,
...
@@ -1466,7 +1464,7 @@ static void esp_release_dmabufs(struct esp *esp, Scsi_Cmnd *sp)
...
@@ -1466,7 +1464,7 @@ static void esp_release_dmabufs(struct esp *esp, Scsi_Cmnd *sp)
}
}
}
}
static
void
esp_restore_pointers
(
struct
esp
*
esp
,
Scsi_C
mnd
*
sp
)
static
void
esp_restore_pointers
(
struct
esp
*
esp
,
struct
scsi_c
mnd
*
sp
)
{
{
struct
esp_pointers
*
ep
=
&
esp
->
data_pointers
[
sp
->
device
->
id
];
struct
esp_pointers
*
ep
=
&
esp
->
data_pointers
[
sp
->
device
->
id
];
...
@@ -1476,7 +1474,7 @@ static void esp_restore_pointers(struct esp *esp, Scsi_Cmnd *sp)
...
@@ -1476,7 +1474,7 @@ static void esp_restore_pointers(struct esp *esp, Scsi_Cmnd *sp)
sp
->
SCp
.
buffers_residual
=
ep
->
saved_buffers_residual
;
sp
->
SCp
.
buffers_residual
=
ep
->
saved_buffers_residual
;
}
}
static
void
esp_save_pointers
(
struct
esp
*
esp
,
Scsi_C
mnd
*
sp
)
static
void
esp_save_pointers
(
struct
esp
*
esp
,
struct
scsi_c
mnd
*
sp
)
{
{
struct
esp_pointers
*
ep
=
&
esp
->
data_pointers
[
sp
->
device
->
id
];
struct
esp_pointers
*
ep
=
&
esp
->
data_pointers
[
sp
->
device
->
id
];
...
@@ -1506,7 +1504,7 @@ static void esp_save_pointers(struct esp *esp, Scsi_Cmnd *sp)
...
@@ -1506,7 +1504,7 @@ static void esp_save_pointers(struct esp *esp, Scsi_Cmnd *sp)
* case where we could see an interrupt is where we have disconnected
* case where we could see an interrupt is where we have disconnected
* commands active and they are trying to reselect us.
* commands active and they are trying to reselect us.
*/
*/
static
inline
void
esp_check_cmd
(
struct
esp
*
esp
,
Scsi_C
mnd
*
sp
)
static
inline
void
esp_check_cmd
(
struct
esp
*
esp
,
struct
scsi_c
mnd
*
sp
)
{
{
switch
(
sp
->
cmd_len
)
{
switch
(
sp
->
cmd_len
)
{
case
6
:
case
6
:
...
@@ -1557,8 +1555,8 @@ static inline void build_wide_nego_msg(struct esp *esp, int size)
...
@@ -1557,8 +1555,8 @@ static inline void build_wide_nego_msg(struct esp *esp, int size)
static
void
esp_exec_cmd
(
struct
esp
*
esp
)
static
void
esp_exec_cmd
(
struct
esp
*
esp
)
{
{
Scsi_C
mnd
*
SCptr
;
struct
scsi_c
mnd
*
SCptr
;
Scsi_D
evice
*
SDptr
;
struct
scsi_d
evice
*
SDptr
;
struct
esp_device
*
esp_dev
;
struct
esp_device
*
esp_dev
;
volatile
u8
*
cmdp
=
esp
->
esp_command
;
volatile
u8
*
cmdp
=
esp
->
esp_command
;
u8
the_esp_command
;
u8
the_esp_command
;
...
@@ -1834,7 +1832,7 @@ static void esp_exec_cmd(struct esp *esp)
...
@@ -1834,7 +1832,7 @@ static void esp_exec_cmd(struct esp *esp)
}
}
/* Queue a SCSI command delivered from the mid-level Linux SCSI code. */
/* Queue a SCSI command delivered from the mid-level Linux SCSI code. */
static
int
esp_queue
(
Scsi_Cmnd
*
SCpnt
,
void
(
*
done
)(
Scsi_C
mnd
*
))
static
int
esp_queue
(
struct
scsi_cmnd
*
SCpnt
,
void
(
*
done
)(
struct
scsi_c
mnd
*
))
{
{
struct
esp
*
esp
;
struct
esp
*
esp
;
...
@@ -1871,7 +1869,7 @@ static int esp_queue(Scsi_Cmnd *SCpnt, void (*done)(Scsi_Cmnd *))
...
@@ -1871,7 +1869,7 @@ static int esp_queue(Scsi_Cmnd *SCpnt, void (*done)(Scsi_Cmnd *))
}
}
/* Dump driver state. */
/* Dump driver state. */
static
void
esp_dump_cmd
(
Scsi_C
mnd
*
SCptr
)
static
void
esp_dump_cmd
(
struct
scsi_c
mnd
*
SCptr
)
{
{
ESPLOG
((
"[tgt<%02x> lun<%02x> "
ESPLOG
((
"[tgt<%02x> lun<%02x> "
"pphase<%s> cphase<%s>]"
,
"pphase<%s> cphase<%s>]"
,
...
@@ -1882,7 +1880,7 @@ static void esp_dump_cmd(Scsi_Cmnd *SCptr)
...
@@ -1882,7 +1880,7 @@ static void esp_dump_cmd(Scsi_Cmnd *SCptr)
static
void
esp_dump_state
(
struct
esp
*
esp
)
static
void
esp_dump_state
(
struct
esp
*
esp
)
{
{
Scsi_C
mnd
*
SCptr
=
esp
->
current_SC
;
struct
scsi_c
mnd
*
SCptr
=
esp
->
current_SC
;
#ifdef DEBUG_ESP_CMDS
#ifdef DEBUG_ESP_CMDS
int
i
;
int
i
;
#endif
#endif
...
@@ -1921,13 +1919,13 @@ static void esp_dump_state(struct esp *esp)
...
@@ -1921,13 +1919,13 @@ static void esp_dump_state(struct esp *esp)
ESPLOG
((
"esp%d: disconnected "
,
esp
->
esp_id
));
ESPLOG
((
"esp%d: disconnected "
,
esp
->
esp_id
));
while
(
SCptr
)
{
while
(
SCptr
)
{
esp_dump_cmd
(
SCptr
);
esp_dump_cmd
(
SCptr
);
SCptr
=
(
Scsi_C
mnd
*
)
SCptr
->
host_scribble
;
SCptr
=
(
struct
scsi_c
mnd
*
)
SCptr
->
host_scribble
;
}
}
ESPLOG
((
"
\n
"
));
ESPLOG
((
"
\n
"
));
}
}
/* Abort a command. The host_lock is acquired by caller. */
/* Abort a command. The host_lock is acquired by caller. */
static
int
esp_abort
(
Scsi_C
mnd
*
SCptr
)
static
int
esp_abort
(
struct
scsi_c
mnd
*
SCptr
)
{
{
struct
esp
*
esp
=
(
struct
esp
*
)
SCptr
->
device
->
host
->
hostdata
;
struct
esp
*
esp
=
(
struct
esp
*
)
SCptr
->
device
->
host
->
hostdata
;
int
don
;
int
don
;
...
@@ -1957,14 +1955,14 @@ static int esp_abort(Scsi_Cmnd *SCptr)
...
@@ -1957,14 +1955,14 @@ static int esp_abort(Scsi_Cmnd *SCptr)
ESP_INTSOFF
(
esp
->
dregs
);
ESP_INTSOFF
(
esp
->
dregs
);
}
}
if
(
esp
->
issue_SC
)
{
if
(
esp
->
issue_SC
)
{
Scsi_C
mnd
**
prev
,
*
this
;
struct
scsi_c
mnd
**
prev
,
*
this
;
for
(
prev
=
(
&
esp
->
issue_SC
),
this
=
esp
->
issue_SC
;
for
(
prev
=
(
&
esp
->
issue_SC
),
this
=
esp
->
issue_SC
;
this
!=
NULL
;
this
!=
NULL
;
prev
=
(
Scsi_C
mnd
**
)
&
(
this
->
host_scribble
),
prev
=
(
struct
scsi_c
mnd
**
)
&
(
this
->
host_scribble
),
this
=
(
Scsi_C
mnd
*
)
this
->
host_scribble
)
{
this
=
(
struct
scsi_c
mnd
*
)
this
->
host_scribble
)
{
if
(
this
==
SCptr
)
{
if
(
this
==
SCptr
)
{
*
prev
=
(
Scsi_C
mnd
*
)
this
->
host_scribble
;
*
prev
=
(
struct
scsi_c
mnd
*
)
this
->
host_scribble
;
this
->
host_scribble
=
NULL
;
this
->
host_scribble
=
NULL
;
esp_release_dmabufs
(
esp
,
this
);
esp_release_dmabufs
(
esp
,
this
);
...
@@ -2010,7 +2008,7 @@ static int esp_abort(Scsi_Cmnd *SCptr)
...
@@ -2010,7 +2008,7 @@ static int esp_abort(Scsi_Cmnd *SCptr)
*/
*/
static
int
esp_finish_reset
(
struct
esp
*
esp
)
static
int
esp_finish_reset
(
struct
esp
*
esp
)
{
{
Scsi_C
mnd
*
sp
=
esp
->
current_SC
;
struct
scsi_c
mnd
*
sp
=
esp
->
current_SC
;
/* Clean up currently executing command, if any. */
/* Clean up currently executing command, if any. */
if
(
sp
!=
NULL
)
{
if
(
sp
!=
NULL
)
{
...
@@ -2059,7 +2057,7 @@ static int esp_do_resetbus(struct esp *esp)
...
@@ -2059,7 +2057,7 @@ static int esp_do_resetbus(struct esp *esp)
*
*
* The host_lock is acquired by caller.
* The host_lock is acquired by caller.
*/
*/
static
int
esp_reset
(
Scsi_C
mnd
*
SCptr
)
static
int
esp_reset
(
struct
scsi_c
mnd
*
SCptr
)
{
{
struct
esp
*
esp
=
(
struct
esp
*
)
SCptr
->
device
->
host
->
hostdata
;
struct
esp
*
esp
=
(
struct
esp
*
)
SCptr
->
device
->
host
->
hostdata
;
...
@@ -2077,7 +2075,7 @@ static int esp_reset(Scsi_Cmnd *SCptr)
...
@@ -2077,7 +2075,7 @@ static int esp_reset(Scsi_Cmnd *SCptr)
/* Internal ESP done function. */
/* Internal ESP done function. */
static
void
esp_done
(
struct
esp
*
esp
,
int
error
)
static
void
esp_done
(
struct
esp
*
esp
,
int
error
)
{
{
Scsi_C
mnd
*
done_SC
=
esp
->
current_SC
;
struct
scsi_c
mnd
*
done_SC
=
esp
->
current_SC
;
esp
->
current_SC
=
NULL
;
esp
->
current_SC
=
NULL
;
...
@@ -2168,7 +2166,7 @@ static inline void hme_fifo_push(struct esp *esp, u8 *bytes, u8 count)
...
@@ -2168,7 +2166,7 @@ static inline void hme_fifo_push(struct esp *esp, u8 *bytes, u8 count)
/* We try to avoid some interrupts by jumping ahead and see if the ESP
/* We try to avoid some interrupts by jumping ahead and see if the ESP
* has gotten far enough yet. Hence the following.
* has gotten far enough yet. Hence the following.
*/
*/
static
inline
int
skipahead1
(
struct
esp
*
esp
,
Scsi_C
mnd
*
scp
,
static
inline
int
skipahead1
(
struct
esp
*
esp
,
struct
scsi_c
mnd
*
scp
,
int
prev_phase
,
int
new_phase
)
int
prev_phase
,
int
new_phase
)
{
{
if
(
scp
->
SCp
.
sent_command
!=
prev_phase
)
if
(
scp
->
SCp
.
sent_command
!=
prev_phase
)
...
@@ -2202,7 +2200,7 @@ static inline int skipahead1(struct esp *esp, Scsi_Cmnd *scp,
...
@@ -2202,7 +2200,7 @@ static inline int skipahead1(struct esp *esp, Scsi_Cmnd *scp,
return
do_intr_end
;
return
do_intr_end
;
}
}
static
inline
int
skipahead2
(
struct
esp
*
esp
,
Scsi_C
mnd
*
scp
,
static
inline
int
skipahead2
(
struct
esp
*
esp
,
struct
scsi_c
mnd
*
scp
,
int
prev_phase1
,
int
prev_phase2
,
int
new_phase
)
int
prev_phase1
,
int
prev_phase2
,
int
new_phase
)
{
{
if
(
scp
->
SCp
.
sent_command
!=
prev_phase1
&&
if
(
scp
->
SCp
.
sent_command
!=
prev_phase1
&&
...
@@ -2318,7 +2316,7 @@ static inline void dma_flashclear(struct esp *esp)
...
@@ -2318,7 +2316,7 @@ static inline void dma_flashclear(struct esp *esp)
dma_invalidate
(
esp
);
dma_invalidate
(
esp
);
}
}
static
int
dma_can_transfer
(
struct
esp
*
esp
,
Scsi_C
mnd
*
sp
)
static
int
dma_can_transfer
(
struct
esp
*
esp
,
struct
scsi_c
mnd
*
sp
)
{
{
__u32
base
,
end
,
sz
;
__u32
base
,
end
,
sz
;
...
@@ -2379,7 +2377,7 @@ static int dma_can_transfer(struct esp *esp, Scsi_Cmnd *sp)
...
@@ -2379,7 +2377,7 @@ static int dma_can_transfer(struct esp *esp, Scsi_Cmnd *sp)
* tell the ESP to eat the extraneous byte so that we can proceed
* tell the ESP to eat the extraneous byte so that we can proceed
* to the next phase.
* to the next phase.
*/
*/
static
int
esp100_sync_hwbug
(
struct
esp
*
esp
,
Scsi_C
mnd
*
sp
,
int
fifocnt
)
static
int
esp100_sync_hwbug
(
struct
esp
*
esp
,
struct
scsi_c
mnd
*
sp
,
int
fifocnt
)
{
{
/* Do not touch this piece of code. */
/* Do not touch this piece of code. */
if
((
!
(
esp
->
erev
==
esp100
))
||
if
((
!
(
esp
->
erev
==
esp100
))
||
...
@@ -2479,7 +2477,7 @@ static inline int reconnect_lun(struct esp *esp)
...
@@ -2479,7 +2477,7 @@ static inline int reconnect_lun(struct esp *esp)
/* This puts the driver in a state where it can revitalize a command that
/* This puts the driver in a state where it can revitalize a command that
* is being continued due to reselection.
* is being continued due to reselection.
*/
*/
static
inline
void
esp_connect
(
struct
esp
*
esp
,
Scsi_C
mnd
*
sp
)
static
inline
void
esp_connect
(
struct
esp
*
esp
,
struct
scsi_c
mnd
*
sp
)
{
{
struct
esp_device
*
esp_dev
=
sp
->
device
->
hostdata
;
struct
esp_device
*
esp_dev
=
sp
->
device
->
hostdata
;
...
@@ -2502,7 +2500,7 @@ static inline void esp_connect(struct esp *esp, Scsi_Cmnd *sp)
...
@@ -2502,7 +2500,7 @@ static inline void esp_connect(struct esp *esp, Scsi_Cmnd *sp)
/* This will place the current working command back into the issue queue
/* This will place the current working command back into the issue queue
* if we are to receive a reselection amidst a selection attempt.
* if we are to receive a reselection amidst a selection attempt.
*/
*/
static
inline
void
esp_reconnect
(
struct
esp
*
esp
,
Scsi_C
mnd
*
sp
)
static
inline
void
esp_reconnect
(
struct
esp
*
esp
,
struct
scsi_c
mnd
*
sp
)
{
{
if
(
!
esp
->
disconnected_SC
)
if
(
!
esp
->
disconnected_SC
)
ESPLOG
((
"esp%d: Weird, being reselected but disconnected "
ESPLOG
((
"esp%d: Weird, being reselected but disconnected "
...
@@ -2540,7 +2538,7 @@ static inline int esp_bytes_sent(struct esp *esp, int fifo_count)
...
@@ -2540,7 +2538,7 @@ static inline int esp_bytes_sent(struct esp *esp, int fifo_count)
return
rval
-
fifo_count
;
return
rval
-
fifo_count
;
}
}
static
inline
void
advance_sg
(
Scsi_C
mnd
*
sp
)
static
inline
void
advance_sg
(
struct
scsi_c
mnd
*
sp
)
{
{
++
sp
->
SCp
.
buffer
;
++
sp
->
SCp
.
buffer
;
--
sp
->
SCp
.
buffers_residual
;
--
sp
->
SCp
.
buffers_residual
;
...
@@ -2568,7 +2566,7 @@ static inline void advance_sg(Scsi_Cmnd *sp)
...
@@ -2568,7 +2566,7 @@ static inline void advance_sg(Scsi_Cmnd *sp)
*/
*/
static
int
esp_do_data
(
struct
esp
*
esp
)
static
int
esp_do_data
(
struct
esp
*
esp
)
{
{
Scsi_C
mnd
*
SCptr
=
esp
->
current_SC
;
struct
scsi_c
mnd
*
SCptr
=
esp
->
current_SC
;
int
thisphase
,
hmuch
;
int
thisphase
,
hmuch
;
ESPDATA
((
"esp_do_data: "
));
ESPDATA
((
"esp_do_data: "
));
...
@@ -2619,7 +2617,7 @@ static int esp_do_data(struct esp *esp)
...
@@ -2619,7 +2617,7 @@ static int esp_do_data(struct esp *esp)
/* See how successful the data transfer was. */
/* See how successful the data transfer was. */
static
int
esp_do_data_finale
(
struct
esp
*
esp
)
static
int
esp_do_data_finale
(
struct
esp
*
esp
)
{
{
Scsi_C
mnd
*
SCptr
=
esp
->
current_SC
;
struct
scsi_c
mnd
*
SCptr
=
esp
->
current_SC
;
struct
esp_device
*
esp_dev
=
SCptr
->
device
->
hostdata
;
struct
esp_device
*
esp_dev
=
SCptr
->
device
->
hostdata
;
int
bogus_data
=
0
,
bytes_sent
=
0
,
fifocnt
,
ecount
=
0
;
int
bogus_data
=
0
,
bytes_sent
=
0
,
fifocnt
,
ecount
=
0
;
...
@@ -2800,7 +2798,7 @@ static int esp_do_data_finale(struct esp *esp)
...
@@ -2800,7 +2798,7 @@ static int esp_do_data_finale(struct esp *esp)
* a tape, we don't want to go into a loop re-negotiating
* a tape, we don't want to go into a loop re-negotiating
* synchronous capabilities over and over.
* synchronous capabilities over and over.
*/
*/
static
int
esp_should_clear_sync
(
Scsi_C
mnd
*
sp
)
static
int
esp_should_clear_sync
(
struct
scsi_c
mnd
*
sp
)
{
{
u8
cmd1
=
sp
->
cmnd
[
0
];
u8
cmd1
=
sp
->
cmnd
[
0
];
u8
cmd2
=
sp
->
data_cmnd
[
0
];
u8
cmd2
=
sp
->
data_cmnd
[
0
];
...
@@ -2834,7 +2832,7 @@ static int esp_should_clear_sync(Scsi_Cmnd *sp)
...
@@ -2834,7 +2832,7 @@ static int esp_should_clear_sync(Scsi_Cmnd *sp)
*/
*/
static
int
esp_do_freebus
(
struct
esp
*
esp
)
static
int
esp_do_freebus
(
struct
esp
*
esp
)
{
{
Scsi_C
mnd
*
SCptr
=
esp
->
current_SC
;
struct
scsi_c
mnd
*
SCptr
=
esp
->
current_SC
;
struct
esp_device
*
esp_dev
=
SCptr
->
device
->
hostdata
;
struct
esp_device
*
esp_dev
=
SCptr
->
device
->
hostdata
;
int
rval
;
int
rval
;
...
@@ -2905,7 +2903,7 @@ static int esp_do_freebus(struct esp *esp)
...
@@ -2905,7 +2903,7 @@ static int esp_do_freebus(struct esp *esp)
*/
*/
static
int
esp_bad_reconnect
(
struct
esp
*
esp
)
static
int
esp_bad_reconnect
(
struct
esp
*
esp
)
{
{
Scsi_C
mnd
*
sp
;
struct
scsi_c
mnd
*
sp
;
ESPLOG
((
"esp%d: Eieeee, reconnecting unknown command!
\n
"
,
ESPLOG
((
"esp%d: Eieeee, reconnecting unknown command!
\n
"
,
esp
->
esp_id
));
esp
->
esp_id
));
...
@@ -2914,7 +2912,7 @@ static int esp_bad_reconnect(struct esp *esp)
...
@@ -2914,7 +2912,7 @@ static int esp_bad_reconnect(struct esp *esp)
ESPLOG
((
"esp%d: issue_SC["
,
esp
->
esp_id
));
ESPLOG
((
"esp%d: issue_SC["
,
esp
->
esp_id
));
while
(
sp
)
{
while
(
sp
)
{
ESPLOG
((
"<%02x,%02x>"
,
sp
->
device
->
id
,
sp
->
device
->
lun
));
ESPLOG
((
"<%02x,%02x>"
,
sp
->
device
->
id
,
sp
->
device
->
lun
));
sp
=
(
Scsi_C
mnd
*
)
sp
->
host_scribble
;
sp
=
(
struct
scsi_c
mnd
*
)
sp
->
host_scribble
;
}
}
ESPLOG
((
"]
\n
"
));
ESPLOG
((
"]
\n
"
));
sp
=
esp
->
current_SC
;
sp
=
esp
->
current_SC
;
...
@@ -2928,7 +2926,7 @@ static int esp_bad_reconnect(struct esp *esp)
...
@@ -2928,7 +2926,7 @@ static int esp_bad_reconnect(struct esp *esp)
ESPLOG
((
"esp%d: disconnected_SC["
,
esp
->
esp_id
));
ESPLOG
((
"esp%d: disconnected_SC["
,
esp
->
esp_id
));
while
(
sp
)
{
while
(
sp
)
{
ESPLOG
((
"<%02x,%02x>"
,
sp
->
device
->
id
,
sp
->
device
->
lun
));
ESPLOG
((
"<%02x,%02x>"
,
sp
->
device
->
id
,
sp
->
device
->
lun
));
sp
=
(
Scsi_C
mnd
*
)
sp
->
host_scribble
;
sp
=
(
struct
scsi_c
mnd
*
)
sp
->
host_scribble
;
}
}
ESPLOG
((
"]
\n
"
));
ESPLOG
((
"]
\n
"
));
return
do_reset_bus
;
return
do_reset_bus
;
...
@@ -2938,7 +2936,7 @@ static int esp_bad_reconnect(struct esp *esp)
...
@@ -2938,7 +2936,7 @@ static int esp_bad_reconnect(struct esp *esp)
static
int
esp_do_reconnect
(
struct
esp
*
esp
)
static
int
esp_do_reconnect
(
struct
esp
*
esp
)
{
{
int
lun
,
target
;
int
lun
,
target
;
Scsi_C
mnd
*
SCptr
;
struct
scsi_c
mnd
*
SCptr
;
/* Check for all bogus conditions first. */
/* Check for all bogus conditions first. */
target
=
reconnect_target
(
esp
);
target
=
reconnect_target
(
esp
);
...
@@ -2988,7 +2986,7 @@ static int esp_do_reconnect(struct esp *esp)
...
@@ -2988,7 +2986,7 @@ static int esp_do_reconnect(struct esp *esp)
*/
*/
static
int
esp_do_status
(
struct
esp
*
esp
)
static
int
esp_do_status
(
struct
esp
*
esp
)
{
{
Scsi_C
mnd
*
SCptr
=
esp
->
current_SC
;
struct
scsi_c
mnd
*
SCptr
=
esp
->
current_SC
;
int
intr
,
rval
;
int
intr
,
rval
;
rval
=
skipahead1
(
esp
,
SCptr
,
in_the_dark
,
in_status
);
rval
=
skipahead1
(
esp
,
SCptr
,
in_the_dark
,
in_status
);
...
@@ -3133,7 +3131,7 @@ static int esp_enter_status(struct esp *esp)
...
@@ -3133,7 +3131,7 @@ static int esp_enter_status(struct esp *esp)
static
int
esp_disconnect_amidst_phases
(
struct
esp
*
esp
)
static
int
esp_disconnect_amidst_phases
(
struct
esp
*
esp
)
{
{
Scsi_C
mnd
*
sp
=
esp
->
current_SC
;
struct
scsi_c
mnd
*
sp
=
esp
->
current_SC
;
struct
esp_device
*
esp_dev
=
sp
->
device
->
hostdata
;
struct
esp_device
*
esp_dev
=
sp
->
device
->
hostdata
;
/* This means real problems if we see this
/* This means real problems if we see this
...
@@ -3226,7 +3224,7 @@ static int esp_do_phase_determine(struct esp *esp)
...
@@ -3226,7 +3224,7 @@ static int esp_do_phase_determine(struct esp *esp)
/* First interrupt after exec'ing a cmd comes here. */
/* First interrupt after exec'ing a cmd comes here. */
static
int
esp_select_complete
(
struct
esp
*
esp
)
static
int
esp_select_complete
(
struct
esp
*
esp
)
{
{
Scsi_C
mnd
*
SCptr
=
esp
->
current_SC
;
struct
scsi_c
mnd
*
SCptr
=
esp
->
current_SC
;
struct
esp_device
*
esp_dev
=
SCptr
->
device
->
hostdata
;
struct
esp_device
*
esp_dev
=
SCptr
->
device
->
hostdata
;
int
cmd_bytes_sent
,
fcnt
;
int
cmd_bytes_sent
,
fcnt
;
...
@@ -3582,7 +3580,7 @@ static int check_singlebyte_msg(struct esp *esp)
...
@@ -3582,7 +3580,7 @@ static int check_singlebyte_msg(struct esp *esp)
* this because so many initiators cannot cope with this occurring.
* this because so many initiators cannot cope with this occurring.
*/
*/
static
int
target_with_ants_in_pants
(
struct
esp
*
esp
,
static
int
target_with_ants_in_pants
(
struct
esp
*
esp
,
Scsi_C
mnd
*
SCptr
,
struct
scsi_c
mnd
*
SCptr
,
struct
esp_device
*
esp_dev
)
struct
esp_device
*
esp_dev
)
{
{
if
(
esp_dev
->
sync
||
SCptr
->
device
->
borken
)
{
if
(
esp_dev
->
sync
||
SCptr
->
device
->
borken
)
{
...
@@ -3641,7 +3639,7 @@ static void sync_report(struct esp *esp)
...
@@ -3641,7 +3639,7 @@ static void sync_report(struct esp *esp)
static
int
check_multibyte_msg
(
struct
esp
*
esp
)
static
int
check_multibyte_msg
(
struct
esp
*
esp
)
{
{
Scsi_C
mnd
*
SCptr
=
esp
->
current_SC
;
struct
scsi_c
mnd
*
SCptr
=
esp
->
current_SC
;
struct
esp_device
*
esp_dev
=
SCptr
->
device
->
hostdata
;
struct
esp_device
*
esp_dev
=
SCptr
->
device
->
hostdata
;
u8
regval
=
0
;
u8
regval
=
0
;
int
message_out
=
0
;
int
message_out
=
0
;
...
@@ -3822,7 +3820,7 @@ static int check_multibyte_msg(struct esp *esp)
...
@@ -3822,7 +3820,7 @@ static int check_multibyte_msg(struct esp *esp)
static
int
esp_do_msgindone
(
struct
esp
*
esp
)
static
int
esp_do_msgindone
(
struct
esp
*
esp
)
{
{
Scsi_C
mnd
*
SCptr
=
esp
->
current_SC
;
struct
scsi_c
mnd
*
SCptr
=
esp
->
current_SC
;
int
message_out
=
0
,
it
=
0
,
rval
;
int
message_out
=
0
,
it
=
0
,
rval
;
rval
=
skipahead1
(
esp
,
SCptr
,
in_msgin
,
in_msgindone
);
rval
=
skipahead1
(
esp
,
SCptr
,
in_msgin
,
in_msgindone
);
...
@@ -3904,7 +3902,7 @@ static int esp_do_msgindone(struct esp *esp)
...
@@ -3904,7 +3902,7 @@ static int esp_do_msgindone(struct esp *esp)
static
int
esp_do_cmdbegin
(
struct
esp
*
esp
)
static
int
esp_do_cmdbegin
(
struct
esp
*
esp
)
{
{
Scsi_C
mnd
*
SCptr
=
esp
->
current_SC
;
struct
scsi_c
mnd
*
SCptr
=
esp
->
current_SC
;
esp_advance_phase
(
SCptr
,
in_cmdend
);
esp_advance_phase
(
SCptr
,
in_cmdend
);
if
(
esp
->
erev
==
fashme
)
{
if
(
esp
->
erev
==
fashme
)
{
...
@@ -4125,7 +4123,7 @@ static espfunc_t bus_vector[] = {
...
@@ -4125,7 +4123,7 @@ static espfunc_t bus_vector[] = {
/* This is the second tier in our dual-level SCSI state machine. */
/* This is the second tier in our dual-level SCSI state machine. */
static
int
esp_work_bus
(
struct
esp
*
esp
)
static
int
esp_work_bus
(
struct
esp
*
esp
)
{
{
Scsi_C
mnd
*
SCptr
=
esp
->
current_SC
;
struct
scsi_c
mnd
*
SCptr
=
esp
->
current_SC
;
unsigned
int
phase
;
unsigned
int
phase
;
ESPBUS
((
"esp_work_bus: "
));
ESPBUS
((
"esp_work_bus: "
));
...
@@ -4153,7 +4151,7 @@ static espfunc_t isvc_vector[] = {
...
@@ -4153,7 +4151,7 @@ static espfunc_t isvc_vector[] = {
/* Main interrupt handler for an esp adapter. */
/* Main interrupt handler for an esp adapter. */
static
void
esp_handle
(
struct
esp
*
esp
)
static
void
esp_handle
(
struct
esp
*
esp
)
{
{
Scsi_C
mnd
*
SCptr
;
struct
scsi_c
mnd
*
SCptr
;
int
what_next
=
do_intr_end
;
int
what_next
=
do_intr_end
;
SCptr
=
esp
->
current_SC
;
SCptr
=
esp
->
current_SC
;
...
@@ -4353,7 +4351,7 @@ static irqreturn_t esp_intr(int irq, void *dev_id, struct pt_regs *pregs)
...
@@ -4353,7 +4351,7 @@ static irqreturn_t esp_intr(int irq, void *dev_id, struct pt_regs *pregs)
return
IRQ_HANDLED
;
return
IRQ_HANDLED
;
}
}
static
int
esp_slave_alloc
(
Scsi_D
evice
*
SDptr
)
static
int
esp_slave_alloc
(
struct
scsi_d
evice
*
SDptr
)
{
{
struct
esp_device
*
esp_dev
=
struct
esp_device
*
esp_dev
=
kmalloc
(
sizeof
(
struct
esp_device
),
GFP_ATOMIC
);
kmalloc
(
sizeof
(
struct
esp_device
),
GFP_ATOMIC
);
...
@@ -4365,7 +4363,7 @@ static int esp_slave_alloc(Scsi_Device *SDptr)
...
@@ -4365,7 +4363,7 @@ static int esp_slave_alloc(Scsi_Device *SDptr)
return
0
;
return
0
;
}
}
static
void
esp_slave_destroy
(
Scsi_D
evice
*
SDptr
)
static
void
esp_slave_destroy
(
struct
scsi_d
evice
*
SDptr
)
{
{
struct
esp
*
esp
=
(
struct
esp
*
)
SDptr
->
host
->
hostdata
;
struct
esp
*
esp
=
(
struct
esp
*
)
SDptr
->
host
->
hostdata
;
...
@@ -4374,7 +4372,7 @@ static void esp_slave_destroy(Scsi_Device *SDptr)
...
@@ -4374,7 +4372,7 @@ static void esp_slave_destroy(Scsi_Device *SDptr)
SDptr
->
hostdata
=
NULL
;
SDptr
->
hostdata
=
NULL
;
}
}
static
Scsi_Host_T
emplate
driver_template
=
{
static
struct
scsi_host_t
emplate
driver_template
=
{
.
proc_name
=
"esp"
,
.
proc_name
=
"esp"
,
.
proc_info
=
esp_proc_info
,
.
proc_info
=
esp_proc_info
,
.
name
=
"Sun ESP 100/100a/200"
,
.
name
=
"Sun ESP 100/100a/200"
,
...
...
drivers/scsi/esp.h
View file @
88544416
...
@@ -10,9 +10,20 @@
...
@@ -10,9 +10,20 @@
#include <linux/config.h>
#include <linux/config.h>
/* #include "scsi.h" */
#include <scsi/scsi_cmnd.h>
#include <scsi/scsi_device.h>
#include <scsi/scsi_eh.h>
#include <scsi/scsi_request.h>
#include <scsi/scsi_tcq.h>
#include <scsi/scsi.h>
#include <scsi/scsi_host.h>
/* For dvma controller register definitions. */
/* For dvma controller register definitions. */
#include <asm/dma.h>
#include <asm/dma.h>
#define scsi_to_sbus_dma_dir(scsi_dir) ((int)(scsi_dir))
/* The ESP SCSI controllers have their register sets in three
/* The ESP SCSI controllers have their register sets in three
* "classes":
* "classes":
*
*
...
@@ -181,9 +192,9 @@ struct esp {
...
@@ -181,9 +192,9 @@ struct esp {
int
bursts
;
/* Burst sizes our DVMA supports */
int
bursts
;
/* Burst sizes our DVMA supports */
/* Our command queues, only one cmd lives in the current_SC queue. */
/* Our command queues, only one cmd lives in the current_SC queue. */
Scsi_Cmnd
*
issue_SC
;
/* Commands to be issued */
struct
scsi_cmnd
*
issue_SC
;
/* Commands to be issued */
Scsi_Cmnd
*
current_SC
;
/* Who is currently working the bus */
struct
scsi_cmnd
*
current_SC
;
/* Who is currently working the bus */
Scsi_Cmnd
*
disconnected_SC
;
/* Commands disconnected from the bus */
struct
scsi_cmnd
*
disconnected_SC
;
/* Commands disconnected from the bus */
/* Message goo */
/* Message goo */
u8
cur_msgout
[
16
];
u8
cur_msgout
[
16
];
...
...
drivers/scsi/qlogicpti.c
View file @
88544416
...
@@ -26,8 +26,6 @@
...
@@ -26,8 +26,6 @@
#include <asm/byteorder.h>
#include <asm/byteorder.h>
#include "scsi.h"
#include "hosts.h"
#include "qlogicpti.h"
#include "qlogicpti.h"
#include <asm/sbus.h>
#include <asm/sbus.h>
...
@@ -809,7 +807,7 @@ static int __init qpti_map_queues(struct qlogicpti *qpti)
...
@@ -809,7 +807,7 @@ static int __init qpti_map_queues(struct qlogicpti *qpti)
}
}
/* Detect all PTI Qlogic ISP's in the machine. */
/* Detect all PTI Qlogic ISP's in the machine. */
static
int
__init
qlogicpti_detect
(
Scsi_Host_T
emplate
*
tpnt
)
static
int
__init
qlogicpti_detect
(
struct
scsi_host_t
emplate
*
tpnt
)
{
{
struct
qlogicpti
*
qpti
;
struct
qlogicpti
*
qpti
;
struct
Scsi_Host
*
qpti_host
;
struct
Scsi_Host
*
qpti_host
;
...
@@ -878,7 +876,7 @@ static int __init qlogicpti_detect(Scsi_Host_Template *tpnt)
...
@@ -878,7 +876,7 @@ static int __init qlogicpti_detect(Scsi_Host_Template *tpnt)
qpti_get_bursts
(
qpti
);
qpti_get_bursts
(
qpti
);
qpti_get_clock
(
qpti
);
qpti_get_clock
(
qpti
);
/* Clear out
Scsi_C
mnd array. */
/* Clear out
scsi_c
mnd array. */
memset
(
qpti
->
cmd_slots
,
0
,
sizeof
(
qpti
->
cmd_slots
));
memset
(
qpti
->
cmd_slots
,
0
,
sizeof
(
qpti
->
cmd_slots
));
if
(
qpti_map_queues
(
qpti
)
<
0
)
if
(
qpti_map_queues
(
qpti
)
<
0
)
...
@@ -997,7 +995,7 @@ static inline void marker_frob(struct Command_Entry *cmd)
...
@@ -997,7 +995,7 @@ static inline void marker_frob(struct Command_Entry *cmd)
marker
->
rsvd
=
0
;
marker
->
rsvd
=
0
;
}
}
static
inline
void
cmd_frob
(
struct
Command_Entry
*
cmd
,
Scsi_C
mnd
*
Cmnd
,
static
inline
void
cmd_frob
(
struct
Command_Entry
*
cmd
,
struct
scsi_c
mnd
*
Cmnd
,
struct
qlogicpti
*
qpti
)
struct
qlogicpti
*
qpti
)
{
{
memset
(
cmd
,
0
,
sizeof
(
struct
Command_Entry
));
memset
(
cmd
,
0
,
sizeof
(
struct
Command_Entry
));
...
@@ -1027,7 +1025,7 @@ static inline void cmd_frob(struct Command_Entry *cmd, Scsi_Cmnd *Cmnd,
...
@@ -1027,7 +1025,7 @@ static inline void cmd_frob(struct Command_Entry *cmd, Scsi_Cmnd *Cmnd,
}
}
/* Do it to it baby. */
/* Do it to it baby. */
static
inline
int
load_cmd
(
Scsi_C
mnd
*
Cmnd
,
struct
Command_Entry
*
cmd
,
static
inline
int
load_cmd
(
struct
scsi_c
mnd
*
Cmnd
,
struct
Command_Entry
*
cmd
,
struct
qlogicpti
*
qpti
,
u_int
in_ptr
,
u_int
out_ptr
)
struct
qlogicpti
*
qpti
,
u_int
in_ptr
,
u_int
out_ptr
)
{
{
struct
dataseg
*
ds
;
struct
dataseg
*
ds
;
...
@@ -1115,11 +1113,11 @@ static inline void update_can_queue(struct Scsi_Host *host, u_int in_ptr, u_int
...
@@ -1115,11 +1113,11 @@ static inline void update_can_queue(struct Scsi_Host *host, u_int in_ptr, u_int
/*
/*
* Until we scan the entire bus with inquiries, go throught this fella...
* Until we scan the entire bus with inquiries, go throught this fella...
*/
*/
static
void
ourdone
(
Scsi_C
mnd
*
Cmnd
)
static
void
ourdone
(
struct
scsi_c
mnd
*
Cmnd
)
{
{
struct
qlogicpti
*
qpti
=
(
struct
qlogicpti
*
)
Cmnd
->
device
->
host
->
hostdata
;
struct
qlogicpti
*
qpti
=
(
struct
qlogicpti
*
)
Cmnd
->
device
->
host
->
hostdata
;
int
tgt
=
Cmnd
->
device
->
id
;
int
tgt
=
Cmnd
->
device
->
id
;
void
(
*
done
)
(
Scsi_C
mnd
*
);
void
(
*
done
)
(
struct
scsi_c
mnd
*
);
/* This grot added by DaveM, blame him for ugliness.
/* This grot added by DaveM, blame him for ugliness.
* The issue is that in the 2.3.x driver we use the
* The issue is that in the 2.3.x driver we use the
...
@@ -1127,7 +1125,7 @@ static void ourdone(Scsi_Cmnd *Cmnd)
...
@@ -1127,7 +1125,7 @@ static void ourdone(Scsi_Cmnd *Cmnd)
* completion linked list at interrupt service time,
* completion linked list at interrupt service time,
* so we have to store the done function pointer elsewhere.
* so we have to store the done function pointer elsewhere.
*/
*/
done
=
(
void
(
*
)(
Scsi_C
mnd
*
))
done
=
(
void
(
*
)(
struct
scsi_c
mnd
*
))
(((
unsigned
long
)
Cmnd
->
SCp
.
Message
)
(((
unsigned
long
)
Cmnd
->
SCp
.
Message
)
#ifdef __sparc_v9__
#ifdef __sparc_v9__
|
((
unsigned
long
)
Cmnd
->
SCp
.
Status
<<
32UL
)
|
((
unsigned
long
)
Cmnd
->
SCp
.
Status
<<
32UL
)
...
@@ -1164,10 +1162,10 @@ static void ourdone(Scsi_Cmnd *Cmnd)
...
@@ -1164,10 +1162,10 @@ static void ourdone(Scsi_Cmnd *Cmnd)
done
(
Cmnd
);
done
(
Cmnd
);
}
}
static
int
qlogicpti_queuecommand
(
Scsi_Cmnd
*
Cmnd
,
void
(
*
done
)(
Scsi_C
mnd
*
));
static
int
qlogicpti_queuecommand
(
struct
scsi_cmnd
*
Cmnd
,
void
(
*
done
)(
struct
scsi_c
mnd
*
));
static
int
qlogicpti_queuecommand_slow
(
Scsi_C
mnd
*
Cmnd
,
static
int
qlogicpti_queuecommand_slow
(
struct
scsi_c
mnd
*
Cmnd
,
void
(
*
done
)(
Scsi_C
mnd
*
))
void
(
*
done
)(
struct
scsi_c
mnd
*
))
{
{
struct
qlogicpti
*
qpti
=
(
struct
qlogicpti
*
)
Cmnd
->
device
->
host
->
hostdata
;
struct
qlogicpti
*
qpti
=
(
struct
qlogicpti
*
)
Cmnd
->
device
->
host
->
hostdata
;
...
@@ -1238,7 +1236,7 @@ static int qlogicpti_queuecommand_slow(Scsi_Cmnd *Cmnd,
...
@@ -1238,7 +1236,7 @@ static int qlogicpti_queuecommand_slow(Scsi_Cmnd *Cmnd,
*
*
* "This code must fly." -davem
* "This code must fly." -davem
*/
*/
static
int
qlogicpti_queuecommand
(
Scsi_Cmnd
*
Cmnd
,
void
(
*
done
)(
Scsi_C
mnd
*
))
static
int
qlogicpti_queuecommand
(
struct
scsi_cmnd
*
Cmnd
,
void
(
*
done
)(
struct
scsi_c
mnd
*
))
{
{
struct
Scsi_Host
*
host
=
Cmnd
->
device
->
host
;
struct
Scsi_Host
*
host
=
Cmnd
->
device
->
host
;
struct
qlogicpti
*
qpti
=
(
struct
qlogicpti
*
)
host
->
hostdata
;
struct
qlogicpti
*
qpti
=
(
struct
qlogicpti
*
)
host
->
hostdata
;
...
@@ -1351,9 +1349,9 @@ static int qlogicpti_return_status(struct Status_Entry *sts, int id)
...
@@ -1351,9 +1349,9 @@ static int qlogicpti_return_status(struct Status_Entry *sts, int id)
return
(
sts
->
scsi_status
&
STATUS_MASK
)
|
(
host_status
<<
16
);
return
(
sts
->
scsi_status
&
STATUS_MASK
)
|
(
host_status
<<
16
);
}
}
static
Scsi_C
mnd
*
qlogicpti_intr_handler
(
struct
qlogicpti
*
qpti
)
static
struct
scsi_c
mnd
*
qlogicpti_intr_handler
(
struct
qlogicpti
*
qpti
)
{
{
Scsi_C
mnd
*
Cmnd
,
*
done_queue
=
NULL
;
struct
scsi_c
mnd
*
Cmnd
,
*
done_queue
=
NULL
;
struct
Status_Entry
*
sts
;
struct
Status_Entry
*
sts
;
u_int
in_ptr
,
out_ptr
;
u_int
in_ptr
,
out_ptr
;
...
@@ -1433,16 +1431,16 @@ static irqreturn_t qpti_intr(int irq, void *dev_id, struct pt_regs *regs)
...
@@ -1433,16 +1431,16 @@ static irqreturn_t qpti_intr(int irq, void *dev_id, struct pt_regs *regs)
{
{
struct
qlogicpti
*
qpti
=
dev_id
;
struct
qlogicpti
*
qpti
=
dev_id
;
unsigned
long
flags
;
unsigned
long
flags
;
Scsi_C
mnd
*
dq
;
struct
scsi_c
mnd
*
dq
;
spin_lock_irqsave
(
qpti
->
qhost
->
host_lock
,
flags
);
spin_lock_irqsave
(
qpti
->
qhost
->
host_lock
,
flags
);
dq
=
qlogicpti_intr_handler
(
qpti
);
dq
=
qlogicpti_intr_handler
(
qpti
);
if
(
dq
!=
NULL
)
{
if
(
dq
!=
NULL
)
{
do
{
do
{
Scsi_C
mnd
*
next
;
struct
scsi_c
mnd
*
next
;
next
=
(
Scsi_C
mnd
*
)
dq
->
host_scribble
;
next
=
(
struct
scsi_c
mnd
*
)
dq
->
host_scribble
;
dq
->
scsi_done
(
dq
);
dq
->
scsi_done
(
dq
);
dq
=
next
;
dq
=
next
;
}
while
(
dq
!=
NULL
);
}
while
(
dq
!=
NULL
);
...
@@ -1452,7 +1450,7 @@ static irqreturn_t qpti_intr(int irq, void *dev_id, struct pt_regs *regs)
...
@@ -1452,7 +1450,7 @@ static irqreturn_t qpti_intr(int irq, void *dev_id, struct pt_regs *regs)
return
IRQ_HANDLED
;
return
IRQ_HANDLED
;
}
}
static
int
qlogicpti_abort
(
Scsi_C
mnd
*
Cmnd
)
static
int
qlogicpti_abort
(
struct
scsi_c
mnd
*
Cmnd
)
{
{
u_short
param
[
6
];
u_short
param
[
6
];
struct
Scsi_Host
*
host
=
Cmnd
->
device
->
host
;
struct
Scsi_Host
*
host
=
Cmnd
->
device
->
host
;
...
@@ -1489,7 +1487,7 @@ static int qlogicpti_abort(Scsi_Cmnd *Cmnd)
...
@@ -1489,7 +1487,7 @@ static int qlogicpti_abort(Scsi_Cmnd *Cmnd)
return
return_status
;
return
return_status
;
}
}
static
int
qlogicpti_reset
(
Scsi_C
mnd
*
Cmnd
)
static
int
qlogicpti_reset
(
struct
scsi_c
mnd
*
Cmnd
)
{
{
u_short
param
[
6
];
u_short
param
[
6
];
struct
Scsi_Host
*
host
=
Cmnd
->
device
->
host
;
struct
Scsi_Host
*
host
=
Cmnd
->
device
->
host
;
...
@@ -1513,7 +1511,7 @@ static int qlogicpti_reset(Scsi_Cmnd *Cmnd)
...
@@ -1513,7 +1511,7 @@ static int qlogicpti_reset(Scsi_Cmnd *Cmnd)
return
return_status
;
return
return_status
;
}
}
static
Scsi_Host_T
emplate
driver_template
=
{
static
struct
scsi_host_t
emplate
driver_template
=
{
.
detect
=
qlogicpti_detect
,
.
detect
=
qlogicpti_detect
,
.
release
=
qlogicpti_release
,
.
release
=
qlogicpti_release
,
.
info
=
qlogicpti_info
,
.
info
=
qlogicpti_info
,
...
...
drivers/scsi/qlogicpti.h
View file @
88544416
...
@@ -8,6 +8,17 @@
...
@@ -8,6 +8,17 @@
#include <linux/config.h>
#include <linux/config.h>
/* #include "scsi.h" */
#include <scsi/scsi_cmnd.h>
#include <scsi/scsi_device.h>
#include <scsi/scsi_eh.h>
#include <scsi/scsi_request.h>
#include <scsi/scsi_tcq.h>
#include <scsi/scsi.h>
#include <scsi/scsi_host.h>
#define scsi_to_sbus_dma_dir(scsi_dir) ((int)(scsi_dir))
/* Qlogic/SBUS controller registers. */
/* Qlogic/SBUS controller registers. */
#define SBUS_CFG1 0x006UL
#define SBUS_CFG1 0x006UL
#define SBUS_CTRL 0x008UL
#define SBUS_CTRL 0x008UL
...
@@ -352,7 +363,7 @@ struct qlogicpti {
...
@@ -352,7 +363,7 @@ struct qlogicpti {
* Ex000 sparc64 machines with >4GB of ram we just keep track of the
* Ex000 sparc64 machines with >4GB of ram we just keep track of the
* scsi command pointers here. This is essentially what Matt Jacob does. -DaveM
* scsi command pointers here. This is essentially what Matt Jacob does. -DaveM
*/
*/
Scsi_Cmnd
*
cmd_slots
[
QLOGICPTI_REQ_QUEUE_LEN
+
1
];
struct
scsi_cmnd
*
cmd_slots
[
QLOGICPTI_REQ_QUEUE_LEN
+
1
];
/* The rest of the elements are unimportant for performance. */
/* The rest of the elements are unimportant for performance. */
struct
qlogicpti
*
next
;
struct
qlogicpti
*
next
;
...
...
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