SCIC_PHY_COUNTER_SN_DWORD_SYNC_ERROR
 };
 
-
-/**
- * scic_sas_phy_get_properties() - This method will enable the user to retrieve
- *    information specific to a SAS phy, such as: the received identify address
- *    frame, received phy capabilities, etc.
- * @phy: this parameter specifies the phy for which to retrieve properties.
- * @properties: This parameter specifies the properties structure into which to
- *    copy the requested information.
- *
- * This method returns an indication as to whether the SAS phy properties were
- * successfully retrieved. SCI_SUCCESS This value is returned if the SAS
- * properties are successfully retrieved. SCI_FAILURE This value is returned if
- * the SAS properties are not successfully retrieved (e.g. It's not a SAS Phy).
- */
-enum sci_status scic_sas_phy_get_properties(
-       struct scic_sds_phy *phy,
-       struct scic_sas_phy_properties *properties);
-
-/**
- * scic_sata_phy_get_properties() - This method will enable the user to
- *    retrieve information specific to a SATA phy, such as: the received
- *    signature FIS, if a port selector is present, etc.
- * @phy: this parameter specifies the phy for which to retrieve properties.
- * @properties: This parameter specifies the properties structure into which to
- *    copy the requested information.
- *
- * This method returns an indication as to whether the SATA phy properties were
- * successfully retrieved. SCI_SUCCESS This value is returned if the SATA
- * properties are successfully retrieved. SCI_FAILURE This value is returned if
- * the SATA properties are not successfully retrieved (e.g. It's not a SATA
- * Phy).
- */
-enum sci_status scic_sata_phy_get_properties(
-       struct scic_sds_phy *phy,
-       struct scic_sata_phy_properties *properties);
-
-
-
-
-
-
-
 #endif  /* _SCIC_PHY_H_ */
-
 
                                           struct sci_sas_address *sas_address)
 {
        struct sas_identify_frame *iaf;
+       struct isci_phy *iphy = sci_phy->iphy;
 
-       iaf = &sci_phy->phy_type.sas_id_frame;
+       iaf = &iphy->frame_rcvd.iaf;
        memcpy(sas_address, iaf->sas_addr, SAS_ADDR_SIZE);
 }
 
        protocols->u.all = 0;
 
        if (sci_phy->protocol == SCIC_SDS_PHY_PROTOCOL_SAS) {
+               struct isci_phy *iphy = sci_phy->iphy;
                struct sas_identify_frame *iaf;
 
-               iaf = &sci_phy->phy_type.sas_id_frame;
+               iaf = &iphy->frame_rcvd.iaf;
                memcpy(&protocols->u.all, &iaf->initiator_bits, 2);
-       } else if (sci_phy->protocol == SCIC_SDS_PHY_PROTOCOL_SATA) {
+       } else if (sci_phy->protocol == SCIC_SDS_PHY_PROTOCOL_SATA)
                protocols->u.bits.stp_target = 1;
