aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/isci/remote_device.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/isci/remote_device.c')
-rw-r--r--drivers/scsi/isci/remote_device.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/drivers/scsi/isci/remote_device.c b/drivers/scsi/isci/remote_device.c
index 9301e25dff3..1553221fe4d 100644
--- a/drivers/scsi/isci/remote_device.c
+++ b/drivers/scsi/isci/remote_device.c
@@ -87,7 +87,7 @@ static void isci_remote_device_deconstruct(struct isci_host *ihost, struct isci_
87 BUG(); 87 BUG();
88 } 88 }
89 89
90 scic_remote_device_destruct(to_sci_dev(idev)); 90 scic_remote_device_destruct(&idev->sci);
91 idev->domain_dev->lldd_dev = NULL; 91 idev->domain_dev->lldd_dev = NULL;
92 idev->domain_dev = NULL; 92 idev->domain_dev = NULL;
93 idev->isci_port = NULL; 93 idev->isci_port = NULL;
@@ -117,7 +117,7 @@ static enum sci_status isci_remote_device_construct(
117 117
118 /* let the core do it's common constuction. */ 118 /* let the core do it's common constuction. */
119 scic_remote_device_construct(port->sci_port_handle, 119 scic_remote_device_construct(port->sci_port_handle,
120 to_sci_dev(isci_device)); 120 &isci_device->sci);
121 121
122 /* let the core do it's device specific constuction. */ 122 /* let the core do it's device specific constuction. */
123 if (isci_device->domain_dev->parent && 123 if (isci_device->domain_dev->parent &&
@@ -183,11 +183,11 @@ static enum sci_status isci_remote_device_construct(
183 "%s: parent->dev_type = EDGE_DEV\n", 183 "%s: parent->dev_type = EDGE_DEV\n",
184 __func__); 184 __func__);
185 185
186 status = scic_remote_device_ea_construct(to_sci_dev(isci_device), 186 status = scic_remote_device_ea_construct(&isci_device->sci,
187 (struct smp_response_discover *)&discover_response); 187 (struct smp_response_discover *)&discover_response);
188 188
189 } else 189 } else
190 status = scic_remote_device_da_construct(to_sci_dev(isci_device)); 190 status = scic_remote_device_da_construct(&isci_device->sci);
191 191
192 192
193 if (status != SCI_SUCCESS) { 193 if (status != SCI_SUCCESS) {
@@ -200,10 +200,11 @@ static enum sci_status isci_remote_device_construct(
200 return status; 200 return status;
201 } 201 }
202 202
203 sci_object_set_association(to_sci_dev(isci_device), isci_device); 203 /* XXX will be killed with sci_base_object removal */
204 sci_object_set_association(&isci_device->sci, isci_device);
204 205
205 /* start the device. */ 206 /* start the device. */
206 status = scic_remote_device_start(to_sci_dev(isci_device), 207 status = scic_remote_device_start(&isci_device->sci,
207 ISCI_REMOTE_DEVICE_START_TIMEOUT); 208 ISCI_REMOTE_DEVICE_START_TIMEOUT);
208 209
209 if (status != SCI_SUCCESS) { 210 if (status != SCI_SUCCESS) {
@@ -245,7 +246,7 @@ isci_remote_device_alloc(struct isci_host *ihost, struct isci_port *iport)
245 int i; 246 int i;
246 247
247 for (i = 0; i < SCI_MAX_REMOTE_DEVICES; i++) { 248 for (i = 0; i < SCI_MAX_REMOTE_DEVICES; i++) {
248 idev = idev_by_id(ihost, i); 249 idev = &ihost->devices[i];
249 if (!test_and_set_bit(IDEV_ALLOCATED, &idev->flags)) 250 if (!test_and_set_bit(IDEV_ALLOCATED, &idev->flags))
250 break; 251 break;
251 } 252 }
@@ -374,7 +375,7 @@ enum sci_status isci_remote_device_stop(struct isci_host *ihost, struct isci_rem
374 set_bit(IDEV_STOP_PENDING, &idev->flags); 375 set_bit(IDEV_STOP_PENDING, &idev->flags);
375 376
376 spin_lock_irqsave(&ihost->scic_lock, flags); 377 spin_lock_irqsave(&ihost->scic_lock, flags);
377 status = scic_remote_device_stop(to_sci_dev(idev), 50); 378 status = scic_remote_device_stop(&idev->sci, 50);
378 spin_unlock_irqrestore(&ihost->scic_lock, flags); 379 spin_unlock_irqrestore(&ihost->scic_lock, flags);
379 380
380 /* Wait for the stop complete callback. */ 381 /* Wait for the stop complete callback. */