Lines Matching +full:suspend +full:- +full:to +full:- +full:ram

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause OR GPL-2.0
9 * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved.
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
28 * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved.
44 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
48 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
80 * no phys assigned to any of the ports at start.
85 * assigned. A PORT_PHY mask that assigns just a single PHY to a port and no
86 * other PHYs being assigned is sufficient to declare manual PORT configuration.
115 * @brief This method is called by the SCI user in order to have the SCI
117 * minimal processing to allow for streamlined interrupt time usage.
119 * TRUE: returned if there is an interrupt to process and it was
129 * @brief This method is called by the SCI user to process completions
158 * @brief This method will attempt to construct a controller object
161 * @param[in] library This parameter specifies the handle to the library
163 * @param[in] controller This parameter specifies the controller to be
165 * @param[in] user_object This parameter is a reference to the SCIL users
166 * controller object and will be used to associate with the core
192 * to enable interrupts.
204 * to disable interrupts.
215 * is expected to be invoked at interrupt time. The completion
216 * handler is scheduled to run as a result of the interrupt handler.
225 * number of MSI-X messages to be utilized. This parameter must
227 * @param[in] handler_methods The caller provides a pointer to a buffer of
232 * - size = sizeof(SCIC_CONTROLLER_HANDLER_METHODS_T)
234 * - size = message_count*sizeof(SCIC_CONTROLLER_HANDLER_METHODS_T)
243 * array size is equivalent to the message_count parameter. The
244 * array is zero-relative where entry zero corresponds to
245 * message-vector zero, entry one corresponds to message-vector one,
251 * if the user supplied an unsupported number of MSI-X messages.
263 * physical controller hardware out of reset and enable the core to
271 * @param[in] controller This parameter specifies the controller to be
285 * timeout amount. The user is free to use any timeout value,
290 * @param[in] controller the handle to the controller object for which
291 * to return the suggested start timeout.
304 * -# the return status of this method is SCI_SUCCESS.
305 * -# after all of the phys have successfully started or been given
306 * the opportunity to start.
312 * method prior to invoking this method.
316 * @param[in] controller the handle to the controller object to start.
340 * -# the method return status is SCI_SUCCESS.
341 * -# the controller has been quiesced.
347 * @param[in] controller the handle to the controller object to stop.
372 * @param[in] controller the handle to the controller object to reset.
377 * @retval SCI_FATAL_ERROR if the controller reset operation is unable to
385 * @brief This method is called by the SCI user to send/start an IO request.
387 * been queued to the hardware for processing.
390 * - IO tags are a protected resource. It is incumbent upon the
391 * SCI Core user to ensure that each of the methods that may
395 * spin-lock, etc.).
396 * - For SATA, the user is required to manage NCQ tags. As a
398 * field in the host to device register FIS prior to calling
400 * to call scic_stp_io_set_ncq_tag() prior to invoking the
403 * @param[in] controller the handle to the controller object for which
404 * to start an IO request.
405 * @param[in] remote_device the handle to the remote device object for which
406 * to start an IO request.
407 * @param[in] io_request the handle to the io request object to start.
409 * that the user desires to be utilized for this request.
410 * This parameter is optional. The user is allowed to supply
430 * @brief This method is called by the SCIC user to send/start a framework
434 * - IO tags are a protected resource. It is incumbent upon the
435 * SCI Core user to ensure that each of the methods that may
439 * spin-lock, etc.).
440 * - The user must synchronize this task with completion queue
445 * @param[in] controller the handle to the controller object for which
446 * to start the task management request.
447 * @param[in] remote_device the handle to the remote device object for which
448 * to start the task management request.
449 * @param[in] task_request the handle to the task request object to start.
451 * that the user desires to be utilized for this request. Note
452 * this not the io_tag of the request being managed. It is to
454 * This parameter is optional. The user is allowed to supply
476 * (i.e. re-constructed).
478 * @param[in] controller The handle to the controller object for which
479 * to complete the task management request.
480 * @param[in] remote_device The handle to the remote device object for which
481 * to complete the task management request.
482 * @param[in] task_request the handle to the task management request object
483 * to complete.
503 * @brief This method is called by the SCI Core user to terminate an ongoing
508 * @param[in] controller the handle to the controller object for which
509 * to terminate a request.
510 * @param[in] remote_device the handle to the remote device object for which
511 * to terminate a request.
512 * @param[in] request the handle to the io or task management request
513 * object to terminate.
532 * (i.e. re-constructed).
535 * - IO tags are a protected resource. It is incumbent upon the
536 * SCI Core user to ensure that each of the methods that may
540 * spin-lock, etc.).
541 * - If the IO tag for a request was allocated, by the SCI Core user,
543 * the responsibility of the caller to invoke the
544 * scic_controller_free_io_tag() method to free the tag (i.e. this
547 * @param[in] controller The handle to the controller object for which
548 * to complete the IO request.
549 * @param[in] remote_device The handle to the remote device object for which
550 * to complete the IO request.
551 * @param[in] io_request the handle to the io request object to complete.
567 * @param[in] controller This parameter represents the handle to the
568 * controller object from which to retrieve a port (SAS or
571 * the controller for which to retrieve the port handle.
574 * to be provided to the caller.
591 * @param[in] controller This parameter represents the handle to the
592 * controller object from which to retrieve a phy (SAS or
595 * the controller for which to retrieve the phy handle.
598 * to be provided to the caller.
616 * supplied to the IO construct routine. Direct allocation of IO tags
619 * allocation of IO tags also provides additional flexibility to the
624 * SCI Core user to ensure that each of the methods that may
628 * spin-lock, etc.).
630 * @param[in] controller the handle to the controller object for which to
635 * are no currently available tags to be allocated.
643 * @brief This method will free an IO tag to the pool of free IO tags.
645 * regards to IO tags. The user may desire to keep an IO tag after
646 * an IO request has completed, because they plan on re-using the
651 * - IO tags are a protected resource. It is incumbent upon the
652 * SCI Core user to ensure that each of the methods that may
656 * spin-lock, etc.).
657 * - If the IO tag for a request was allocated, by the SCI Core user,
659 * the responsibility of the caller to invoke this method to free
662 * @param[in] controller This parameter specifies the handle to the
663 * controller object for which to free/return the tag.
664 * @param[in] io_tag This parameter represents the tag to be freed to the
668 * successfully put back (freed) to the pool of available tags.
680 * @brief This method returns the size of the core's scratch RAM.
682 * @return Size of the scratch RAM in dwords.
689 * @brief This method allows the user to read a U32 from the core's
690 * scratch RAM.
692 * @param[in] controller This parameter represents the handle to the
693 * controller object for which to read scratch RAM.
694 * @param[in] offset The offset (in dwords) into the scratch RAM.
698 * scratch RAM.
699 * @retval SCI_SUCCESS The scratch RAM was successfully read.
710 * @brief This method allows the user to write a U32 to the core's
711 * scratch RAM.
713 * @param[in] controller This parameter represents the handle to the
714 * controller object for which to write scratch RAM.
715 * @param[in] offset The offset (in dwords) into the scratch RAM.
716 * @param[out] value The value to be written to scratch RAM.
719 * scratch RAM.
720 * @retval SCI_SUCCESS The scratch RAM was successfully written.
731 * @brief This method allows the user to configure the SCI core into
734 * @param[in] controller This parameter represents the handle to the
735 * controller object for which to update the operating
752 * @brief This method allows the user to configure the interrupt coalescence.
754 * @param[in] controller This parameter represents the handle to the
758 * @param[in] coalesce_number Used to control the number of entries in the
802 * @brief This method suspend the controller, reinitialize RAMs, then resume
808 * ignore completion processing for non-fastpath events. This will cause
809 * the completions to be thrown away.
822 * @param[in] controller This parameter specifies the controller which is to be suspended.
824 * @return SCI_STATUS The status of controller suspend.
833 * @param[in] controller This parameter specifies the controller which is to be resumed.