isci: unify constants
authorDan Williams <dan.j.williams@intel.com>
Sun, 8 May 2011 22:49:15 +0000 (15:49 -0700)
committerDan Williams <dan.j.williams@intel.com>
Sun, 3 Jul 2011 11:04:47 +0000 (04:04 -0700)
cross driver constants are spread out over multiple header files, consolidate
them into isci.h, and push some includes out to the source files that need
them.

TODO: remove SCI_MODE_SIZE infrastructure.
TODO: task.h is full of inlines that are too large

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
38 files changed:
drivers/scsi/isci/core/sci_controller.h [deleted file]
drivers/scsi/isci/core/sci_controller_constants.h [deleted file]
drivers/scsi/isci/core/sci_status.h [deleted file]
drivers/scsi/isci/core/sci_util.c
drivers/scsi/isci/core/scic_config_parameters.h
drivers/scsi/isci/core/scic_controller.h
drivers/scsi/isci/core/scic_io_request.h
drivers/scsi/isci/core/scic_phy.h
drivers/scsi/isci/core/scic_port.h
drivers/scsi/isci/core/scic_sds_controller.c
drivers/scsi/isci/core/scic_sds_controller.h
drivers/scsi/isci/core/scic_sds_phy.c
drivers/scsi/isci/core/scic_sds_port.c
drivers/scsi/isci/core/scic_sds_port.h
drivers/scsi/isci/core/scic_sds_port_configuration_agent.c
drivers/scsi/isci/core/scic_sds_request.c
drivers/scsi/isci/core/scic_sds_request.h
drivers/scsi/isci/core/scic_sds_stp_request.c
drivers/scsi/isci/core/scic_sds_unsolicited_frame_control.h
drivers/scsi/isci/core/scic_task_request.h
drivers/scsi/isci/core/scu_constants.h [deleted file]
drivers/scsi/isci/host.c
drivers/scsi/isci/host.h
drivers/scsi/isci/init.c
drivers/scsi/isci/isci.h
drivers/scsi/isci/phy.c
drivers/scsi/isci/phy.h
drivers/scsi/isci/port.h
drivers/scsi/isci/probe_roms.c
drivers/scsi/isci/probe_roms.h
drivers/scsi/isci/remote_device.h
drivers/scsi/isci/remote_node_table.h
drivers/scsi/isci/request.c
drivers/scsi/isci/request.h
drivers/scsi/isci/sci_environment.h
drivers/scsi/isci/task.c
drivers/scsi/isci/task.h
drivers/scsi/isci/timers.c

