1230557Sjimharris/*-
2230557Sjimharris * This file is provided under a dual BSD/GPLv2 license.  When using or
3230557Sjimharris * redistributing this file, you may do so under either license.
4230557Sjimharris *
5230557Sjimharris * GPL LICENSE SUMMARY
6230557Sjimharris *
7230557Sjimharris * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved.
8230557Sjimharris *
9230557Sjimharris * This program is free software; you can redistribute it and/or modify
10230557Sjimharris * it under the terms of version 2 of the GNU General Public License as
11230557Sjimharris * published by the Free Software Foundation.
12230557Sjimharris *
13230557Sjimharris * This program is distributed in the hope that it will be useful, but
14230557Sjimharris * WITHOUT ANY WARRANTY; without even the implied warranty of
15230557Sjimharris * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16230557Sjimharris * General Public License for more details.
17230557Sjimharris *
18230557Sjimharris * You should have received a copy of the GNU General Public License
19230557Sjimharris * along with this program; if not, write to the Free Software
20230557Sjimharris * Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
21230557Sjimharris * The full GNU General Public License is included in this distribution
22230557Sjimharris * in the file called LICENSE.GPL.
23230557Sjimharris *
24230557Sjimharris * BSD LICENSE
25230557Sjimharris *
26230557Sjimharris * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved.
27230557Sjimharris * All rights reserved.
28230557Sjimharris *
29230557Sjimharris * Redistribution and use in source and binary forms, with or without
30230557Sjimharris * modification, are permitted provided that the following conditions
31230557Sjimharris * are met:
32230557Sjimharris *
33230557Sjimharris *   * Redistributions of source code must retain the above copyright
34230557Sjimharris *     notice, this list of conditions and the following disclaimer.
35230557Sjimharris *   * Redistributions in binary form must reproduce the above copyright
36230557Sjimharris *     notice, this list of conditions and the following disclaimer in
37230557Sjimharris *     the documentation and/or other materials provided with the
38230557Sjimharris *     distribution.
39230557Sjimharris *
40230557Sjimharris * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
41230557Sjimharris * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
42230557Sjimharris * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
43230557Sjimharris * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
44230557Sjimharris * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
45230557Sjimharris * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
46230557Sjimharris * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
47230557Sjimharris * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
48230557Sjimharris * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
49230557Sjimharris * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
50230557Sjimharris * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
51230557Sjimharris *
52230557Sjimharris * $FreeBSD$
53230557Sjimharris */
54230557Sjimharris#ifndef _SCIF_OVERVIEW_H_
55230557Sjimharris#define _SCIF_OVERVIEW_H_
56230557Sjimharris
57230557Sjimharris/**
58230557Sjimharris@page framework_page SCI Framework
59230557Sjimharris
60230557Sjimharris@section scif_introduction_section Introduction
61230557Sjimharris
62230557SjimharrisThe SCI Framework component provides SAS and SATA storage specific abstraction
63230557Sjimharristo any OS driver devoid of this type of functionality. The functionality
64230557Sjimharrisprovided by this component is of a higher nature and considered unnecessary
65230557Sjimharrisfor some driver environments.  Basically, a user should be able to utilize
66230557Sjimharristhe same SCI Framework with different SCI Core implementations, with the
67230557Sjimharrislittle to no changes necessary.
68230557Sjimharris
69230557Sjimharris@warning In situations where the SCI framework is utilized, users should NOT
70230557Sjimharris         invoke core methods on core objects for which there are associated
71230557Sjimharris         framework objects and framework methods. Therefore, if a method is
72230557Sjimharris         common to both the core and the framework object, do not invoke the
73230557Sjimharris         core method if utilizing the framework.  Some exceptions to this
74230557Sjimharris         exist and are called out.  It is important to mention that methods
75230557Sjimharris         found only in the core are safe to invoke at times specified per
76230557Sjimharris         that methods definition.
77230557Sjimharris
78230557SjimharrisThe following is a list of features found in an SCI Framework implementation:
79230557Sjimharris
80230557Sjimharris-# SCI Core management
81230557Sjimharris-# Port configuration scheme enforcement.  There are 2 port configuration
82230557Sjimharrisschemes:
83230557Sjimharris  -# Automatic Port Configuration (APC).  In APC mode the framework will
84230557Sjimharris     allow for any port configuration based on what is physically connected,
85230557Sjimharris     assuming the underlying SCI Core also supports the configuration.
86230557Sjimharris  -# Manual Port Configuration (MPC).  In MPC mode the framework expects the
87230557Sjimharris     user to supply exactly which phys are to be allocated to each specific
88230557Sjimharris     port.  If the discovered direct attached physical connections do not match
89230557Sjimharris     the user supplied map, then an error is raised and the initialization
90230557Sjimharris     process is halted.
91230557Sjimharris-# Domain Discovery
92230557Sjimharris-# Domain level resets (i.e. bus reset)
93230557Sjimharris-# Task management processing
94230557Sjimharris-# Controller Shutdown management (e.g. release STP affiliations, quiesce IOs)
95230557Sjimharris-# Remote Device Configuration. Potential features:
96230557Sjimharris  -# SSP: maybe mode selects to set timers or modify DIF settings.
97230557Sjimharris  -# STP: IDENTIFY_DEVICE, SET FEATURES, etc.
98230557Sjimharris  -# SMP: CONTROL type requests to set timers.
99230557Sjimharris-# SAT Translation (Actually contained in SATI component)
100230557Sjimharris-# SMP Zoning management
101230557Sjimharris
102230557Sjimharris@image latex sci_framework.eps "SCI Framework Class Diagram" width=10cm
103230557Sjimharris
104230557Sjimharris@note
105230557SjimharrisFor the SCU Driver Standard implementation of the SCI Framework interface the
106230557Sjimharrisfollowing definitions should be used to augment the cardinalities described
107230557Sjimharrisin the previous diagram:
108230557Sjimharris-# There are exactly 4 scif_domain objects in the scif_controller.  This
109230557Sjimharris   number directly correlates to the number of scic_port objects in the core.
110230557Sjimharris-# The maximum number of supported controllers in a library is a truly flexible
111230557Sjimharris   value, but the likely maximum number is 4.
112230557Sjimharris
113230557Sjimharris */
114230557Sjimharris
115230557Sjimharris#endif // _SCIF_OVERVIEW_H_
116230557Sjimharris
117