diff options
-rw-r--r-- | Documentation/video4linux/si470x.txt | 118 | ||||
-rw-r--r-- | drivers/media/radio/Kconfig | 14 | ||||
-rw-r--r-- | drivers/media/radio/radio-si470x.c | 13 |
3 files changed, 132 insertions, 13 deletions
diff --git a/Documentation/video4linux/si470x.txt b/Documentation/video4linux/si470x.txt new file mode 100644 index 000000000000..11c5fd22a332 --- /dev/null +++ b/Documentation/video4linux/si470x.txt | |||
@@ -0,0 +1,118 @@ | |||
1 | Driver for USB radios for the Silicon Labs Si470x FM Radio Receivers | ||
2 | |||
3 | Copyright (c) 2008 Tobias Lorenz <tobias.lorenz@gmx.net> | ||
4 | |||
5 | |||
6 | Information from Silicon Labs | ||
7 | ============================= | ||
8 | Silicon Laboratories is the manufacturer of the radio ICs, that nowadays are the | ||
9 | most often used radio receivers in cell phones. Usually they are connected with | ||
10 | I2C. But SiLabs also provides a reference design, which integrates this IC, | ||
11 | together with a small microcontroller C8051F321, to form a USB radio. | ||
12 | Part of this reference design is also a radio application in binary and source | ||
13 | code. The software also contains an automatic firmware upgrade to the most | ||
14 | current version. Information on these can be downloaded here: | ||
15 | http://www.silabs.com/usbradio | ||
16 | |||
17 | |||
18 | Supported ICs | ||
19 | ============= | ||
20 | The following ICs have a very similar register set, so that they are or will be | ||
21 | supported somewhen by the driver: | ||
22 | - Si4700: FM radio receiver | ||
23 | - Si4701: FM radio receiver, RDS Support | ||
24 | - Si4702: FM radio receiver | ||
25 | - Si4703: FM radio receiver, RDS Support | ||
26 | - Si4704: FM radio receiver, no external antenna required | ||
27 | - Si4705: FM radio receiver, no external antenna required, RDS support, Dig I/O | ||
28 | - Si4706: Enhanced FM RDS/TMC radio receiver, no external antenna required, RDS | ||
29 | Support | ||
30 | - Si4707: Dedicated weather band radio receiver with SAME decoder, RDS Support | ||
31 | - Si4708: Smallest FM receivers | ||
32 | - Si4709: Smallest FM receivers, RDS Support | ||
33 | More information on these can be downloaded here: | ||
34 | http://www.silabs.com/products/mcu/Pages/USBFMRadioRD.aspx | ||
35 | |||
36 | |||
37 | Supported USB devices | ||
38 | ===================== | ||
39 | Currently the following USB radios (vendor:product) with the Silicon Labs si470x | ||
40 | chips are known to work: | ||
41 | - 10c4:818a: Silicon Labs USB FM Radio Reference Design | ||
42 | - 06e1:a155: ADS/Tech FM Radio Receiver (formerly Instant FM Music) (RDX-155-EF) | ||
43 | - 1b80:d700: KWorld USB FM Radio SnapMusic Mobile 700 (FM700) | ||
44 | |||
45 | |||
46 | Software | ||
47 | ======== | ||
48 | Testing is usually done with most application under Debian/testing: | ||
49 | - fmtools - Utility for managing FM tuner cards | ||
50 | - gnomeradio - FM-radio tuner for the GNOME desktop | ||
51 | - gradio - GTK FM radio tuner | ||
52 | - kradio - Comfortable Radio Application for KDE | ||
53 | - radio - ncurses-based radio application | ||
54 | |||
55 | There is also a library libv4l, which can be used. It's going to have a function | ||
56 | for frequency seeking, either by using hardware functionality as in radio-si470x | ||
57 | or by implementing a function as we currently have in every of the mentioned | ||
58 | programs. Somewhen the radio programs should make use of libv4l. | ||
59 | |||
60 | For processing RDS information, there is a project ongoing at: | ||
61 | http://rdsd.berlios.de/ | ||
62 | |||
63 | There is currently no project for making TMC sentences human readable. | ||
64 | |||
65 | |||
66 | Audio Listing | ||
67 | ============= | ||
68 | USB Audio is provided by the ALSA snd_usb_audio module. It is recommended to | ||
69 | also select SND_USB_AUDIO, as this is required to get sound from the radio. For | ||
70 | listing you have to redirect the sound, for example using one of the following | ||
71 | commands. | ||
72 | |||
73 | If you just want to test audio (very poor quality): | ||
74 | cat /dev/dsp1 > /dev/dsp | ||
75 | |||
76 | If you use OSS try: | ||
77 | sox -2 --endian little -r 96000 -t oss /dev/dsp1 -t oss /dev/dsp | ||
78 | |||
79 | If you use arts try: | ||
80 | arecord -D hw:1,0 -r96000 -c2 -f S16_LE | artsdsp aplay -B - | ||
81 | |||
82 | |||
83 | Module Parameters | ||
84 | ================= | ||
85 | After loading the module, you still have access to some of them in the sysfs | ||
86 | mount under /sys/module/radio_si470x/parameters. The contents of read-only files | ||
87 | (0444) are not updated, even if space, band and de are changed using private | ||
88 | video controls. The others are runtime changeable. | ||
89 | |||
90 | |||
91 | Errors | ||
92 | ====== | ||
93 | Increase tune_timeout, if you often get -EIO errors. | ||
94 | |||
95 | When timed out or band limit is reached, hw_freq_seek returns -EAGAIN. | ||
96 | |||
97 | If you get any errors from snd_usb_audio, please report them to the ALSA people. | ||
98 | |||
99 | |||
100 | Open Issues | ||
101 | =========== | ||
102 | V4L minor device allocation and parameter setting is not perfect. A solution is | ||
103 | currently under discussion. | ||
104 | |||
105 | There is an USB interface for downloading/uploading new firmware images. Support | ||
106 | for it can be implemented using the request_firmware interface. | ||
107 | |||
108 | There is a RDS interrupt mode. The driver is already using the same interface | ||
109 | for polling RDS information, but is currently not using the interrupt mode. | ||
110 | |||
111 | There is a LED interface, which can be used to override the LED control | ||
112 | programmed in the firmware. This can be made available using the LED support | ||
113 | functions in the kernel. | ||
114 | |||
115 | |||
116 | Other useful information and links | ||
117 | ================================== | ||
118 | http://www.silabs.com/usbradio | ||
diff --git a/drivers/media/radio/Kconfig b/drivers/media/radio/Kconfig index 04cd7c04bdde..5189c4eb439f 100644 --- a/drivers/media/radio/Kconfig +++ b/drivers/media/radio/Kconfig | |||
@@ -355,6 +355,20 @@ config USB_SI470X | |||
355 | tristate "Silicon Labs Si470x FM Radio Receiver support" | 355 | tristate "Silicon Labs Si470x FM Radio Receiver support" |
356 | depends on USB && VIDEO_V4L2 | 356 | depends on USB && VIDEO_V4L2 |
357 | ---help--- | 357 | ---help--- |
358 | This is a driver for USB devices with the Silicon Labs SI470x | ||
359 | chip. Currently these devices are known to work: | ||
360 | - 10c4:818a: Silicon Labs USB FM Radio Reference Design | ||
361 | - 06e1:a155: ADS/Tech FM Radio Receiver (formerly Instant FM Music) | ||
362 | - 1b80:d700: KWorld USB FM Radio SnapMusic Mobile 700 (FM700) | ||
363 | |||
364 | Sound is provided by the ALSA USB Audio/MIDI driver. Therefore | ||
365 | if you don't want to use the device solely for RDS receiving, | ||
366 | it is recommended to also select SND_USB_AUDIO. | ||
367 | |||
368 | Please have a look at the documentation, especially on how | ||
369 | to redirect the audio stream from the radio to your sound device: | ||
370 | Documentation/video4linux/si470x.txt | ||
371 | |||
358 | Say Y here if you want to connect this type of radio to your | 372 | Say Y here if you want to connect this type of radio to your |
359 | computer's USB port. | 373 | computer's USB port. |
360 | 374 | ||
diff --git a/drivers/media/radio/radio-si470x.c b/drivers/media/radio/radio-si470x.c index a20583c13b68..3e1830293de5 100644 --- a/drivers/media/radio/radio-si470x.c +++ b/drivers/media/radio/radio-si470x.c | |||
@@ -25,19 +25,6 @@ | |||
25 | 25 | ||
26 | 26 | ||
27 | /* | 27 | /* |
28 | * User Notes: | ||
29 | * - USB Audio is provided by the alsa snd_usb_audio module. | ||
30 | * For listing you have to redirect the sound, for example using: | ||
31 | * arecord -D hw:1,0 -r96000 -c2 -f S16_LE | artsdsp aplay -B - | ||
32 | * - regarding module parameters in /sys/module/radio_si470x/parameters: | ||
33 | * the contents of read-only files (0444) are not updated, even if | ||
34 | * space, band and de are changed using private video controls | ||
35 | * - increase tune_timeout, if you often get -EIO errors | ||
36 | * - hw_freq_seek returns -EAGAIN, when timed out or band limit is reached | ||
37 | */ | ||
38 | |||
39 | |||
40 | /* | ||
41 | * History: | 28 | * History: |
42 | * 2008-01-12 Tobias Lorenz <tobias.lorenz@gmx.net> | 29 | * 2008-01-12 Tobias Lorenz <tobias.lorenz@gmx.net> |
43 | * Version 1.0.0 | 30 | * Version 1.0.0 |