Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
bug2833
cloud-kernel
提交
60539fa3
cloud-kernel
项目概览
bug2833
/
cloud-kernel
与 Fork 源项目一致
Fork自
openanolis / cloud-kernel
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
60539fa3
编写于
1月 13, 2016
作者:
J
James Bottomley
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'mkp-scsi/4.5/scsi-queue' into misc
上级
abaee091
a290dd57
变更
26
展开全部
隐藏空白更改
内联
并排
Showing
26 changed file
with
3013 addition
and
3722 deletion
+3013
-3722
drivers/scsi/3w-xxxx.c
drivers/scsi/3w-xxxx.c
+3
-0
drivers/scsi/Kconfig
drivers/scsi/Kconfig
+0
-17
drivers/scsi/NCR5380.c
drivers/scsi/NCR5380.c
+1306
-1564
drivers/scsi/NCR5380.h
drivers/scsi/NCR5380.h
+38
-49
drivers/scsi/arm/cumana_1.c
drivers/scsi/arm/cumana_1.c
+15
-16
drivers/scsi/arm/oak.c
drivers/scsi/arm/oak.c
+17
-10
drivers/scsi/atari_NCR5380.c
drivers/scsi/atari_NCR5380.c
+1018
-1254
drivers/scsi/atari_scsi.c
drivers/scsi/atari_scsi.c
+31
-71
drivers/scsi/cxgbi/cxgb3i/cxgb3i.c
drivers/scsi/cxgbi/cxgb3i/cxgb3i.c
+1
-1
drivers/scsi/dmx3191d.c
drivers/scsi/dmx3191d.c
+18
-15
drivers/scsi/dtc.c
drivers/scsi/dtc.c
+57
-58
drivers/scsi/dtc.h
drivers/scsi/dtc.h
+4
-41
drivers/scsi/g_NCR5380.c
drivers/scsi/g_NCR5380.c
+240
-168
drivers/scsi/g_NCR5380.h
drivers/scsi/g_NCR5380.h
+26
-40
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
+18
-22
drivers/scsi/imm.c
drivers/scsi/imm.c
+43
-7
drivers/scsi/ipr.c
drivers/scsi/ipr.c
+2
-3
drivers/scsi/mac_scsi.c
drivers/scsi/mac_scsi.c
+33
-84
drivers/scsi/megaraid/megaraid_mm.c
drivers/scsi/megaraid/megaraid_mm.c
+4
-0
drivers/scsi/pas16.c
drivers/scsi/pas16.c
+48
-68
drivers/scsi/pas16.h
drivers/scsi/pas16.h
+3
-37
drivers/scsi/scsi_devinfo.c
drivers/scsi/scsi_devinfo.c
+1
-0
drivers/scsi/storvsc_drv.c
drivers/scsi/storvsc_drv.c
+1
-1
drivers/scsi/sun3_scsi.c
drivers/scsi/sun3_scsi.c
+31
-110
drivers/scsi/t128.c
drivers/scsi/t128.c
+51
-51
drivers/scsi/t128.h
drivers/scsi/t128.h
+4
-35
未找到文件。
drivers/scsi/3w-xxxx.c
浏览文件 @
60539fa3
...
...
@@ -1045,6 +1045,9 @@ static int tw_chrdev_open(struct inode *inode, struct file *file)
static
const
struct
file_operations
tw_fops
=
{
.
owner
=
THIS_MODULE
,
.
unlocked_ioctl
=
tw_chrdev_ioctl
,
#ifdef CONFIG_COMPAT
.
compat_ioctl
=
tw_chrdev_ioctl
,
#endif
.
open
=
tw_chrdev_open
,
.
release
=
NULL
,
.
llseek
=
noop_llseek
,
...
...
drivers/scsi/Kconfig
浏览文件 @
60539fa3
...
...
@@ -1620,23 +1620,6 @@ config ATARI_SCSI
ST-DMA, replacing ACSI). It does NOT support other schemes, like
in the Hades (without DMA).
config ATARI_SCSI_TOSHIBA_DELAY
bool "Long delays for Toshiba CD-ROMs"
depends on ATARI_SCSI
help
This option increases the delay after a SCSI arbitration to
accommodate some flaky Toshiba CD-ROM drives. Say Y if you intend to
use a Toshiba CD-ROM drive; otherwise, the option is not needed and
would impact performance a bit, so say N.
config ATARI_SCSI_RESET_BOOT
bool "Reset SCSI-devices at boottime"
depends on ATARI_SCSI
help
Reset the devices on your Atari whenever it boots. This makes the
boot process fractionally longer but may assist recovery from errors
that leave the devices with SCSI operations partway completed.
config MAC_SCSI
tristate "Macintosh NCR5380 SCSI"
depends on MAC && SCSI=y
...
...
drivers/scsi/NCR5380.c
浏览文件 @
60539fa3
此差异已折叠。
点击以展开。
drivers/scsi/NCR5380.h
浏览文件 @
60539fa3
...
...
@@ -22,8 +22,13 @@
#ifndef NCR5380_H
#define NCR5380_H
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/list.h>
#include <linux/workqueue.h>
#include <scsi/scsi_dbg.h>
#include <scsi/scsi_eh.h>
#include <scsi/scsi_transport_spi.h>
#define NDEBUG_ARBITRATION 0x1
#define NDEBUG_AUTOSENSE 0x2
...
...
@@ -158,8 +163,7 @@
/* Write any value to this register to start an ini mode DMA receive */
#define START_DMA_INITIATOR_RECEIVE_REG 7
/* wo */
#define C400_CONTROL_STATUS_REG NCR53C400_register_offset-8
/* rw */
/* NCR 53C400(A) Control Status Register bits: */
#define CSR_RESET 0x80
/* wo Resets 53c400 */
#define CSR_53C80_REG 0x80
/* ro 5380 registers busy */
#define CSR_TRANS_DIR 0x40
/* rw Data transfer direction */
...
...
@@ -176,16 +180,6 @@
#define CSR_BASE CSR_53C80_INTR
#endif
/* Number of 128-byte blocks to be transferred */
#define C400_BLOCK_COUNTER_REG NCR53C400_register_offset-7
/* rw */
/* Resume transfer after disconnect */
#define C400_RESUME_TRANSFER_REG NCR53C400_register_offset-6
/* wo */
/* Access to host buffer stack */
#define C400_HOST_BUFFER NCR53C400_register_offset-4
/* rw */
/* Note : PHASE_* macros are based on the values of the STATUS register */
#define PHASE_MASK (SR_MSG | SR_CD | SR_IO)
...
...
@@ -205,16 +199,6 @@
#define PHASE_SR_TO_TCR(phase) ((phase) >> 2)
/*
* The internal should_disconnect() function returns these based on the
* expected length of a disconnect if a device supports disconnect/
* reconnect.
*/
#define DISCONNECT_NONE 0
#define DISCONNECT_TIME_TO_DATA 1
#define DISCONNECT_LONG 2
/*
* "Special" value for the (unsigned char) command tag, to indicate
* I_T_L nexus instead of I_T_L_Q.
...
...
@@ -236,15 +220,11 @@
#define NO_IRQ 0
#endif
#define FLAG_HAS_LAST_BYTE_SENT 1
/* NCR53c81 or better */
#define FLAG_CHECK_LAST_BYTE_SENT 2
/* Only test once */
#define FLAG_NCR53C400 4
/* NCR53c400 */
#define FLAG_NO_DMA_FIXUP 1
/* No DMA errata workarounds */
#define FLAG_NO_PSEUDO_DMA 8
/* Inhibit DMA */
#define FLAG_DTC3181E 16
/* DTC3181E */
#define FLAG_LATE_DMA_SETUP 32
/* Setup NCR before DMA H/W */
#define FLAG_TAGGED_QUEUING 64
/* as X3T9.2 spelled it */
#ifndef ASM
#define FLAG_TOSHIBA_DELAY 128
/* Allow for borken CD-ROMs */
#ifdef SUPPORT_TAGS
struct
tag_alloc
{
...
...
@@ -258,33 +238,24 @@ struct NCR5380_hostdata {
NCR5380_implementation_fields
;
/* implementation specific */
struct
Scsi_Host
*
host
;
/* Host backpointer */
unsigned
char
id_mask
,
id_higher_mask
;
/* 1 << id, all bits greater */
unsigned
char
targets_present
;
/* targets we have connected
to, so we can call a select
failure a retryable condition */
volatile
unsigned
char
busy
[
8
];
/* index = target, bit = lun */
unsigned
char
busy
[
8
];
/* index = target, bit = lun */
#if defined(REAL_DMA) || defined(REAL_DMA_POLL)
volatile
int
dma_len
;
/* requested length of DMA */
int
dma_len
;
/* requested length of DMA */
#endif
volatile
unsigned
char
last_message
;
/* last message OUT */
volatile
struct
scsi_cmnd
*
connected
;
/* currently connected command */
volatile
struct
scsi_cmnd
*
issue_queue
;
/* waiting to be issued */
volatile
struct
scsi_cmnd
*
disconnected_queue
;
/* waiting for reconnect */
volatile
int
restart_select
;
/* we have disconnected,
used to restart
NCR5380_select() */
volatile
unsigned
aborted
:
1
;
/* flag, says aborted */
unsigned
char
last_message
;
/* last message OUT */
struct
scsi_cmnd
*
connected
;
/* currently connected cmnd */
struct
scsi_cmnd
*
selecting
;
/* cmnd to be connected */
struct
list_head
unissued
;
/* waiting to be issued */
struct
list_head
autosense
;
/* priority issue queue */
struct
list_head
disconnected
;
/* waiting for reconnect */
spinlock_t
lock
;
/* protects this struct */
int
flags
;
unsigned
long
time_expires
;
/* in jiffies, set prior to sleeping */
int
select_time
;
/* timer in select for target response */
volatile
struct
scsi_cmnd
*
selecting
;
struct
delayed_work
coroutine
;
/* our co-routine */
struct
scsi_eh_save
ses
;
struct
scsi_cmnd
*
sensing
;
char
info
[
256
];
int
read_overruns
;
/* number of bytes to cut from a
* transfer to handle chip overruns */
int
retain_dma_intr
;
struct
work_struct
main_task
;
volatile
int
main_running
;
#ifdef SUPPORT_TAGS
struct
tag_alloc
TagAlloc
[
8
][
8
];
/* 8 targets and 8 LUNs */
#endif
...
...
@@ -292,10 +263,23 @@ struct NCR5380_hostdata {
unsigned
spin_max_r
;
unsigned
spin_max_w
;
#endif
struct
workqueue_struct
*
work_q
;
unsigned
long
accesses_per_ms
;
/* chip register accesses per ms */
};
#ifdef __KERNEL__
struct
NCR5380_cmd
{
struct
list_head
list
;
};
#define NCR5380_CMD_SIZE (sizeof(struct NCR5380_cmd))
static
inline
struct
scsi_cmnd
*
NCR5380_to_scmd
(
struct
NCR5380_cmd
*
ncmd_ptr
)
{
return
((
struct
scsi_cmnd
*
)
ncmd_ptr
)
-
1
;
}
#ifndef NDEBUG
#define NDEBUG (0)
#endif
...
...
@@ -304,6 +288,11 @@ struct NCR5380_hostdata {
do { if ((NDEBUG) & (flg)) \
printk(KERN_DEBUG fmt, ## __VA_ARGS__); } while (0)
#define dsprintk(flg, host, fmt, ...) \
do { if ((NDEBUG) & (flg)) \
shost_printk(KERN_DEBUG, host, fmt, ## __VA_ARGS__); \
} while (0)
#if NDEBUG
#define NCR5380_dprint(flg, arg) \
do { if ((NDEBUG) & (flg)) NCR5380_print(arg); } while (0)
...
...
@@ -320,6 +309,7 @@ static void NCR5380_print(struct Scsi_Host *instance);
static
int
NCR5380_probe_irq
(
struct
Scsi_Host
*
instance
,
int
possible
);
#endif
static
int
NCR5380_init
(
struct
Scsi_Host
*
instance
,
int
flags
);
static
int
NCR5380_maybe_reset_bus
(
struct
Scsi_Host
*
);
static
void
NCR5380_exit
(
struct
Scsi_Host
*
instance
);
static
void
NCR5380_information_transfer
(
struct
Scsi_Host
*
instance
);
#ifndef DONT_USE_INTR
...
...
@@ -328,7 +318,7 @@ static irqreturn_t NCR5380_intr(int irq, void *dev_id);
static
void
NCR5380_main
(
struct
work_struct
*
work
);
static
const
char
*
NCR5380_info
(
struct
Scsi_Host
*
instance
);
static
void
NCR5380_reselect
(
struct
Scsi_Host
*
instance
);
static
int
NCR5380_select
(
struct
Scsi_Host
*
instance
,
struct
scsi_cmnd
*
cmd
);
static
struct
scsi_cmnd
*
NCR5380_select
(
struct
Scsi_Host
*
,
struct
scsi_cmnd
*
);
#if defined(PSEUDO_DMA) || defined(REAL_DMA) || defined(REAL_DMA_POLL)
static
int
NCR5380_transfer_dma
(
struct
Scsi_Host
*
instance
,
unsigned
char
*
phase
,
int
*
count
,
unsigned
char
**
data
);
#endif
...
...
@@ -443,5 +433,4 @@ static __inline__ int NCR5380_pc_dma_residual(struct Scsi_Host *instance)
#endif
/* defined(i386) || defined(__alpha__) */
#endif
/* defined(REAL_DMA) */
#endif
/* __KERNEL__ */
#endif
/* ndef ASM */
#endif
/* NCR5380_H */
drivers/scsi/arm/cumana_1.c
浏览文件 @
60539fa3
...
...
@@ -4,9 +4,7 @@
* Copyright 1995-2002, Russell King
*/
#include <linux/module.h>
#include <linux/signal.h>
#include <linux/ioport.h>
#include <linux/delay.h>
#include <linux/blkdev.h>
#include <linux/init.h>
...
...
@@ -15,15 +13,14 @@
#include <scsi/scsi_host.h>
#include <scsi/scsicam.h>
#define PSEUDO_DMA
#define priv(host) ((struct NCR5380_hostdata *)(host)->hostdata)
#define NCR5380_local_declare() struct Scsi_Host *_instance
#define NCR5380_setup(instance) _instance = instance
#define NCR5380_read(reg) cumanascsi_read(_instance, reg)
#define NCR5380_write(reg, value) cumanascsi_write(_instance, reg, value)
#define NCR5380_read(reg) cumanascsi_read(instance, reg)
#define NCR5380_write(reg, value) cumanascsi_write(instance, reg, value)
#define NCR5380_dma_xfer_len(instance, cmd, phase) (cmd->transfersize)
#define NCR5380_intr cumanascsi_intr
#define NCR5380_queue_command cumanascsi_queue_command
#define NCR5380_info cumanascsi_info
...
...
@@ -211,6 +208,8 @@ static struct scsi_host_template cumanascsi_template = {
.
cmd_per_lun
=
2
,
.
use_clustering
=
DISABLE_CLUSTERING
,
.
proc_name
=
"CumanaSCSI-1"
,
.
cmd_size
=
NCR5380_CMD_SIZE
,
.
max_sectors
=
128
,
};
static
int
cumanascsi1_probe
(
struct
expansion_card
*
ec
,
...
...
@@ -240,23 +239,21 @@ static int cumanascsi1_probe(struct expansion_card *ec,
host
->
irq
=
ec
->
irq
;
NCR5380_init
(
host
,
0
);
ret
=
NCR5380_init
(
host
,
0
);
if
(
ret
)
goto
out_unmap
;
NCR5380_maybe_reset_bus
(
host
);
priv
(
host
)
->
ctrl
=
0
;
writeb
(
0
,
priv
(
host
)
->
base
+
CTRL
);
host
->
n_io_port
=
255
;
if
(
!
(
request_region
(
host
->
io_port
,
host
->
n_io_port
,
"CumanaSCSI-1"
)))
{
ret
=
-
EBUSY
;
goto
out_unmap
;
}
ret
=
request_irq
(
host
->
irq
,
cumanascsi_intr
,
0
,
"CumanaSCSI-1"
,
host
);
if
(
ret
)
{
printk
(
"scsi%d: IRQ%d not free: %d
\n
"
,
host
->
host_no
,
host
->
irq
,
ret
);
goto
out_
unmap
;
goto
out_
exit
;
}
ret
=
scsi_add_host
(
host
,
&
ec
->
dev
);
...
...
@@ -268,6 +265,8 @@ static int cumanascsi1_probe(struct expansion_card *ec,
out_free_irq:
free_irq
(
host
->
irq
,
host
);
out_exit:
NCR5380_exit
(
host
);
out_unmap:
iounmap
(
priv
(
host
)
->
base
);
iounmap
(
priv
(
host
)
->
dma
);
...
...
drivers/scsi/arm/oak.c
浏览文件 @
60539fa3
...
...
@@ -5,9 +5,7 @@
*/
#include <linux/module.h>
#include <linux/signal.h>
#include <linux/ioport.h>
#include <linux/delay.h>
#include <linux/blkdev.h>
#include <linux/init.h>
...
...
@@ -20,14 +18,16 @@
#define DONT_USE_INTR
#define priv(host) ((struct NCR5380_hostdata *)(host)->hostdata)
#define NCR5380_local_declare() void __iomem *_base
#define NCR5380_setup(host) _base = priv(host)->base
#define NCR5380_read(reg) readb(_base + ((reg) << 2))
#define NCR5380_write(reg, value) writeb(value, _base + ((reg) << 2))
#define NCR5380_read(reg) \
readb(priv(instance)->base + ((reg) << 2))
#define NCR5380_write(reg, value) \
writeb(value, priv(instance)->base + ((reg) << 2))
#define NCR5380_dma_xfer_len(instance, cmd, phase) (cmd->transfersize)
#define NCR5380_queue_command oakscsi_queue_command
#define NCR5380_info oakscsi_info
#define NCR5380_show_info oakscsi_show_info
#define NCR5380_implementation_fields \
void __iomem *base
...
...
@@ -103,7 +103,6 @@ printk("reading %p len %d\n", addr, len);
static
struct
scsi_host_template
oakscsi_template
=
{
.
module
=
THIS_MODULE
,
.
show_info
=
oakscsi_show_info
,
.
name
=
"Oak 16-bit SCSI"
,
.
info
=
oakscsi_info
,
.
queuecommand
=
oakscsi_queue_command
,
...
...
@@ -115,6 +114,8 @@ static struct scsi_host_template oakscsi_template = {
.
cmd_per_lun
=
2
,
.
use_clustering
=
DISABLE_CLUSTERING
,
.
proc_name
=
"oakscsi"
,
.
cmd_size
=
NCR5380_CMD_SIZE
,
.
max_sectors
=
128
,
};
static
int
oakscsi_probe
(
struct
expansion_card
*
ec
,
const
struct
ecard_id
*
id
)
...
...
@@ -142,15 +143,21 @@ static int oakscsi_probe(struct expansion_card *ec, const struct ecard_id *id)
host
->
irq
=
NO_IRQ
;
host
->
n_io_port
=
255
;
NCR5380_init
(
host
,
0
);
ret
=
NCR5380_init
(
host
,
0
);
if
(
ret
)
goto
out_unmap
;
NCR5380_maybe_reset_bus
(
host
);
ret
=
scsi_add_host
(
host
,
&
ec
->
dev
);
if
(
ret
)
goto
out_
unmap
;
goto
out_
exit
;
scsi_scan_host
(
host
);
goto
out
;
out_exit:
NCR5380_exit
(
host
);
out_unmap:
iounmap
(
priv
(
host
)
->
base
);
unreg:
...
...
drivers/scsi/atari_NCR5380.c
浏览文件 @
60539fa3
此差异已折叠。
点击以展开。
drivers/scsi/atari_scsi.c
浏览文件 @
60539fa3
...
...
@@ -66,7 +66,6 @@
#include <linux/module.h>
#include <linux/types.h>
#include <linux/delay.h>
#include <linux/blkdev.h>
#include <linux/interrupt.h>
#include <linux/init.h>
...
...
@@ -98,7 +97,6 @@
#define NCR5380_queue_command atari_scsi_queue_command
#define NCR5380_abort atari_scsi_abort
#define NCR5380_show_info atari_scsi_show_info
#define NCR5380_info atari_scsi_info
#define NCR5380_dma_read_setup(instance, data, count) \
...
...
@@ -161,23 +159,10 @@ static inline unsigned long SCSI_DMA_GETADR(void)
return
adr
;
}
#define HOSTDATA_DMALEN (((struct NCR5380_hostdata *) \
(atari_scsi_host->hostdata))->dma_len)
/* Time (in jiffies) to wait after a reset; the SCSI standard calls for 250ms,
* we usually do 0.5s to be on the safe side. But Toshiba CD-ROMs once more
* need ten times the standard value... */
#ifndef CONFIG_ATARI_SCSI_TOSHIBA_DELAY
#define AFTER_RESET_DELAY (HZ/2)
#else
#define AFTER_RESET_DELAY (5*HZ/2)
#endif
#ifdef REAL_DMA
static
void
atari_scsi_fetch_restbytes
(
void
);
#endif
static
struct
Scsi_Host
*
atari_scsi_host
;
static
unsigned
char
(
*
atari_scsi_reg_read
)(
unsigned
char
reg
);
static
void
(
*
atari_scsi_reg_write
)(
unsigned
char
reg
,
unsigned
char
value
);
...
...
@@ -208,12 +193,12 @@ static int setup_cmd_per_lun = -1;
module_param
(
setup_cmd_per_lun
,
int
,
0
);
static
int
setup_sg_tablesize
=
-
1
;
module_param
(
setup_sg_tablesize
,
int
,
0
);
#ifdef SUPPORT_TAGS
static
int
setup_use_tagged_queuing
=
-
1
;
module_param
(
setup_use_tagged_queuing
,
int
,
0
);
#endif
static
int
setup_hostid
=
-
1
;
module_param
(
setup_hostid
,
int
,
0
);
static
int
setup_toshiba_delay
=
-
1
;
module_param
(
setup_toshiba_delay
,
int
,
0
);
#if defined(REAL_DMA)
...
...
@@ -273,15 +258,17 @@ static void scsi_dma_buserr(int irq, void *dummy)
#endif
static
irqreturn_t
scsi_tt_intr
(
int
irq
,
void
*
d
ummy
)
static
irqreturn_t
scsi_tt_intr
(
int
irq
,
void
*
d
ev
)
{
#ifdef REAL_DMA
struct
Scsi_Host
*
instance
=
dev
;
struct
NCR5380_hostdata
*
hostdata
=
shost_priv
(
instance
);
int
dma_stat
;
dma_stat
=
tt_scsi_dma
.
dma_ctrl
;
d
printk
(
NDEBUG_INTR
,
"scsi%d:
NCR5380 interrupt, DMA status = %02x
\n
"
,
atari_scsi_host
->
host_no
,
dma_stat
&
0xff
);
d
sprintk
(
NDEBUG_INTR
,
instance
,
"
NCR5380 interrupt, DMA status = %02x
\n
"
,
dma_stat
&
0xff
);
/* Look if it was the DMA that has interrupted: First possibility
* is that a bus error occurred...
...
...
@@ -304,7 +291,8 @@ static irqreturn_t scsi_tt_intr(int irq, void *dummy)
* data reg!
*/
if
((
dma_stat
&
0x02
)
&&
!
(
dma_stat
&
0x40
))
{
atari_dma_residual
=
HOSTDATA_DMALEN
-
(
SCSI_DMA_READ_P
(
dma_addr
)
-
atari_dma_startaddr
);
atari_dma_residual
=
hostdata
->
dma_len
-
(
SCSI_DMA_READ_P
(
dma_addr
)
-
atari_dma_startaddr
);
dprintk
(
NDEBUG_DMA
,
"SCSI DMA: There are %ld residual bytes.
\n
"
,
atari_dma_residual
);
...
...
@@ -356,15 +344,17 @@ static irqreturn_t scsi_tt_intr(int irq, void *dummy)
#endif
/* REAL_DMA */
NCR5380_intr
(
irq
,
d
ummy
);
NCR5380_intr
(
irq
,
d
ev
);
return
IRQ_HANDLED
;
}
static
irqreturn_t
scsi_falcon_intr
(
int
irq
,
void
*
d
ummy
)
static
irqreturn_t
scsi_falcon_intr
(
int
irq
,
void
*
d
ev
)
{
#ifdef REAL_DMA
struct
Scsi_Host
*
instance
=
dev
;
struct
NCR5380_hostdata
*
hostdata
=
shost_priv
(
instance
);
int
dma_stat
;
/* Turn off DMA and select sector counter register before
...
...
@@ -399,7 +389,7 @@ static irqreturn_t scsi_falcon_intr(int irq, void *dummy)
printk
(
KERN_ERR
"SCSI DMA error: %ld bytes lost in "
"ST-DMA fifo
\n
"
,
transferred
&
15
);
atari_dma_residual
=
HOSTDATA_DMALEN
-
transferred
;
atari_dma_residual
=
hostdata
->
dma_len
-
transferred
;
dprintk
(
NDEBUG_DMA
,
"SCSI DMA: There are %ld residual bytes.
\n
"
,
atari_dma_residual
);
}
else
...
...
@@ -411,13 +401,14 @@ static irqreturn_t scsi_falcon_intr(int irq, void *dummy)
* data to the original destination address.
*/
memcpy
(
atari_dma_orig_addr
,
phys_to_virt
(
atari_dma_startaddr
),
HOSTDATA_DMALEN
-
atari_dma_residual
);
hostdata
->
dma_len
-
atari_dma_residual
);
atari_dma_orig_addr
=
NULL
;
}
#endif
/* REAL_DMA */
NCR5380_intr
(
irq
,
dummy
);
NCR5380_intr
(
irq
,
dev
);
return
IRQ_HANDLED
;
}
...
...
@@ -488,7 +479,7 @@ static int __init atari_scsi_setup(char *str)
* Defaults depend on TT or Falcon, determined at run time.
* Negative values mean don't change.
*/
int
ints
[
6
];
int
ints
[
8
];
get_options
(
str
,
ARRAY_SIZE
(
ints
),
ints
);
...
...
@@ -504,10 +495,11 @@ static int __init atari_scsi_setup(char *str)
setup_sg_tablesize
=
ints
[
3
];
if
(
ints
[
0
]
>=
4
)
setup_hostid
=
ints
[
4
];
#ifdef SUPPORT_TAGS
if
(
ints
[
0
]
>=
5
)
setup_use_tagged_queuing
=
ints
[
5
];
#endif
/* ints[6] (use_pdma) is ignored */
if
(
ints
[
0
]
>=
7
)
setup_toshiba_delay
=
ints
[
7
];
return
1
;
}
...
...
@@ -516,38 +508,6 @@ __setup("atascsi=", atari_scsi_setup);
#endif
/* !MODULE */
#ifdef CONFIG_ATARI_SCSI_RESET_BOOT
static
void
__init
atari_scsi_reset_boot
(
void
)
{
unsigned
long
end
;
/*
* Do a SCSI reset to clean up the bus during initialization. No messing
* with the queues, interrupts, or locks necessary here.
*/
printk
(
"Atari SCSI: resetting the SCSI bus..."
);
/* get in phase */
NCR5380_write
(
TARGET_COMMAND_REG
,
PHASE_SR_TO_TCR
(
NCR5380_read
(
STATUS_REG
)));
/* assert RST */
NCR5380_write
(
INITIATOR_COMMAND_REG
,
ICR_BASE
|
ICR_ASSERT_RST
);
/* The min. reset hold time is 25us, so 40us should be enough */
udelay
(
50
);
/* reset RST and interrupt */
NCR5380_write
(
INITIATOR_COMMAND_REG
,
ICR_BASE
);
NCR5380_read
(
RESET_PARITY_INTERRUPT_REG
);
end
=
jiffies
+
AFTER_RESET_DELAY
;
while
(
time_before
(
jiffies
,
end
))
barrier
();
printk
(
" done
\n
"
);
}
#endif
#if defined(REAL_DMA)
static
unsigned
long
atari_scsi_dma_setup
(
struct
Scsi_Host
*
instance
,
...
...
@@ -815,14 +775,14 @@ static int atari_scsi_bus_reset(struct scsi_cmnd *cmd)
static
struct
scsi_host_template
atari_scsi_template
=
{
.
module
=
THIS_MODULE
,
.
proc_name
=
DRV_MODULE_NAME
,
.
show_info
=
atari_scsi_show_info
,
.
name
=
"Atari native SCSI"
,
.
info
=
atari_scsi_info
,
.
queuecommand
=
atari_scsi_queue_command
,
.
eh_abort_handler
=
atari_scsi_abort
,
.
eh_bus_reset_handler
=
atari_scsi_bus_reset
,
.
this_id
=
7
,
.
use_clustering
=
DISABLE_CLUSTERING
.
use_clustering
=
DISABLE_CLUSTERING
,
.
cmd_size
=
NCR5380_CMD_SIZE
,
};
static
int
__init
atari_scsi_probe
(
struct
platform_device
*
pdev
)
...
...
@@ -880,7 +840,7 @@ static int __init atari_scsi_probe(struct platform_device *pdev)
}
else
{
/* Test if a host id is set in the NVRam */
if
(
ATARIHW_PRESENT
(
TT_CLK
)
&&
nvram_check_checksum
())
{
unsigned
char
b
=
nvram_read_byte
(
1
4
);
unsigned
char
b
=
nvram_read_byte
(
1
6
);
/* Arbitration enabled? (for TOS)
* If yes, use configured host ID
...
...
@@ -915,21 +875,18 @@ static int __init atari_scsi_probe(struct platform_device *pdev)
error
=
-
ENOMEM
;
goto
fail_alloc
;
}
atari_scsi_host
=
instance
;
#ifdef CONFIG_ATARI_SCSI_RESET_BOOT
atari_scsi_reset_boot
();
#endif
instance
->
irq
=
irq
->
start
;
host_flags
|=
IS_A_TT
()
?
0
:
FLAG_LATE_DMA_SETUP
;
#ifdef SUPPORT_TAGS
host_flags
|=
setup_use_tagged_queuing
>
0
?
FLAG_TAGGED_QUEUING
:
0
;
#endif
host_flags
|=
setup_toshiba_delay
>
0
?
FLAG_TOSHIBA_DELAY
:
0
;
NCR5380_init
(
instance
,
host_flags
);
error
=
NCR5380_init
(
instance
,
host_flags
);
if
(
error
)
goto
fail_init
;
if
(
IS_A_TT
())
{
error
=
request_irq
(
instance
->
irq
,
scsi_tt_intr
,
0
,
...
...
@@ -975,6 +932,8 @@ static int __init atari_scsi_probe(struct platform_device *pdev)
#endif
}
NCR5380_maybe_reset_bus
(
instance
);
error
=
scsi_add_host
(
instance
,
NULL
);
if
(
error
)
goto
fail_host
;
...
...
@@ -989,6 +948,7 @@ static int __init atari_scsi_probe(struct platform_device *pdev)
free_irq
(
instance
->
irq
,
instance
);
fail_irq:
NCR5380_exit
(
instance
);
fail_init:
scsi_host_put
(
instance
);
fail_alloc:
if
(
atari_dma_buffer
)
...
...
drivers/scsi/cxgbi/cxgb3i/cxgb3i.c
浏览文件 @
60539fa3
...
...
@@ -57,7 +57,7 @@ MODULE_PARM_DESC(cxgb3i_snd_win, "TCP send window in bytes (default=128KB)");
static
int
cxgb3i_rx_credit_thres
=
10
*
1024
;
module_param
(
cxgb3i_rx_credit_thres
,
int
,
0644
);
MODULE_PARM_DESC
(
rx_credit_thres
,
MODULE_PARM_DESC
(
cxgb3i_
rx_credit_thres
,
"RX credits return threshold in bytes (default=10KB)"
);
static
unsigned
int
cxgb3i_max_connect
=
8
*
1024
;
...
...
drivers/scsi/dmx3191d.c
浏览文件 @
60539fa3
...
...
@@ -36,17 +36,10 @@
#define DONT_USE_INTR
#define NCR5380_read(reg) inb(port + reg)
#define NCR5380_write(reg, value) outb(value, port + reg)
#define NCR5380_read(reg) inb(
instance->io_
port + reg)
#define NCR5380_write(reg, value) outb(value,
instance->io_
port + reg)
#define NCR5380_implementation_fields
/* none */
#define NCR5380_local_declare() unsigned int port
#define NCR5380_setup(instance) port = instance->io_port
/*
* Includes needed for NCR5380.[ch] (XXX: Move them to NCR5380.h)
*/
#include <linux/delay.h>
#include "NCR5380.h"
#include "NCR5380.c"
...
...
@@ -56,6 +49,7 @@
static
struct
scsi_host_template
dmx3191d_driver_template
=
{
.
module
=
THIS_MODULE
,
.
proc_name
=
DMX3191D_DRIVER_NAME
,
.
name
=
"Domex DMX3191D"
,
.
info
=
NCR5380_info
,
...
...
@@ -67,6 +61,8 @@ static struct scsi_host_template dmx3191d_driver_template = {
.
sg_tablesize
=
SG_ALL
,
.
cmd_per_lun
=
2
,
.
use_clustering
=
DISABLE_CLUSTERING
,
.
cmd_size
=
NCR5380_CMD_SIZE
,
.
max_sectors
=
128
,
};
static
int
dmx3191d_probe_one
(
struct
pci_dev
*
pdev
,
...
...
@@ -97,17 +93,25 @@ static int dmx3191d_probe_one(struct pci_dev *pdev,
*/
shost
->
irq
=
NO_IRQ
;
NCR5380_init
(
shost
,
FLAG_NO_PSEUDO_DMA
|
FLAG_DTC3181E
);
error
=
NCR5380_init
(
shost
,
FLAG_NO_PSEUDO_DMA
);
if
(
error
)
goto
out_host_put
;
NCR5380_maybe_reset_bus
(
shost
);
pci_set_drvdata
(
pdev
,
shost
);
error
=
scsi_add_host
(
shost
,
&
pdev
->
dev
);
if
(
error
)
goto
out_
release_region
;
goto
out_
exit
;
scsi_scan_host
(
shost
);
return
0
;
out_exit:
NCR5380_exit
(
shost
);
out_host_put:
scsi_host_put
(
shost
);
out_release_region:
release_region
(
io
,
DMX3191D_REGION_LEN
);
out_disable_device:
...
...
@@ -119,15 +123,14 @@ static int dmx3191d_probe_one(struct pci_dev *pdev,
static
void
dmx3191d_remove_one
(
struct
pci_dev
*
pdev
)
{
struct
Scsi_Host
*
shost
=
pci_get_drvdata
(
pdev
);
unsigned
long
io
=
shost
->
io_port
;
scsi_remove_host
(
shost
);
NCR5380_exit
(
shost
);
release_region
(
shost
->
io_port
,
DMX3191D_REGION_LEN
);
pci_disable_device
(
pdev
);
scsi_host_put
(
shost
);
release_region
(
io
,
DMX3191D_REGION_LEN
);
pci_disable_device
(
pdev
);
}
static
struct
pci_device_id
dmx3191d_pci_tbl
[]
=
{
...
...
drivers/scsi/dtc.c
浏览文件 @
60539fa3
#define PSEUDO_DMA
#define DONT_USE_INTR
#define UNSAFE
/* Leave interrupts enabled during pseudo-dma I/O */
#define DMA_WORKS_RIGHT
/*
* DTC 3180/3280 driver, by
...
...
@@ -50,15 +46,13 @@
#include <linux/module.h>
#include <linux/signal.h>
#include <linux/blkdev.h>
#include <linux/delay.h>
#include <linux/stat.h>
#include <linux/string.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <scsi/scsi_host.h>
#include "dtc.h"
#define AUTOPROBE_IRQ
#include "NCR5380.h"
...
...
@@ -150,7 +144,7 @@ static const struct signature {
static
int
__init
dtc_setup
(
char
*
str
)
{
static
int
commandline_current
=
0
;
static
int
commandline_current
;
int
i
;
int
ints
[
10
];
...
...
@@ -188,7 +182,7 @@ __setup("dtc=", dtc_setup);
static
int
__init
dtc_detect
(
struct
scsi_host_template
*
tpnt
)
{
static
int
current_override
=
0
,
current_base
=
0
;
static
int
current_override
,
current_base
;
struct
Scsi_Host
*
instance
;
unsigned
int
addr
;
void
__iomem
*
base
;
...
...
@@ -205,9 +199,8 @@ static int __init dtc_detect(struct scsi_host_template * tpnt)
addr
=
0
;
}
else
for
(;
!
addr
&&
(
current_base
<
NO_BASES
);
++
current_base
)
{
#if (DTCDEBUG & DTCDEBUG_INIT)
printk
(
KERN_DEBUG
"scsi-dtc : probing address %08x
\n
"
,
bases
[
current_base
].
address
);
#endif
dprintk
(
NDEBUG_INIT
,
"dtc: probing address 0x%08x
\n
"
,
(
unsigned
int
)
bases
[
current_base
].
address
);
if
(
bases
[
current_base
].
noauto
)
continue
;
base
=
ioremap
(
bases
[
current_base
].
address
,
0x2000
);
...
...
@@ -216,18 +209,14 @@ static int __init dtc_detect(struct scsi_host_template * tpnt)
for
(
sig
=
0
;
sig
<
NO_SIGNATURES
;
++
sig
)
{
if
(
check_signature
(
base
+
signatures
[
sig
].
offset
,
signatures
[
sig
].
string
,
strlen
(
signatures
[
sig
].
string
)))
{
addr
=
bases
[
current_base
].
address
;
#if (DTCDEBUG & DTCDEBUG_INIT)
printk
(
KERN_DEBUG
"scsi-dtc : detected board.
\n
"
);
#endif
dprintk
(
NDEBUG_INIT
,
"dtc: detected board
\n
"
);
goto
found
;
}
}
iounmap
(
base
);
}
#if defined(DTCDEBUG) && (DTCDEBUG & DTCDEBUG_INIT)
printk
(
KERN_DEBUG
"scsi-dtc : base = %08x
\n
"
,
addr
);
#endif
dprintk
(
NDEBUG_INIT
,
"dtc: addr = 0x%08x
\n
"
,
addr
);
if
(
!
addr
)
break
;
...
...
@@ -235,12 +224,15 @@ static int __init dtc_detect(struct scsi_host_template * tpnt)
found:
instance
=
scsi_register
(
tpnt
,
sizeof
(
struct
NCR5380_hostdata
));
if
(
instance
==
NULL
)
break
;
goto
out_unmap
;
instance
->
base
=
addr
;
((
struct
NCR5380_hostdata
*
)(
instance
)
->
hostdata
)
->
base
=
base
;
NCR5380_init
(
instance
,
0
);
if
(
NCR5380_init
(
instance
,
FLAG_NO_DMA_FIXUP
))
goto
out_unregister
;
NCR5380_maybe_reset_bus
(
instance
);
NCR5380_write
(
DTC_CONTROL_REG
,
CSR_5380_INTR
);
/* Enable int's */
if
(
overrides
[
current_override
].
irq
!=
IRQ_AUTO
)
...
...
@@ -271,14 +263,19 @@ static int __init dtc_detect(struct scsi_host_template * tpnt)
printk
(
KERN_WARNING
"scsi%d : interrupts not used. Might as well not jumper it.
\n
"
,
instance
->
host_no
);
instance
->
irq
=
NO_IRQ
;
#endif
#if defined(DTCDEBUG) && (DTCDEBUG & DTCDEBUG_INIT)
printk
(
"scsi%d : irq = %d
\n
"
,
instance
->
host_no
,
instance
->
irq
);
#endif
dprintk
(
NDEBUG_INIT
,
"scsi%d : irq = %d
\n
"
,
instance
->
host_no
,
instance
->
irq
);
++
current_override
;
++
count
;
}
return
count
;
out_unregister:
scsi_unregister
(
instance
);
out_unmap:
iounmap
(
base
);
return
count
;
}
/*
...
...
@@ -331,12 +328,8 @@ static inline int NCR5380_pread(struct Scsi_Host *instance, unsigned char *dst,
unsigned
char
*
d
=
dst
;
int
i
;
/* For counting time spent in the poll-loop */
struct
NCR5380_hostdata
*
hostdata
=
shost_priv
(
instance
);
NCR5380_local_declare
();
NCR5380_setup
(
instance
);
i
=
0
;
NCR5380_read
(
RESET_PARITY_INTERRUPT_REG
);
NCR5380_write
(
MODE_REG
,
MR_ENABLE_EOP_INTR
|
MR_DMA_MODE
);
if
(
instance
->
irq
==
NO_IRQ
)
NCR5380_write
(
DTC_CONTROL_REG
,
CSR_DIR_READ
);
else
...
...
@@ -348,7 +341,7 @@ static inline int NCR5380_pread(struct Scsi_Host *instance, unsigned char *dst,
while
(
NCR5380_read
(
DTC_CONTROL_REG
)
&
CSR_HOST_BUF_NOT_RDY
)
++
i
;
rtrc
(
3
);
memcpy_fromio
(
d
,
base
+
DTC_DATA_BUF
,
128
);
memcpy_fromio
(
d
,
hostdata
->
base
+
DTC_DATA_BUF
,
128
);
d
+=
128
;
len
-=
128
;
rtrc
(
7
);
...
...
@@ -358,9 +351,7 @@ static inline int NCR5380_pread(struct Scsi_Host *instance, unsigned char *dst,
rtrc
(
4
);
while
(
!
(
NCR5380_read
(
DTC_CONTROL_REG
)
&
D_CR_ACCESS
))
++
i
;
NCR5380_write
(
MODE_REG
,
0
);
/* Clear the operating mode */
rtrc
(
0
);
NCR5380_read
(
RESET_PARITY_INTERRUPT_REG
);
if
(
i
>
hostdata
->
spin_max_r
)
hostdata
->
spin_max_r
=
i
;
return
(
0
);
...
...
@@ -383,12 +374,7 @@ static inline int NCR5380_pwrite(struct Scsi_Host *instance, unsigned char *src,
{
int
i
;
struct
NCR5380_hostdata
*
hostdata
=
shost_priv
(
instance
);
NCR5380_local_declare
();
NCR5380_setup
(
instance
);
NCR5380_read
(
RESET_PARITY_INTERRUPT_REG
);
NCR5380_write
(
MODE_REG
,
MR_ENABLE_EOP_INTR
|
MR_DMA_MODE
);
/* set direction (write) */
if
(
instance
->
irq
==
NO_IRQ
)
NCR5380_write
(
DTC_CONTROL_REG
,
0
);
else
...
...
@@ -400,7 +386,7 @@ static inline int NCR5380_pwrite(struct Scsi_Host *instance, unsigned char *src,
while
(
NCR5380_read
(
DTC_CONTROL_REG
)
&
CSR_HOST_BUF_NOT_RDY
)
++
i
;
rtrc
(
3
);
memcpy_toio
(
base
+
DTC_DATA_BUF
,
src
,
128
);
memcpy_toio
(
hostdata
->
base
+
DTC_DATA_BUF
,
src
,
128
);
src
+=
128
;
len
-=
128
;
}
...
...
@@ -413,47 +399,60 @@ static inline int NCR5380_pwrite(struct Scsi_Host *instance, unsigned char *src,
++
i
;
rtrc
(
7
);
/* Check for parity error here. fixme. */
NCR5380_write
(
MODE_REG
,
0
);
/* Clear the operating mode */
rtrc
(
0
);
if
(
i
>
hostdata
->
spin_max_w
)
hostdata
->
spin_max_w
=
i
;
return
(
0
);
}
static
int
dtc_dma_xfer_len
(
struct
scsi_cmnd
*
cmd
)
{
int
transfersize
=
cmd
->
transfersize
;
/* Limit transfers to 32K, for xx400 & xx406
* pseudoDMA that transfers in 128 bytes blocks.
*/
if
(
transfersize
>
32
*
1024
&&
cmd
->
SCp
.
this_residual
&&
!
(
cmd
->
SCp
.
this_residual
%
transfersize
))
transfersize
=
32
*
1024
;
return
transfersize
;
}
MODULE_LICENSE
(
"GPL"
);
#include "NCR5380.c"
static
int
dtc_release
(
struct
Scsi_Host
*
shost
)
{
NCR5380_local_declare
(
);
NCR5380_setup
(
shost
);
struct
NCR5380_hostdata
*
hostdata
=
shost_priv
(
shost
);
if
(
shost
->
irq
!=
NO_IRQ
)
free_irq
(
shost
->
irq
,
shost
);
NCR5380_exit
(
shost
);
if
(
shost
->
io_port
&&
shost
->
n_io_port
)
release_region
(
shost
->
io_port
,
shost
->
n_io_port
);
scsi_unregister
(
shost
);
iounmap
(
base
);
iounmap
(
hostdata
->
base
);
return
0
;
}
static
struct
scsi_host_template
driver_template
=
{
.
name
=
"DTC 3180/3280 "
,
.
detect
=
dtc_detect
,
.
release
=
dtc_release
,
.
proc_name
=
"dtc3x80"
,
.
show_info
=
dtc_show_info
,
.
write_info
=
dtc_write_info
,
.
info
=
dtc_info
,
.
queuecommand
=
dtc_queue_command
,
.
eh_abort_handler
=
dtc_abort
,
.
eh_bus_reset_handler
=
dtc_bus_reset
,
.
bios_param
=
dtc_biosparam
,
.
can_queue
=
CAN_QUEUE
,
.
this_id
=
7
,
.
sg_tablesize
=
SG_ALL
,
.
cmd_per_lun
=
CMD_PER_LUN
,
.
use_clustering
=
DISABLE_CLUSTERING
,
.
name
=
"DTC 3180/3280"
,
.
detect
=
dtc_detect
,
.
release
=
dtc_release
,
.
proc_name
=
"dtc3x80"
,
.
show_info
=
dtc_show_info
,
.
write_info
=
dtc_write_info
,
.
info
=
dtc_info
,
.
queuecommand
=
dtc_queue_command
,
.
eh_abort_handler
=
dtc_abort
,
.
eh_bus_reset_handler
=
dtc_bus_reset
,
.
bios_param
=
dtc_biosparam
,
.
can_queue
=
32
,
.
this_id
=
7
,
.
sg_tablesize
=
SG_ALL
,
.
cmd_per_lun
=
2
,
.
use_clustering
=
DISABLE_CLUSTERING
,
.
cmd_size
=
NCR5380_CMD_SIZE
,
.
max_sectors
=
128
,
};
#include "scsi_module.c"
drivers/scsi/dtc.h
浏览文件 @
60539fa3
...
...
@@ -10,54 +10,17 @@
#ifndef DTC3280_H
#define DTC3280_H
#define DTCDEBUG 0
#define DTCDEBUG_INIT 0x1
#define DTCDEBUG_TRANSFER 0x2
#ifndef CMD_PER_LUN
#define CMD_PER_LUN 2
#endif
#ifndef CAN_QUEUE
#define CAN_QUEUE 32
#endif
#define NCR5380_implementation_fields \
void __iomem *base
#define NCR5380_local_declare() \
void __iomem *base
#define NCR5380_setup(instance) \
base = ((struct NCR5380_hostdata *)(instance)->hostdata)->base
#define DTC_address(reg) \
(((struct NCR5380_hostdata *)shost_priv(instance))->base + DTC_5380_OFFSET + reg)
#define DTC_address(reg) (base + DTC_5380_OFFSET + reg)
#define dbNCR5380_read(reg) \
(rval=readb(DTC_address(reg)), \
(((unsigned char) printk("DTC : read register %d at addr %p is: %02x\n"\
, (reg), DTC_address(reg), rval)), rval ) )
#define dbNCR5380_write(reg, value) do { \
printk("DTC : write %02x to register %d at address %p\n", \
(value), (reg), DTC_address(reg)); \
writeb(value, DTC_address(reg));} while(0)
#if !(DTCDEBUG & DTCDEBUG_TRANSFER)
#define NCR5380_read(reg) (readb(DTC_address(reg)))
#define NCR5380_write(reg, value) (writeb(value, DTC_address(reg)))
#else
#define NCR5380_read(reg) (readb(DTC_address(reg)))
#define xNCR5380_read(reg) \
(((unsigned char) printk("DTC : read register %d at address %p\n"\
, (reg), DTC_address(reg))), readb(DTC_address(reg)))
#define NCR5380_write(reg, value) do { \
printk("DTC : write %02x to register %d at address %p\n", \
(value), (reg), DTC_address(reg)); \
writeb(value, DTC_address(reg));} while(0)
#endif
#define NCR5380_dma_xfer_len(instance, cmd, phase) \
dtc_dma_xfer_len(cmd)
#define NCR5380_intr dtc_intr
#define NCR5380_queue_command dtc_queue_command
...
...
drivers/scsi/g_NCR5380.c
浏览文件 @
60539fa3
此差异已折叠。
点击以展开。
drivers/scsi/g_NCR5380.h
浏览文件 @
60539fa3
...
...
@@ -14,81 +14,67 @@
#ifndef GENERIC_NCR5380_H
#define GENERIC_NCR5380_H
#ifdef NCR53C400
#ifdef
CONFIG_SCSI_GENERIC_
NCR53C400
#define BIOSPARAM
#define NCR5380_BIOSPARAM generic_NCR5380_biosparam
#else
#define NCR5380_BIOSPARAM NULL
#endif
#ifndef ASM
#ifndef CMD_PER_LUN
#define CMD_PER_LUN 2
#endif
#ifndef CAN_QUEUE
#define CAN_QUEUE 16
#endif
#define __STRVAL(x) #x
#define STRVAL(x) __STRVAL(x)
#ifndef SCSI_G_NCR5380_MEM
#define DRV_MODULE_NAME "g_NCR5380"
#define NCR5380_map_config port
#define NCR5380_map_type int
#define NCR5380_map_name port
#define NCR5380_instance_name io_port
#define NCR53C400_register_offset 0
#define NCR53C400_address_adjust 8
#ifdef NCR53C400
#ifdef
CONFIG_SCSI_GENERIC_
NCR53C400
#define NCR5380_region_size 16
#else
#define NCR5380_region_size 8
#endif
#define NCR5380_read(reg) (inb(NCR5380_map_name + (reg)))
#define NCR5380_write(reg, value) (outb((value), (NCR5380_map_name + (reg))))
#define NCR5380_read(reg) \
inb(instance->io_port + (reg))
#define NCR5380_write(reg, value) \
outb(value, instance->io_port + (reg))
#define NCR5380_implementation_fields \
NCR5380_map_type NCR5380_map_name
#define NCR5380_local_declare() \
register NCR5380_implementation_fields
#define NCR5380_setup(instance) \
NCR5380_map_name = (NCR5380_map_type)((instance)->NCR5380_instance_name)
int c400_ctl_status; \
int c400_blk_cnt; \
int c400_host_buf; \
int io_width;
#else
/* therefore SCSI_G_NCR5380_MEM */
#define DRV_MODULE_NAME "g_NCR5380_mmio"
#define NCR5380_map_config memory
#define NCR5380_map_type unsigned long
#define NCR5380_map_name base
#define NCR5380_instance_name base
#define NCR53C400_register_offset 0x108
#define NCR53C400_address_adjust 0
#define NCR53C400_mem_base 0x3880
#define NCR53C400_host_buffer 0x3900
#define NCR5380_region_size 0x3a00
#define NCR5380_read(reg) readb(iomem + NCR53C400_mem_base + (reg))
#define NCR5380_write(reg, value) writeb(value, iomem + NCR53C400_mem_base + (reg))
#define NCR5380_read(reg) \
readb(((struct NCR5380_hostdata *)shost_priv(instance))->iomem + \
NCR53C400_mem_base + (reg))
#define NCR5380_write(reg, value) \
writeb(value, ((struct NCR5380_hostdata *)shost_priv(instance))->iomem + \
NCR53C400_mem_base + (reg))
#define NCR5380_implementation_fields \
NCR5380_map_type NCR5380_map_name; \
void __iomem *iomem;
#define NCR5380_local_declare() \
register void __iomem *iomem
#define NCR5380_setup(instance) \
iomem = (((struct NCR5380_hostdata *)(instance)->hostdata)->iomem)
void __iomem *iomem; \
int c400_ctl_status; \
int c400_blk_cnt; \
int c400_host_buf;
#endif
#define NCR5380_dma_xfer_len(instance, cmd, phase) \
generic_NCR5380_dma_xfer_len(cmd)
#define NCR5380_intr generic_NCR5380_intr
#define NCR5380_queue_command generic_NCR5380_queue_command
#define NCR5380_abort generic_NCR5380_abort
...
...
@@ -102,7 +88,7 @@
#define BOARD_NCR53C400 1
#define BOARD_NCR53C400A 2
#define BOARD_DTC3181E 3
#define BOARD_HP_C2502 4
#endif
/* ndef ASM */
#endif
/* GENERIC_NCR5380_H */
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
浏览文件 @
60539fa3
此差异已折叠。
点击以展开。
drivers/scsi/imm.c
浏览文件 @
60539fa3
此差异已折叠。
点击以展开。
drivers/scsi/ipr.c
浏览文件 @
60539fa3
...
...
@@ -4003,13 +4003,12 @@ static ssize_t ipr_store_update_fw(struct device *dev,
struct
ipr_sglist
*
sglist
;
char
fname
[
100
];
char
*
src
;
int
len
,
result
,
dnld_size
;
int
result
,
dnld_size
;
if
(
!
capable
(
CAP_SYS_ADMIN
))
return
-
EACCES
;
len
=
snprintf
(
fname
,
99
,
"%s"
,
buf
);
fname
[
len
-
1
]
=
'\0'
;
snprintf
(
fname
,
sizeof
(
fname
),
"%s"
,
buf
);
if
(
request_firmware
(
&
fw_entry
,
fname
,
&
ioa_cfg
->
pdev
->
dev
))
{
dev_err
(
&
ioa_cfg
->
pdev
->
dev
,
"Firmware file %s not found
\n
"
,
fname
);
...
...
drivers/scsi/mac_scsi.c
浏览文件 @
60539fa3
此差异已折叠。
点击以展开。
drivers/scsi/megaraid/megaraid_mm.c
浏览文件 @
60539fa3
...
...
@@ -179,8 +179,12 @@ mraid_mm_ioctl(struct file *filep, unsigned int cmd, unsigned long arg)
/*
* The following call will block till a kioc is available
* or return NULL if the list head is empty for the pointer
* of type mraid_mmapt passed to mraid_mm_alloc_kioc
*/
kioc
=
mraid_mm_alloc_kioc
(
adp
);
if
(
!
kioc
)
return
-
ENXIO
;
/*
* User sent the old mimd_t ioctl packet. Convert it to uioc_t.
...
...
drivers/scsi/pas16.c
浏览文件 @
60539fa3
此差异已折叠。
点击以展开。
drivers/scsi/pas16.h
浏览文件 @
60539fa3
此差异已折叠。
点击以展开。
drivers/scsi/scsi_devinfo.c
浏览文件 @
60539fa3
...
...
@@ -227,6 +227,7 @@ static struct {
{
"Promise"
,
"VTrak E610f"
,
NULL
,
BLIST_SPARSELUN
|
BLIST_NO_RSOC
},
{
"Promise"
,
""
,
NULL
,
BLIST_SPARSELUN
},
{
"QNAP"
,
"iSCSI Storage"
,
NULL
,
BLIST_MAX_1024
},
{
"SYNOLOGY"
,
"iSCSI Storage"
,
NULL
,
BLIST_MAX_1024
},
{
"QUANTUM"
,
"XP34301"
,
"1071"
,
BLIST_NOTQ
},
{
"REGAL"
,
"CDC-4X"
,
NULL
,
BLIST_MAX5LUN
|
BLIST_SINGLELUN
},
{
"SanDisk"
,
"ImageMate CF-SD1"
,
NULL
,
BLIST_FORCELUN
},
...
...
drivers/scsi/storvsc_drv.c
浏览文件 @
60539fa3
...
...
@@ -390,7 +390,7 @@ module_param(storvsc_ringbuffer_size, int, S_IRUGO);
MODULE_PARM_DESC
(
storvsc_ringbuffer_size
,
"Ring buffer size (bytes)"
);
module_param
(
storvsc_vcpus_per_sub_channel
,
int
,
S_IRUGO
);
MODULE_PARM_DESC
(
vcpus_per_sub_channel
,
"Ratio of VCPUs to subchannels"
);
MODULE_PARM_DESC
(
storvsc_
vcpus_per_sub_channel
,
"Ratio of VCPUs to subchannels"
);
/*
* Timeout in seconds for all devices managed by this driver.
*/
...
...
drivers/scsi/sun3_scsi.c
浏览文件 @
60539fa3
此差异已折叠。
点击以展开。
drivers/scsi/t128.c
浏览文件 @
60539fa3
此差异已折叠。
点击以展开。
drivers/scsi/t128.h
浏览文件 @
60539fa3
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录