-       }
 }
 
 /*
        return sci_phy->state_handlers->consume_power_handler(sci_phy);
 }
 
-/*
- * *****************************************************************************
- * * SCIC PHY Public Methods
- * ***************************************************************************** */
-
-
-enum sci_status scic_sas_phy_get_properties(
-       struct scic_sds_phy *sci_phy,
-       struct scic_sas_phy_properties *properties)
-{
-       if (sci_phy->protocol == SCIC_SDS_PHY_PROTOCOL_SAS) {
-               memcpy(&properties->rcvd_iaf,
-                      &sci_phy->phy_type.sas_id_frame,
-                      sizeof(struct sas_identify_frame));
-
-               properties->rcvd_cap.all =
-                       readl(&sci_phy->link_layer_registers->receive_phycap);
-
-               return SCI_SUCCESS;
-       }
-
-       return SCI_FAILURE;
-}
-
-
-enum sci_status scic_sata_phy_get_properties(
-       struct scic_sds_phy *sci_phy,
-       struct scic_sata_phy_properties *properties)
-{
-       if (sci_phy->protocol == SCIC_SDS_PHY_PROTOCOL_SATA) {
-               memcpy(&properties->signature_fis,
-                      &sci_phy->phy_type.sata_sig_fis,
-                      sizeof(struct dev_to_host_fis));
-
-               /* / @todo add support for port selectors. */
-               properties->is_port_selector_present = false;
-
-               return SCI_SUCCESS;
-       }
-
-       return SCI_FAILURE;
-}
-
 /*
  * *****************************************************************************
  * * SCIC SDS PHY HELPER FUNCTIONS
        enum sci_status result;
        u32 *frame_words;
        struct sas_identify_frame *identify_frame;
+       struct isci_phy *iphy = sci_phy->iphy;
 
        result = scic_sds_unsolicited_frame_control_get_header(
                &(scic_sds_phy_get_controller(sci_phy)->uf_control),
                frame_words[4] = SCIC_SWAP_DWORD(frame_words[4]);
                frame_words[5] = SCIC_SWAP_DWORD(frame_words[5]);
 
-               memcpy(&sci_phy->phy_type.sas_id_frame,
-                       identify_frame,
-                       sizeof(struct sas_identify_frame));
+               memcpy(&iphy->frame_rcvd.iaf, identify_frame, sizeof(*identify_frame));
 
                if (identify_frame->smp_tport) {
                        /* We got the IAF for an expander PHY go to the final state since
        enum sci_status result;
        struct dev_to_host_fis *frame_header;
        u32 *fis_frame_data;
+       struct isci_phy *iphy = sci_phy->iphy;
 
        result = scic_sds_unsolicited_frame_control_get_header(
                &(scic_sds_phy_get_controller(sci_phy)->uf_control),
                        frame_index,
                        (void **)&fis_frame_data);
 
-               scic_sds_controller_copy_sata_response(
-                       &sci_phy->phy_type.sata_sig_fis,
-                       frame_header,
-                       fis_frame_data);
+               scic_sds_controller_copy_sata_response(&iphy->frame_rcvd.fis,
+                                                      frame_header,
+                                                      fis_frame_data);
 
                /* got IAF we can now go to the await spinup semaphore state */
                sci_base_state_machine_change_state(&sci_phy->starting_substate_machine,
 void scic_sds_phy_construct(struct scic_sds_phy *sci_phy,
                            struct scic_sds_port *owning_port, u8 phy_index)
 {
-
        sci_base_state_machine_construct(&sci_phy->state_machine,
                                         sci_phy,
                                         scic_sds_phy_state_table,
        sci_phy->max_negotiated_speed = SAS_LINK_RATE_UNKNOWN;
        sci_phy->sata_timeout_timer = NULL;
 
-       /* Clear out the identification buffer data */
-       memset(&sci_phy->phy_type, 0, sizeof(sci_phy->phy_type));
-
        /* Initialize the the substate machines */
        sci_base_state_machine_construct(&sci_phy->starting_substate_machine,
                                         sci_phy,
 
        struct scic_port_properties properties;
        struct isci_phy *isci_phy = phy->iphy;
        struct isci_port *isci_port = port->iport;
-       enum sci_status call_status;
        unsigned long success = true;
 
        BUG_ON(isci_phy->isci_port != NULL);
        if (properties.remote.protocols.u.bits.stp_target) {
                u64 attached_sas_address;
 
-               struct scic_sata_phy_properties sata_phy_properties;
-
                isci_phy->sas_phy.oob_mode = SATA_OOB_MODE;
-
-               /* Get a copy of the signature fis for libsas */
-               call_status = scic_sata_phy_get_properties(phy,
-                                                          &sata_phy_properties);
-
-               /*
-                * XXX I am concerned about this "assert". shouldn't we
-                * handle the return appropriately?
-                */
-               BUG_ON(call_status != SCI_SUCCESS);
-
-               isci_phy->frame_rcvd.fis = sata_phy_properties.signature_fis;
                isci_phy->sas_phy.frame_rcvd_size = sizeof(struct dev_to_host_fis);
 
                /*
 
        } else if (properties.remote.protocols.u.bits.ssp_target ||
                   properties.remote.protocols.u.bits.smp_target) {
-
-               struct scic_sas_phy_properties sas_phy_properties;
-
                isci_phy->sas_phy.oob_mode = SAS_OOB_MODE;
-
-               /* Get a copy of the identify address frame for libsas */
-               call_status = scic_sas_phy_get_properties(phy,
-                                                         &sas_phy_properties);
-
-               BUG_ON(call_status != SCI_SUCCESS);
-
-               isci_phy->frame_rcvd.iaf = sas_phy_properties.rcvd_iaf;
                isci_phy->sas_phy.frame_rcvd_size = sizeof(struct sas_identify_frame);
 
                /* Copy the attached SAS address from the IAF */
                memcpy(isci_phy->sas_phy.attached_sas_addr,
                       isci_phy->frame_rcvd.iaf.sas_addr, SAS_ADDR_SIZE);
-
        } else {
                dev_err(&isci_host->pdev->dev, "%s: unkown target\n", __func__);
                success = false;