diff --git a/drivers/scsi/isci/core/sci_controller.h b/drivers/scsi/isci/core/sci_controller.h
deleted file mode 100644 (file)
index 01316b1..0000000
+++ /dev/null
@@ -1,69 +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_CONTROLLER_H_
-#define _SCI_CONTROLLER_H_
-
-/**
- * This file contains all of the interface methods that can be called by an SCI
- *    user on all SCI controller objects.
- *
- *
- */
-
-#define SCI_CONTROLLER_INVALID_IO_TAG 0xFFFF
-
-#endif  /* _SCI_CONTROLLER_H_ */
-
diff --git a/drivers/scsi/isci/core/sci_controller_constants.h b/drivers/scsi/isci/core/sci_controller_constants.h
deleted file mode 100644 (file)
index 2525c26..0000000
+++ /dev/null
@@ -1,206 +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_CONTROLLER_CONSTANTS_H_
-#define _SCI_CONTROLLER_CONSTANTS_H_
-
-/**
- * This file contains constant values that change based on the type of core or
- *    framework being managed.  These constants are exported in order to
- *    provide the user with information as to the bounds (i.e. how many) of
- *    specific objects.
- *
- *
- */
-
-#ifndef SCI_MAX_PHYS
-/**
- *
- *
- * This constant defines the maximum number of phy objects that can be
- * supported for the SCU Driver Standard (SDS) library.  This is tied directly
- * to silicon capabilities.
- */
-#define SCI_MAX_PHYS  (4)
-#endif
-
-#ifndef SCI_MAX_PORTS
-/**
- *
- *
- * This constant defines the maximum number of port objects that can be
- * supported for the SCU Driver Standard (SDS) library.  This is tied directly
- * to silicon capabilities.
- */
-#define SCI_MAX_PORTS SCI_MAX_PHYS
-#endif
-
-#ifndef SCI_MIN_SMP_PHYS
-/**
- *
- *
- * This constant defines the minimum number of SMP phy objects that can be
- * supported for a single expander level. This was determined by using 36
- * physical phys and room for 2 virtual phys.
- */
-#define SCI_MIN_SMP_PHYS  (38)
-#endif
-
-#ifndef SCI_MAX_SMP_PHYS
-/**
- *
- *
- * This constant defines the maximum number of SMP phy objects that can be
- * supported for the SCU Driver Standard (SDS) library. This number can be
- * increased if required.
- */
-#define SCI_MAX_SMP_PHYS  (384)
-#endif
-
-#ifndef SCI_MAX_REMOTE_DEVICES
-/**
- *
- *
- * This constant defines the maximum number of remote device objects that can
- * be supported for the SCU Driver Standard (SDS) library.  This is tied
- * directly to silicon capabilities.
- */
-#define SCI_MAX_REMOTE_DEVICES (256)
-#endif
-
-#ifndef SCI_MIN_REMOTE_DEVICES
-/**
- *
- *
- * This constant defines the minimum number of remote device objects that can
- * be supported for the SCU Driver Standard (SDS) library.  This # can be
- * configured for minimum memory environments to any value less than
- * SCI_MAX_REMOTE_DEVICES
- */
-#define SCI_MIN_REMOTE_DEVICES (16)
-#endif
-
-#ifndef SCI_MAX_IO_REQUESTS
-/**
- *
- *
- * This constant defines the maximum number of IO request objects that can be
- * supported for the SCU Driver Standard (SDS) library.  This is tied directly
- * to silicon capabilities.
- */
-#define SCI_MAX_IO_REQUESTS (256)
-#endif
-
-#ifndef SCI_MIN_IO_REQUESTS
-/**
- *
- *
- * This constant defines the minimum number of IO request objects that can be
- * supported for the SCU Driver Standard (SDS) library.  This # can be
- * configured for minimum memory environments to any value less than
- * SCI_MAX_IO_REQUESTS.
- */
-#define SCI_MIN_IO_REQUESTS (1)
-#endif
-
-#ifndef SCI_MAX_MSIX_MESSAGES
-/**
- *
- *
- * This constant defines the maximum number of MSI-X interrupt vectors/messages
- * supported for an SCU hardware controller instance.
- */
-#define SCI_MAX_MSIX_MESSAGES  (2)
-#endif
-
-#ifndef SCI_MAX_SCATTER_GATHER_ELEMENTS
-/**
- *
- *
- * This constant defines the maximum number of Scatter-Gather Elements to be
- * used by any SCI component.
- */
-#define SCI_MAX_SCATTER_GATHER_ELEMENTS 130
-#endif
-
-#ifndef SCI_MIN_SCATTER_GATHER_ELEMENTS
-/**
- *
- *
- * This constant defines the minimum number of Scatter-Gather Elements to be
- * used by any SCI component.
- */
-#define SCI_MIN_SCATTER_GATHER_ELEMENTS 1
-#endif
-
-/**
- *
- *
- * This constant defines the maximum number of controllers that can occur in a
- * single silicon package.
- */
-#define SCI_MAX_CONTROLLERS 2
-
-/**
- *
- *
- * The maximum number of supported domain objects is currently tied to the
- * maximum number of support port objects.
- */
-#define SCI_MAX_DOMAINS  SCI_MAX_PORTS
-
-
-#endif  /* _SCI_CONTROLLER_CONSTANTS_H_ */
-
diff --git a/drivers/scsi/isci/core/sci_status.h b/drivers/scsi/isci/core/sci_status.h
deleted file mode 100644 (file)
index 8b66619..0000000
+++ /dev/null
@@ -1,409 +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_STATUS_H_
-#define _SCI_STATUS_H_
-
-/**
- * This file contains all of the return status codes utilized across the
- *    various sub-components in SCI.
- *
- *
- */
-
-
-/**
- * enum sci_status - This is the general return status enumeration for non-IO,
- *    non-task management related SCI interface methods.
- *
- *
- */
-enum sci_status {
-       /**
-        * This member indicates successful completion.
-        */
-       SCI_SUCCESS = 0,
-
-       /**
-        * This value indicates that the calling method completed successfully,
-        * but that the IO may have completed before having it's start method
-        * invoked.  This occurs during SAT translation for requests that do
-        * not require an IO to the target or for any other requests that may
-        * be completed without having to submit IO.
-        */
-       SCI_SUCCESS_IO_COMPLETE_BEFORE_START,
-
-       /**
-        *  This Value indicates that the SCU hardware returned an early response
-        *  because the io request specified more data than is returned by the
-        *  target device (mode pages, inquiry data, etc.). The completion routine
-        *  will handle this case to get the actual number of bytes transferred.
-        */
-       SCI_SUCCESS_IO_DONE_EARLY,
-
-       /**
-        * This member indicates that the object for which a state change is
-        * being requested is already in said state.
-        */
-       SCI_WARNING_ALREADY_IN_STATE,
-
-       /**
-        * This member indicates interrupt coalescence timer may cause SAS
-        * specification compliance issues (i.e. SMP target mode response
-        * frames must be returned within 1.9 milliseconds).
-        */
-       SCI_WARNING_TIMER_CONFLICT,
-
-       /**
-        * This field indicates a sequence of action is not completed yet. Mostly,
-        * this status is used when multiple ATA commands are needed in a SATI translation.
-        */
-       SCI_WARNING_SEQUENCE_INCOMPLETE,
-
-       /**
-        * This member indicates that there was a general failure.
-        */
-       SCI_FAILURE,
-
-       /**
-        * This member indicates that the SCI implementation is unable to complete
-        * an operation due to a critical flaw the prevents any further operation
-        * (i.e. an invalid pointer).
-        */
-       SCI_FATAL_ERROR,
-
-       /**
-        * This member indicates the calling function failed, because the state
-        * of the controller is in a state that prevents successful completion.
-        */
-       SCI_FAILURE_INVALID_STATE,
-
-       /**
-        * This member indicates the calling function failed, because there is
-        * insufficient resources/memory to complete the request.
-        */
-       SCI_FAILURE_INSUFFICIENT_RESOURCES,
-
-       /**
-        * This member indicates the calling function failed, because the
-        * controller object required for the operation can't be located.
-        */
-       SCI_FAILURE_CONTROLLER_NOT_FOUND,
-
-       /**
-        * This member indicates the calling function failed, because the
-        * discovered controller type is not supported by the library.
-        */
-       SCI_FAILURE_UNSUPPORTED_CONTROLLER_TYPE,
-
-       /**
-        * This member indicates the calling function failed, because the
-        * requested initialization data version isn't supported.
-        */
-       SCI_FAILURE_UNSUPPORTED_INIT_DATA_VERSION,
-
-       /**
-        * This member indicates the calling function failed, because the
-        * requested configuration of SAS Phys into SAS Ports is not supported.
-        */
-       SCI_FAILURE_UNSUPPORTED_PORT_CONFIGURATION,
-
-       /**
-        * This member indicates the calling function failed, because the
-        * requested protocol is not supported by the remote device, port,
-        * or controller.
-        */
-       SCI_FAILURE_UNSUPPORTED_PROTOCOL,
-
-       /**
-        * This member indicates the calling function failed, because the
-        * requested information type is not supported by the SCI implementation.
-        */
-       SCI_FAILURE_UNSUPPORTED_INFORMATION_TYPE,
-
-       /**
-        * This member indicates the calling function failed, because the
-        * device already exists.
-        */
-       SCI_FAILURE_DEVICE_EXISTS,
-
-       /**
-        * This member indicates the calling function failed, because adding
-        * a phy to the object is not possible.
-        */
-       SCI_FAILURE_ADDING_PHY_UNSUPPORTED,
-
-       /**
-        * This member indicates the calling function failed, because the
-        * requested information type is not supported by the SCI implementation.
-        */
-       SCI_FAILURE_UNSUPPORTED_INFORMATION_FIELD,
-
-       /**
-        * This member indicates the calling function failed, because the SCI
-        * implementation does not support the supplied time limit.
-        */
-       SCI_FAILURE_UNSUPPORTED_TIME_LIMIT,
-
-       /**
-        * This member indicates the calling method failed, because the SCI
-        * implementation does not contain the specified Phy.
-        */
-       SCI_FAILURE_INVALID_PHY,
-
-       /**
-        * This member indicates the calling method failed, because the SCI
-        * implementation does not contain the specified Port.
-        */
-       SCI_FAILURE_INVALID_PORT,
-
-       /**
-        * This member indicates the calling method was partly successful
-        * The port was reset but not all phys in port are operational
-        */
-       SCI_FAILURE_RESET_PORT_PARTIAL_SUCCESS,
-
-       /**
-        * This member indicates that calling method failed
-        * The port reset did not complete because none of the phys are operational
-        */
-       SCI_FAILURE_RESET_PORT_FAILURE,
-
-       /**
-        * This member indicates the calling method failed, because the SCI
-        * implementation does not contain the specified remote device.
-        */
-       SCI_FAILURE_INVALID_REMOTE_DEVICE,
-
-       /**
-        * This member indicates the calling method failed, because the remote
-        * device is in a bad state and requires a reset.
-        */
-       SCI_FAILURE_REMOTE_DEVICE_RESET_REQUIRED,
-
-       /**
-        * This member indicates the calling method failed, because the SCI
-        * implementation does not contain or support the specified IO tag.
-        */
-       SCI_FAILURE_INVALID_IO_TAG,
-
-       /**
-        * This member indicates that the operation failed and the user should
-        * check the response data associated with the IO.
-        */
-       SCI_FAILURE_IO_RESPONSE_VALID,
-
-       /**
-        * This member indicates that the operation failed, the failure is
-        * controller implementation specific, and the response data associated
-        * with the request is not valid.  You can query for the controller
-        * specific error information via scic_controller_get_request_status()
-        */
-       SCI_FAILURE_CONTROLLER_SPECIFIC_IO_ERR,
-
-       /**
-        * This member indicated that the operation failed because the
-        * user requested this IO to be terminated.
-        */
-       SCI_FAILURE_IO_TERMINATED,
-
-       /**
-        * This member indicates that the operation failed and the associated
-        * request requires a SCSI abort task to be sent to the target.
-        */
-       SCI_FAILURE_IO_REQUIRES_SCSI_ABORT,
-
-       /**
-        * This member indicates that the operation failed because the supplied
-        * device could not be located.
-        */
-       SCI_FAILURE_DEVICE_NOT_FOUND,
-
-       /**
-        * This member indicates that the operation failed because the
-        * objects association is required and is not correctly set.
-        */
-       SCI_FAILURE_INVALID_ASSOCIATION,
-
-       /**
-        * This member indicates that the operation failed, because a timeout
-        * occurred.
-        */
-       SCI_FAILURE_TIMEOUT,
-
-       /**
-        * This member indicates that the operation failed, because the user
-        * specified a value that is either invalid or not supported.
-        */
-       SCI_FAILURE_INVALID_PARAMETER_VALUE,
-
-       /**
-        * This value indicates that the operation failed, because the number
-        * of messages (MSI-X) is not supported.
-        */
-       SCI_FAILURE_UNSUPPORTED_MESSAGE_COUNT,
-
-       /**
-        * This value indicates that the method failed due to a lack of
-        * available NCQ tags.
-        */
-       SCI_FAILURE_NO_NCQ_TAG_AVAILABLE,
-
-       /**
-        * This value indicates that a protocol violation has occurred on the
-        * link.
-        */
-       SCI_FAILURE_PROTOCOL_VIOLATION,
-
-       /**
-        * This value indicates a failure condition that retry may help to clear.
-        */
-       SCI_FAILURE_RETRY_REQUIRED,
-
-       /**
-        * This field indicates the retry limit was reached when a retry is attempted
-        */
-       SCI_FAILURE_RETRY_LIMIT_REACHED,
-
-       /**
-        * This member indicates the calling method was partly successful.
-        * Mostly, this status is used when a LUN_RESET issued to an expander attached
-        * STP device in READY NCQ substate needs to have RNC suspended/resumed
-        * before posting TC.
-        */
-       SCI_FAILURE_RESET_DEVICE_PARTIAL_SUCCESS,
-
-       /**
-        * This field indicates an illegal phy connection based on the routing attribute
-        * of both expander phy attached to each other.
-        */
-       SCI_FAILURE_ILLEGAL_ROUTING_ATTRIBUTE_CONFIGURATION,
-
-       /**
-        * This field indicates a CONFIG ROUTE INFO command has a response with function result
-        * INDEX DOES NOT EXIST, usually means exceeding max route index.
-        */
-       SCI_FAILURE_EXCEED_MAX_ROUTE_INDEX,
-
-       /**
-        * This value indicates that an unsupported PCI device ID has been
-        * specified.  This indicates that attempts to invoke
-        * scic_library_allocate_controller() will fail.
-        */
-       SCI_FAILURE_UNSUPPORTED_PCI_DEVICE_ID
-
-};
-
-/**
- * enum sci_io_status - This enumeration depicts all of the possible IO
- *    completion status values.  Each value in this enumeration maps directly
- *    to a value in the enum sci_status enumeration.  Please refer to that
- *    enumeration for detailed comments concerning what the status represents.
- *
- * Add the API to retrieve the SCU status from the core. Check to see that the
- * following status are properly handled: - SCI_IO_FAILURE_UNSUPPORTED_PROTOCOL
- * - SCI_IO_FAILURE_INVALID_IO_TAG
- */
-enum sci_io_status {
-       SCI_IO_SUCCESS                         = SCI_SUCCESS,
-       SCI_IO_FAILURE                         = SCI_FAILURE,
-       SCI_IO_SUCCESS_COMPLETE_BEFORE_START   = SCI_SUCCESS_IO_COMPLETE_BEFORE_START,
-       SCI_IO_SUCCESS_IO_DONE_EARLY           = SCI_SUCCESS_IO_DONE_EARLY,
-       SCI_IO_FAILURE_INVALID_STATE           = SCI_FAILURE_INVALID_STATE,
-       SCI_IO_FAILURE_INSUFFICIENT_RESOURCES  = SCI_FAILURE_INSUFFICIENT_RESOURCES,
-       SCI_IO_FAILURE_UNSUPPORTED_PROTOCOL    = SCI_FAILURE_UNSUPPORTED_PROTOCOL,
-       SCI_IO_FAILURE_RESPONSE_VALID          = SCI_FAILURE_IO_RESPONSE_VALID,
-       SCI_IO_FAILURE_CONTROLLER_SPECIFIC_ERR = SCI_FAILURE_CONTROLLER_SPECIFIC_IO_ERR,
-       SCI_IO_FAILURE_TERMINATED              = SCI_FAILURE_IO_TERMINATED,
-       SCI_IO_FAILURE_REQUIRES_SCSI_ABORT     = SCI_FAILURE_IO_REQUIRES_SCSI_ABORT,
-       SCI_IO_FAILURE_INVALID_PARAMETER_VALUE = SCI_FAILURE_INVALID_PARAMETER_VALUE,
-       SCI_IO_FAILURE_NO_NCQ_TAG_AVAILABLE    = SCI_FAILURE_NO_NCQ_TAG_AVAILABLE,
-       SCI_IO_FAILURE_PROTOCOL_VIOLATION      = SCI_FAILURE_PROTOCOL_VIOLATION,
-
-       SCI_IO_FAILURE_REMOTE_DEVICE_RESET_REQUIRED = SCI_FAILURE_REMOTE_DEVICE_RESET_REQUIRED,
-
-       SCI_IO_FAILURE_RETRY_REQUIRED      = SCI_FAILURE_RETRY_REQUIRED,
-       SCI_IO_FAILURE_RETRY_LIMIT_REACHED = SCI_FAILURE_RETRY_LIMIT_REACHED,
-       SCI_IO_FAILURE_INVALID_REMOTE_DEVICE = SCI_FAILURE_INVALID_REMOTE_DEVICE
-};
-
-/**
- * enum sci_task_status - This enumeration depicts all of the possible task
- *    completion status values.  Each value in this enumeration maps directly
- *    to a value in the enum sci_status enumeration.  Please refer to that
- *    enumeration for detailed comments concerning what the status represents.
- *
- * Check to see that the following status are properly handled:
- */
-enum sci_task_status {
-       SCI_TASK_SUCCESS                         = SCI_SUCCESS,
-       SCI_TASK_FAILURE                         = SCI_FAILURE,
-       SCI_TASK_FAILURE_INVALID_STATE           = SCI_FAILURE_INVALID_STATE,
-       SCI_TASK_FAILURE_INSUFFICIENT_RESOURCES  = SCI_FAILURE_INSUFFICIENT_RESOURCES,
-       SCI_TASK_FAILURE_UNSUPPORTED_PROTOCOL    = SCI_FAILURE_UNSUPPORTED_PROTOCOL,
-       SCI_TASK_FAILURE_INVALID_TAG             = SCI_FAILURE_INVALID_IO_TAG,
-       SCI_TASK_FAILURE_RESPONSE_VALID          = SCI_FAILURE_IO_RESPONSE_VALID,
-       SCI_TASK_FAILURE_CONTROLLER_SPECIFIC_ERR = SCI_FAILURE_CONTROLLER_SPECIFIC_IO_ERR,
-       SCI_TASK_FAILURE_TERMINATED              = SCI_FAILURE_IO_TERMINATED,
-       SCI_TASK_FAILURE_INVALID_PARAMETER_VALUE = SCI_FAILURE_INVALID_PARAMETER_VALUE,
-
-       SCI_TASK_FAILURE_REMOTE_DEVICE_RESET_REQUIRED = SCI_FAILURE_REMOTE_DEVICE_RESET_REQUIRED,
-       SCI_TASK_FAILURE_RESET_DEVICE_PARTIAL_SUCCESS = SCI_FAILURE_RESET_DEVICE_PARTIAL_SUCCESS
-
-};
-
-
-#endif  /* _SCI_STATUS_H_ */
-
index 4e60d55836e9d0e4a9a0e9f7b30ab33c5f76ab97..0101fec238659ccae9cfd6da1779821d54d1a237 100644 (file)
@@ -56,6 +56,7 @@
 #include <linux/kernel.h>
 #include "sci_util.h"
 #include "sci_environment.h"
