1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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
93
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
|
.\" $RuOBSD: radio.4,v 1.4 2001/10/26 05:38:43 form Exp $
.\" $OpenBSD: radio.4,v 1.4 2002/01/04 17:14:51 mickey Exp $
.\"
.\" Copyright (c) 2001 Vladimir Popov
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
.\" USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
.\" ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd October 20, 2001
.Dt RADIO 4
.Os
.Sh NAME
.Nm radio
.Nd device-independent radio driver layer
.Sh SYNOPSIS
.Cd option RADIO_TEA5759
.Pp
.Cd "radio* at az0"
.Cd "radio* at mr0"
.Cd "radio* at rt0"
.Cd "radio* at rtii0"
.Cd "radio* at sf2r0"
.Cd "radio* at sf4r0"
.Pp
.Fd #include <sys/types.h>
.Fd #include <sys/ioctl.h>
.Fd #include <sys/radioio.h>
.Sh DESCRIPTION
The
.Nm
driver provides support for various FM radio cards.
It provides an uniform programming interface layer above different underlying
radio hardware drivers.
.Pp
Philips Semiconductors released two almost identical chips TEA5757 and
TEA5759.
The TEA5757 is used in FM-standards in which the local oscillator frequency
is above the radio frequency (e.g. European and American standards).
The TEA5759 is the version in which the oscillator frequency is below
the radio frequency (e.g. Japanese standards).
The option
.Va RADIO_TEA5759
changes the algotithm of frequency calculation for the tea5757 based cards
to conform with the Japanese standards.
.Pp
For radio tuner controlling there is a single device file available:
.Pa /dev/radio .
.Pp
The following
.Xr ioctl 2
commands are supported:
.Pp
.Bl -tag -width indent -compact
.It Dv RIOCSSRCH (int)
This command assumes that a signal search is required and gives direction
of search to the driver - 0 to search down and any non-zero value to search up.
.It Dv RIOCSINFO (struct radio_info)
.It Dv RIOCGINFO (struct radio_info)
Get or set the current hardware device information into the struct radio_info
structure.
.Bd -literal
struct radio_info {
int mute;
int volume;
int stereo;
int rfreq; /* reference frequency */
int lock; /* locking field strength */
u_int32_t freq; /* in kHz */
u_int32_t caps; /* card capabilities */
#define RADIO_CAPS_DETECT_STEREO (1<<0)
#define RADIO_CAPS_DETECT_SIGNAL (1<<1)
#define RADIO_CAPS_SET_MONO (1<<2)
#define RADIO_CAPS_HW_SEARCH (1<<3)
#define RADIO_CAPS_HW_AFC (1<<4)
#define RADIO_CAPS_REFERENCE_FREQ (1<<5)
#define RADIO_CAPS_LOCK_SENSITIVITY (1<<6)
#define RADIO_CARD_TYPE (0xFF<<16)
u_int32_t info;
#define RADIO_INFO_STEREO (1<<0)
#define RADIO_INFO_SIGNAL (1<<1)
};
.Ed
.Pp
The
.Va mute
field is a boolean.
.Pp
The
.Va volume
field holds the card volume information and can be at most 255.
.Pp
The
.Va stereo
field is a boolean.
.Pp
The
.Va rfreq
holds information about the card reference frequency (not all cards support
this feature).
.Pp
The
.Va lock
field holds information about the card locking field strength during
an automatic search for cards that support this feature.
.Pp
The
.Va freq
field is the frequency in kHz the card is tuned to.
.Pp
The
.Va caps
field is read-only and describes the card capabilities.
The capabilities can have following values:
.Bl -tag -width indent -compact
.It Dv RADIO_CAPS_DETECT_STEREO
The device can determine is it tuned to a stereo signal.
.It Dv RADIO_CAPS_DETECT_SIGNAL
The device can determine is it tuned or not.
.It Dv RADIO_CAPS_SET_MONO
The device capable to forcible set its output to mono.
.It Dv RADIO_CAPS_HW_SEARCH
The device can do hardware search.
.It Dv RADIO_CAPS_HW_AFC
The device has an internal hardware automatic frequency control.
.It Dv RADIO_CAPS_REFERENCE_FREQ
The device allow to change the reference frequency of a received signal.
.It Dv RADIO_CAPS_LOCK_SENSITIVITY
The device allow to change the station lock sensitivity used during search
operation.
.It Dv RADIO_CAPS_CARD_TYPE
Some cards have several different incarnations.
This allow to determine the variant of the card.
Currently not used.
.El
.Pp
The
.Va info
field is read-only and describes current state of the card - tuned/not tuned,
stereo signal/mono signal.
.Bl -tag -width indent -compact
.It Dv RADIO_INFO_SIGNAL
Informs whether the device receives a valid signal or noise.
.It Dv RADIO_INFO_STEREO
Informs whether the device receives a stereo or mono signal.
.El
.El
.Sh FILES
.Bl -tag -width /dev/radio -compact
.It Pa /dev/radio
.El
.Sh SEE ALSO
.Xr ioctl 2 ,
.Xr az 4 ,
.Xr mr 4 ,
.Xr rt 4 ,
.Xr rtii 4 ,
.Xr sf2r 4 ,
.Xr sf4r 4 ,
.Xr radio 9
.Sh BUGS
You can have only one card of the same type.
For example, if you have two aztech FM tuners, the first card with jumper
set to port 0x358 and the second one - to 0x350, you can use only one
aztech card (in the kernel, that is) either with port 0x350 or 0x358.
Don't even try to compile support for the second card into the kernel.
.Sh AUTHORS
The
.Nm
driver was written by
.An Vladimir Popov Aq jumbo@narod.ru
and
.An Maxim Tsyplakov Aq tm@oganer.net .
The man page was written by
.An Maxim Tsyplakov Aq tm@oganer.net .
.Sh HISTORY
The
.Nm
device driver appeared in
.Ox 3.0 .
|