aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/ps3rom.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/ps3rom.c')
-rw-r--r--drivers/scsi/ps3rom.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/drivers/scsi/ps3rom.c b/drivers/scsi/ps3rom.c
index b50f1e14f2a5..0f43d1d046d9 100644
--- a/drivers/scsi/ps3rom.c
+++ b/drivers/scsi/ps3rom.c
@@ -100,16 +100,16 @@ static int fill_from_dev_buffer(struct scsi_cmnd *cmd, const void *buf)
100 struct scatterlist *sgpnt; 100 struct scatterlist *sgpnt;
101 unsigned int buflen; 101 unsigned int buflen;
102 102
103 buflen = cmd->request_bufflen; 103 buflen = scsi_bufflen(cmd);
104 if (!buflen) 104 if (!buflen)
105 return 0; 105 return 0;
106 106
107 if (!cmd->request_buffer) 107 if (!scsi_sglist(cmd))
108 return -1; 108 return -1;
109 109
110 sgpnt = cmd->request_buffer;
111 active = 1; 110 active = 1;
112 for (k = 0, req_len = 0, act_len = 0; k < cmd->use_sg; ++k, ++sgpnt) { 111 req_len = act_len = 0;
112 scsi_for_each_sg(cmd, sgpnt, scsi_sg_count(cmd), k) {
113 if (active) { 113 if (active) {
114 kaddr = kmap_atomic(sgpnt->page, KM_IRQ0); 114 kaddr = kmap_atomic(sgpnt->page, KM_IRQ0);
115 len = sgpnt->length; 115 len = sgpnt->length;
@@ -124,7 +124,7 @@ static int fill_from_dev_buffer(struct scsi_cmnd *cmd, const void *buf)
124 } 124 }
125 req_len += sgpnt->length; 125 req_len += sgpnt->length;
126 } 126 }
127 cmd->resid = req_len - act_len; 127 scsi_set_resid(cmd, req_len - act_len);
128 return 0; 128 return 0;
129} 129}
130 130
@@ -138,15 +138,15 @@ static int fetch_to_dev_buffer(struct scsi_cmnd *cmd, void *buf)
138 struct scatterlist *sgpnt; 138 struct scatterlist *sgpnt;
139 unsigned int buflen; 139 unsigned int buflen;
140 140
141 buflen = cmd->request_bufflen; 141 buflen = scsi_bufflen(cmd);
142 if (!buflen) 142 if (!buflen)
143 return 0; 143 return 0;
144 144
145 if (!cmd->request_buffer) 145 if (!scsi_sglist(cmd))
146 return -1; 146 return -1;
147 147
148 sgpnt = cmd->request_buffer; 148 req_len = fin = 0;
149 for (k = 0, req_len = 0, fin = 0; k < cmd->use_sg; ++k, ++sgpnt) { 149 scsi_for_each_sg(cmd, sgpnt, scsi_sg_count(cmd), k) {
150 kaddr = kmap_atomic(sgpnt->page, KM_IRQ0); 150 kaddr = kmap_atomic(sgpnt->page, KM_IRQ0);
151 len = sgpnt->length; 151 len = sgpnt->length;
152 if ((req_len + len) > buflen) { 152 if ((req_len + len) > buflen) {
@@ -177,12 +177,12 @@ static int ps3rom_atapi_request(struct ps3_storage_device *dev,
177 memcpy(&atapi_cmnd.pkt, cmd->cmnd, 12); 177 memcpy(&atapi_cmnd.pkt, cmd->cmnd, 12);
178 atapi_cmnd.pktlen = 12; 178 atapi_cmnd.pktlen = 12;
179 atapi_cmnd.block_size = 1; /* transfer size is block_size * blocks */ 179 atapi_cmnd.block_size = 1; /* transfer size is block_size * blocks */
180 atapi_cmnd.blocks = atapi_cmnd.arglen = cmd->request_bufflen; 180 atapi_cmnd.blocks = atapi_cmnd.arglen = scsi_bufflen(cmd);
181 atapi_cmnd.buffer = dev->bounce_lpar; 181 atapi_cmnd.buffer = dev->bounce_lpar;
182 182
183 switch (cmd->sc_data_direction) { 183 switch (cmd->sc_data_direction) {
184 case DMA_FROM_DEVICE: 184 case DMA_FROM_DEVICE:
185 if (cmd->request_bufflen >= CD_FRAMESIZE) 185 if (scsi_bufflen(cmd) >= CD_FRAMESIZE)
186 atapi_cmnd.proto = DMA_PROTO; 186 atapi_cmnd.proto = DMA_PROTO;
187 else 187 else
188 atapi_cmnd.proto = PIO_DATA_IN_PROTO; 188 atapi_cmnd.proto = PIO_DATA_IN_PROTO;
@@ -190,7 +190,7 @@ static int ps3rom_atapi_request(struct ps3_storage_device *dev,
190 break; 190 break;
191 191
192 case DMA_TO_DEVICE: 192 case DMA_TO_DEVICE:
193 if (cmd->request_bufflen >= CD_FRAMESIZE) 193 if (scsi_bufflen(cmd) >= CD_FRAMESIZE)
194 atapi_cmnd.proto = DMA_PROTO; 194 atapi_cmnd.proto = DMA_PROTO;
195 else 195 else
196 atapi_cmnd.proto = PIO_DATA_OUT_PROTO; 196 atapi_cmnd.proto = PIO_DATA_OUT_PROTO;