isci: remove base_phy abstraction
authorMaciej Trela <maciej.trela@intel.com>
Wed, 13 Apr 2011 00:28:39 +0000 (17:28 -0700)
committerDan Williams <dan.j.williams@intel.com>
Sun, 3 Jul 2011 11:00:37 +0000 (04:00 -0700)
Merge struct sci_base_phy into scic_sds_phy.  Until now sci_base_phy was
referenced using scic_sds_phy->parent field.

'sci_base_phy' state machine handlers were also merged into scic_sds_phy
state handlers.

Reported-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Maciej Trela <Maciej.Trela@intel.com>
Signed-off-by: Maciej Patelczyk <maciej.patelczyk@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/scsi/isci/core/sci_base_phy.h [deleted file]
drivers/scsi/isci/core/scic_sds_controller.c
drivers/scsi/isci/core/scic_sds_phy.c
drivers/scsi/isci/core/scic_sds_phy.h
drivers/scsi/isci/core/scic_sds_port.c
drivers/scsi/isci/core/scic_sds_port.h

diff --git a/drivers/scsi/isci/core/sci_base_phy.h b/drivers/scsi/isci/core/sci_base_phy.h
deleted file mode 100644 (file)
index 7e2c7e3..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * This file is provided under a dual BSD/GPLv2 license.  When using or
- * redistributing this file, you may do so under either license.
- *
- * GPL LICENSE SUMMARY
- *
- * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of version 2 of the GNU General Public License as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
- * The full GNU General Public License is included in this distribution
- * in the file called LICENSE.GPL.
- *
- * BSD LICENSE
- *
- * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in
- *     the documentation and/or other materials provided with the
- *     distribution.
- *   * Neither the name of Intel Corporation nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _SCI_BASE_PHY_H_
-#define _SCI_BASE_PHY_H_
-
-/**
- * This file contains all of the structures, constants, and methods common to
- *    all phy object definitions.
- *
- *
- */
-
-#include "sci_base_state_machine.h"
-
-/**
- * enum sci_base_phy_states - This enumeration depicts the standard states
- *    common to all phy state machine implementations.
- *
- *
- */
-enum sci_base_phy_states {
-       /**
-        * Simply the initial state for the base domain state machine.
-        */
-       SCI_BASE_PHY_STATE_INITIAL,
-
-       /**
-        * This state indicates that the phy has successfully been stopped.
-        * In this state no new IO operations are permitted on this phy.
-        * This state is entered from the INITIAL state.
-        * This state is entered from the STARTING state.
-        * This state is entered from the READY state.
-        * This state is entered from the RESETTING state.
-        */
-       SCI_BASE_PHY_STATE_STOPPED,
-
-       /**
-        * This state indicates that the phy is in the process of becomming
-        * ready.  In this state no new IO operations are permitted on this phy.
-        * This state is entered from the STOPPED state.
-        * This state is entered from the READY state.
-        * This state is entered from the RESETTING state.
-        */
-       SCI_BASE_PHY_STATE_STARTING,
-
-       /**
-        * This state indicates the the phy is now ready.  Thus, the user
-        * is able to perform IO operations utilizing this phy as long as it
-        * is currently part of a valid port.
-        * This state is entered from the STARTING state.
-        */
-       SCI_BASE_PHY_STATE_READY,
-
-       /**
-        * This state indicates that the phy is in the process of being reset.
-        * In this state no new IO operations are permitted on this phy.
-        * This state is entered from the READY state.
-        */
-       SCI_BASE_PHY_STATE_RESETTING,
-
-       /**
-        * Simply the final state for the base phy state machine.
-        */
-       SCI_BASE_PHY_STATE_FINAL,
-};
-
-/**
- * struct sci_base_phy - This structure defines all of the fields common to PHY
- *    objects.
- *
- *
- */
-struct sci_base_phy {
-       /**
-        * This field depicts the parent object (struct sci_base_object) for the phy.
-        */
-       struct sci_base_object parent;
-
-       /**
-        * This field contains the information for the base phy state machine.
-        */
-       struct sci_base_state_machine state_machine;
-};
-
-typedef enum sci_status (*sci_base_phy_handler_t)(struct sci_base_phy *);
-
-/**
- * struct sci_base_phy_state_handler - This structure contains all of the state
- *    handler methods common to base phy state machines.  Handler methods
- *    provide the ability to change the behavior for user requests or
- *    transitions depending on the state the machine is in.
- *
- *
- */
-struct sci_base_phy_state_handler {
-       /**
-        * The start_handler specifies the method invoked when there is an
-        * attempt to start a phy.
-        */
-       sci_base_phy_handler_t start_handler;
-
-       /**
-        * The stop_handler specifies the method invoked when there is an
-        * attempt to stop a phy.
-        */
-       sci_base_phy_handler_t stop_handler;
-
-       /**
-        * The reset_handler specifies the method invoked when there is an
-        * attempt to reset a phy.
-        */
-       sci_base_phy_handler_t reset_handler;
-
-       /**
-        * The destruct_handler specifies the method invoked when attempting to
-        * destruct a phy.
-        */
-       sci_base_phy_handler_t destruct_handler;
-
-};
-
-/**
- * sci_base_phy_construct() - Construct the base phy
- * @this_phy: This parameter specifies the base phy to be constructed.
- * @state_table: This parameter specifies the table of state definitions to be
- *    utilized for the phy state machine.
- *
- */
-static inline void sci_base_phy_construct(
-       struct sci_base_phy *base_phy,
-       const struct sci_base_state *state_table)
-{
-       base_phy->parent.private = NULL;
-       sci_base_state_machine_construct(
-               &base_phy->state_machine,
-               &base_phy->parent,
-               state_table,
-               SCI_BASE_PHY_STATE_INITIAL
-               );
-
-       sci_base_state_machine_start(
-               &base_phy->state_machine
-               );
-}
-
-
-#endif /* _SCI_BASE_PHY_H_ */
index 577d1df..78b2e6f 100644 (file)
@@ -679,7 +679,7 @@ static enum sci_status scic_sds_controller_start_next_phy(struct scic_sds_contro
 
                for (index = 0; index < SCI_MAX_PHYS; index++) {
                        sci_phy = &scic->phy_table[index];
-                       state = sci_phy->parent.state_machine.current_state_id;
+                       state = sci_phy->state_machine.current_state_id;
 
                        if (!scic_sds_phy_get_port(sci_phy))
                                continue;
index c26e5df..d5bbc22 100644 (file)
@@ -253,7 +253,7 @@ scic_sds_phy_link_layer_initialization(struct scic_sds_phy *sci_phy,
        writel(0x1F4, &sci_phy->link_layer_registers->link_layer_hang_detection_timeout);
 
        /* We can exit the initial state to the stopped state */
-       sci_base_state_machine_change_state(&sci_phy->parent.state_machine,
+       sci_base_state_machine_change_state(&sci_phy->state_machine,
                                            SCI_BASE_PHY_STATE_STOPPED);
 
        return SCI_SUCCESS;
@@ -276,7 +276,7 @@ static void scic_sds_phy_sata_timeout(void *phy)
 
        sci_base_state_machine_stop(&sci_phy->starting_substate_machine);
 
-       sci_base_state_machine_change_state(&sci_phy->parent.state_machine,
+       sci_base_state_machine_change_state(&sci_phy->state_machine,
                                            SCI_BASE_PHY_STATE_STARTING);
 }
 
@@ -353,7 +353,7 @@ enum sci_status scic_sds_phy_initialize(
        /*
         * There is nothing that needs to be done in this state just
         * transition to the stopped state. */
-       sci_base_state_machine_change_state(&sci_phy->parent.state_machine,
+       sci_base_state_machine_change_state(&sci_phy->state_machine,
                                            SCI_BASE_PHY_STATE_STOPPED);
 
        return SCI_SUCCESS;
@@ -515,7 +515,7 @@ void scic_sds_phy_get_attached_phy_protocols(
  */
 enum sci_status scic_sds_phy_start(struct scic_sds_phy *sci_phy)
 {
-       return sci_phy->state_handlers->parent.start_handler(&sci_phy->parent);
+       return sci_phy->state_handlers->start_handler(sci_phy);
 }
 
 /**
@@ -527,7 +527,7 @@ enum sci_status scic_sds_phy_start(struct scic_sds_phy *sci_phy)
  */
 enum sci_status scic_sds_phy_stop(struct scic_sds_phy *sci_phy)
 {
-       return sci_phy->state_handlers->parent.stop_handler(&sci_phy->parent);
+       return sci_phy->state_handlers->stop_handler(sci_phy);
 }
 
 /**
@@ -540,9 +540,7 @@ enum sci_status scic_sds_phy_stop(struct scic_sds_phy *sci_phy)
 enum sci_status scic_sds_phy_reset(
        struct scic_sds_phy *this_phy)
 {
-       return this_phy->state_handlers->parent.reset_handler(
-                      &this_phy->parent
-                      );
+       return this_phy->state_handlers->reset_handler(this_phy);
 }
 
 /**
@@ -714,7 +712,7 @@ static void scic_sds_phy_restart_starting_state(
        sci_base_state_machine_stop(&sci_phy->starting_substate_machine);
 
        /* Re-enter the base state machine starting state */
-       sci_base_state_machine_change_state(&sci_phy->parent.state_machine,
+       sci_base_state_machine_change_state(&sci_phy->state_machine,
                                            SCI_BASE_PHY_STATE_STARTING);
 }
 
@@ -722,12 +720,9 @@ static void scic_sds_phy_restart_starting_state(
    * SCIC SDS PHY general handlers
    ************************************************************************** */
 static enum sci_status scic_sds_phy_starting_substate_general_stop_handler(
-       struct sci_base_phy *phy)
+       struct scic_sds_phy *phy)
 {
-       struct scic_sds_phy *this_phy;
-       this_phy = (struct scic_sds_phy *)phy;
-
-       sci_base_state_machine_stop(&this_phy->starting_substate_machine);
+       sci_base_state_machine_stop(&phy->starting_substate_machine);
 
        sci_base_state_machine_change_state(&phy->state_machine,
                                                 SCI_BASE_PHY_STATE_STOPPED);
@@ -1331,11 +1326,7 @@ static enum sci_status scic_sds_phy_starting_substate_await_sig_fis_frame_handle
  * * SCIC SDS PHY POWER_HANDLERS
  * ***************************************************************************** */
 
-/**
- * scic_sds_phy_starting_substate_await_sas_power_consume_power_handler -
- * @phy: This is the struct sci_base_phy object which is cast into a struct scic_sds_phy
- *    object.
- *
+/*
  * This method is called by the struct scic_sds_controller when the phy object is
  * granted power. - The notify enable spinups are turned on for this phy object
  * - The phy state machine is transitioned to the
@@ -1357,11 +1348,7 @@ static enum sci_status scic_sds_phy_starting_substate_await_sas_power_consume_po
        return SCI_SUCCESS;
 }
 
-/**
- *
- * @phy: This is the struct sci_base_phy object which is cast into a struct scic_sds_phy
- *    object.
- *
+/*
  * This method is called by the struct scic_sds_controller when the phy object is
  * granted power. - The phy state machine is transitioned to the
  * SCIC_SDS_PHY_STARTING_SUBSTATE_AWAIT_SATA_PHY_EN. enum sci_status SCI_SUCCESS
@@ -1393,148 +1380,153 @@ static enum sci_status scic_sds_phy_starting_substate_await_sata_power_consume_p
        return SCI_SUCCESS;
 }
 
-static enum sci_status default_phy_handler(struct sci_base_phy *base_phy, const char *func)
+static enum sci_status default_phy_handler(struct scic_sds_phy *sci_phy,
+                                          const char *func)
 {
-       struct scic_sds_phy *sci_phy;
-
-       sci_phy = container_of(base_phy, typeof(*sci_phy), parent);
        dev_dbg(sciphy_to_dev(sci_phy),
                 "%s: in wrong state: %d\n", func,
-                sci_base_state_machine_get_state(&base_phy->state_machine));
+                sci_base_state_machine_get_state(&sci_phy->state_machine));
        return SCI_FAILURE_INVALID_STATE;
 }
 
-static enum sci_status scic_sds_phy_default_start_handler(struct sci_base_phy *base_phy)
+static enum sci_status
+scic_sds_phy_default_start_handler(struct scic_sds_phy *sci_phy)
 {
-       return default_phy_handler(base_phy, __func__);
+       return default_phy_handler(sci_phy, __func__);
 }
 
-static enum sci_status scic_sds_phy_default_stop_handler(struct sci_base_phy *base_phy)
+static enum sci_status
+scic_sds_phy_default_stop_handler(struct scic_sds_phy *sci_phy)
 {
-       return default_phy_handler(base_phy, __func__);
+       return default_phy_handler(sci_phy, __func__);
 }
 
-static enum sci_status scic_sds_phy_default_reset_handler(struct sci_base_phy *base_phy)
+static enum sci_status
+scic_sds_phy_default_reset_handler(struct scic_sds_phy *sci_phy)
 {
-       return default_phy_handler(base_phy, __func__);
+       return default_phy_handler(sci_phy, __func__);
 }
 
-static enum sci_status scic_sds_phy_default_destroy_handler(struct sci_base_phy *base_phy)
+static enum sci_status
+scic_sds_phy_default_destroy_handler(struct scic_sds_phy *sci_phy)
 {
-       return default_phy_handler(base_phy, __func__);
+       return default_phy_handler(sci_phy, __func__);
 }
 
-static enum sci_status scic_sds_phy_default_frame_handler(struct scic_sds_phy *sci_phy,
-                                                         u32 frame_index)
+static enum sci_status
+scic_sds_phy_default_frame_handler(struct scic_sds_phy *sci_phy,
+                                  u32 frame_index)
 {
        struct scic_sds_controller *scic = scic_sds_phy_get_controller(sci_phy);
 
-       default_phy_handler(&sci_phy->parent, __func__);
+       default_phy_handler(sci_phy, __func__);
        scic_sds_controller_release_frame(scic, frame_index);
 
        return SCI_FAILURE_INVALID_STATE;
 }
 
-static enum sci_status scic_sds_phy_default_event_handler(struct scic_sds_phy *sci_phy,
-                                                         u32 event_code)
+static enum sci_status
+scic_sds_phy_default_event_handler(struct scic_sds_phy *sci_phy,
+                                  u32 event_code)
 {
-       return default_phy_handler(&sci_phy->parent, __func__);
+       return default_phy_handler(sci_phy, __func__);
 }
 
-static enum sci_status scic_sds_phy_default_consume_power_handler(struct scic_sds_phy *sci_phy)
+static enum sci_status
+scic_sds_phy_default_consume_power_handler(struct scic_sds_phy *sci_phy)
 {
-       return default_phy_handler(&sci_phy->parent, __func__);
+       return default_phy_handler(sci_phy, __func__);
 }
 
 
 
 static const struct scic_sds_phy_state_handler scic_sds_phy_starting_substate_handler_table[] = {
        [SCIC_SDS_PHY_STARTING_SUBSTATE_INITIAL] = {
-               .parent.start_handler    = scic_sds_phy_default_start_handler,
-               .parent.stop_handler     = scic_sds_phy_starting_substate_general_stop_handler,
-               .parent.reset_handler    = scic_sds_phy_default_reset_handler,
-               .parent.destruct_handler = scic_sds_phy_default_destroy_handler,
-               .frame_handler           = scic_sds_phy_default_frame_handler,
-               .event_handler           = scic_sds_phy_default_event_handler,
-               .consume_power_handler   = scic_sds_phy_default_consume_power_handler
+               .start_handler          = scic_sds_phy_default_start_handler,
+               .stop_handler           = scic_sds_phy_starting_substate_general_stop_handler,
+               .reset_handler          = scic_sds_phy_default_reset_handler,
+               .destruct_handler       = scic_sds_phy_default_destroy_handler,
+               .frame_handler          = scic_sds_phy_default_frame_handler,
+               .event_handler          = scic_sds_phy_default_event_handler,
+               .consume_power_handler  = scic_sds_phy_default_consume_power_handler
        },
        [SCIC_SDS_PHY_STARTING_SUBSTATE_AWAIT_OSSP_EN] = {
-               .parent.start_handler    = scic_sds_phy_default_start_handler,
-               .parent.stop_handler     = scic_sds_phy_starting_substate_general_stop_handler,
-               .parent.reset_handler    = scic_sds_phy_default_reset_handler,
-               .parent.destruct_handler = scic_sds_phy_default_destroy_handler,
-               .frame_handler           = scic_sds_phy_default_frame_handler,
-               .event_handler           = scic_sds_phy_starting_substate_await_ossp_event_handler,
-               .consume_power_handler   = scic_sds_phy_default_consume_power_handler
+               .start_handler          = scic_sds_phy_default_start_handler,
+               .stop_handler           = scic_sds_phy_starting_substate_general_stop_handler,
+               .reset_handler          = scic_sds_phy_default_reset_handler,
+               .destruct_handler       = scic_sds_phy_default_destroy_handler,
+               .frame_handler          = scic_sds_phy_default_frame_handler,
+               .event_handler          = scic_sds_phy_starting_substate_await_ossp_event_handler,
+               .consume_power_handler  = scic_sds_phy_default_consume_power_handler
        },
        [SCIC_SDS_PHY_STARTING_SUBSTATE_AWAIT_SAS_SPEED_EN] = {
-               .parent.start_handler    = scic_sds_phy_default_start_handler,
-               .parent.stop_handler     = scic_sds_phy_starting_substate_general_stop_handler,
-               .parent.reset_handler    = scic_sds_phy_default_reset_handler,
-               .parent.destruct_handler = scic_sds_phy_default_destroy_handler,
-               .frame_handler           = scic_sds_phy_default_frame_handler,
-               .event_handler           = scic_sds_phy_starting_substate_await_sas_phy_speed_event_handler,
-               .consume_power_handler   = scic_sds_phy_default_consume_power_handler
+               .start_handler          = scic_sds_phy_default_start_handler,
+               .stop_handler           = scic_sds_phy_starting_substate_general_stop_handler,
+               .reset_handler          = scic_sds_phy_default_reset_handler,
+               .destruct_handler       = scic_sds_phy_default_destroy_handler,
+               .frame_handler          = scic_sds_phy_default_frame_handler,
+               .event_handler          = scic_sds_phy_starting_substate_await_sas_phy_speed_event_handler,
+               .consume_power_handler  = scic_sds_phy_default_consume_power_handler
        },
        [SCIC_SDS_PHY_STARTING_SUBSTATE_AWAIT_IAF_UF] = {
-               .parent.start_handler    = scic_sds_phy_default_start_handler,
-               .parent.stop_handler     = scic_sds_phy_default_stop_handler,
-               .parent.reset_handler    = scic_sds_phy_default_reset_handler,
-               .parent.destruct_handler = scic_sds_phy_default_destroy_handler,
-               .frame_handler           = scic_sds_phy_starting_substate_await_iaf_uf_frame_handler,
-               .event_handler           = scic_sds_phy_starting_substate_await_iaf_uf_event_handler,
-               .consume_power_handler   = scic_sds_phy_default_consume_power_handler
+               .start_handler          = scic_sds_phy_default_start_handler,
+               .stop_handler           = scic_sds_phy_default_stop_handler,
+               .reset_handler          = scic_sds_phy_default_reset_handler,
+               .destruct_handler       = scic_sds_phy_default_destroy_handler,
+               .frame_handler          = scic_sds_phy_starting_substate_await_iaf_uf_frame_handler,
+               .event_handler          = scic_sds_phy_starting_substate_await_iaf_uf_event_handler,
+               .consume_power_handler  = scic_sds_phy_default_consume_power_handler
        },
        [SCIC_SDS_PHY_STARTING_SUBSTATE_AWAIT_SAS_POWER] = {
-               .parent.start_handler    = scic_sds_phy_default_start_handler,
-               .parent.stop_handler     = scic_sds_phy_starting_substate_general_stop_handler,
-               .parent.reset_handler    = scic_sds_phy_default_reset_handler,
-               .parent.destruct_handler = scic_sds_phy_default_destroy_handler,
-               .frame_handler           = scic_sds_phy_default_frame_handler,
-               .event_handler           = scic_sds_phy_starting_substate_await_sas_power_event_handler,
-               .consume_power_handler   = scic_sds_phy_starting_substate_await_sas_power_consume_power_handler
+               .start_handler          = scic_sds_phy_default_start_handler,
+               .stop_handler           = scic_sds_phy_starting_substate_general_stop_handler,
+               .reset_handler          = scic_sds_phy_default_reset_handler,
+               .destruct_handler       = scic_sds_phy_default_destroy_handler,
+               .frame_handler          = scic_sds_phy_default_frame_handler,
+               .event_handler          = scic_sds_phy_starting_substate_await_sas_power_event_handler,
+               .consume_power_handler  = scic_sds_phy_starting_substate_await_sas_power_consume_power_handler
        },
        [SCIC_SDS_PHY_STARTING_SUBSTATE_AWAIT_SATA_POWER] = {
-               .parent.start_handler    = scic_sds_phy_default_start_handler,
-               .parent.stop_handler     = scic_sds_phy_starting_substate_general_stop_handler,
-               .parent.reset_handler    = scic_sds_phy_default_reset_handler,
-               .parent.destruct_handler = scic_sds_phy_default_destroy_handler,
-               .frame_handler           = scic_sds_phy_default_frame_handler,
-               .event_handler           = scic_sds_phy_starting_substate_await_sata_power_event_handler,
-               .consume_power_handler   = scic_sds_phy_starting_substate_await_sata_power_consume_power_handler
+               .start_handler          = scic_sds_phy_default_start_handler,
+               .stop_handler           = scic_sds_phy_starting_substate_general_stop_handler,
+               .reset_handler          = scic_sds_phy_default_reset_handler,
+               .destruct_handler       = scic_sds_phy_default_destroy_handler,
+               .frame_handler          = scic_sds_phy_default_frame_handler,
+               .event_handler          = scic_sds_phy_starting_substate_await_sata_power_event_handler,
+               .consume_power_handler  = scic_sds_phy_starting_substate_await_sata_power_consume_power_handler
        },
        [SCIC_SDS_PHY_STARTING_SUBSTATE_AWAIT_SATA_PHY_EN] = {
-               .parent.start_handler    = scic_sds_phy_default_start_handler,
-               .parent.stop_handler     = scic_sds_phy_starting_substate_general_stop_handler,
-               .parent.reset_handler    = scic_sds_phy_default_reset_handler,
-               .parent.destruct_handler = scic_sds_phy_default_destroy_handler,
-               .frame_handler           = scic_sds_phy_default_frame_handler,
-               .event_handler           = scic_sds_phy_starting_substate_await_sata_phy_event_handler,
-               .consume_power_handler   = scic_sds_phy_default_consume_power_handler
+               .start_handler          = scic_sds_phy_default_start_handler,
+               .stop_handler           = scic_sds_phy_starting_substate_general_stop_handler,
+               .reset_handler          = scic_sds_phy_default_reset_handler,
+               .destruct_handler       = scic_sds_phy_default_destroy_handler,
+               .frame_handler          = scic_sds_phy_default_frame_handler,
+               .event_handler          = scic_sds_phy_starting_substate_await_sata_phy_event_handler,
+               .consume_power_handler  = scic_sds_phy_default_consume_power_handler
        },
        [SCIC_SDS_PHY_STARTING_SUBSTATE_AWAIT_SATA_SPEED_EN] = {
-               .parent.start_handler    = scic_sds_phy_default_start_handler,
-               .parent.stop_handler     = scic_sds_phy_starting_substate_general_stop_handler,
-               .parent.reset_handler    = scic_sds_phy_default_reset_handler,
-               .parent.destruct_handler = scic_sds_phy_default_destroy_handler,
-               .frame_handler           = scic_sds_phy_default_frame_handler,
-               .event_handler           = scic_sds_phy_starting_substate_await_sata_speed_event_handler,
-               .consume_power_handler   = scic_sds_phy_default_consume_power_handler
+               .start_handler          = scic_sds_phy_default_start_handler,
+               .stop_handler           = scic_sds_phy_starting_substate_general_stop_handler,
+               .reset_handler          = scic_sds_phy_default_reset_handler,
+               .destruct_handler       = scic_sds_phy_default_destroy_handler,
+               .frame_handler          = scic_sds_phy_default_frame_handler,
+               .event_handler          = scic_sds_phy_starting_substate_await_sata_speed_event_handler,
+               .consume_power_handler  = scic_sds_phy_default_consume_power_handler
        },
        [SCIC_SDS_PHY_STARTING_SUBSTATE_AWAIT_SIG_FIS_UF] = {
-               .parent.start_handler    = scic_sds_phy_default_start_handler,
-               .parent.stop_handler     = scic_sds_phy_starting_substate_general_stop_handler,
-               .parent.reset_handler    = scic_sds_phy_default_reset_handler,
-               .parent.destruct_handler = scic_sds_phy_default_destroy_handler,
-               .frame_handler           = scic_sds_phy_starting_substate_await_sig_fis_frame_handler,
-               .event_handler           = scic_sds_phy_starting_substate_await_sig_fis_event_handler,
-               .consume_power_handler   = scic_sds_phy_default_consume_power_handler
+               .start_handler          = scic_sds_phy_default_start_handler,
+               .stop_handler           = scic_sds_phy_starting_substate_general_stop_handler,
+               .reset_handler          = scic_sds_phy_default_reset_handler,
+               .destruct_handler       = scic_sds_phy_default_destroy_handler,
+               .frame_handler          = scic_sds_phy_starting_substate_await_sig_fis_frame_handler,
+               .event_handler          = scic_sds_phy_starting_substate_await_sig_fis_event_handler,
+               .consume_power_handler  = scic_sds_phy_default_consume_power_handler
        },
        [SCIC_SDS_PHY_STARTING_SUBSTATE_FINAL] = {
-               .parent.start_handler    = scic_sds_phy_default_start_handler,
-               .parent.stop_handler     = scic_sds_phy_starting_substate_general_stop_handler,
-               .parent.reset_handler    = scic_sds_phy_default_reset_handler,
-               .parent.destruct_handler = scic_sds_phy_default_destroy_handler,
+               .start_handler          = scic_sds_phy_default_start_handler,
+               .stop_handler           = scic_sds_phy_starting_substate_general_stop_handler,
+               .reset_handler          = scic_sds_phy_default_reset_handler,
+               .destruct_handler       = scic_sds_phy_default_destroy_handler,
                .frame_handler           = scic_sds_phy_default_frame_handler,
                .event_handler           = scic_sds_phy_default_event_handler,
                .consume_power_handler   = scic_sds_phy_default_consume_power_handler
@@ -1885,7 +1877,7 @@ static void scic_sds_phy_starting_final_substate_enter(struct sci_base_object *o
 {
        struct scic_sds_phy *sci_phy;
 
-       sci_phy = container_of(object, typeof(*sci_phy), parent.parent);
+       sci_phy = container_of(object, typeof(*sci_phy), parent);
 
        scic_sds_phy_set_starting_substate_handlers(sci_phy,
                                                    SCIC_SDS_PHY_STARTING_SUBSTATE_FINAL);
@@ -1893,7 +1885,7 @@ static void scic_sds_phy_starting_final_substate_enter(struct sci_base_object *o
        /* State machine has run to completion so exit out and change
         * the base state machine to the ready state
         */
-       sci_base_state_machine_change_state(&sci_phy->parent.state_machine,
+       sci_base_state_machine_change_state(&sci_phy->state_machine,
                                            SCI_BASE_PHY_STATE_READY);
 }
 
@@ -1937,22 +1929,17 @@ static const struct sci_base_state scic_sds_phy_starting_substates[] = {
        }
 };
 
-/**
- *
- * @phy: This is the struct sci_base_phy object which is cast into a
- * struct scic_sds_phy object.
- *
+/*
  * This method takes the struct scic_sds_phy from a stopped state and
  * attempts to start it. - The phy state machine is transitioned to the
  * SCI_BASE_PHY_STATE_STARTING. enum sci_status SCI_SUCCESS
  */
-static enum sci_status scic_sds_phy_stopped_state_start_handler(struct sci_base_phy *base_phy)
+static enum sci_status
+scic_sds_phy_stopped_state_start_handler(struct scic_sds_phy *sci_phy)
 {
        struct isci_host *ihost;
-       struct scic_sds_phy *sci_phy;
        struct scic_sds_controller *scic;
 
-       sci_phy = container_of(base_phy, typeof(*sci_phy), parent);
        scic = scic_sds_phy_get_controller(sci_phy),
        ihost = sci_object_get_association(scic);
 
@@ -1961,28 +1948,31 @@ static enum sci_status scic_sds_phy_stopped_state_start_handler(struct sci_base_
                                                        scic_sds_phy_sata_timeout);
 
        if (sci_phy->sata_timeout_timer)
-               sci_base_state_machine_change_state(&sci_phy->parent.state_machine,
+               sci_base_state_machine_change_state(&sci_phy->state_machine,
                                                    SCI_BASE_PHY_STATE_STARTING);
 
        return SCI_SUCCESS;
 }
 
-static enum sci_status scic_sds_phy_stopped_state_destroy_handler(struct sci_base_phy *base_phy)
+static enum sci_status
+scic_sds_phy_stopped_state_destroy_handler(struct scic_sds_phy *sci_phy)
 {
        return SCI_SUCCESS;
 }
 
-static enum sci_status scic_sds_phy_ready_state_stop_handler(struct sci_base_phy *base_phy)
+static enum sci_status
+scic_sds_phy_ready_state_stop_handler(struct scic_sds_phy *sci_phy)
 {
-       sci_base_state_machine_change_state(&base_phy->state_machine,
+       sci_base_state_machine_change_state(&sci_phy->state_machine,
                                            SCI_BASE_PHY_STATE_STOPPED);
 
        return SCI_SUCCESS;
 }
 
-static enum sci_status scic_sds_phy_ready_state_reset_handler(struct sci_base_phy *base_phy)
+static enum sci_status
+scic_sds_phy_ready_state_reset_handler(struct scic_sds_phy *sci_phy)
 {
-       sci_base_state_machine_change_state(&base_phy->state_machine,
+       sci_base_state_machine_change_state(&sci_phy->state_machine,
                                            SCI_BASE_PHY_STATE_RESETTING);
 
        return SCI_SUCCESS;
@@ -2007,7 +1997,7 @@ static enum sci_status scic_sds_phy_ready_state_event_handler(struct scic_sds_ph
        switch (scu_get_event_code(event_code)) {
        case SCU_EVENT_LINK_FAILURE:
                /* Link failure change state back to the starting state */
-               sci_base_state_machine_change_state(&sci_phy->parent.state_machine,
+               sci_base_state_machine_change_state(&sci_phy->state_machine,
                                                    SCI_BASE_PHY_STATE_STARTING);
                result = SCI_SUCCESS;
                break;
@@ -2041,7 +2031,7 @@ static enum sci_status scic_sds_phy_resetting_state_event_handler(struct scic_sd
        switch (scu_get_event_code(event_code)) {
        case SCU_EVENT_HARD_RESET_TRANSMITTED:
                /* Link failure change state back to the starting state */
-               sci_base_state_machine_change_state(&sci_phy->parent.state_machine,
+               sci_base_state_machine_change_state(&sci_phy->state_machine,
                                                    SCI_BASE_PHY_STATE_STARTING);
                result = SCI_SUCCESS;
                break;
@@ -2063,55 +2053,55 @@ static enum sci_status scic_sds_phy_resetting_state_event_handler(struct scic_sd
 
 static const struct scic_sds_phy_state_handler scic_sds_phy_state_handler_table[] = {
        [SCI_BASE_PHY_STATE_INITIAL] = {
-               .parent.start_handler = scic_sds_phy_default_start_handler,
-               .parent.stop_handler  = scic_sds_phy_default_stop_handler,
-               .parent.reset_handler = scic_sds_phy_default_reset_handler,
-               .parent.destruct_handler = scic_sds_phy_default_destroy_handler,
+               .start_handler = scic_sds_phy_default_start_handler,
+               .stop_handler  = scic_sds_phy_default_stop_handler,
+               .reset_handler = scic_sds_phy_default_reset_handler,
+               .destruct_handler = scic_sds_phy_default_destroy_handler,
                .frame_handler           = scic_sds_phy_default_frame_handler,
                .event_handler           = scic_sds_phy_default_event_handler,
                .consume_power_handler   = scic_sds_phy_default_consume_power_handler
        },
        [SCI_BASE_PHY_STATE_STOPPED]  = {
-               .parent.start_handler = scic_sds_phy_stopped_state_start_handler,
-               .parent.stop_handler  = scic_sds_phy_default_stop_handler,
-               .parent.reset_handler = scic_sds_phy_default_reset_handler,
-               .parent.destruct_handler = scic_sds_phy_stopped_state_destroy_handler,
+               .start_handler = scic_sds_phy_stopped_state_start_handler,
+               .stop_handler  = scic_sds_phy_default_stop_handler,
+               .reset_handler = scic_sds_phy_default_reset_handler,
+               .destruct_handler = scic_sds_phy_stopped_state_destroy_handler,
                .frame_handler           = scic_sds_phy_default_frame_handler,
                .event_handler           = scic_sds_phy_default_event_handler,
                .consume_power_handler   = scic_sds_phy_default_consume_power_handler
        },
        [SCI_BASE_PHY_STATE_STARTING] = {
-               .parent.start_handler = scic_sds_phy_default_start_handler,
-               .parent.stop_handler  = scic_sds_phy_default_stop_handler,
-               .parent.reset_handler = scic_sds_phy_default_reset_handler,
-               .parent.destruct_handler = scic_sds_phy_default_destroy_handler,
+               .start_handler = scic_sds_phy_default_start_handler,
+               .stop_handler  = scic_sds_phy_default_stop_handler,
+               .reset_handler = scic_sds_phy_default_reset_handler,
+               .destruct_handler = scic_sds_phy_default_destroy_handler,
                .frame_handler           = scic_sds_phy_default_frame_handler,
                .event_handler           = scic_sds_phy_default_event_handler,
                .consume_power_handler   = scic_sds_phy_default_consume_power_handler
        },
        [SCI_BASE_PHY_STATE_READY] = {
-               .parent.start_handler = scic_sds_phy_default_start_handler,
-               .parent.stop_handler  = scic_sds_phy_ready_state_stop_handler,
-               .parent.reset_handler = scic_sds_phy_ready_state_reset_handler,
-               .parent.destruct_handler = scic_sds_phy_default_destroy_handler,
+               .start_handler = scic_sds_phy_default_start_handler,
+               .stop_handler  = scic_sds_phy_ready_state_stop_handler,
+               .reset_handler = scic_sds_phy_ready_state_reset_handler,
+               .destruct_handler = scic_sds_phy_default_destroy_handler,
                .frame_handler           = scic_sds_phy_default_frame_handler,
                .event_handler           = scic_sds_phy_ready_state_event_handler,
                .consume_power_handler   = scic_sds_phy_default_consume_power_handler
        },
        [SCI_BASE_PHY_STATE_RESETTING] = {
-               .parent.start_handler = scic_sds_phy_default_start_handler,
-               .parent.stop_handler  = scic_sds_phy_default_stop_handler,
-               .parent.reset_handler = scic_sds_phy_default_reset_handler,
-               .parent.destruct_handler = scic_sds_phy_default_destroy_handler,
+               .start_handler = scic_sds_phy_default_start_handler,
+               .stop_handler  = scic_sds_phy_default_stop_handler,
+               .reset_handler = scic_sds_phy_default_reset_handler,
+               .destruct_handler = scic_sds_phy_default_destroy_handler,
                .frame_handler           = scic_sds_phy_default_frame_handler,
                .event_handler           = scic_sds_phy_resetting_state_event_handler,
                .consume_power_handler   = scic_sds_phy_default_consume_power_handler
        },
        [SCI_BASE_PHY_STATE_FINAL] = {
-               .parent.start_handler = scic_sds_phy_default_start_handler,
-               .parent.stop_handler  = scic_sds_phy_default_stop_handler,
-               .parent.reset_handler = scic_sds_phy_default_reset_handler,
-               .parent.destruct_handler = scic_sds_phy_default_destroy_handler,
+               .start_handler = scic_sds_phy_default_start_handler,
+               .stop_handler  = scic_sds_phy_default_stop_handler,
+               .reset_handler = scic_sds_phy_default_reset_handler,
+               .destruct_handler = scic_sds_phy_default_destroy_handler,
                .frame_handler           = scic_sds_phy_default_frame_handler,
                .event_handler           = scic_sds_phy_default_event_handler,
                .consume_power_handler   = scic_sds_phy_default_consume_power_handler
@@ -2260,7 +2250,7 @@ static void scic_sds_phy_stopped_state_enter(struct sci_base_object *object)
 
        scu_link_layer_stop_protocol_engine(sci_phy);
 
-       if (sci_phy->parent.state_machine.previous_state_id !=
+       if (sci_phy->state_machine.previous_state_id !=
                        SCI_BASE_PHY_STATE_INITIAL)
                scic_sds_controller_link_down(
                                scic_sds_phy_get_controller(sci_phy),
@@ -2299,7 +2289,7 @@ static void scic_sds_phy_starting_state_enter(
        /* Change over to the starting substate machine to continue */
        sci_base_state_machine_start(&this_phy->starting_substate_machine);
 
-       if (this_phy->parent.state_machine.previous_state_id
+       if (this_phy->state_machine.previous_state_id
            == SCI_BASE_PHY_STATE_READY) {
                scic_sds_controller_link_down(
                        scic_sds_phy_get_controller(this_phy),
@@ -2380,12 +2370,10 @@ static void scic_sds_phy_resetting_state_enter(
                scu_link_layer_tx_hard_reset(this_phy);
        } else {
                /*
-                * The SCU does not need to have a descrete reset state so just go back to
+                * The SCU does not need to have a discrete reset state so just go back to
                 * the starting state. */
-               sci_base_state_machine_change_state(
-                       &this_phy->parent.state_machine,
-                       SCI_BASE_PHY_STATE_STARTING
-                       );
+               sci_base_state_machine_change_state(&this_phy->state_machine,
+                                                   SCI_BASE_PHY_STATE_STARTING);
        }
 }
 
@@ -2436,10 +2424,14 @@ static const struct sci_base_state scic_sds_phy_state_table[] = {
 void scic_sds_phy_construct(struct scic_sds_phy *sci_phy,
                            struct scic_sds_port *owning_port, u8 phy_index)
 {
-       /*
-        * Call the base constructor first
-        */
-       sci_base_phy_construct(&sci_phy->parent, scic_sds_phy_state_table);
+
+       sci_phy->parent.private = NULL;
+       sci_base_state_machine_construct(&sci_phy->state_machine,
+                                        &sci_phy->parent,
+                                        scic_sds_phy_state_table,
+                                        SCI_BASE_PHY_STATE_INITIAL);
+
+       sci_base_state_machine_start(&sci_phy->state_machine);
 
        /* Copy the rest of the input data to our locals */
        sci_phy->owning_port = owning_port;
@@ -2455,7 +2447,7 @@ void scic_sds_phy_construct(struct scic_sds_phy *sci_phy,
 
        /* Initialize the the substate machines */
        sci_base_state_machine_construct(&sci_phy->starting_substate_machine,
-                                        &sci_phy->parent.parent,
+                                        &sci_phy->parent,
                                         scic_sds_phy_starting_substates,
                                         SCIC_SDS_PHY_STARTING_SUBSTATE_INITIAL);
 }
index 7f7a045..97c0476 100644 (file)
 #ifndef _SCIC_SDS_PHY_H_
 #define _SCIC_SDS_PHY_H_
 
-/**
- * This file contains the structures, constants and prototypes for the
- *    struct scic_sds_phy object.
- *
- *
- */
-
 #include "intel_sata.h"
 #include "intel_sas.h"
-#include "sci_base_phy.h"
 #include "scu_registers.h"
+#include "sci_base_state_machine.h"
 
 struct scic_sds_port;
 /**
@@ -91,6 +84,53 @@ struct scic_sds_port;
  */
 #define SCIC_SDS_SATA_LINK_TRAINING_TIMEOUT  250
 
+enum scic_sds_phy_states {
+       /**
+        * Simply the initial state for the base domain state machine.
+        */
+       SCI_BASE_PHY_STATE_INITIAL,
+
+       /**
+        * This state indicates that the phy has successfully been stopped.
+        * In this state no new IO operations are permitted on this phy.
+        * This state is entered from the INITIAL state.
+        * This state is entered from the STARTING state.
+        * This state is entered from the READY state.
+        * This state is entered from the RESETTING state.
+        */
+       SCI_BASE_PHY_STATE_STOPPED,
+
+       /**
+        * This state indicates that the phy is in the process of becomming
+        * ready.  In this state no new IO operations are permitted on this phy.
+        * This state is entered from the STOPPED state.
+        * This state is entered from the READY state.
+        * This state is entered from the RESETTING state.
+        */
+       SCI_BASE_PHY_STATE_STARTING,
+
+       /**
+        * This state indicates the the phy is now ready.  Thus, the user
+        * is able to perform IO operations utilizing this phy as long as it
+        * is currently part of a valid port.
+        * This state is entered from the STARTING state.
+        */
+       SCI_BASE_PHY_STATE_READY,
+
+       /**
+        * This state indicates that the phy is in the process of being reset.
+        * In this state no new IO operations are permitted on this phy.
+        * This state is entered from the READY state.
+        */
+       SCI_BASE_PHY_STATE_RESETTING,
+
+       /**
+        * Simply the final state for the base phy state machine.
+        */
+       SCI_BASE_PHY_STATE_FINAL,
+};
+
+
 /**
  * enum scic_sds_phy_starting_substates -
  *
@@ -184,7 +224,15 @@ enum scic_sds_phy_protocol {
  *
  */
 struct scic_sds_phy {
-       struct sci_base_phy parent;
+       /**
+        * This field depicts the parent object (struct sci_base_object) for the phy.
+        */
+       struct sci_base_object parent;
+
+       /**
+        * This field contains the information for the base phy state machine.
+        */
+       struct sci_base_state_machine state_machine;
 
        /**
         * This field specifies the port object that owns/contains this phy.
@@ -260,7 +308,7 @@ struct scic_sds_phy {
 
 };
 
-
+typedef enum sci_status (*scic_sds_phy_handler_t)(struct scic_sds_phy *);
 typedef enum sci_status (*scic_sds_phy_event_handler_t)(struct scic_sds_phy *, u32);
 typedef enum sci_status (*scic_sds_phy_frame_handler_t)(struct scic_sds_phy *, u32);
 typedef enum sci_status (*scic_sds_phy_power_handler_t)(struct scic_sds_phy *);
@@ -272,9 +320,28 @@ typedef enum sci_status (*scic_sds_phy_power_handler_t)(struct scic_sds_phy *);
  */
 struct scic_sds_phy_state_handler {
        /**
-        * This is the struct sci_base_phy object state handlers.
+        * The start_handler specifies the method invoked when there is an
+        * attempt to start a phy.
+        */
+       scic_sds_phy_handler_t start_handler;
+
+       /**
+        * The stop_handler specifies the method invoked when there is an
+        * attempt to stop a phy.
+        */
+       scic_sds_phy_handler_t stop_handler;
+
+       /**
+        * The reset_handler specifies the method invoked when there is an
+        * attempt to reset a phy.
+        */
+       scic_sds_phy_handler_t reset_handler;
+
+       /**
+        * The destruct_handler specifies the method invoked when attempting to
+        * destruct a phy.
         */
-       struct sci_base_phy_state_handler parent;
+       scic_sds_phy_handler_t destruct_handler;
 
        /**
         * The state handler for unsolicited frames received from the SCU hardware.
index ff9ac73..ebbde7b 100644 (file)
@@ -316,7 +316,7 @@ enum sci_status scic_sds_port_add_phy(
        struct scic_sds_phy *the_phy)
 {
        return this_port->state_handlers->add_phy_handler(
-                      this_port, &the_phy->parent);
+                      this_port, the_phy);
 }
 
 
@@ -334,7 +334,7 @@ enum sci_status scic_sds_port_remove_phy(
        struct scic_sds_phy *the_phy)
 {
        return this_port->state_handlers->remove_phy_handler(
-                      this_port, &the_phy->parent);
+                      this_port, the_phy);
 }
 
 /**
@@ -1084,15 +1084,14 @@ static enum sci_status scic_sds_port_ready_substate_complete_io_handler(
 
 static enum sci_status scic_sds_port_ready_substate_add_phy_handler(
        struct scic_sds_port *port,
-       struct sci_base_phy *phy)
+       struct scic_sds_phy *phy)
 {
-       struct scic_sds_phy *this_phy  = (struct scic_sds_phy *)phy;
        enum sci_status status;
 
-       status = scic_sds_port_set_phy(port, this_phy);
+       status = scic_sds_port_set_phy(port, phy);
 
        if (status == SCI_SUCCESS) {
-               scic_sds_port_general_link_up_handler(port, this_phy, true);
+               scic_sds_port_general_link_up_handler(port, phy, true);
 
                port->not_ready_reason = SCIC_PORT_NOT_READY_RECONFIGURING;
 
@@ -1108,15 +1107,14 @@ static enum sci_status scic_sds_port_ready_substate_add_phy_handler(
 
 static enum sci_status scic_sds_port_ready_substate_remove_phy_handler(
        struct scic_sds_port *port,
-       struct sci_base_phy *phy)
+       struct scic_sds_phy *phy)
 {
-       struct scic_sds_phy *this_phy  = (struct scic_sds_phy *)phy;
        enum sci_status status;
 
-       status = scic_sds_port_clear_phy(port, this_phy);
+       status = scic_sds_port_clear_phy(port, phy);
 
        if (status == SCI_SUCCESS) {
-               scic_sds_port_deactivate_phy(port, this_phy, true);
+               scic_sds_port_deactivate_phy(port, phy, true);
 
                port->not_ready_reason = SCIC_PORT_NOT_READY_RECONFIGURING;
 
@@ -1293,15 +1291,14 @@ static enum sci_status scic_sds_port_ready_operational_substate_start_io_handler
  */
 static enum sci_status scic_sds_port_ready_configuring_substate_add_phy_handler(
        struct scic_sds_port *port,
-       struct sci_base_phy *phy)
+       struct scic_sds_phy *phy)
 {
-       struct scic_sds_phy *this_phy  = (struct scic_sds_phy *)phy;
        enum sci_status status;
 
-       status = scic_sds_port_set_phy(port, this_phy);
+       status = scic_sds_port_set_phy(port, phy);
 
        if (status == SCI_SUCCESS) {
-               scic_sds_port_general_link_up_handler(port, this_phy, true);
+               scic_sds_port_general_link_up_handler(port, phy, true);
 
                /*
                 * Re-enter the configuring state since this may be the last phy in
@@ -1321,15 +1318,14 @@ static enum sci_status scic_sds_port_ready_configuring_substate_add_phy_handler(
  */
 static enum sci_status scic_sds_port_ready_configuring_substate_remove_phy_handler(
        struct scic_sds_port *port,
-       struct sci_base_phy *phy)
+       struct scic_sds_phy *phy)
 {
-       struct scic_sds_phy *this_phy  = (struct scic_sds_phy *)phy;
        enum sci_status status;
 
-       status = scic_sds_port_clear_phy(port, this_phy);
+       status = scic_sds_port_clear_phy(port, phy);
 
        if (status == SCI_SUCCESS) {
-               scic_sds_port_deactivate_phy(port, this_phy, true);
+               scic_sds_port_deactivate_phy(port, phy, true);
 
                /*
                 * Re-enter the configuring state since this may be the last phy in
@@ -1406,14 +1402,14 @@ scic_sds_port_default_reset_handler(struct scic_sds_port *sci_port,
 
 static enum sci_status
 scic_sds_port_default_add_phy_handler(struct scic_sds_port *sci_port,
-                                     struct sci_base_phy *base_phy)
+                                     struct scic_sds_phy *base_phy)
 {
        return default_port_handler(sci_port, __func__);
 }
 
 static enum sci_status
 scic_sds_port_default_remove_phy_handler(struct scic_sds_port *sci_port,
-                                        struct sci_base_phy *base_phy)
+                                        struct scic_sds_phy *base_phy)
 {
        return default_port_handler(sci_port, __func__);
 }
@@ -1939,9 +1935,8 @@ static enum sci_status scic_sds_port_stopped_state_destruct_handler(
  */
 static enum sci_status scic_sds_port_stopped_state_add_phy_handler(
        struct scic_sds_port *port,
-       struct sci_base_phy *phy)
+       struct scic_sds_phy *phy)
 {
-       struct scic_sds_phy *this_phy  = (struct scic_sds_phy *)phy;
        struct sci_sas_address port_sas_address;
 
        /* Read the port assigned SAS Address if there is one */
@@ -1953,7 +1948,7 @@ static enum sci_status scic_sds_port_stopped_state_add_phy_handler(
                /*
                 * Make sure that the PHY SAS Address matches the SAS Address
                 * for this port. */
-               scic_sds_phy_get_sas_address(this_phy, &phy_sas_address);
+               scic_sds_phy_get_sas_address(phy, &phy_sas_address);
 
                if (
                        (port_sas_address.high != phy_sas_address.high)
@@ -1963,10 +1958,9 @@ static enum sci_status scic_sds_port_stopped_state_add_phy_handler(
                }
        }
 
-       return scic_sds_port_set_phy(port, this_phy);
+       return scic_sds_port_set_phy(port, phy);
 }
 
-
 /*
  * This method takes the struct scic_sds_port that is in a stopped state and handles
  * the remove phy request.  In MPC mode the only time a phy can be removed from
@@ -1976,11 +1970,9 @@ static enum sci_status scic_sds_port_stopped_state_add_phy_handler(
  */
 static enum sci_status scic_sds_port_stopped_state_remove_phy_handler(
        struct scic_sds_port *port,
-       struct sci_base_phy *phy)
+       struct scic_sds_phy *phy)
 {
-       struct scic_sds_phy *this_phy  = (struct scic_sds_phy *)phy;
-
-       return scic_sds_port_clear_phy(port, this_phy);
+       return scic_sds_port_clear_phy(port, phy);
 }
 
 /*
index 528c84d..d79c574 100644 (file)
@@ -59,7 +59,6 @@
 #include <linux/kernel.h>
 #include "sci_controller_constants.h"
 #include "intel_sas.h"
-#include "sci_base_phy.h"
 #include "scu_registers.h"
 
 #define SCIC_SDS_DUMMY_PORT   0xFF
@@ -260,12 +259,10 @@ struct scic_sds_port {
 
 };
 
-struct sci_base_phy;
-
 typedef enum sci_status (*scic_sds_port_handler_t)(struct scic_sds_port *);
 
 typedef enum sci_status (*scic_sds_port_phy_handler_t)(struct scic_sds_port *,
-                                                      struct sci_base_phy *);
+                                                      struct scic_sds_phy *);
 
 typedef enum sci_status (*scic_sds_port_reset_handler_t)(struct scic_sds_port *,
                                                         u32 timeout);