+#include "request.h"
 
 void *scic_request_get_virt_addr(struct scic_sds_request *sci_req, dma_addr_t phys_addr)
 {
index ea09d0bd2d1b00c67bf39686b2cc29f8305fff9e..8b8c9259f52f856d32e355b96f3a9d8971475fba 100644 (file)
 #ifndef _SCIC_SDS_USER_PARAMETERS_H_
 #define _SCIC_SDS_USER_PARAMETERS_H_
 
-/**
- * This file contains all of the structure definitions and interface methods
- *    that can be called by a SCIC user on the SCU Driver Standard
- *    (struct scic_sds_user_parameters) user parameter block.
- *
- *
- */
-
-
-#include "sci_status.h"
-#include "sci_controller_constants.h"
 #include "probe_roms.h"
 
 struct scic_sds_controller;
index 50ba155a6c7cfe2347346f9a341b222b15278a18..bd08f306ed6714a9456a66a0f5e3e3c304399f8d 100644 (file)
@@ -56,8 +56,6 @@
 #ifndef _SCIC_CONTROLLER_H_
 #define _SCIC_CONTROLLER_H_
 
-#include "sci_status.h"
-#include "sci_controller.h"
 #include "scic_config_parameters.h"
 
 struct scic_sds_request;
@@ -65,12 +63,6 @@ struct scic_sds_phy;
 struct scic_sds_port;
 struct scic_sds_remote_device;
 
-
-enum sci_controller_mode {
-       SCI_MODE_SPEED,         /* Optimized for performance */
-       SCI_MODE_SIZE           /* Optimized for memory use */
-};
-
 enum sci_status scic_controller_construct(struct scic_sds_controller *c,
                                          void __iomem *scu_base,
                                          void __iomem *smu_base);
index f7c6d426f8c08c5ca27d5162324234eec3fa703d..a4664cc3c576ace7a16c1277e4c30a868c16932e 100644 (file)
 #ifndef _SCIC_IO_REQUEST_H_
 #define _SCIC_IO_REQUEST_H_
 
-/**
- * This file contains the structures and interface methods that can be
- *    referenced and used by the SCI user for the SCI IO request object.
- *
- * Determine the failure situations and return values.
- */
-
 #include <linux/kernel.h>
-#include "sci_status.h"
 
 struct scic_sds_request;
 struct scic_sds_remote_device;
index 1fb49f02162b4b8d5d6ee58fcfbb1ff2a00c99dc..f046b4af4b8df42de5f11439e862af54e2611a46 100644 (file)
@@ -66,7 +66,6 @@
 
 #include <scsi/sas.h>
 #include <scsi/libsas.h>
-#include "sci_status.h"
 
 struct scic_sds_phy;
 struct scic_sds_port;
index 44a8ea887151c5afca2d5ed09cd219cda54d2d15..51e7eede5c88b62fba2a2b0766f7d21227097718 100644 (file)
@@ -56,8 +56,8 @@
 #ifndef _SCIC_PORT_H_
 #define _SCIC_PORT_H_
 
+#include "isci.h"
 #include "sas.h"
-#include "sci_status.h"
 #include "scic_phy.h"
 
 struct scic_sds_port;
index 852b7d52f84f12d288235f507d3e6ceccfcd9b61..e77265b9b9ec9d1d68c34a005db6d972fd903f7c 100644 (file)
 #include "sci_environment.h"
 #include "sci_util.h"
 #include "scu_completion_codes.h"
-#include "scu_constants.h"
 #include "scu_event_codes.h"
 #include "scu_remote_node_context.h"
 #include "scu_task_context.h"
 #include "scu_unsolicited_frame.h"
+#include "timers.h"
 
 #define SCU_CONTEXT_RAM_INIT_STALL_TIME      200
 
index 0d5047319cbf6d6283df02e551d5e73a787e94d4..5c00f9688c1870ccf3af0daf5362b6cee397b4cb 100644 (file)
@@ -67,7 +67,6 @@
  */
 
 #include "sci_pool.h"
-#include "sci_controller_constants.h"
 #include "sci_base_state.h"
 #include "sci_base_state_machine.h"
 #include "scic_config_parameters.h"
@@ -76,7 +75,6 @@
 #include "remote_node_table.h"
 #include "remote_device.h"
 #include "scu_registers.h"
-#include "scu_constants.h"
 #include "scu_task_context.h"
 #include "scu_unsolicited_frame.h"
 #include "scic_sds_unsolicited_frame_control.h"
index f0f4c74e46198c35d8b411444fb961cba581b197..c6df0e2c842ea0f36beaed416cf47efae14db735 100644 (file)
@@ -65,6 +65,7 @@
 #include "sci_environment.h"
 #include "sci_util.h"
 #include "scu_event_codes.h"
+#include "timers.h"
 
 #define SCIC_SDS_PHY_MIN_TIMER_COUNT  (SCI_MAX_PHYS)
 #define SCIC_SDS_PHY_MAX_TIMER_COUNT  (SCI_MAX_PHYS)
index 01288dd44fb690dc37b069bb22b8e4d6721d9be7..9302e397e4cad86c77e8e67aacedb7a9bb4c218a 100644 (file)
@@ -64,6 +64,7 @@
 #include "scic_sds_request.h"
 #include "sci_environment.h"
 #include "scu_registers.h"
+#include "timers.h"
 
 #define SCIC_SDS_PORT_MIN_TIMER_COUNT  (SCI_MAX_PORTS)
 #define SCIC_SDS_PORT_MAX_TIMER_COUNT  (SCI_MAX_PORTS)
index 3633561b686a7958849faba2adbdb8f52e323015..3696debcce1247f4b84f5ccc4ddfd995885aaf01 100644 (file)
 
 #include <linux/kernel.h>
 #include "sas.h"
-#include "sci_controller_constants.h"
 #include "scu_registers.h"
-
-#define SCIC_SDS_DUMMY_PORT   0xFF
+#include "sci_base_state_machine.h"
 
 struct scic_sds_controller;
 struct scic_sds_phy;
 struct scic_sds_remote_device;
 struct scic_sds_request;
 
-/**
- * This constant defines the value utilized by SCI Components to indicate
- * an invalid handle.
- */
-#define SCI_INVALID_HANDLE 0x0
+#define SCIC_SDS_DUMMY_PORT   0xFF
 
 /**
  * enum SCIC_SDS_PORT_READY_SUBSTATES -
index 2d3d067396d35dfbb21d1343691ef49ba936aba9..3fad8c1db6c94827788d37b0d8352d67b173c0c0 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/**
- * This file contains the implementation for the public and protected methods
- *    for the port configuration agent.
- *
- *
- */
-
 #include "sci_environment.h"
 #include "scic_controller.h"
 #include "scic_sds_controller.h"
 #include "scic_sds_port_configuration_agent.h"
+#include "timers.h"
 
 #define SCIC_SDS_MPC_RECONFIGURATION_TIMEOUT    (10)
 #define SCIC_SDS_APC_RECONFIGURATION_TIMEOUT    (10)
index 50dd19bba3db2fc4cf32bae12db733b247b27eef..de35885eb1f97580cf1914f6fed95b47435ca4fc 100644 (file)
@@ -67,8 +67,9 @@
 #include "sci_environment.h"
 #include "sci_util.h"
 #include "scu_completion_codes.h"
-#include "scu_constants.h"
 #include "scu_task_context.h"
+#include "request.h"
+#include "task.h"
 
 /*
  * ****************************************************************************
index 1dd98aabe32d1608bdc0eb0162449c49c91bac48..5ce7ff2aed9a14618688b0f17caedab672fd8836 100644 (file)
 #ifndef _SCIC_SDS_IO_REQUEST_H_
 #define _SCIC_SDS_IO_REQUEST_H_
 
+#include "isci.h"
 #include "scic_io_request.h"
 #include "sci_base_state_machine.h"
 #include "scu_task_context.h"
 #include "scic_sds_stp_request.h"
-#include "scu_constants.h"
 #include "sas.h"
 
 struct scic_sds_controller;
index 2677393db6f400a61e8b5f95daef4387e1504a9b..c1c316cad522402ef70874bae20f40e21c0a4932 100644 (file)
@@ -69,6 +69,7 @@
 #include "scu_completion_codes.h"
 #include "scu_event_codes.h"
 #include "scu_task_context.h"
+#include "request.h"
 
 void scic_sds_stp_request_assign_buffers(struct scic_sds_request *sci_req)
 {
index 4eb244c06cfc67585b070abf2afe6ecd437f52b6..0d8ca8c4770fc57217bc4645dec89ff7551abfe3 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/**
- * This file contains all of the unsolicited frame related management for the
- *    address table, the headers, and actual payload buffers.
- *
- *
- */
-
 #ifndef _SCIC_SDS_UNSOLICITED_FRAME_CONTROL_H_
 #define _SCIC_SDS_UNSOLICITED_FRAME_CONTROL_H_
 
+#include "isci.h"
 #include "scu_unsolicited_frame.h"
-#include "scu_constants.h"
-#include "sci_status.h"
 
 /**
  * enum unsolicited_frame_state -
@@ -144,15 +136,6 @@ struct scic_sds_uf_header_array {
 
 };
 
-/*
- * Determine the size of the unsolicited frame array including
- * unused buffers. */
-#if SCU_UNSOLICITED_FRAME_COUNT <= SCU_MIN_UF_TABLE_ENTRIES
-#define SCU_UNSOLICITED_FRAME_CONTROL_ARRAY_SIZE SCU_MIN_UF_TABLE_ENTRIES
-#else
-#define SCU_UNSOLICITED_FRAME_CONTROL_ARRAY_SIZE SCU_MAX_UNSOLICITED_FRAMES
-#endif /* SCU_UNSOLICITED_FRAME_COUNT <= SCU_MIN_UF_TABLE_ENTRIES */
-
 /**
  * struct scic_sds_uf_buffer_array -
  *
index 98cfaa9e6d38bade3645929b97b55d3e7240bc0c..790cee9b4af6e5c0cd12fedfd26736491cba2581 100644 (file)
 #ifndef _SCIC_TASK_REQUEST_H_
 #define _SCIC_TASK_REQUEST_H_
 
-/**
- * This file contains the structures and interface methods that can be
- *    referenced and used by the SCI user for to utilize task management
- *    requests.
- *
- *
- */
-
-
-#include "sci_status.h"
+#include "isci.h"
 
 struct scic_sds_request;
 struct scic_sds_remote_device;
diff --git a/drivers/scsi/isci/core/scu_constants.h b/drivers/scsi/isci/core/scu_constants.h
deleted file mode 100644 (file)
index a99d110..0000000
+++ /dev/null
@@ -1,151 +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 _SCU_CONSTANTS_H_
-#define _SCU_CONSTANTS_H_
-
-/**
- * This file contains the SCU hardware constants.
- *
- *
- */
-
-#include "sci_controller_constants.h"
-
-/**
- *
- *
- * 2 indicates the maximum number of UFs that can occur for a given IO request.
- *  The hardware handles reception of additional unsolicited frames while all
- * UFs are in use, by holding off the transmitting device.  This number could
- * be theoretically reduced to 1, but 2 provides for more reliable operation.
- * During SATA PIO operation, it is possible under some conditions for there to
- * be 3 separate FISes received, back to back to back (PIO Setup, Data, D2H
- * Register). It is unlikely to have all 3 pending all at once without some of
- * them already being processed.
- */
-#define SCU_MIN_UNSOLICITED_FRAMES        (1)
-#define SCU_MIN_CRITICAL_NOTIFICATIONS    (24)
-#define SCU_MIN_EVENTS                    (4)
-#define SCU_MIN_COMPLETION_QUEUE_SCRATCH  (2)
-#define SCU_MIN_COMPLETION_QUEUE_ENTRIES  (SCU_MIN_CRITICAL_NOTIFICATIONS \
-                                          + SCU_MIN_EVENTS \
-                                          + SCU_MIN_UNSOLICITED_FRAMES \
-                                          + SCI_MIN_IO_REQUESTS \
-                                          + SCU_MIN_COMPLETION_QUEUE_SCRATCH)
-
-#define SCU_MAX_CRITICAL_NOTIFICATIONS    (384)
-#define SCU_MAX_EVENTS                    (128)
-#define SCU_MAX_UNSOLICITED_FRAMES        (128)
-#define SCU_MAX_COMPLETION_QUEUE_SCRATCH  (128)
-#define SCU_MAX_COMPLETION_QUEUE_ENTRIES  (SCU_MAX_CRITICAL_NOTIFICATIONS \
-                                          + SCU_MAX_EVENTS \
-                                          + SCU_MAX_UNSOLICITED_FRAMES \
-                                          + SCI_MAX_IO_REQUESTS \
-                                          + SCU_MAX_COMPLETION_QUEUE_SCRATCH)
-
-#if !defined(ENABLE_MINIMUM_MEMORY_MODE)
-#define SCU_UNSOLICITED_FRAME_COUNT      SCU_MAX_UNSOLICITED_FRAMES
-#define SCU_CRITICAL_NOTIFICATION_COUNT  SCU_MAX_CRITICAL_NOTIFICATIONS
-#define SCU_EVENT_COUNT                  SCU_MAX_EVENTS
-#define SCU_COMPLETION_QUEUE_SCRATCH     SCU_MAX_COMPLETION_QUEUE_SCRATCH
-#define SCU_IO_REQUEST_COUNT             SCI_MAX_IO_REQUESTS
-#define SCU_IO_REQUEST_SGE_COUNT         SCI_MAX_SCATTER_GATHER_ELEMENTS
-#define SCU_COMPLETION_QUEUE_COUNT       SCU_MAX_COMPLETION_QUEUE_ENTRIES
-#else
-#define SCU_UNSOLICITED_FRAME_COUNT      SCU_MIN_UNSOLICITED_FRAMES
-#define SCU_CRITICAL_NOTIFICATION_COUNT  SCU_MIN_CRITICAL_NOTIFICATIONS
-#define SCU_EVENT_COUNT                  SCU_MIN_EVENTS
-#define SCU_COMPLETION_QUEUE_SCRATCH     SCU_MIN_COMPLETION_QUEUE_SCRATCH
-#define SCU_IO_REQUEST_COUNT             SCI_MIN_IO_REQUESTS
-#define SCU_IO_REQUEST_SGE_COUNT         SCI_MIN_SCATTER_GATHER_ELEMENTS
-#define SCU_COMPLETION_QUEUE_COUNT       SCU_MIN_COMPLETION_QUEUE_ENTRIES
-#endif /* !defined(ENABLE_MINIMUM_MEMORY_OPERATION) */
-
-/**
- *
- *
- * The SCU_COMPLETION_QUEUE_COUNT constant indicates the size of the completion
- * queue into which the hardware DMAs 32-bit quantas (completion entries).
- */
-
-/**
- *
- *
- * This queue must be programmed to a power of 2 size (e.g. 32, 64, 1024, etc.).
- */
-#if (SCU_COMPLETION_QUEUE_COUNT != 16)  && \
-       (SCU_COMPLETION_QUEUE_COUNT != 32)  && \
-       (SCU_COMPLETION_QUEUE_COUNT != 64)  && \
-       (SCU_COMPLETION_QUEUE_COUNT != 128) && \
-       (SCU_COMPLETION_QUEUE_COUNT != 256) && \
-       (SCU_COMPLETION_QUEUE_COUNT != 512) && \
-       (SCU_COMPLETION_QUEUE_COUNT != 1024)
-#error "SCU_COMPLETION_QUEUE_COUNT must be set to a power of 2."
-#endif
-
-#if SCU_MIN_UNSOLICITED_FRAMES > SCU_MAX_UNSOLICITED_FRAMES
-#error "Invalid configuration of unsolicited frame constants"
-#endif /* SCU_MIN_UNSOLICITED_FRAMES > SCU_MAX_UNSOLICITED_FRAMES */
-
-#define SCU_MIN_UF_TABLE_ENTRIES            (8)
-#define SCU_ABSOLUTE_MAX_UNSOLICITED_FRAMES (4096)
-#define SCU_UNSOLICITED_FRAME_BUFFER_SIZE   (1024)
-#define SCU_INVALID_FRAME_INDEX             (0xFFFF)
-
-#define SCU_IO_REQUEST_MAX_SGE_SIZE         (0x00FFFFFF)
-#define SCU_IO_REQUEST_MAX_TRANSFER_LENGTH  (0x00FFFFFF)
-
-#endif /* _SCU_CONSTANTS_H_ */
index 271a7e171e7d7bfcdea4599f7b0b8abdb6d131c9..5847149857a9b2e372095e080631b9956f16649e 100644 (file)
@@ -60,7 +60,9 @@
 #include "request.h"
 #include "host.h"
 #include "probe_roms.h"
