diff options
author | Tilman Schmidt <tilman@imap.cc> | 2009-12-05 03:54:20 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-12-08 23:30:41 -0500 |
commit | 64f16603eae17e869d5fc8a60ae987394190e639 (patch) | |
tree | c21cb3d817399573b5b069981d988fedd2b9b03d | |
parent | 073886ff23bfbe7b88c9133d7a556d6ec51f0b50 (diff) |
gigaset: documentation amendments
Various additions and improvements to the Gigaset driver's README
file, and added comments to its userspace visible include file.
Signed-off-by: Tilman Schmidt <tilman@imap.cc>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | Documentation/isdn/README.gigaset | 116 | ||||
-rw-r--r-- | include/linux/gigaset_dev.h | 22 |
2 files changed, 106 insertions, 32 deletions
diff --git a/Documentation/isdn/README.gigaset b/Documentation/isdn/README.gigaset index 0fc9831d7ecb..794941fc9493 100644 --- a/Documentation/isdn/README.gigaset +++ b/Documentation/isdn/README.gigaset | |||
@@ -68,22 +68,38 @@ GigaSet 307x Device Driver | |||
68 | for troubleshooting or to pass module parameters. | 68 | for troubleshooting or to pass module parameters. |
69 | 69 | ||
70 | The module ser_gigaset provides a serial line discipline N_GIGASET_M101 | 70 | The module ser_gigaset provides a serial line discipline N_GIGASET_M101 |
71 | which drives the device through the regular serial line driver. It must | 71 | which uses the regular serial port driver to access the device, and must |
72 | be attached to the serial line to which the M101 is connected with the | 72 | therefore be attached to the serial device to which the M101 is connected. |
73 | ldattach(8) command (requires util-linux-ng release 2.14 or later), for | 73 | The ldattach(8) command (included in util-linux-ng release 2.14 or later) |
74 | example: | 74 | can be used for that purpose, for example: |
75 | ldattach GIGASET_M101 /dev/ttyS1 | 75 | ldattach GIGASET_M101 /dev/ttyS1 |
76 | This will open the device file, attach the line discipline to it, and | 76 | This will open the device file, attach the line discipline to it, and |
77 | then sleep in the background, keeping the device open so that the line | 77 | then sleep in the background, keeping the device open so that the line |
78 | discipline remains active. To deactivate it, kill the daemon, for example | 78 | discipline remains active. To deactivate it, kill the daemon, for example |
79 | with | 79 | with |
80 | killall ldattach | 80 | killall ldattach |
81 | before disconnecting the device. To have this happen automatically at | 81 | before disconnecting the device. To have this happen automatically at |
82 | system startup/shutdown on an LSB compatible system, create and activate | 82 | system startup/shutdown on an LSB compatible system, create and activate |
83 | an appropriate LSB startup script /etc/init.d/gigaset. (The init name | 83 | an appropriate LSB startup script /etc/init.d/gigaset. (The init name |
84 | 'gigaset' is officially assigned to this project by LANANA.) | 84 | 'gigaset' is officially assigned to this project by LANANA.) |
85 | Alternatively, just add the 'ldattach' command line to /etc/rc.local. | 85 | Alternatively, just add the 'ldattach' command line to /etc/rc.local. |
86 | 86 | ||
87 | The modules accept the following parameters: | ||
88 | |||
89 | Module Parameter Meaning | ||
90 | |||
91 | gigaset debug debug level (see section 3.2.) | ||
92 | |||
93 | startmode initial operation mode (see section 2.5.): | ||
94 | bas_gigaset ) 1=ISDN4linux/CAPI (default), 0=Unimodem | ||
95 | ser_gigaset ) | ||
96 | usb_gigaset ) cidmode initial Call-ID mode setting (see section | ||
97 | 2.5.): 1=on (default), 0=off | ||
98 | |||
99 | Depending on your distribution you may want to create a separate module | ||
100 | configuration file /etc/modprobe.d/gigaset for these, or add them to a | ||
101 | custom file like /etc/modprobe.conf.local. | ||
102 | |||
87 | 2.2. Device nodes for user space programs | 103 | 2.2. Device nodes for user space programs |
88 | ------------------------------------ | 104 | ------------------------------------ |
89 | The device can be accessed from user space (eg. by the user space tools | 105 | The device can be accessed from user space (eg. by the user space tools |
@@ -93,11 +109,48 @@ GigaSet 307x Device Driver | |||
93 | - /dev/ttyGU0 for M105 (USB data boxes) | 109 | - /dev/ttyGU0 for M105 (USB data boxes) |
94 | - /dev/ttyGB0 for the base driver (direct USB connection) | 110 | - /dev/ttyGB0 for the base driver (direct USB connection) |
95 | 111 | ||
96 | You can also select a "default device" which is used by the frontends when | 112 | If you connect more than one device of a type, they will get consecutive |
113 | device nodes, eg. /dev/ttyGU1 for a second M105. | ||
114 | |||
115 | You can also set a "default device" for the user space tools to use when | ||
97 | no device node is given as parameter, by creating a symlink /dev/ttyG to | 116 | no device node is given as parameter, by creating a symlink /dev/ttyG to |
98 | one of them, eg.: | 117 | one of them, eg.: |
99 | 118 | ||
100 | ln -s /dev/ttyGB0 /dev/ttyG | 119 | ln -s /dev/ttyGB0 /dev/ttyG |
120 | |||
121 | The devices accept the following device specific ioctl calls | ||
122 | (defined in gigaset_dev.h): | ||
123 | |||
124 | ioctl(int fd, GIGASET_REDIR, int *cmd); | ||
125 | If cmd==1, the device is set to be controlled exclusively through the | ||
126 | character device node; access from the ISDN subsystem is blocked. | ||
127 | If cmd==0, the device is set to be used from the ISDN subsystem and does | ||
128 | not communicate through the character device node. | ||
129 | |||
130 | ioctl(int fd, GIGASET_CONFIG, int *cmd); | ||
131 | (ser_gigaset and usb_gigaset only) | ||
132 | If cmd==1, the device is set to adapter configuration mode where commands | ||
133 | are interpreted by the M10x DECT adapter itself instead of being | ||
134 | forwarded to the base station. In this mode, the device accepts the | ||
135 | commands described in Siemens document "AT-Kommando Alignment M10x Data" | ||
136 | for setting the operation mode, associating with a base station and | ||
137 | querying parameters like field strengh and signal quality. | ||
138 | Note that there is no ioctl command for leaving adapter configuration | ||
139 | mode and returning to regular operation. In order to leave adapter | ||
140 | configuration mode, write the command ATO to the device. | ||
141 | |||
142 | ioctl(int fd, GIGASET_BRKCHARS, unsigned char brkchars[6]); | ||
143 | (usb_gigaset only) | ||
144 | Set the break characters on an M105's internal serial adapter to the six | ||
145 | bytes stored in brkchars[]. Unused bytes should be set to zero. | ||
146 | |||
147 | ioctl(int fd, GIGASET_VERSION, unsigned version[4]); | ||
148 | Retrieve version information from the driver. version[0] must be set to | ||
149 | one of: | ||
150 | - GIGVER_DRIVER: retrieve driver version | ||
151 | - GIGVER_COMPAT: retrieve interface compatibility version | ||
152 | - GIGVER_FWBASE: retrieve the firmware version of the base | ||
153 | Upon return, version[] is filled with the requested version information. | ||
101 | 154 | ||
102 | 2.3. ISDN4linux | 155 | 2.3. ISDN4linux |
103 | ---------- | 156 | ---------- |
@@ -113,15 +166,24 @@ GigaSet 307x Device Driver | |||
113 | Connection State: 0, Response: -1 | 166 | Connection State: 0, Response: -1 |
114 | gigaset_process_response: resp_code -1 in ConState 0 ! | 167 | gigaset_process_response: resp_code -1 in ConState 0 ! |
115 | Timeout occurred | 168 | Timeout occurred |
116 | you might need to use unimodem mode. (see section 2.5.) | 169 | you probably need to use unimodem mode. (see section 2.5.) |
117 | 170 | ||
118 | 2.4. CAPI | 171 | 2.4. CAPI |
119 | ---- | 172 | ---- |
120 | If the driver is compiled with CAPI support (kernel configuration option | 173 | If the driver is compiled with CAPI support (kernel configuration option |
121 | GIGASET_CAPI, experimental) it can also be used with CAPI 2.0 kernel and | 174 | GIGASET_CAPI, experimental) it can also be used with CAPI 2.0 kernel and |
122 | user space applications. ISDN4Linux is supported in this configuration | 175 | user space applications. For user space access, the module capi.ko must |
176 | be loaded. The capiinit command (included in the capi4k-utils package) | ||
177 | does this for you. | ||
178 | |||
179 | The CAPI variant of the driver supports legacy ISDN4Linux applications | ||
123 | via the capidrv compatibility driver. The kernel module capidrv.ko must | 180 | via the capidrv compatibility driver. The kernel module capidrv.ko must |
124 | be loaded explicitly ("modprobe capidrv") if needed. | 181 | be loaded explicitly with the command |
182 | modprobe capidrv | ||
183 | if needed, and cannot be unloaded again without unloading the driver | ||
184 | first. (These are limitations of capidrv.) | ||
185 | |||
186 | The note about unimodem mode in the preceding section applies here, too. | ||
125 | 187 | ||
126 | 2.5. Unimodem mode | 188 | 2.5. Unimodem mode |
127 | ------------- | 189 | ------------- |
@@ -134,9 +196,14 @@ GigaSet 307x Device Driver | |||
134 | You can switch back using | 196 | You can switch back using |
135 | gigacontr --mode isdn | 197 | gigacontr --mode isdn |
136 | 198 | ||
137 | You can also load the driver using e.g. | 199 | You can also put the driver directly into Unimodem mode when it's loaded, |
138 | modprobe usb_gigaset startmode=0 | 200 | by passing the module parameter startmode=0 to the hardware specific |
139 | to prevent the driver from starting in "isdn4linux mode". | 201 | module, e.g. |
202 | modprobe usb_gigaset startmode=0 | ||
203 | or by adding a line like | ||
204 | options usb_gigaset startmode=0 | ||
205 | to an appropriate module configuration file, like /etc/modprobe.d/gigaset | ||
206 | or /etc/modprobe.conf.local. | ||
140 | 207 | ||
141 | In this mode the device works like a modem connected to a serial port | 208 | In this mode the device works like a modem connected to a serial port |
142 | (the /dev/ttyGU0, ... mentioned above) which understands the commands | 209 | (the /dev/ttyGU0, ... mentioned above) which understands the commands |
@@ -164,9 +231,8 @@ GigaSet 307x Device Driver | |||
164 | 231 | ||
165 | options ppp_async flag_time=0 | 232 | options ppp_async flag_time=0 |
166 | 233 | ||
167 | to /etc/modprobe.conf. If your distribution has some local module | 234 | to an appropriate module configuration file, like /etc/modprobe.d/gigaset |
168 | configuration file like /etc/modprobe.conf.local, | 235 | or /etc/modprobe.conf.local. |
169 | using that should be preferred. | ||
170 | 236 | ||
171 | 2.6. Call-ID (CID) mode | 237 | 2.6. Call-ID (CID) mode |
172 | ------------------ | 238 | ------------------ |
@@ -189,12 +255,13 @@ GigaSet 307x Device Driver | |||
189 | settings (CID mode). | 255 | settings (CID mode). |
190 | - If you have several DECT data devices (M10x) which you want to use | 256 | - If you have several DECT data devices (M10x) which you want to use |
191 | in turn, select Unimodem mode by passing the parameter "cidmode=0" to | 257 | in turn, select Unimodem mode by passing the parameter "cidmode=0" to |
192 | the driver ("modprobe usb_gigaset cidmode=0" or modprobe.conf). | 258 | the appropriate driver module (ser_gigaset or usb_gigaset). |
193 | 259 | ||
194 | If you want both of these at once, you are out of luck. | 260 | If you want both of these at once, you are out of luck. |
195 | 261 | ||
196 | You can also use /sys/class/tty/ttyGxy/cidmode for changing the CID mode | 262 | You can also use the tty class parameter "cidmode" of the device to |
197 | setting (ttyGxy is ttyGU0 or ttyGB0). | 263 | change its CID mode while the driver is loaded, eg. |
264 | echo 0 > /sys/class/tty/ttyGU0/cidmode | ||
198 | 265 | ||
199 | 2.7. Unregistered Wireless Devices (M101/M105) | 266 | 2.7. Unregistered Wireless Devices (M101/M105) |
200 | ----------------------------------------- | 267 | ----------------------------------------- |
@@ -208,7 +275,7 @@ GigaSet 307x Device Driver | |||
208 | driver. In that situation, a restricted set of functions is available | 275 | driver. In that situation, a restricted set of functions is available |
209 | which includes, in particular, those necessary for registering the device | 276 | which includes, in particular, those necessary for registering the device |
210 | to a base or for switching it between Fixed Part and Portable Part | 277 | to a base or for switching it between Fixed Part and Portable Part |
211 | modes. | 278 | modes. See the gigacontr(8) manpage for details. |
212 | 279 | ||
213 | 3. Troubleshooting | 280 | 3. Troubleshooting |
214 | --------------- | 281 | --------------- |
@@ -222,9 +289,7 @@ GigaSet 307x Device Driver | |||
222 | 289 | ||
223 | options isdn dialtimeout=15 | 290 | options isdn dialtimeout=15 |
224 | 291 | ||
225 | to /etc/modprobe.conf. If your distribution has some local module | 292 | to /etc/modprobe.d/gigaset, /etc/modprobe.conf.local or a similar file. |
226 | configuration file like /etc/modprobe.conf.local, | ||
227 | using that should be preferred. | ||
228 | 293 | ||
229 | Problem: | 294 | Problem: |
230 | Your isdn script aborts with a message about isdnlog. | 295 | Your isdn script aborts with a message about isdnlog. |
@@ -264,7 +329,8 @@ GigaSet 307x Device Driver | |||
264 | The initial value can be set using the debug parameter when loading the | 329 | The initial value can be set using the debug parameter when loading the |
265 | module "gigaset", e.g. by adding a line | 330 | module "gigaset", e.g. by adding a line |
266 | options gigaset debug=0 | 331 | options gigaset debug=0 |
267 | to /etc/modprobe.conf, ... | 332 | to your module configuration file, eg. /etc/modprobe.d/gigaset or |
333 | /etc/modprobe.conf.local. | ||
268 | 334 | ||
269 | Generated debugging information can be found | 335 | Generated debugging information can be found |
270 | - as output of the command | 336 | - as output of the command |
diff --git a/include/linux/gigaset_dev.h b/include/linux/gigaset_dev.h index 5dc4a316ca37..258ba82937e7 100644 --- a/include/linux/gigaset_dev.h +++ b/include/linux/gigaset_dev.h | |||
@@ -16,15 +16,23 @@ | |||
16 | 16 | ||
17 | #include <linux/ioctl.h> | 17 | #include <linux/ioctl.h> |
18 | 18 | ||
19 | /* The magic IOCTL value for this interface. */ | ||
19 | #define GIGASET_IOCTL 0x47 | 20 | #define GIGASET_IOCTL 0x47 |
20 | 21 | ||
21 | #define GIGVER_DRIVER 0 | 22 | /* enable/disable device control via character device (lock out ISDN subsys) */ |
22 | #define GIGVER_COMPAT 1 | 23 | #define GIGASET_REDIR _IOWR(GIGASET_IOCTL, 0, int) |
23 | #define GIGVER_FWBASE 2 | ||
24 | 24 | ||
25 | #define GIGASET_REDIR _IOWR (GIGASET_IOCTL, 0, int) | 25 | /* enable adapter configuration mode (M10x only) */ |
26 | #define GIGASET_CONFIG _IOWR (GIGASET_IOCTL, 1, int) | 26 | #define GIGASET_CONFIG _IOWR(GIGASET_IOCTL, 1, int) |
27 | #define GIGASET_BRKCHARS _IOW (GIGASET_IOCTL, 2, unsigned char[6]) //FIXME [6] okay? | 27 | |
28 | #define GIGASET_VERSION _IOWR (GIGASET_IOCTL, 3, unsigned[4]) | 28 | /* set break characters (M105 only) */ |
29 | #define GIGASET_BRKCHARS _IOW(GIGASET_IOCTL, 2, unsigned char[6]) | ||
30 | |||
31 | /* get version information selected by arg[0] */ | ||
32 | #define GIGASET_VERSION _IOWR(GIGASET_IOCTL, 3, unsigned[4]) | ||
33 | /* values for GIGASET_VERSION arg[0] */ | ||
34 | #define GIGVER_DRIVER 0 /* get driver version */ | ||
35 | #define GIGVER_COMPAT 1 /* get interface compatibility version */ | ||
36 | #define GIGVER_FWBASE 2 /* get base station firmware version */ | ||
29 | 37 | ||
30 | #endif | 38 | #endif |