About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / DocBook / s390-drivers.tmpl




Custom Search

Based on kernel version 3.16. Page generated on 2014-08-06 21:39 EST.

1	<?xml version="1.0" encoding="UTF-8"?>
2	<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
3		"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
4	
5	<book id="s390drivers">
6	 <bookinfo>
7	  <title>Writing s390 channel device drivers</title>
8	
9	  <authorgroup>
10	   <author>
11	    <firstname>Cornelia</firstname>
12	    <surname>Huck</surname>
13	    <affiliation>
14	     <address>
15	       <email>cornelia.huck@de.ibm.com</email>
16	     </address>
17	    </affiliation>
18	   </author>
19	  </authorgroup>
20	
21	  <copyright>
22	   <year>2007</year>
23	   <holder>IBM Corp.</holder>
24	  </copyright>
25	
26	  <legalnotice>
27	   <para>
28	     This documentation is free software; you can redistribute
29	     it and/or modify it under the terms of the GNU General Public
30	     License as published by the Free Software Foundation; either
31	     version 2 of the License, or (at your option) any later
32	     version.
33	   </para>
34	
35	   <para>
36	     This program is distributed in the hope that it will be
37	     useful, but WITHOUT ANY WARRANTY; without even the implied
38	     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
39	     See the GNU General Public License for more details.
40	   </para>
41	
42	   <para>
43	     You should have received a copy of the GNU General Public
44	     License along with this program; if not, write to the Free
45	     Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
46	     MA 02111-1307 USA
47	   </para>
48	
49	   <para>
50	     For more details see the file COPYING in the source
51	     distribution of Linux.
52	   </para>
53	  </legalnotice>
54	 </bookinfo>
55	
56	<toc></toc>
57	
58	  <chapter id="intro">
59	   <title>Introduction</title>
60	  <para>
61	    This document describes the interfaces available for device drivers that
62	    drive s390 based channel attached I/O devices. This includes interfaces for
63	    interaction with the hardware and interfaces for interacting with the
64	    common driver core. Those interfaces are provided by the s390 common I/O
65	    layer.
66	  </para>
67	  <para>
68	    The document assumes a familarity with the technical terms associated
69	    with the s390 channel I/O architecture. For a description of this
70	    architecture, please refer to the "z/Architecture: Principles of
71	    Operation", IBM publication no. SA22-7832.
72	  </para>
73	  <para>
74	    While most I/O devices on a s390 system are typically driven through the
75	    channel I/O mechanism described here, there are various other methods
76	    (like the diag interface). These are out of the scope of this document.
77	  </para>
78	  <para>
79	    Some additional information can also be found in the kernel source
80	    under Documentation/s390/driver-model.txt.
81	  </para>
82	  </chapter>
83	  <chapter id="ccw">
84	   <title>The ccw bus</title>
85	  <para>
86		The ccw bus typically contains the majority of devices available to
87		a s390 system. Named after the channel command word (ccw), the basic
88		command structure used to address its devices, the ccw bus contains
89		so-called channel attached devices. They are addressed via I/O
90		subchannels, visible on the css bus. A device driver for
91		channel-attached devices, however, will never interact	with the
92		subchannel directly, but only via the I/O device on the ccw bus,
93		the ccw device.
94	  </para>
95	    <sect1 id="channelIO">
96	     <title>I/O functions for channel-attached devices</title>
97	    <para>
98	      Some hardware structures have been translated into C structures for use
99	      by the common I/O layer and device drivers. For more information on
100	      the hardware structures represented here, please consult the Principles
101	      of Operation.
102	    </para>
103	!Iarch/s390/include/asm/cio.h
104	    </sect1>
105	    <sect1 id="ccwdev">
106	     <title>ccw devices</title>
107	    <para>
108	      Devices that want to initiate channel I/O need to attach to the ccw bus.
109	      Interaction with the driver core is done via the common I/O layer, which
110	      provides the abstractions of ccw devices and ccw device drivers.
111	    </para>
112	    <para>
113	      The functions that initiate or terminate channel I/O all act upon a
114	      ccw device structure. Device drivers must not bypass those functions
115	      or strange side effects may happen.
116	    </para>
117	!Iarch/s390/include/asm/ccwdev.h
118	!Edrivers/s390/cio/device.c
119	!Edrivers/s390/cio/device_ops.c
120	    </sect1>
121	    <sect1 id="cmf">
122	     <title>The channel-measurement facility</title>
123	  <para>
124		The channel-measurement facility provides a means to collect
125		measurement data which is made available by the channel subsystem
126		for each channel attached device.
127	  </para>
128	!Iarch/s390/include/asm/cmb.h
129	!Edrivers/s390/cio/cmf.c
130	    </sect1>
131	  </chapter>
132	
133	  <chapter id="ccwgroup">
134	   <title>The ccwgroup bus</title>
135	  <para>
136		The ccwgroup bus only contains artificial devices, created by the user.
137		Many networking devices (e.g. qeth) are in fact composed of several
138		ccw devices (like read, write and data channel for qeth). The
139		ccwgroup bus provides a mechanism to create a meta-device which
140		contains those ccw devices as slave devices and can be associated
141		with the netdevice.
142	  </para>
143	   <sect1 id="ccwgroupdevices">
144	    <title>ccw group devices</title>
145	!Iarch/s390/include/asm/ccwgroup.h
146	!Edrivers/s390/cio/ccwgroup.c
147	   </sect1>
148	  </chapter>
149	
150	  <chapter id="genericinterfaces">
151	   <title>Generic interfaces</title>
152	  <para>
153		Some interfaces are available to other drivers that do not necessarily
154		have anything to do with the busses described above, but still are
155		indirectly using basic infrastructure in the common I/O layer.
156		One example is the support for adapter interrupts.
157	  </para>
158	!Edrivers/s390/cio/airq.c
159	  </chapter>
160	
161	</book>
Hide Line Numbers
About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Information is copyright its respective author. All material is available from the Linux Kernel Source distributed under a GPL License. This page is provided as a free service by mjmwired.net.