+#include "scic_controller.h"
 #include "scic_sds_controller.h"
+#include "timers.h"
 
 irqreturn_t isci_msix_isr(int vec, void *data)
 {
index afa41e83eaa706edd7db55f6ba34772a3daad857..13c1c99ef294496f1641ae3df41e1549475547f2 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-
-#if !defined(_SCI_HOST_H_)
+#ifndef _SCI_HOST_H_
 #define _SCI_HOST_H_
 
-#include "phy.h"
 #include "scic_sds_controller.h"
-#include "timers.h"
 #include "remote_device.h"
-
-#define DRV_NAME "isci"
-#define SCI_PCI_BAR_COUNT 2
-#define SCI_NUM_MSI_X_INT 2
-#define SCI_SMU_BAR       0
-#define SCI_SMU_BAR_SIZE  (16*1024)
-#define SCI_SCU_BAR       1
-#define SCI_SCU_BAR_SIZE  (4*1024*1024)
-#define SCI_IO_SPACE_BAR0 2
-#define SCI_IO_SPACE_BAR1 3
-#define ISCI_CAN_QUEUE_VAL 250 /* < SCI_MAX_IO_REQUESTS ? */
-#define SCIC_CONTROLLER_STOP_TIMEOUT 5000
+#include "phy.h"
 
 struct isci_host {
        struct scic_sds_controller sci;
index 522d39f9e1320d08d7fb1744e5e920163ea31411..df132c07badf723df186b38d46b88c07d98a5a3c 100644 (file)
@@ -61,9 +61,9 @@
 #include <asm/string.h>
 #include "isci.h"
 #include "task.h"
-#include "sci_controller_constants.h"
 #include "sci_environment.h"
 #include "probe_roms.h"
+#include "scic_controller.h"
 
 static struct scsi_transport_template *isci_transport_template;
 
index 60c84627c13e1a1844e28fa65bbf6da98f2d6d4a..800f2332ecd0368cfdf12fa053e4884a24ed22dd 100644 (file)
 #ifndef __ISCI_H__
 #define __ISCI_H__
 
-#include <linux/kernel.h>
-#include <linux/list.h>
-#include <linux/types.h>
-#include <linux/spinlock.h>
 #include <linux/interrupt.h>
-#include <linux/bug.h>
-#include <scsi/libsas.h>
-#include <scsi/scsi.h>
-
-#include "scic_controller.h"
-#include "host.h"
-#include "timers.h"
-#include "sci_status.h"
-#include "request.h"
-#include "task.h"
-#include "sata.h"
+
+#define DRV_NAME "isci"
+#define SCI_PCI_BAR_COUNT 2
+#define SCI_NUM_MSI_X_INT 2
+#define SCI_SMU_BAR       0
+#define SCI_SMU_BAR_SIZE  (16*1024)
+#define SCI_SCU_BAR       1
+#define SCI_SCU_BAR_SIZE  (4*1024*1024)
+#define SCI_IO_SPACE_BAR0 2
+#define SCI_IO_SPACE_BAR1 3
+#define ISCI_CAN_QUEUE_VAL 250 /* < SCI_MAX_IO_REQUESTS ? */
+#define SCIC_CONTROLLER_STOP_TIMEOUT 5000
+
+#define SCI_CONTROLLER_INVALID_IO_TAG 0xFFFF
+
+enum sci_controller_mode {
+       SCI_MODE_SPEED,
+       SCI_MODE_SIZE /* deprecated */
+};
+
+#define SCI_MAX_PHYS  (4)
+#define SCI_MAX_PORTS SCI_MAX_PHYS
+#define SCI_MIN_SMP_PHYS  (38)
+#define SCI_MAX_SMP_PHYS  (384) /* not silicon constrained */
+#define SCI_MAX_REMOTE_DEVICES (256)
+#define SCI_MIN_REMOTE_DEVICES (16)
+#define SCI_MAX_IO_REQUESTS (256)
+#define SCI_MIN_IO_REQUESTS (1)
+#define SCI_MAX_MSIX_MESSAGES  (2)
+#define SCI_MAX_SCATTER_GATHER_ELEMENTS 130 /* not silicon constrained */
+#define SCI_MIN_SCATTER_GATHER_ELEMENTS 1
+#define SCI_MAX_CONTROLLERS 2
+#define SCI_MAX_DOMAINS  SCI_MAX_PORTS
+
+/* 2 indicates the maximum number of UFs that can occur for a given IO request.
+ * The hardware handles reception of additional unsolicited frames while all
+ * UFs are in use, by holding off the transmitting device.  This number could
+ * be theoretically reduced to 1, but 2 provides for more reliable operation.
+ * During SATA PIO operation, it is possible under some conditions for there to
+ * be 3 separate FISes received, back to back to back (PIO Setup, Data, D2H
+ * Register). It is unlikely to have all 3 pending all at once without some of
+ * them already being processed.
+ */
+#define SCU_MIN_UNSOLICITED_FRAMES        (1)
+#define SCU_MIN_CRITICAL_NOTIFICATIONS    (24)
+#define SCU_MIN_EVENTS                    (4)
+#define SCU_MIN_COMPLETION_QUEUE_SCRATCH  (2)
+#define SCU_MIN_COMPLETION_QUEUE_ENTRIES  (SCU_MIN_CRITICAL_NOTIFICATIONS \
+                                          + SCU_MIN_EVENTS \
+                                          + SCU_MIN_UNSOLICITED_FRAMES \
+                                          + SCI_MIN_IO_REQUESTS \
+                                          + SCU_MIN_COMPLETION_QUEUE_SCRATCH)
+
+#define SCU_MAX_CRITICAL_NOTIFICATIONS    (384)
+#define SCU_MAX_EVENTS                    (128)
+#define SCU_MAX_UNSOLICITED_FRAMES        (128)
+#define SCU_MAX_COMPLETION_QUEUE_SCRATCH  (128)
+#define SCU_MAX_COMPLETION_QUEUE_ENTRIES  (SCU_MAX_CRITICAL_NOTIFICATIONS \
+                                          + SCU_MAX_EVENTS \
+                                          + SCU_MAX_UNSOLICITED_FRAMES \
+                                          + SCI_MAX_IO_REQUESTS \
+                                          + SCU_MAX_COMPLETION_QUEUE_SCRATCH)
+
+#if !defined(ENABLE_MINIMUM_MEMORY_MODE)
+#define SCU_UNSOLICITED_FRAME_COUNT      SCU_MAX_UNSOLICITED_FRAMES
+#define SCU_CRITICAL_NOTIFICATION_COUNT  SCU_MAX_CRITICAL_NOTIFICATIONS
+#define SCU_EVENT_COUNT                  SCU_MAX_EVENTS
+#define SCU_COMPLETION_QUEUE_SCRATCH     SCU_MAX_COMPLETION_QUEUE_SCRATCH
+#define SCU_IO_REQUEST_COUNT             SCI_MAX_IO_REQUESTS
+#define SCU_IO_REQUEST_SGE_COUNT         SCI_MAX_SCATTER_GATHER_ELEMENTS
+#define SCU_COMPLETION_QUEUE_COUNT       SCU_MAX_COMPLETION_QUEUE_ENTRIES
+#else
+#define SCU_UNSOLICITED_FRAME_COUNT      SCU_MIN_UNSOLICITED_FRAMES
+#define SCU_CRITICAL_NOTIFICATION_COUNT  SCU_MIN_CRITICAL_NOTIFICATIONS
+#define SCU_EVENT_COUNT                  SCU_MIN_EVENTS
+#define SCU_COMPLETION_QUEUE_SCRATCH     SCU_MIN_COMPLETION_QUEUE_SCRATCH
+#define SCU_IO_REQUEST_COUNT             SCI_MIN_IO_REQUESTS
+#define SCU_IO_REQUEST_SGE_COUNT         SCI_MIN_SCATTER_GATHER_ELEMENTS
+#define SCU_COMPLETION_QUEUE_COUNT       SCU_MIN_COMPLETION_QUEUE_ENTRIES
+#endif /* !defined(ENABLE_MINIMUM_MEMORY_OPERATION) */
+
+/**
+ *
+ *
+ * The SCU_COMPLETION_QUEUE_COUNT constant indicates the size of the completion
+ * queue into which the hardware DMAs 32-bit quantas (completion entries).
+ */
+
+/**
+ *
+ *
+ * This queue must be programmed to a power of 2 size (e.g. 32, 64, 1024, etc.).
+ */
+#if (SCU_COMPLETION_QUEUE_COUNT != 16)  && \
+       (SCU_COMPLETION_QUEUE_COUNT != 32)  && \
+       (SCU_COMPLETION_QUEUE_COUNT != 64)  && \
+       (SCU_COMPLETION_QUEUE_COUNT != 128) && \
+       (SCU_COMPLETION_QUEUE_COUNT != 256) && \
+       (SCU_COMPLETION_QUEUE_COUNT != 512) && \
+       (SCU_COMPLETION_QUEUE_COUNT != 1024)
+#error "SCU_COMPLETION_QUEUE_COUNT must be set to a power of 2."
+#endif
+
+#if SCU_MIN_UNSOLICITED_FRAMES > SCU_MAX_UNSOLICITED_FRAMES
+#error "Invalid configuration of unsolicited frame constants"
+#endif /* SCU_MIN_UNSOLICITED_FRAMES > SCU_MAX_UNSOLICITED_FRAMES */
+
+#define SCU_MIN_UF_TABLE_ENTRIES            (8)
+#define SCU_ABSOLUTE_MAX_UNSOLICITED_FRAMES (4096)
+#define SCU_UNSOLICITED_FRAME_BUFFER_SIZE   (1024)
+#define SCU_INVALID_FRAME_INDEX             (0xFFFF)
+
+#define SCU_IO_REQUEST_MAX_SGE_SIZE         (0x00FFFFFF)
+#define SCU_IO_REQUEST_MAX_TRANSFER_LENGTH  (0x00FFFFFF)
+
+/*
+ * Determine the size of the unsolicited frame array including
+ * unused buffers. */
+#if SCU_UNSOLICITED_FRAME_COUNT <= SCU_MIN_UF_TABLE_ENTRIES
+#define SCU_UNSOLICITED_FRAME_CONTROL_ARRAY_SIZE SCU_MIN_UF_TABLE_ENTRIES
+#else
+#define SCU_UNSOLICITED_FRAME_CONTROL_ARRAY_SIZE SCU_MAX_UNSOLICITED_FRAMES
+#endif /* SCU_UNSOLICITED_FRAME_COUNT <= SCU_MIN_UF_TABLE_ENTRIES */
+
+/**
+ * enum sci_status - This is the general return status enumeration for non-IO,
+ *    non-task management related SCI interface methods.
+ *
+ *
+ */
+enum sci_status {
+       /**
+        * This member indicates successful completion.
+        */
+       SCI_SUCCESS = 0,
+
+       /**
+        * This value indicates that the calling method completed successfully,
+        * but that the IO may have completed before having it's start method
+        * invoked.  This occurs during SAT translation for requests that do
+        * not require an IO to the target or for any other requests that may
+        * be completed without having to submit IO.
+        */
+       SCI_SUCCESS_IO_COMPLETE_BEFORE_START,
+
+       /**
+        *  This Value indicates that the SCU hardware returned an early response
+        *  because the io request specified more data than is returned by the
+        *  target device (mode pages, inquiry data, etc.). The completion routine
+        *  will handle this case to get the actual number of bytes transferred.
+        */
+       SCI_SUCCESS_IO_DONE_EARLY,
+
+       /**
+        * This member indicates that the object for which a state change is
+        * being requested is already in said state.
+        */
+       SCI_WARNING_ALREADY_IN_STATE,
+
+       /**
+        * This member indicates interrupt coalescence timer may cause SAS
+        * specification compliance issues (i.e. SMP target mode response
+        * frames must be returned within 1.9 milliseconds).
+        */
+       SCI_WARNING_TIMER_CONFLICT,
+
+       /**
+        * This field indicates a sequence of action is not completed yet. Mostly,
+        * this status is used when multiple ATA commands are needed in a SATI translation.
+        */
+       SCI_WARNING_SEQUENCE_INCOMPLETE,
+
+       /**
+        * This member indicates that there was a general failure.
+        */
+       SCI_FAILURE,
+
+       /**
+        * This member indicates that the SCI implementation is unable to complete
+        * an operation due to a critical flaw the prevents any further operation
+        * (i.e. an invalid pointer).
+        */
+       SCI_FATAL_ERROR,
+
+       /**
+        * This member indicates the calling function failed, because the state
+        * of the controller is in a state that prevents successful completion.
+        */
+       SCI_FAILURE_INVALID_STATE,
+
+       /**
+        * This member indicates the calling function failed, because there is
+        * insufficient resources/memory to complete the request.
+        */
+       SCI_FAILURE_INSUFFICIENT_RESOURCES,
+
+       /**
+        * This member indicates the calling function failed, because the
+        * controller object required for the operation can't be located.
+        */
+       SCI_FAILURE_CONTROLLER_NOT_FOUND,
+
+       /**
+        * This member indicates the calling function failed, because the
+        * discovered controller type is not supported by the library.
+        */
+       SCI_FAILURE_UNSUPPORTED_CONTROLLER_TYPE,
+
+       /**
+        * This member indicates the calling function failed, because the
+        * requested initialization data version isn't supported.
+        */
+       SCI_FAILURE_UNSUPPORTED_INIT_DATA_VERSION,
+
+       /**
+        * This member indicates the calling function failed, because the
+        * requested configuration of SAS Phys into SAS Ports is not supported.
+        */
+       SCI_FAILURE_UNSUPPORTED_PORT_CONFIGURATION,
+
+       /**
+        * This member indicates the calling function failed, because the
+        * requested protocol is not supported by the remote device, port,
+        * or controller.
+        */
+       SCI_FAILURE_UNSUPPORTED_PROTOCOL,
+
+       /**
+        * This member indicates the calling function failed, because the
+        * requested information type is not supported by the SCI implementation.
+        */
+       SCI_FAILURE_UNSUPPORTED_INFORMATION_TYPE,
+
+       /**
+        * This member indicates the calling function failed, because the
+        * device already exists.
+        */
+       SCI_FAILURE_DEVICE_EXISTS,
+
+       /**
+        * This member indicates the calling function failed, because adding
+        * a phy to the object is not possible.
+        */
+       SCI_FAILURE_ADDING_PHY_UNSUPPORTED,
+
+       /**
+        * This member indicates the calling function failed, because the
+        * requested information type is not supported by the SCI implementation.
+        */
+       SCI_FAILURE_UNSUPPORTED_INFORMATION_FIELD,
+
+       /**
+        * This member indicates the calling function failed, because the SCI
+        * implementation does not support the supplied time limit.
+        */
+       SCI_FAILURE_UNSUPPORTED_TIME_LIMIT,
+
+       /**
+        * This member indicates the calling method failed, because the SCI
+        * implementation does not contain the specified Phy.
+        */
+       SCI_FAILURE_INVALID_PHY,
+
+       /**
+        * This member indicates the calling method failed, because the SCI
+        * implementation does not contain the specified Port.
+        */
+       SCI_FAILURE_INVALID_PORT,
+
+       /**
+        * This member indicates the calling method was partly successful
+        * The port was reset but not all phys in port are operational
+        */
+       SCI_FAILURE_RESET_PORT_PARTIAL_SUCCESS,
+
+       /**
+        * This member indicates that calling method failed
+        * The port reset did not complete because none of the phys are operational
+        */
+       SCI_FAILURE_RESET_PORT_FAILURE,
+
+       /**
+        * This member indicates the calling method failed, because the SCI
+        * implementation does not contain the specified remote device.
+        */
+       SCI_FAILURE_INVALID_REMOTE_DEVICE,
+
+       /**
+        * This member indicates the calling method failed, because the remote
+        * device is in a bad state and requires a reset.
+        */
+       SCI_FAILURE_REMOTE_DEVICE_RESET_REQUIRED,
+
+       /**
+        * This member indicates the calling method failed, because the SCI
+        * implementation does not contain or support the specified IO tag.
+        */
+       SCI_FAILURE_INVALID_IO_TAG,
+
+       /**
+        * This member indicates that the operation failed and the user should
+        * check the response data associated with the IO.
+        */
+       SCI_FAILURE_IO_RESPONSE_VALID,
+
+       /**
+        * This member indicates that the operation failed, the failure is
+        * controller implementation specific, and the response data associated
+        * with the request is not valid.  You can query for the controller
+        * specific error information via scic_controller_get_request_status()
+        */
+       SCI_FAILURE_CONTROLLER_SPECIFIC_IO_ERR,
+
+       /**
+        * This member indicated that the operation failed because the
+        * user requested this IO to be terminated.
+        */
+       SCI_FAILURE_IO_TERMINATED,
+
+       /**
+        * This member indicates that the operation failed and the associated
+        * request requires a SCSI abort task to be sent to the target.
+        */
+       SCI_FAILURE_IO_REQUIRES_SCSI_ABORT,
+
+       /**
+        * This member indicates that the operation failed because the supplied
+        * device could not be located.
+        */
+       SCI_FAILURE_DEVICE_NOT_FOUND,
+
+       /**
+        * This member indicates that the operation failed because the
+        * objects association is required and is not correctly set.
+        */
+       SCI_FAILURE_INVALID_ASSOCIATION,
+
+       /**
+        * This member indicates that the operation failed, because a timeout
+        * occurred.
+        */
+       SCI_FAILURE_TIMEOUT,
+
+       /**
+        * This member indicates that the operation failed, because the user
+        * specified a value that is either invalid or not supported.
+        */
+       SCI_FAILURE_INVALID_PARAMETER_VALUE,
+
+       /**
+        * This value indicates that the operation failed, because the number
+        * of messages (MSI-X) is not supported.
+        */
+       SCI_FAILURE_UNSUPPORTED_MESSAGE_COUNT,
+
+       /**
+        * This value indicates that the method failed due to a lack of
+        * available NCQ tags.
+        */
+       SCI_FAILURE_NO_NCQ_TAG_AVAILABLE,
+
+       /**
+        * This value indicates that a protocol violation has occurred on the
+        * link.
+        */
+       SCI_FAILURE_PROTOCOL_VIOLATION,
+
+       /**
+        * This value indicates a failure condition that retry may help to clear.
+        */
+       SCI_FAILURE_RETRY_REQUIRED,
+
+       /**
+        * This field indicates the retry limit was reached when a retry is attempted
+        */
+       SCI_FAILURE_RETRY_LIMIT_REACHED,
+
+       /**
+        * This member indicates the calling method was partly successful.
+        * Mostly, this status is used when a LUN_RESET issued to an expander attached
+        * STP device in READY NCQ substate needs to have RNC suspended/resumed
+        * before posting TC.
+        */
+       SCI_FAILURE_RESET_DEVICE_PARTIAL_SUCCESS,
+
+       /**
+        * This field indicates an illegal phy connection based on the routing attribute
+        * of both expander phy attached to each other.
+        */
+       SCI_FAILURE_ILLEGAL_ROUTING_ATTRIBUTE_CONFIGURATION,
+
+       /**
+        * This field indicates a CONFIG ROUTE INFO command has a response with function result
+        * INDEX DOES NOT EXIST, usually means exceeding max route index.
+        */
+       SCI_FAILURE_EXCEED_MAX_ROUTE_INDEX,
+
+       /**
+        * This value indicates that an unsupported PCI device ID has been
+        * specified.  This indicates that attempts to invoke
+        * scic_library_allocate_controller() will fail.
+        */
+       SCI_FAILURE_UNSUPPORTED_PCI_DEVICE_ID
+
+};
+
+/**
+ * enum sci_io_status - This enumeration depicts all of the possible IO
+ *    completion status values.  Each value in this enumeration maps directly
+ *    to a value in the enum sci_status enumeration.  Please refer to that
+ *    enumeration for detailed comments concerning what the status represents.
+ *
+ * Add the API to retrieve the SCU status from the core. Check to see that the
+ * following status are properly handled: - SCI_IO_FAILURE_UNSUPPORTED_PROTOCOL
+ * - SCI_IO_FAILURE_INVALID_IO_TAG
+ */
+enum sci_io_status {
+       SCI_IO_SUCCESS                         = SCI_SUCCESS,
+       SCI_IO_FAILURE                         = SCI_FAILURE,
+       SCI_IO_SUCCESS_COMPLETE_BEFORE_START   = SCI_SUCCESS_IO_COMPLETE_BEFORE_START,
+       SCI_IO_SUCCESS_IO_DONE_EARLY           = SCI_SUCCESS_IO_DONE_EARLY,
+       SCI_IO_FAILURE_INVALID_STATE           = SCI_FAILURE_INVALID_STATE,
+       SCI_IO_FAILURE_INSUFFICIENT_RESOURCES  = SCI_FAILURE_INSUFFICIENT_RESOURCES,
+       SCI_IO_FAILURE_UNSUPPORTED_PROTOCOL    = SCI_FAILURE_UNSUPPORTED_PROTOCOL,
+       SCI_IO_FAILURE_RESPONSE_VALID          = SCI_FAILURE_IO_RESPONSE_VALID,
+       SCI_IO_FAILURE_CONTROLLER_SPECIFIC_ERR = SCI_FAILURE_CONTROLLER_SPECIFIC_IO_ERR,
+       SCI_IO_FAILURE_TERMINATED              = SCI_FAILURE_IO_TERMINATED,
+       SCI_IO_FAILURE_REQUIRES_SCSI_ABORT     = SCI_FAILURE_IO_REQUIRES_SCSI_ABORT,
+       SCI_IO_FAILURE_INVALID_PARAMETER_VALUE = SCI_FAILURE_INVALID_PARAMETER_VALUE,
+       SCI_IO_FAILURE_NO_NCQ_TAG_AVAILABLE    = SCI_FAILURE_NO_NCQ_TAG_AVAILABLE,
+       SCI_IO_FAILURE_PROTOCOL_VIOLATION      = SCI_FAILURE_PROTOCOL_VIOLATION,
+
+       SCI_IO_FAILURE_REMOTE_DEVICE_RESET_REQUIRED = SCI_FAILURE_REMOTE_DEVICE_RESET_REQUIRED,
+
+       SCI_IO_FAILURE_RETRY_REQUIRED      = SCI_FAILURE_RETRY_REQUIRED,
+       SCI_IO_FAILURE_RETRY_LIMIT_REACHED = SCI_FAILURE_RETRY_LIMIT_REACHED,
+       SCI_IO_FAILURE_INVALID_REMOTE_DEVICE = SCI_FAILURE_INVALID_REMOTE_DEVICE
+};
+
+/**
+ * enum sci_task_status - This enumeration depicts all of the possible task
+ *    completion status values.  Each value in this enumeration maps directly
+ *    to a value in the enum sci_status enumeration.  Please refer to that
+ *    enumeration for detailed comments concerning what the status represents.
+ *
+ * Check to see that the following status are properly handled:
+ */
+enum sci_task_status {
+       SCI_TASK_SUCCESS                         = SCI_SUCCESS,
+       SCI_TASK_FAILURE                         = SCI_FAILURE,
+       SCI_TASK_FAILURE_INVALID_STATE           = SCI_FAILURE_INVALID_STATE,
+       SCI_TASK_FAILURE_INSUFFICIENT_RESOURCES  = SCI_FAILURE_INSUFFICIENT_RESOURCES,
+       SCI_TASK_FAILURE_UNSUPPORTED_PROTOCOL    = SCI_FAILURE_UNSUPPORTED_PROTOCOL,
+       SCI_TASK_FAILURE_INVALID_TAG             = SCI_FAILURE_INVALID_IO_TAG,
+       SCI_TASK_FAILURE_RESPONSE_VALID          = SCI_FAILURE_IO_RESPONSE_VALID,
+       SCI_TASK_FAILURE_CONTROLLER_SPECIFIC_ERR = SCI_FAILURE_CONTROLLER_SPECIFIC_IO_ERR,
+       SCI_TASK_FAILURE_TERMINATED              = SCI_FAILURE_IO_TERMINATED,
+       SCI_TASK_FAILURE_INVALID_PARAMETER_VALUE = SCI_FAILURE_INVALID_PARAMETER_VALUE,
+
+       SCI_TASK_FAILURE_REMOTE_DEVICE_RESET_REQUIRED = SCI_FAILURE_REMOTE_DEVICE_RESET_REQUIRED,
+       SCI_TASK_FAILURE_RESET_DEVICE_PARTIAL_SUCCESS = SCI_FAILURE_RESET_DEVICE_PARTIAL_SUCCESS
+
+};
 
 extern unsigned char no_outbound_task_to;
 extern u16 ssp_max_occ_to;
