Blame view

Documentation/driver-api/s390-drivers.rst 4.41 KB
bcb1a87a8   Mauro Carvalho Chehab   docs-rst: convert...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  ===================================
  Writing s390 channel device drivers
  ===================================
  
  :Author: Cornelia Huck
  
  Introduction
  ============
  
  This document describes the interfaces available for device drivers that
  drive s390 based channel attached I/O devices. This includes interfaces
  for interaction with the hardware and interfaces for interacting with
  the common driver core. Those interfaces are provided by the s390 common
  I/O layer.
  
  The document assumes a familarity with the technical terms associated
  with the s390 channel I/O architecture. For a description of this
  architecture, please refer to the "z/Architecture: Principles of
  Operation", IBM publication no. SA22-7832.
  
  While most I/O devices on a s390 system are typically driven through the
  channel I/O mechanism described here, there are various other methods
  (like the diag interface). These are out of the scope of this document.
7ddd09134   Cornelia Huck   s390/docs: mentio...
24
25
26
  The s390 common I/O layer also provides access to some devices that are
  not strictly considered I/O devices. They are considered here as well,
  although they are not the focus of this document.
bcb1a87a8   Mauro Carvalho Chehab   docs-rst: convert...
27
  Some additional information can also be found in the kernel source under
8b4a503d6   Mauro Carvalho Chehab   docs: s390: conve...
28
  Documentation/s390/driver-model.rst.
bcb1a87a8   Mauro Carvalho Chehab   docs-rst: convert...
29

7ddd09134   Cornelia Huck   s390/docs: mentio...
30
31
32
33
34
35
36
37
38
  The css bus
  ===========
  
  The css bus contains the subchannels available on the system. They fall
  into several categories:
  
  * Standard I/O subchannels, for use by the system. They have a child
    device on the ccw bus and are described below.
  * I/O subchannels bound to the vfio-ccw driver. See
8b4a503d6   Mauro Carvalho Chehab   docs: s390: conve...
39
    Documentation/s390/vfio-ccw.rst.
7ddd09134   Cornelia Huck   s390/docs: mentio...
40
41
42
43
  * Message subchannels. No Linux driver currently exists.
  * CHSC subchannels (at most one). The chsc subchannel driver can be used
    to send asynchronous chsc commands.
  * eADM subchannels. Used for talking to storage class memory.
bcb1a87a8   Mauro Carvalho Chehab   docs-rst: convert...
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
  The ccw bus
  ===========
  
  The ccw bus typically contains the majority of devices available to a
  s390 system. Named after the channel command word (ccw), the basic
  command structure used to address its devices, the ccw bus contains
  so-called channel attached devices. They are addressed via I/O
  subchannels, visible on the css bus. A device driver for
  channel-attached devices, however, will never interact with the
  subchannel directly, but only via the I/O device on the ccw bus, the ccw
  device.
  
  I/O functions for channel-attached devices
  ------------------------------------------
  
  Some hardware structures have been translated into C structures for use
  by the common I/O layer and device drivers. For more information on the
  hardware structures represented here, please consult the Principles of
  Operation.
  
  .. kernel-doc:: arch/s390/include/asm/cio.h
     :internal:
  
  ccw devices
  -----------
  
  Devices that want to initiate channel I/O need to attach to the ccw bus.
  Interaction with the driver core is done via the common I/O layer, which
  provides the abstractions of ccw devices and ccw device drivers.
  
  The functions that initiate or terminate channel I/O all act upon a ccw
  device structure. Device drivers must not bypass those functions or
  strange side effects may happen.
  
  .. kernel-doc:: arch/s390/include/asm/ccwdev.h
     :internal:
  
  .. kernel-doc:: drivers/s390/cio/device.c
     :export:
  
  .. kernel-doc:: drivers/s390/cio/device_ops.c
     :export:
  
  The channel-measurement facility
  --------------------------------
  
  The channel-measurement facility provides a means to collect measurement
  data which is made available by the channel subsystem for each channel
  attached device.
405d4c5a1   Jonathan Corbet   docs: Get the str...
93
  .. kernel-doc:: arch/s390/include/uapi/asm/cmb.h
bcb1a87a8   Mauro Carvalho Chehab   docs-rst: convert...
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
     :internal:
  
  .. kernel-doc:: drivers/s390/cio/cmf.c
     :export:
  
  The ccwgroup bus
  ================
  
  The ccwgroup bus only contains artificial devices, created by the user.
  Many networking devices (e.g. qeth) are in fact composed of several ccw
  devices (like read, write and data channel for qeth). The ccwgroup bus
  provides a mechanism to create a meta-device which contains those ccw
  devices as slave devices and can be associated with the netdevice.
  
  ccw group devices
  -----------------
  
  .. kernel-doc:: arch/s390/include/asm/ccwgroup.h
     :internal:
  
  .. kernel-doc:: drivers/s390/cio/ccwgroup.c
     :export:
  
  Generic interfaces
  ==================
0f0929bc5   Cornelia Huck   s390/docs: reword...
119
120
121
122
123
124
125
126
127
  The following section contains interfaces in use not only by drivers
  dealing with ccw devices, but drivers for various other s390 hardware
  as well.
  
  Adapter interrupts
  ------------------
  
  The common I/O layer provides helper functions for dealing with adapter
  interrupts and interrupt vectors.
bcb1a87a8   Mauro Carvalho Chehab   docs-rst: convert...
128
129
130
  
  .. kernel-doc:: drivers/s390/cio/airq.c
     :export: