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
00492e8c
Commit
00492e8c
authored
Feb 03, 2003
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://kernel.bkbits.net/davem/sparc-2.5
into home.transmeta.com:/home/torvalds/v2.5/linux
parents
ba5ce248
45c20ae5
Changes
9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
114 additions
and
87 deletions
+114
-87
arch/sparc/kernel/entry.S
arch/sparc/kernel/entry.S
+10
-0
arch/sparc/kernel/sparc_ksyms.c
arch/sparc/kernel/sparc_ksyms.c
+1
-0
drivers/fc4/fc.c
drivers/fc4/fc.c
+12
-14
drivers/scsi/esp.c
drivers/scsi/esp.c
+46
-46
drivers/scsi/fcal.c
drivers/scsi/fcal.c
+4
-3
drivers/scsi/pluto.c
drivers/scsi/pluto.c
+9
-7
drivers/scsi/qlogicpti.c
drivers/scsi/qlogicpti.c
+17
-17
include/asm-sparc/delay.h
include/asm-sparc/delay.h
+1
-0
include/asm-sparc64/delay.h
include/asm-sparc64/delay.h
+14
-0
No files found.
arch/sparc/kernel/entry.S
View file @
00492e8c
...
@@ -1808,6 +1808,15 @@ C_LABEL(fpload):
...
@@ -1808,6 +1808,15 @@ C_LABEL(fpload):
retl
retl
nop
nop
.
globl
C_LABEL
(
ndelay
)
C_LABEL
(
ndelay
):
save
%
sp
,
-
REGWIN_SZ
,
%
sp
mov
%
i0
,
%
o0
call
.
umul
mov
5
,
%
o1
ba
delay_continue
nop
.
globl
C_LABEL
(
udelay
)
.
globl
C_LABEL
(
udelay
)
C_LABEL
(
udelay
):
C_LABEL
(
udelay
):
save
%
sp
,
-
REGWIN_SZ
,
%
sp
save
%
sp
,
-
REGWIN_SZ
,
%
sp
...
@@ -1815,6 +1824,7 @@ C_LABEL(udelay):
...
@@ -1815,6 +1824,7 @@ C_LABEL(udelay):
sethi
%
hi
(
0x10c6
),
%
o1
sethi
%
hi
(
0x10c6
),
%
o1
call
.
umul
call
.
umul
or
%
o1
,
%
lo
(
0x10c6
),
%
o1
or
%
o1
,
%
lo
(
0x10c6
),
%
o1
delay_continue
:
#ifndef CONFIG_SMP
#ifndef CONFIG_SMP
sethi
%
hi
(
C_LABEL
(
loops_per_jiffy
)),
%
o3
sethi
%
hi
(
C_LABEL
(
loops_per_jiffy
)),
%
o3
call
.
umul
call
.
umul
...
...
arch/sparc/kernel/sparc_ksyms.c
View file @
00492e8c
...
@@ -151,6 +151,7 @@ EXPORT_SYMBOL(__cpu_logical_map);
...
@@ -151,6 +151,7 @@ EXPORT_SYMBOL(__cpu_logical_map);
#endif
#endif
EXPORT_SYMBOL
(
udelay
);
EXPORT_SYMBOL
(
udelay
);
EXPORT_SYMBOL
(
ndelay
);
EXPORT_SYMBOL
(
mostek_lock
);
EXPORT_SYMBOL
(
mostek_lock
);
EXPORT_SYMBOL
(
mstk48t02_regs
);
EXPORT_SYMBOL
(
mstk48t02_regs
);
#if CONFIG_SUN_AUXIO
#if CONFIG_SUN_AUXIO
...
...
drivers/fc4/fc.c
View file @
00492e8c
...
@@ -74,7 +74,7 @@
...
@@ -74,7 +74,7 @@
#endif
#endif
#define FCP_CMND(SCpnt) ((fcp_cmnd *)&(SCpnt->SCp))
#define FCP_CMND(SCpnt) ((fcp_cmnd *)&(SCpnt->SCp))
#define FC_SCMND(SCpnt) ((fc_channel *)(SCpnt->host->hostdata[0]))
#define FC_SCMND(SCpnt) ((fc_channel *)(SCpnt->
device->
host->hostdata[0]))
#define SC_FCMND(fcmnd) ((Scsi_Cmnd *)((long)fcmnd - (long)&(((Scsi_Cmnd *)0)->SCp)))
#define SC_FCMND(fcmnd) ((Scsi_Cmnd *)((long)fcmnd - (long)&(((Scsi_Cmnd *)0)->SCp)))
static
int
fcp_scsi_queue_it
(
fc_channel
*
,
Scsi_Cmnd
*
,
fcp_cmnd
*
,
int
);
static
int
fcp_scsi_queue_it
(
fc_channel
*
,
Scsi_Cmnd
*
,
fcp_cmnd
*
,
int
);
...
@@ -449,7 +449,7 @@ static inline void fcp_scsi_receive(fc_channel *fc, int token, int status, fc_hd
...
@@ -449,7 +449,7 @@ static inline void fcp_scsi_receive(fc_channel *fc, int token, int status, fc_hd
}
}
if
(
status_byte
(
rsp_status
)
==
QUEUE_FULL
)
{
if
(
status_byte
(
rsp_status
)
==
QUEUE_FULL
)
{
printk
(
"%s: (%d,%d) Received rsp_status 0x%x
\n
"
,
fc
->
name
,
SCpnt
->
channel
,
SCpnt
->
target
,
rsp_status
);
printk
(
"%s: (%d,%d) Received rsp_status 0x%x
\n
"
,
fc
->
name
,
SCpnt
->
device
->
channel
,
SCpnt
->
device
->
id
,
rsp_status
);
}
}
SCpnt
->
result
=
(
host_status
<<
16
)
|
(
rsp_status
&
0xff
);
SCpnt
->
result
=
(
host_status
<<
16
)
|
(
rsp_status
&
0xff
);
...
@@ -771,10 +771,10 @@ static void fcp_scsi_done (Scsi_Cmnd *SCpnt)
...
@@ -771,10 +771,10 @@ static void fcp_scsi_done (Scsi_Cmnd *SCpnt)
{
{
unsigned
long
flags
;
unsigned
long
flags
;
spin_lock_irqsave
(
SCpnt
->
host
->
host_lock
,
flags
);
spin_lock_irqsave
(
SCpnt
->
device
->
host
->
host_lock
,
flags
);
if
(
FCP_CMND
(
SCpnt
)
->
done
)
if
(
FCP_CMND
(
SCpnt
)
->
done
)
FCP_CMND
(
SCpnt
)
->
done
(
SCpnt
);
FCP_CMND
(
SCpnt
)
->
done
(
SCpnt
);
spin_unlock_irqrestore
(
SCpnt
->
host
->
host_lock
,
flags
);
spin_unlock_irqrestore
(
SCpnt
->
device
->
host
->
host_lock
,
flags
);
}
}
static
int
fcp_scsi_queue_it
(
fc_channel
*
fc
,
Scsi_Cmnd
*
SCpnt
,
fcp_cmnd
*
fcmd
,
int
prepare
)
static
int
fcp_scsi_queue_it
(
fc_channel
*
fc
,
Scsi_Cmnd
*
SCpnt
,
fcp_cmnd
*
fcmd
,
int
prepare
)
...
@@ -799,8 +799,8 @@ static int fcp_scsi_queue_it(fc_channel *fc, Scsi_Cmnd *SCpnt, fcp_cmnd *fcmd, i
...
@@ -799,8 +799,8 @@ static int fcp_scsi_queue_it(fc_channel *fc, Scsi_Cmnd *SCpnt, fcp_cmnd *fcmd, i
fc
->
cmd_slots
[
fcmd
->
token
]
=
fcmd
;
fc
->
cmd_slots
[
fcmd
->
token
]
=
fcmd
;
if
(
SCpnt
->
device
->
tagged_supported
)
{
if
(
SCpnt
->
device
->
tagged_supported
)
{
if
(
jiffies
-
fc
->
ages
[
SCpnt
->
channel
*
fc
->
targets
+
SCpnt
->
target
]
>
(
5
*
60
*
HZ
))
{
if
(
jiffies
-
fc
->
ages
[
SCpnt
->
device
->
channel
*
fc
->
targets
+
SCpnt
->
device
->
id
]
>
(
5
*
60
*
HZ
))
{
fc
->
ages
[
SCpnt
->
channel
*
fc
->
targets
+
SCpnt
->
target
]
=
jiffies
;
fc
->
ages
[
SCpnt
->
device
->
channel
*
fc
->
targets
+
SCpnt
->
device
->
id
]
=
jiffies
;
fcp_cntl
=
FCP_CNTL_QTYPE_ORDERED
;
fcp_cntl
=
FCP_CNTL_QTYPE_ORDERED
;
}
else
}
else
fcp_cntl
=
FCP_CNTL_QTYPE_SIMPLE
;
fcp_cntl
=
FCP_CNTL_QTYPE_SIMPLE
;
...
@@ -916,9 +916,9 @@ int fcp_scsi_abort(Scsi_Cmnd *SCpnt)
...
@@ -916,9 +916,9 @@ int fcp_scsi_abort(Scsi_Cmnd *SCpnt)
unsigned
long
flags
;
unsigned
long
flags
;
SCpnt
->
result
=
DID_ABORT
;
SCpnt
->
result
=
DID_ABORT
;
spin_lock_irqsave
(
SCpnt
->
host
->
host_lock
,
flags
);
spin_lock_irqsave
(
SCpnt
->
device
->
host
->
host_lock
,
flags
);
fcmd
->
done
(
SCpnt
);
fcmd
->
done
(
SCpnt
);
spin_unlock_irqrestore
(
SCpnt
->
host
->
host_lock
,
flags
);
spin_unlock_irqrestore
(
SCpnt
->
device
->
host
->
host_lock
,
flags
);
printk
(
"FC: soft abort
\n
"
);
printk
(
"FC: soft abort
\n
"
);
return
SUCCESS
;
return
SUCCESS
;
}
else
{
}
else
{
...
@@ -932,7 +932,7 @@ void fcp_scsi_reset_done(Scsi_Cmnd *SCpnt)
...
@@ -932,7 +932,7 @@ void fcp_scsi_reset_done(Scsi_Cmnd *SCpnt)
fc_channel
*
fc
=
FC_SCMND
(
SCpnt
);
fc_channel
*
fc
=
FC_SCMND
(
SCpnt
);
fc
->
rst_pkt
->
eh_state
=
SCSI_STATE_FINISHED
;
fc
->
rst_pkt
->
eh_state
=
SCSI_STATE_FINISHED
;
up
(
fc
->
rst_pkt
->
host
->
eh_action
);
up
(
fc
->
rst_pkt
->
device
->
host
->
eh_action
);
}
}
#define FCP_RESET_TIMEOUT (2*HZ)
#define FCP_RESET_TIMEOUT (2*HZ)
...
@@ -955,9 +955,7 @@ int fcp_scsi_dev_reset(Scsi_Cmnd *SCpnt)
...
@@ -955,9 +955,7 @@ int fcp_scsi_dev_reset(Scsi_Cmnd *SCpnt)
cmd
=
fc
->
scsi_cmd_pool
+
0
;
cmd
=
fc
->
scsi_cmd_pool
+
0
;
FCD
((
"Preparing rst packet
\n
"
))
FCD
((
"Preparing rst packet
\n
"
))
fc
->
encode_addr
(
SCpnt
,
cmd
->
fcp_addr
,
fc
,
fcmd
);
fc
->
encode_addr
(
SCpnt
,
cmd
->
fcp_addr
,
fc
,
fcmd
);
fc
->
rst_pkt
->
channel
=
SCpnt
->
channel
;
fc
->
rst_pkt
->
device
=
SCpnt
->
device
;
fc
->
rst_pkt
->
target
=
SCpnt
->
target
;
fc
->
rst_pkt
->
lun
=
0
;
fc
->
rst_pkt
->
cmd_len
=
0
;
fc
->
rst_pkt
->
cmd_len
=
0
;
fc
->
cmd_slots
[
0
]
=
fcmd
;
fc
->
cmd_slots
[
0
]
=
fcmd
;
...
@@ -989,7 +987,7 @@ int fcp_scsi_dev_reset(Scsi_Cmnd *SCpnt)
...
@@ -989,7 +987,7 @@ int fcp_scsi_dev_reset(Scsi_Cmnd *SCpnt)
* Set up the semaphore so we wait for the command to complete.
* Set up the semaphore so we wait for the command to complete.
*/
*/
fc
->
rst_pkt
->
host
->
eh_action
=
&
sem
;
fc
->
rst_pkt
->
device
->
host
->
eh_action
=
&
sem
;
fc
->
rst_pkt
->
request
->
rq_status
=
RQ_SCSI_BUSY
;
fc
->
rst_pkt
->
request
->
rq_status
=
RQ_SCSI_BUSY
;
fc
->
rst_pkt
->
done
=
fcp_scsi_reset_done
;
fc
->
rst_pkt
->
done
=
fcp_scsi_reset_done
;
...
@@ -997,7 +995,7 @@ int fcp_scsi_dev_reset(Scsi_Cmnd *SCpnt)
...
@@ -997,7 +995,7 @@ int fcp_scsi_dev_reset(Scsi_Cmnd *SCpnt)
down
(
&
sem
);
down
(
&
sem
);
fc
->
rst_pkt
->
host
->
eh_action
=
NULL
;
fc
->
rst_pkt
->
device
->
host
->
eh_action
=
NULL
;
del_timer
(
&
fc
->
rst_pkt
->
eh_timeout
);
del_timer
(
&
fc
->
rst_pkt
->
eh_timeout
);
/*
/*
...
...
drivers/scsi/esp.c
View file @
00492e8c
This diff is collapsed.
Click to expand it.
drivers/scsi/fcal.c
View file @
00492e8c
...
@@ -292,11 +292,12 @@ static int fcal_encode_addr(Scsi_Cmnd *SCpnt, u16 *addr, fc_channel *fc, fcp_cmn
...
@@ -292,11 +292,12 @@ static int fcal_encode_addr(Scsi_Cmnd *SCpnt, u16 *addr, fc_channel *fc, fcp_cmn
if
(
SCpnt
->
cmnd
[
1
]
&
0xe0
)
return
-
EINVAL
;
if
(
SCpnt
->
cmnd
[
1
]
&
0xe0
)
return
-
EINVAL
;
/* FC-PLDA tells us... */
/* FC-PLDA tells us... */
memset
(
addr
,
0
,
8
);
memset
(
addr
,
0
,
8
);
f
=
(
struct
fcal
*
)
SCpnt
->
host
->
hostdata
;
f
=
(
struct
fcal
*
)
SCpnt
->
device
->
host
->
hostdata
;
if
(
!
f
->
map
[
SCpnt
->
target
])
return
-
EINVAL
;
if
(
!
f
->
map
[
SCpnt
->
device
->
id
])
return
-
EINVAL
;
/* Now, determine DID: It will be Native Identifier, so we zero upper
/* Now, determine DID: It will be Native Identifier, so we zero upper
2 bytes of the 3 byte DID, lowest byte will be AL-PA */
2 bytes of the 3 byte DID, lowest byte will be AL-PA */
fcmd
->
did
=
target2alpa
[
SCpnt
->
target
];
fcmd
->
did
=
target2alpa
[
SCpnt
->
device
->
id
];
FCALD
((
"trying DID %06x
\n
"
,
fcmd
->
did
))
FCALD
((
"trying DID %06x
\n
"
,
fcmd
->
did
))
return
0
;
return
0
;
}
}
...
...
drivers/scsi/pluto.c
View file @
00492e8c
...
@@ -156,12 +156,12 @@ int __init pluto_detect(Scsi_Host_Template *tpnt)
...
@@ -156,12 +156,12 @@ int __init pluto_detect(Scsi_Host_Template *tpnt)
pluto
->
fc
=
fc
;
pluto
->
fc
=
fc
;
SCpnt
->
host
=
host
;
SCpnt
->
cmnd
[
0
]
=
INQUIRY
;
SCpnt
->
cmnd
[
0
]
=
INQUIRY
;
SCpnt
->
cmnd
[
4
]
=
255
;
SCpnt
->
cmnd
[
4
]
=
255
;
/* FC layer requires this, so that SCpnt->device->tagged_supported is initially 0 */
/* FC layer requires this, so that SCpnt->device->tagged_supported is initially 0 */
SCpnt
->
device
=
&
dev
;
SCpnt
->
device
=
&
dev
;
dev
.
host
=
host
;
SCpnt
->
cmd_len
=
COMMAND_SIZE
(
INQUIRY
);
SCpnt
->
cmd_len
=
COMMAND_SIZE
(
INQUIRY
);
...
@@ -325,16 +325,18 @@ const char *pluto_info(struct Scsi_Host *host)
...
@@ -325,16 +325,18 @@ const char *pluto_info(struct Scsi_Host *host)
*/
*/
static
int
pluto_encode_addr
(
Scsi_Cmnd
*
SCpnt
,
u16
*
addr
,
fc_channel
*
fc
,
fcp_cmnd
*
fcmd
)
static
int
pluto_encode_addr
(
Scsi_Cmnd
*
SCpnt
,
u16
*
addr
,
fc_channel
*
fc
,
fcp_cmnd
*
fcmd
)
{
{
PLND
((
"encode addr %d %d %d
\n
"
,
SCpnt
->
channel
,
SCpnt
->
target
,
SCpnt
->
cmnd
[
1
]
&
0xe0
))
PLND
((
"encode addr %d %d %d
\n
"
,
SCpnt
->
device
->
channel
,
SCpnt
->
device
->
id
,
SCpnt
->
cmnd
[
1
]
&
0xe0
))
/* We don't support LUNs - neither does SSA :) */
/* We don't support LUNs - neither does SSA :) */
if
(
SCpnt
->
cmnd
[
1
]
&
0xe0
)
return
-
EINVAL
;
if
(
SCpnt
->
cmnd
[
1
]
&
0xe0
)
if
(
!
SCpnt
->
channel
)
{
return
-
EINVAL
;
if
(
SCpnt
->
target
)
return
-
EINVAL
;
if
(
!
SCpnt
->
device
->
channel
)
{
if
(
SCpnt
->
device
->
id
)
return
-
EINVAL
;
memset
(
addr
,
0
,
4
*
sizeof
(
u16
));
memset
(
addr
,
0
,
4
*
sizeof
(
u16
));
}
else
{
}
else
{
addr
[
0
]
=
1
;
addr
[
0
]
=
1
;
addr
[
1
]
=
SCpnt
->
channel
-
1
;
addr
[
1
]
=
SCpnt
->
device
->
channel
-
1
;
addr
[
2
]
=
SCpnt
->
target
;
addr
[
2
]
=
SCpnt
->
device
->
id
;
addr
[
3
]
=
0
;
addr
[
3
]
=
0
;
}
}
/* We're Point-to-Point, so target it to the default DID */
/* We're Point-to-Point, so target it to the default DID */
...
...
drivers/scsi/qlogicpti.c
View file @
00492e8c
...
@@ -1004,16 +1004,16 @@ static inline void cmd_frob(struct Command_Entry *cmd, Scsi_Cmnd *Cmnd,
...
@@ -1004,16 +1004,16 @@ static inline void cmd_frob(struct Command_Entry *cmd, Scsi_Cmnd *Cmnd,
memset
(
cmd
,
0
,
sizeof
(
struct
Command_Entry
));
memset
(
cmd
,
0
,
sizeof
(
struct
Command_Entry
));
cmd
->
hdr
.
entry_cnt
=
1
;
cmd
->
hdr
.
entry_cnt
=
1
;
cmd
->
hdr
.
entry_type
=
ENTRY_COMMAND
;
cmd
->
hdr
.
entry_type
=
ENTRY_COMMAND
;
cmd
->
target_id
=
Cmnd
->
target
;
cmd
->
target_id
=
Cmnd
->
device
->
id
;
cmd
->
target_lun
=
Cmnd
->
lun
;
cmd
->
target_lun
=
Cmnd
->
device
->
lun
;
cmd
->
cdb_length
=
Cmnd
->
cmd_len
;
cmd
->
cdb_length
=
Cmnd
->
cmd_len
;
cmd
->
control_flags
=
0
;
cmd
->
control_flags
=
0
;
if
(
Cmnd
->
device
->
tagged_supported
)
{
if
(
Cmnd
->
device
->
tagged_supported
)
{
if
(
qpti
->
cmd_count
[
Cmnd
->
target
]
==
0
)
if
(
qpti
->
cmd_count
[
Cmnd
->
device
->
id
]
==
0
)
qpti
->
tag_ages
[
Cmnd
->
target
]
=
jiffies
;
qpti
->
tag_ages
[
Cmnd
->
device
->
id
]
=
jiffies
;
if
((
jiffies
-
qpti
->
tag_ages
[
Cmnd
->
target
])
>
(
5
*
HZ
))
{
if
((
jiffies
-
qpti
->
tag_ages
[
Cmnd
->
device
->
id
])
>
(
5
*
HZ
))
{
cmd
->
control_flags
=
CFLAG_ORDERED_TAG
;
cmd
->
control_flags
=
CFLAG_ORDERED_TAG
;
qpti
->
tag_ages
[
Cmnd
->
target
]
=
jiffies
;
qpti
->
tag_ages
[
Cmnd
->
device
->
id
]
=
jiffies
;
}
else
}
else
cmd
->
control_flags
=
CFLAG_SIMPLE_TAG
;
cmd
->
control_flags
=
CFLAG_SIMPLE_TAG
;
}
}
...
@@ -1097,7 +1097,7 @@ static inline int load_cmd(Scsi_Cmnd *Cmnd, struct Command_Entry *cmd,
...
@@ -1097,7 +1097,7 @@ static inline int load_cmd(Scsi_Cmnd *Cmnd, struct Command_Entry *cmd,
cmd
->
handle
=
in_ptr
;
cmd
->
handle
=
in_ptr
;
qpti
->
cmd_slots
[
in_ptr
]
=
Cmnd
;
qpti
->
cmd_slots
[
in_ptr
]
=
Cmnd
;
qpti
->
cmd_count
[
Cmnd
->
target
]
++
;
qpti
->
cmd_count
[
Cmnd
->
device
->
id
]
++
;
sbus_writew
(
in_ptr
,
qpti
->
qregs
+
MBOX4
);
sbus_writew
(
in_ptr
,
qpti
->
qregs
+
MBOX4
);
qpti
->
req_in_ptr
=
in_ptr
;
qpti
->
req_in_ptr
=
in_ptr
;
...
@@ -1118,8 +1118,8 @@ static inline void update_can_queue(struct Scsi_Host *host, u_int in_ptr, u_int
...
@@ -1118,8 +1118,8 @@ static inline void update_can_queue(struct Scsi_Host *host, u_int in_ptr, u_int
*/
*/
static
void
ourdone
(
Scsi_Cmnd
*
Cmnd
)
static
void
ourdone
(
Scsi_Cmnd
*
Cmnd
)
{
{
struct
qlogicpti
*
qpti
=
(
struct
qlogicpti
*
)
Cmnd
->
host
->
hostdata
;
struct
qlogicpti
*
qpti
=
(
struct
qlogicpti
*
)
Cmnd
->
device
->
host
->
hostdata
;
int
tgt
=
Cmnd
->
target
;
int
tgt
=
Cmnd
->
device
->
id
;
void
(
*
done
)
(
Scsi_Cmnd
*
);
void
(
*
done
)
(
Scsi_Cmnd
*
);
/* This grot added by DaveM, blame him for ugliness.
/* This grot added by DaveM, blame him for ugliness.
...
@@ -1170,7 +1170,7 @@ static int qlogicpti_queuecommand(Scsi_Cmnd *Cmnd, void (*done)(Scsi_Cmnd *));
...
@@ -1170,7 +1170,7 @@ static int qlogicpti_queuecommand(Scsi_Cmnd *Cmnd, void (*done)(Scsi_Cmnd *));
static
int
qlogicpti_queuecommand_slow
(
Scsi_Cmnd
*
Cmnd
,
static
int
qlogicpti_queuecommand_slow
(
Scsi_Cmnd
*
Cmnd
,
void
(
*
done
)(
Scsi_Cmnd
*
))
void
(
*
done
)(
Scsi_Cmnd
*
))
{
{
struct
qlogicpti
*
qpti
=
(
struct
qlogicpti
*
)
Cmnd
->
host
->
hostdata
;
struct
qlogicpti
*
qpti
=
(
struct
qlogicpti
*
)
Cmnd
->
device
->
host
->
hostdata
;
unsigned
long
flags
;
unsigned
long
flags
;
/*
/*
...
@@ -1229,7 +1229,7 @@ static int qlogicpti_queuecommand_slow(Scsi_Cmnd *Cmnd,
...
@@ -1229,7 +1229,7 @@ static int qlogicpti_queuecommand_slow(Scsi_Cmnd *Cmnd,
* and can rock on..
* and can rock on..
*/
*/
if
(
qpti
==
NULL
)
if
(
qpti
==
NULL
)
Cmnd
->
host
->
hostt
->
queuecommand
=
qlogicpti_queuecommand
;
Cmnd
->
device
->
host
->
hostt
->
queuecommand
=
qlogicpti_queuecommand
;
spin_unlock_irqrestore
(
&
qpti
->
lock
,
flags
);
spin_unlock_irqrestore
(
&
qpti
->
lock
,
flags
);
...
@@ -1246,7 +1246,7 @@ static int qlogicpti_queuecommand_slow(Scsi_Cmnd *Cmnd,
...
@@ -1246,7 +1246,7 @@ static int qlogicpti_queuecommand_slow(Scsi_Cmnd *Cmnd,
*/
*/
static
int
qlogicpti_queuecommand
(
Scsi_Cmnd
*
Cmnd
,
void
(
*
done
)(
Scsi_Cmnd
*
))
static
int
qlogicpti_queuecommand
(
Scsi_Cmnd
*
Cmnd
,
void
(
*
done
)(
Scsi_Cmnd
*
))
{
{
struct
Scsi_Host
*
host
=
Cmnd
->
host
;
struct
Scsi_Host
*
host
=
Cmnd
->
device
->
host
;
struct
qlogicpti
*
qpti
=
(
struct
qlogicpti
*
)
host
->
hostdata
;
struct
qlogicpti
*
qpti
=
(
struct
qlogicpti
*
)
host
->
hostdata
;
struct
Command_Entry
*
cmd
;
struct
Command_Entry
*
cmd
;
unsigned
long
flags
;
unsigned
long
flags
;
...
@@ -1431,7 +1431,7 @@ static Scsi_Cmnd *qlogicpti_intr_handler(struct qlogicpti *qpti)
...
@@ -1431,7 +1431,7 @@ static Scsi_Cmnd *qlogicpti_intr_handler(struct qlogicpti *qpti)
Cmnd
->
request_bufflen
,
Cmnd
->
request_bufflen
,
scsi_to_sbus_dma_dir
(
Cmnd
->
sc_data_direction
));
scsi_to_sbus_dma_dir
(
Cmnd
->
sc_data_direction
));
}
}
qpti
->
cmd_count
[
Cmnd
->
target
]
--
;
qpti
->
cmd_count
[
Cmnd
->
device
->
id
]
--
;
sbus_writew
(
out_ptr
,
qpti
->
qregs
+
MBOX5
);
sbus_writew
(
out_ptr
,
qpti
->
qregs
+
MBOX5
);
Cmnd
->
host_scribble
=
(
unsigned
char
*
)
done_queue
;
Cmnd
->
host_scribble
=
(
unsigned
char
*
)
done_queue
;
done_queue
=
Cmnd
;
done_queue
=
Cmnd
;
...
@@ -1468,7 +1468,7 @@ static void qpti_intr(int irq, void *dev_id, struct pt_regs *regs)
...
@@ -1468,7 +1468,7 @@ static void qpti_intr(int irq, void *dev_id, struct pt_regs *regs)
static
int
qlogicpti_abort
(
Scsi_Cmnd
*
Cmnd
)
static
int
qlogicpti_abort
(
Scsi_Cmnd
*
Cmnd
)
{
{
u_short
param
[
6
];
u_short
param
[
6
];
struct
Scsi_Host
*
host
=
Cmnd
->
host
;
struct
Scsi_Host
*
host
=
Cmnd
->
device
->
host
;
struct
qlogicpti
*
qpti
=
(
struct
qlogicpti
*
)
host
->
hostdata
;
struct
qlogicpti
*
qpti
=
(
struct
qlogicpti
*
)
host
->
hostdata
;
int
return_status
=
SUCCESS
;
int
return_status
=
SUCCESS
;
unsigned
long
flags
;
unsigned
long
flags
;
...
@@ -1476,7 +1476,7 @@ static int qlogicpti_abort(Scsi_Cmnd *Cmnd)
...
@@ -1476,7 +1476,7 @@ static int qlogicpti_abort(Scsi_Cmnd *Cmnd)
int
i
;
int
i
;
printk
(
KERN_WARNING
"qlogicpti : Aborting cmd for tgt[%d] lun[%d]
\n
"
,
printk
(
KERN_WARNING
"qlogicpti : Aborting cmd for tgt[%d] lun[%d]
\n
"
,
(
int
)
Cmnd
->
target
,
(
int
)
Cmnd
->
lun
);
(
int
)
Cmnd
->
device
->
id
,
(
int
)
Cmnd
->
device
->
lun
);
spin_lock_irqsave
(
&
qpti
->
lock
,
flags
);
spin_lock_irqsave
(
&
qpti
->
lock
,
flags
);
...
@@ -1491,7 +1491,7 @@ static int qlogicpti_abort(Scsi_Cmnd *Cmnd)
...
@@ -1491,7 +1491,7 @@ static int qlogicpti_abort(Scsi_Cmnd *Cmnd)
cmd_cookie
=
i
;
cmd_cookie
=
i
;
param
[
0
]
=
MBOX_ABORT
;
param
[
0
]
=
MBOX_ABORT
;
param
[
1
]
=
(((
u_short
)
Cmnd
->
target
)
<<
8
)
|
Cmnd
->
lun
;
param
[
1
]
=
(((
u_short
)
Cmnd
->
device
->
id
)
<<
8
)
|
Cmnd
->
device
->
lun
;
param
[
2
]
=
cmd_cookie
>>
16
;
param
[
2
]
=
cmd_cookie
>>
16
;
param
[
3
]
=
cmd_cookie
&
0xffff
;
param
[
3
]
=
cmd_cookie
&
0xffff
;
if
(
qlogicpti_mbox_command
(
qpti
,
param
,
0
)
||
if
(
qlogicpti_mbox_command
(
qpti
,
param
,
0
)
||
...
@@ -1510,7 +1510,7 @@ static int qlogicpti_abort(Scsi_Cmnd *Cmnd)
...
@@ -1510,7 +1510,7 @@ static int qlogicpti_abort(Scsi_Cmnd *Cmnd)
static
int
qlogicpti_reset
(
Scsi_Cmnd
*
Cmnd
)
static
int
qlogicpti_reset
(
Scsi_Cmnd
*
Cmnd
)
{
{
u_short
param
[
6
];
u_short
param
[
6
];
struct
Scsi_Host
*
host
=
Cmnd
->
host
;
struct
Scsi_Host
*
host
=
Cmnd
->
device
->
host
;
struct
qlogicpti
*
qpti
=
(
struct
qlogicpti
*
)
host
->
hostdata
;
struct
qlogicpti
*
qpti
=
(
struct
qlogicpti
*
)
host
->
hostdata
;
int
return_status
=
SUCCESS
;
int
return_status
=
SUCCESS
;
unsigned
long
flags
;
unsigned
long
flags
;
...
...
include/asm-sparc/delay.h
View file @
00492e8c
...
@@ -21,5 +21,6 @@ extern __inline__ void __delay(unsigned long loops)
...
@@ -21,5 +21,6 @@ extern __inline__ void __delay(unsigned long loops)
/* This is too messy with inline asm on the Sparc. */
/* This is too messy with inline asm on the Sparc. */
extern
void
udelay
(
unsigned
long
usecs
);
extern
void
udelay
(
unsigned
long
usecs
);
extern
void
ndelay
(
unsigned
long
usecs
);
#endif
/* defined(__SPARC_DELAY_H) */
#endif
/* defined(__SPARC_DELAY_H) */
include/asm-sparc64/delay.h
View file @
00492e8c
...
@@ -45,6 +45,19 @@ static __inline__ void __udelay(unsigned long usecs, unsigned long lps)
...
@@ -45,6 +45,19 @@ static __inline__ void __udelay(unsigned long usecs, unsigned long lps)
__delay
(
usecs
*
HZ
);
__delay
(
usecs
*
HZ
);
}
}
extern
__inline__
void
__ndelay
(
unsigned
long
usecs
,
unsigned
long
lps
)
{
usecs
*=
0x0000000000000005UL
;
/* 2**32 / 10000 */
__asm__
__volatile__
(
" mulx %1, %2, %0
\n
"
" srlx %0, 32, %0
\n
"
:
"=r"
(
usecs
)
:
"r"
(
usecs
),
"r"
(
lps
));
__delay
(
usecs
*
HZ
);
}
#ifdef CONFIG_SMP
#ifdef CONFIG_SMP
#define __udelay_val cpu_data[smp_processor_id()].udelay_val
#define __udelay_val cpu_data[smp_processor_id()].udelay_val
#else
#else
...
@@ -52,6 +65,7 @@ static __inline__ void __udelay(unsigned long usecs, unsigned long lps)
...
@@ -52,6 +65,7 @@ static __inline__ void __udelay(unsigned long usecs, unsigned long lps)
#endif
#endif
#define udelay(usecs) __udelay((usecs),__udelay_val)
#define udelay(usecs) __udelay((usecs),__udelay_val)
#define ndelay(usecs) __ndelay((usecs),__udelay_val)
#endif
/* !__ASSEMBLY__ */
#endif
/* !__ASSEMBLY__ */
...
...
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