@@ -85,9 +533,9 @@ irqreturn_t isci_msix_isr(int vec, void *data);
 irqreturn_t isci_intx_isr(int vec, void *data);
 irqreturn_t isci_error_isr(int vec, void *data);
 
+struct scic_sds_controller;
 bool scic_sds_controller_isr(struct scic_sds_controller *scic);
 void scic_sds_controller_completion_handler(struct scic_sds_controller *scic);
 bool scic_sds_controller_error_isr(struct scic_sds_controller *scic);
 void scic_sds_controller_error_handler(struct scic_sds_controller *scic);
-
 #endif  /* __ISCI_H__ */
index 328004918329eb21260bdff0b1b4dfe700a0cd3d..1134395c970efa24fff98652a6106facb5264ed1 100644 (file)
  */
 
 #include "isci.h"
+#include "host.h"
 #include "phy.h"
 #include "scic_port.h"
 #include "scic_config_parameters.h"
-#include "core/scic_sds_phy.h"
 
 struct scic_sds_phy;
 extern enum sci_status scic_sds_phy_start(struct scic_sds_phy *sci_phy);
index 93ec2d4a9c3011776fe529fd63f0513b9d86ad47..3a95adbb508cc3dcab0157d0da06ca71cbd402da 100644 (file)
  * (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 _ISCI_PHY_H_
 #define _ISCI_PHY_H_
 
 #include <scsi/sas.h>
 #include <scsi/libsas.h>
 #include "scic_sds_phy.h"
-#include "port.h"
-#include "host.h"
 
 struct isci_phy {
        struct scic_sds_phy sci;
@@ -89,6 +85,7 @@ static inline struct isci_phy *sci_phy_to_iphy(struct scic_sds_phy *sci_phy)
        return iphy;
 }
 
+struct isci_host;
 void isci_phy_init(struct isci_phy *iphy, struct isci_host *ihost, int index);
 int isci_phy_control(struct asd_sas_phy *phy, enum phy_func func, void *buf);
 
index 355034542e4c4f0ae352065c5e5f8d27a2f1e53a..59505cbf2bb32e69e6d84069589d9404e5891938 100644 (file)
@@ -55,6 +55,9 @@
 
 #ifndef _ISCI_PORT_H_
 #define _ISCI_PORT_H_
+
+#include <scsi/libsas.h>
+#include "isci.h"
 #include "scic_sds_port.h"
 
 struct isci_phy;
index 933d81109ea49e35ed60112a7ad8729070a9912c..70551744044160e239889c8cbdeb857f70d93c7d 100644 (file)
@@ -32,7 +32,6 @@
 
 #include "isci.h"
 #include "task.h"
-#include "sci_controller_constants.h"
 #include "sci_environment.h"
 #include "probe_roms.h"
 
index 55983363764bcb1717dbd9f022bdac12ecb59d38..f4ef19ac281cb2646618170914b55d1919c23f41 100644 (file)
@@ -58,6 +58,7 @@
 #ifdef __KERNEL__
 #include <linux/firmware.h>
 #include <linux/pci.h>
+#include "isci.h"
 
 struct isci_orom *isci_request_oprom(struct pci_dev *pdev);
 
index 2e433b7f16b398c8604215b5d94706b37503472f..a118f5873f64591bea33dcfa91a31b8f0eca40ea 100644 (file)
@@ -56,7 +56,6 @@
 #ifndef _ISCI_REMOTE_DEVICE_H_
 #define _ISCI_REMOTE_DEVICE_H_
 #include <scsi/libsas.h>
-#include "sci_status.h"
 #include "scu_remote_node_context.h"
 #include "remote_node_context.h"
 #include "port.h"
index 9c02a6ccb2fe40bad69db7c27b2d43d8375d5d2f..5737d9a30cca5acae60dd7b78d621951d41665bc 100644 (file)
 #ifndef _SCIC_SDS_REMOTE_NODE_TABLE_H_
 #define _SCIC_SDS_REMOTE_NODE_TABLE_H_
 
-/**
- * This file contains the structures, constants and prototypes used for the
- *    remote node table.
- *
- *
- */
-
-#include "sci_controller_constants.h"
+#include "isci.h"
 
 /**
  *
index 4961ee34709121fe7c121380c5913dca3e0b4907..a58072807a37a34c97a2f9c7c8cbddb7a5d26337 100644 (file)
@@ -62,6 +62,7 @@
 #include "sata.h"
 #include "scu_completion_codes.h"
 #include "scic_sds_request.h"
+#include "scic_controller.h"
 #include "sas.h"
 
 static enum sci_status isci_request_ssp_request_construct(
index 89d8b0a27dfe78a022b879113b12e1c7147646ea..06786ece9bb207ff14a8d3971effe882603bbecd 100644 (file)
@@ -57,6 +57,7 @@
 #define _ISCI_REQUEST_H_
 
 #include "isci.h"
+#include "host.h"
 #include "scic_sds_request.h"
 
 /**
index 1806969fc435367b2a75e85b7cb4d3c0e60ec08b..30addba4d43afbff6f0c780e391ffc8587cc2c9c 100644 (file)
@@ -56,8 +56,7 @@
 #ifndef _SCI_ENVIRONMENT_H_
 #define _SCI_ENVIRONMENT_H_
 
-#include "isci.h"
-#include "core/scic_sds_controller.h"
+#include "host.h"
 
 
 static inline struct device *scic_to_dev(struct scic_sds_controller *scic)
index 7adaf71c19d117f983179adda133738d5a383480..597c49020ac8ba1db088880b9d9767e049d51f10 100644 (file)
@@ -65,6 +65,8 @@
 #include "sata.h"
 #include "task.h"
 #include "scic_sds_request.h"
+#include "scic_controller.h"
+#include "timers.h"
 
 /**
 * isci_task_refuse() - complete the request to the upper layer driver in
index ecc5f139506371890837cd9edf000d17a9bc4fc4..c59dc9620cf93d2616669a8703f7458929a7bd68 100644 (file)
@@ -56,6 +56,7 @@
 #define _ISCI_TASK_H_
 
 #include <scsi/sas_ata.h>
+#include "host.h"
 
 struct isci_request;
 
index f33eff00dc0181005f1697ba63bf719dcb6a2cd2..007700e3eb6ae5d005f865492fc1fc7d9e3cfd5f 100644 (file)
@@ -55,6 +55,7 @@
 
 #include "isci.h"
 #include "timers.h"
+#include "host.h"
 
 /**
  * isci_timer_list_construct() - This method contrucst the SCI Timer List