isci: unify isci_host data structures

Make it explicit that isci_host and scic_sds_controller are one in the same
object.

Signed-off-by: Artur Wojcik <artur.wojcik@intel.com>
[removed ->ihost back pointer]
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
diff --git a/drivers/scsi/isci/host.c b/drivers/scsi/isci/host.c
index 55bfa3d..d180ad8 100644
--- a/drivers/scsi/isci/host.c
+++ b/drivers/scsi/isci/host.c
@@ -65,9 +65,8 @@
 irqreturn_t isci_msix_isr(int vec, void *data)
 {
 	struct isci_host *ihost = data;
-	struct scic_sds_controller *scic = ihost->core_controller;
 
-	if (scic_sds_controller_isr(scic))
+	if (scic_sds_controller_isr(&ihost->sci))
 		tasklet_schedule(&ihost->completion_tasklet);
 
 	return IRQ_HANDLED;
@@ -77,7 +76,7 @@
 {
 	irqreturn_t ret = IRQ_NONE;
 	struct isci_host *ihost = data;
-	struct scic_sds_controller *scic = ihost->core_controller;
+	struct scic_sds_controller *scic = &ihost->sci;
 
 	if (scic_sds_controller_isr(scic)) {
 		writel(SMU_ISR_COMPLETION, &scic->smu_registers->interrupt_status);
@@ -96,10 +95,9 @@
 irqreturn_t isci_error_isr(int vec, void *data)
 {
 	struct isci_host *ihost = data;
-	struct scic_sds_controller *scic = ihost->core_controller;
 
-	if (scic_sds_controller_error_isr(scic))
-		scic_sds_controller_error_handler(scic);
+	if (scic_sds_controller_error_isr(&ihost->sci))
+		scic_sds_controller_error_handler(&ihost->sci);
 
 	return IRQ_HANDLED;
 }
@@ -145,21 +143,20 @@
 void isci_host_scan_start(struct Scsi_Host *shost)
 {
 	struct isci_host *ihost = SHOST_TO_SAS_HA(shost)->lldd_ha;
-	struct scic_sds_controller *scic = ihost->core_controller;
-	unsigned long tmo = scic_controller_get_suggested_start_timeout(scic);
+	unsigned long tmo = scic_controller_get_suggested_start_timeout(&ihost->sci);
 
 	set_bit(IHOST_START_PENDING, &ihost->flags);
 
 	spin_lock_irq(&ihost->scic_lock);
-	scic_controller_start(scic, tmo);
-	scic_controller_enable_interrupts(scic);
+	scic_controller_start(&ihost->sci, tmo);
+	scic_controller_enable_interrupts(&ihost->sci);
 	spin_unlock_irq(&ihost->scic_lock);
 }
 
 void isci_host_stop_complete(struct isci_host *ihost, enum sci_status completion_status)
 {
 	isci_host_change_state(ihost, isci_stopped);
-	scic_controller_disable_interrupts(ihost->core_controller);
+	scic_controller_disable_interrupts(&ihost->sci);
 	clear_bit(IHOST_STOP_PENDING, &ihost->flags);
 	wake_up(&ihost->eventq);
 }
@@ -188,7 +185,7 @@
 
 	spin_lock_irq(&isci_host->scic_lock);
 
-	scic_sds_controller_completion_handler(isci_host->core_controller);
+	scic_sds_controller_completion_handler(&isci_host->sci);
 
 	/* Take the lists of completed I/Os from the host. */
 
@@ -276,7 +273,6 @@
 
 void isci_host_deinit(struct isci_host *ihost)
 {
-	struct scic_sds_controller *scic = ihost->core_controller;
 	int i;
 
 	isci_host_change_state(ihost, isci_stopping);
@@ -293,11 +289,11 @@
 	set_bit(IHOST_STOP_PENDING, &ihost->flags);
 
 	spin_lock_irq(&ihost->scic_lock);
-	scic_controller_stop(scic, SCIC_CONTROLLER_STOP_TIMEOUT);
+	scic_controller_stop(&ihost->sci, SCIC_CONTROLLER_STOP_TIMEOUT);
 	spin_unlock_irq(&ihost->scic_lock);
 
 	wait_for_stop(ihost);
-	scic_controller_reset(scic);
+	scic_controller_reset(&ihost->sci);
 	isci_timer_list_destroy(ihost);
 }
 
@@ -347,25 +343,12 @@
 {
 	int err = 0, i;
 	enum sci_status status;
-	struct scic_sds_controller *controller;
 	union scic_oem_parameters oem;
 	union scic_user_parameters scic_user_params;
 	struct isci_pci_info *pci_info = to_pci_info(isci_host->pdev);
 
 	isci_timer_list_construct(isci_host);
 
-	controller = scic_controller_alloc(&isci_host->pdev->dev);
-
-	if (!controller) {
-		dev_err(&isci_host->pdev->dev,
-			"%s: failed (%d)\n",
-			__func__,
-			err);
-		return -ENOMEM;
-	}
-
-	isci_host->core_controller = controller;
-	controller->ihost = isci_host;
 	spin_lock_init(&isci_host->state_lock);
 	spin_lock_init(&isci_host->scic_lock);
 	spin_lock_init(&isci_host->queue_lock);
@@ -374,7 +357,7 @@
 	isci_host_change_state(isci_host, isci_starting);
 	isci_host->can_queue = ISCI_CAN_QUEUE_VAL;
 
-	status = scic_controller_construct(controller, scu_base(isci_host),
+	status = scic_controller_construct(&isci_host->sci, scu_base(isci_host),
 					   smu_base(isci_host));
 
 	if (status != SCI_SUCCESS) {
@@ -393,7 +376,7 @@
 	 * parameters
 	 */
 	isci_user_parameters_get(isci_host, &scic_user_params);
-	status = scic_user_parameters_set(isci_host->core_controller,
+	status = scic_user_parameters_set(&isci_host->sci,
 					  &scic_user_params);
 	if (status != SCI_SUCCESS) {
 		dev_warn(&isci_host->pdev->dev,
@@ -402,7 +385,7 @@
 		return -ENODEV;
 	}
 
-	scic_oem_parameters_get(controller, &oem);
+	scic_oem_parameters_get(&isci_host->sci, &oem);
 
 	/* grab any OEM parameters specified in orom */
 	if (pci_info->orom) {
@@ -416,7 +399,7 @@
 		}
 	}
 
-	status = scic_oem_parameters_set(isci_host->core_controller, &oem);
+	status = scic_oem_parameters_set(&isci_host->sci, &oem);
 	if (status != SCI_SUCCESS) {
 		dev_warn(&isci_host->pdev->dev,
 				"%s: scic_oem_parameters_set failed\n",
@@ -431,7 +414,7 @@
 	INIT_LIST_HEAD(&isci_host->requests_to_errorback);
 
 	spin_lock_irq(&isci_host->scic_lock);
-	status = scic_controller_initialize(isci_host->core_controller);
+	status = scic_controller_initialize(&isci_host->sci);
 	spin_unlock_irq(&isci_host->scic_lock);
 	if (status != SCI_SUCCESS) {
 		dev_warn(&isci_host->pdev->dev,
@@ -441,7 +424,7 @@
 		return -ENODEV;
 	}
 
-	err = scic_controller_mem_init(isci_host->core_controller);
+	err = scic_controller_mem_init(&isci_host->sci);
 	if (err)
 		return err;