Commit b56061b0 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi

Pull more SCSI updates from James Bottomley:
 "This is just a set of minor updates and fixes which weren't quite
  ready in time for the first pull request.

  The only real thing of note is Mike Christie is stepping down as
  Maintainer of iscsi to be replaced by Lee Duncan and Chris Leech"

* tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
  scsi: ufs: Kconfig fix
  scsi: g_NCR5380: Stop using scsi_module.c
  scsi: g_NCR5380: Reduce overrides[] from array to struct
  scsi: g_NCR5380: Remove deprecated __setup
  scsi: ufs: Fix error return code in ufshcd_init()
  scsi: ufs: Data Segment only needed for WRITE DESCRIPTOR
  scsi: cxgb4i: Set completion bit in work request
  MAINTAINERS: Update open-iscsi maintainers
  scsi: ufs: Enable no vccq quirk for skhynix device
  scsi: be2iscsi: mark symbols static where possible
parents 49606342 5404fb7c
...@@ -21,16 +21,6 @@ NCR53c400 card, the Trantor T130B in its default configuration: ...@@ -21,16 +21,6 @@ NCR53c400 card, the Trantor T130B in its default configuration:
The NCR53c400 does not support DMA but it does have Pseudo-DMA which is The NCR53c400 does not support DMA but it does have Pseudo-DMA which is
supported by the driver. supported by the driver.
If the default configuration does not work for you, you can use the kernel
command lines (eg using the lilo append command):
ncr5380=addr,irq
ncr53c400=addr,irq
ncr53c400a=addr,irq
dtc3181e=addr,irq
The driver does not probe for any addresses or ports other than those in
the OVERRIDE or given to the kernel as above.
This driver provides some information on what it has detected in This driver provides some information on what it has detected in
/proc/scsi/g_NCR5380/x where x is the scsi card number as detected at boot /proc/scsi/g_NCR5380/x where x is the scsi card number as detected at boot
time. More info to come in the future. time. More info to come in the future.
...@@ -38,6 +28,16 @@ time. More info to come in the future. ...@@ -38,6 +28,16 @@ time. More info to come in the future.
This driver works as a module. This driver works as a module.
When included as a module, parameters can be passed on the insmod/modprobe When included as a module, parameters can be passed on the insmod/modprobe
command line: command line:
irq=xx[,...] the interrupt(s)
base=xx[,...] the port or base address(es) (for port or memory mapped, resp.)
card=xx[,...] card type(s):
0 = NCR5380,
1 = NCR53C400,
2 = NCR53C400A,
3 = Domex Technology Corp 3181E (DTC3181E)
4 = Hewlett Packard C2502
These old-style parameters can support only one card:
ncr_irq=xx the interrupt ncr_irq=xx the interrupt
ncr_addr=xx the port or base address (for port or memory ncr_addr=xx the port or base address (for port or memory
mapped, resp.) mapped, resp.)
...@@ -46,11 +46,19 @@ command line: ...@@ -46,11 +46,19 @@ command line:
ncr_53c400a=1 to set up for a NCR53C400A board ncr_53c400a=1 to set up for a NCR53C400A board
dtc_3181e=1 to set up for a Domex Technology Corp 3181E board dtc_3181e=1 to set up for a Domex Technology Corp 3181E board
hp_c2502=1 to set up for a Hewlett Packard C2502 board hp_c2502=1 to set up for a Hewlett Packard C2502 board
e.g. e.g.
modprobe g_NCR5380 ncr_irq=5 ncr_addr=0x350 ncr_5380=1 OLD: modprobe g_NCR5380 ncr_irq=5 ncr_addr=0x350 ncr_5380=1
NEW: modprobe g_NCR5380 irq=5 base=0x350 card=0
for a port mapped NCR5380 board or for a port mapped NCR5380 board or
modprobe g_NCR5380 ncr_irq=255 ncr_addr=0xc8000 ncr_53c400=1
for a memory mapped NCR53C400 board with interrupts disabled. OLD: modprobe g_NCR5380 ncr_irq=255 ncr_addr=0xc8000 ncr_53c400=1
NEW: modprobe g_NCR5380 irq=255 base=0xc8000 card=1
for a memory mapped NCR53C400 board with interrupts disabled or
NEW: modprobe g_NCR5380 irq=0,7 base=0x240,0x300 card=3,4
for two cards: DTC3181 (in non-PnP mode) at 0x240 with no IRQ
and HP C2502 at 0x300 with IRQ 7
(255 should be specified for no or DMA interrupt, 254 to autoprobe for an (255 should be specified for no or DMA interrupt, 254 to autoprobe for an
IRQ line if overridden on the command line.) IRQ line if overridden on the command line.)
......
...@@ -6620,10 +6620,10 @@ S: Maintained ...@@ -6620,10 +6620,10 @@ S: Maintained
F: drivers/firmware/iscsi_ibft* F: drivers/firmware/iscsi_ibft*
ISCSI ISCSI
M: Mike Christie <michaelc@cs.wisc.edu> M: Lee Duncan <lduncan@suse.com>
M: Chris Leech <cleech@redhat.com>
L: open-iscsi@googlegroups.com L: open-iscsi@googlegroups.com
W: www.open-iscsi.org W: www.open-iscsi.com
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mnc/linux-2.6-iscsi.git
S: Maintained S: Maintained
F: drivers/scsi/*iscsi* F: drivers/scsi/*iscsi*
F: include/scsi/*iscsi* F: include/scsi/*iscsi*
......
...@@ -61,7 +61,7 @@ MODULE_PARM_DESC(be_max_phys_size, ...@@ -61,7 +61,7 @@ MODULE_PARM_DESC(be_max_phys_size,
"memory that can be allocated. Range is 16 - 128"); "memory that can be allocated. Range is 16 - 128");
#define beiscsi_disp_param(_name)\ #define beiscsi_disp_param(_name)\
ssize_t \ static ssize_t \
beiscsi_##_name##_disp(struct device *dev,\ beiscsi_##_name##_disp(struct device *dev,\
struct device_attribute *attrib, char *buf) \ struct device_attribute *attrib, char *buf) \
{ \ { \
...@@ -74,7 +74,7 @@ beiscsi_##_name##_disp(struct device *dev,\ ...@@ -74,7 +74,7 @@ beiscsi_##_name##_disp(struct device *dev,\
} }
#define beiscsi_change_param(_name, _minval, _maxval, _defaval)\ #define beiscsi_change_param(_name, _minval, _maxval, _defaval)\
int \ static int \
beiscsi_##_name##_change(struct beiscsi_hba *phba, uint32_t val)\ beiscsi_##_name##_change(struct beiscsi_hba *phba, uint32_t val)\
{\ {\
if (val >= _minval && val <= _maxval) {\ if (val >= _minval && val <= _maxval) {\
...@@ -93,7 +93,7 @@ beiscsi_##_name##_change(struct beiscsi_hba *phba, uint32_t val)\ ...@@ -93,7 +93,7 @@ beiscsi_##_name##_change(struct beiscsi_hba *phba, uint32_t val)\
} }
#define beiscsi_store_param(_name) \ #define beiscsi_store_param(_name) \
ssize_t \ static ssize_t \
beiscsi_##_name##_store(struct device *dev,\ beiscsi_##_name##_store(struct device *dev,\
struct device_attribute *attr, const char *buf,\ struct device_attribute *attr, const char *buf,\
size_t count) \ size_t count) \
...@@ -112,7 +112,7 @@ beiscsi_##_name##_store(struct device *dev,\ ...@@ -112,7 +112,7 @@ beiscsi_##_name##_store(struct device *dev,\
} }
#define beiscsi_init_param(_name, _minval, _maxval, _defval) \ #define beiscsi_init_param(_name, _minval, _maxval, _defval) \
int \ static int \
beiscsi_##_name##_init(struct beiscsi_hba *phba, uint32_t val) \ beiscsi_##_name##_init(struct beiscsi_hba *phba, uint32_t val) \
{ \ { \
if (val >= _minval && val <= _maxval) {\ if (val >= _minval && val <= _maxval) {\
...@@ -4584,7 +4584,7 @@ static int beiscsi_alloc_pdu(struct iscsi_task *task, uint8_t opcode) ...@@ -4584,7 +4584,7 @@ static int beiscsi_alloc_pdu(struct iscsi_task *task, uint8_t opcode)
io_task->cmd_bhs = NULL; io_task->cmd_bhs = NULL;
return -ENOMEM; return -ENOMEM;
} }
int beiscsi_iotask_v2(struct iscsi_task *task, struct scatterlist *sg, static int beiscsi_iotask_v2(struct iscsi_task *task, struct scatterlist *sg,
unsigned int num_sg, unsigned int xferlen, unsigned int num_sg, unsigned int xferlen,
unsigned int writedir) unsigned int writedir)
{ {
...@@ -4973,7 +4973,7 @@ static int beiscsi_bsg_request(struct bsg_job *job) ...@@ -4973,7 +4973,7 @@ static int beiscsi_bsg_request(struct bsg_job *job)
return rc; return rc;
} }
void beiscsi_hba_attrs_init(struct beiscsi_hba *phba) static void beiscsi_hba_attrs_init(struct beiscsi_hba *phba)
{ {
/* Set the logging parameter */ /* Set the logging parameter */
beiscsi_log_enable_init(phba, beiscsi_log_enable); beiscsi_log_enable_init(phba, beiscsi_log_enable);
......
...@@ -685,6 +685,11 @@ static int push_tx_frames(struct cxgbi_sock *csk, int req_completion) ...@@ -685,6 +685,11 @@ static int push_tx_frames(struct cxgbi_sock *csk, int req_completion)
req_completion); req_completion);
csk->snd_nxt += len; csk->snd_nxt += len;
cxgbi_skcb_clear_flag(skb, SKCBF_TX_NEED_HDR); cxgbi_skcb_clear_flag(skb, SKCBF_TX_NEED_HDR);
} else if (cxgbi_skcb_test_flag(skb, SKCBF_TX_FLAG_COMPL) &&
(csk->wr_una_cred >= (csk->wr_max_cred / 2))) {
struct cpl_close_con_req *req =
(struct cpl_close_con_req *)skb->data;
req->wr.wr_hi |= htonl(FW_WR_COMPL_F);
} }
total_size += skb->truesize; total_size += skb->truesize;
t4_set_arp_err_handler(skb, csk, arp_failure_skb_discard); t4_set_arp_err_handler(skb, csk, arp_failure_skb_discard);
......
This diff is collapsed.
...@@ -14,15 +14,9 @@ ...@@ -14,15 +14,9 @@
#ifndef GENERIC_NCR5380_H #ifndef GENERIC_NCR5380_H
#define GENERIC_NCR5380_H #define GENERIC_NCR5380_H
#define __STRVAL(x) #x
#define STRVAL(x) __STRVAL(x)
#ifndef SCSI_G_NCR5380_MEM #ifndef SCSI_G_NCR5380_MEM
#define DRV_MODULE_NAME "g_NCR5380" #define DRV_MODULE_NAME "g_NCR5380"
#define NCR5380_map_type int
#define NCR5380_map_name port
#define NCR5380_read(reg) \ #define NCR5380_read(reg) \
inb(instance->io_port + (reg)) inb(instance->io_port + (reg))
#define NCR5380_write(reg, value) \ #define NCR5380_write(reg, value) \
...@@ -38,8 +32,6 @@ ...@@ -38,8 +32,6 @@
/* therefore SCSI_G_NCR5380_MEM */ /* therefore SCSI_G_NCR5380_MEM */
#define DRV_MODULE_NAME "g_NCR5380_mmio" #define DRV_MODULE_NAME "g_NCR5380_mmio"
#define NCR5380_map_type unsigned long
#define NCR5380_map_name base
#define NCR53C400_mem_base 0x3880 #define NCR53C400_mem_base 0x3880
#define NCR53C400_host_buffer 0x3900 #define NCR53C400_host_buffer 0x3900
#define NCR53C400_region_size 0x3a00 #define NCR53C400_region_size 0x3a00
......
...@@ -63,7 +63,7 @@ config SCSI_UFSHCD_PCI ...@@ -63,7 +63,7 @@ config SCSI_UFSHCD_PCI
config SCSI_UFS_DWC_TC_PCI config SCSI_UFS_DWC_TC_PCI
tristate "DesignWare pci support using a G210 Test Chip" tristate "DesignWare pci support using a G210 Test Chip"
depends on SCSI_UFSHCD && PCI depends on SCSI_UFSHCD_PCI
---help--- ---help---
Synopsys Test Chip is a PHY for prototyping purposes. Synopsys Test Chip is a PHY for prototyping purposes.
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#define UFS_VENDOR_TOSHIBA 0x198 #define UFS_VENDOR_TOSHIBA 0x198
#define UFS_VENDOR_SAMSUNG 0x1CE #define UFS_VENDOR_SAMSUNG 0x1CE
#define UFS_VENDOR_SKHYNIX 0x1AD
/** /**
* ufs_device_info - ufs device details * ufs_device_info - ufs device details
...@@ -145,6 +146,7 @@ static struct ufs_dev_fix ufs_fixups[] = { ...@@ -145,6 +146,7 @@ static struct ufs_dev_fix ufs_fixups[] = {
UFS_DEVICE_QUIRK_PA_TACTIVATE), UFS_DEVICE_QUIRK_PA_TACTIVATE),
UFS_FIX(UFS_VENDOR_TOSHIBA, "THGLF2G9D8KBADG", UFS_FIX(UFS_VENDOR_TOSHIBA, "THGLF2G9D8KBADG",
UFS_DEVICE_QUIRK_PA_TACTIVATE), UFS_DEVICE_QUIRK_PA_TACTIVATE),
UFS_FIX(UFS_VENDOR_SKHYNIX, UFS_ANY_MODEL, UFS_DEVICE_NO_VCCQ),
END_FIX END_FIX
}; };
......
...@@ -1266,9 +1266,12 @@ static void ufshcd_prepare_utp_query_req_upiu(struct ufs_hba *hba, ...@@ -1266,9 +1266,12 @@ static void ufshcd_prepare_utp_query_req_upiu(struct ufs_hba *hba,
ucd_req_ptr->header.dword_1 = UPIU_HEADER_DWORD( ucd_req_ptr->header.dword_1 = UPIU_HEADER_DWORD(
0, query->request.query_func, 0, 0); 0, query->request.query_func, 0, 0);
/* Data segment length */ /* Data segment length only need for WRITE_DESC */
ucd_req_ptr->header.dword_2 = UPIU_HEADER_DWORD( if (query->request.upiu_req.opcode == UPIU_QUERY_OPCODE_WRITE_DESC)
0, 0, len >> 8, (u8)len); ucd_req_ptr->header.dword_2 =
UPIU_HEADER_DWORD(0, 0, (len >> 8), (u8)len);
else
ucd_req_ptr->header.dword_2 = 0;
/* Copy the Query Request buffer as is */ /* Copy the Query Request buffer as is */
memcpy(&ucd_req_ptr->qr, &query->request.upiu_req, memcpy(&ucd_req_ptr->qr, &query->request.upiu_req,
...@@ -6500,6 +6503,7 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq) ...@@ -6500,6 +6503,7 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq)
if (IS_ERR(hba->devfreq)) { if (IS_ERR(hba->devfreq)) {
dev_err(hba->dev, "Unable to register with devfreq %ld\n", dev_err(hba->dev, "Unable to register with devfreq %ld\n",
PTR_ERR(hba->devfreq)); PTR_ERR(hba->devfreq));
err = PTR_ERR(hba->devfreq);
goto out_remove_scsi_host; goto out_remove_scsi_host;
} }
/* Suspend devfreq until the UFS device is detected */ /* Suspend devfreq until the UFS device is detected */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment