cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

radiotrack.rst (6297B)


      1.. SPDX-License-Identifier: GPL-2.0
      2
      3The Radiotrack radio driver
      4===========================
      5
      6Author: Stephen M. Benoit <benoits@servicepro.com>
      7
      8Date:  Dec 14, 1996
      9
     10ACKNOWLEDGMENTS
     11----------------
     12
     13This document was made based on 'C' code for Linux from Gideon le Grange
     14(legrang@active.co.za or legrang@cs.sun.ac.za) in 1994, and elaborations from
     15Frans Brinkman (brinkman@esd.nl) in 1996.  The results reported here are from
     16experiments that the author performed on his own setup, so your mileage may
     17vary... I make no guarantees, claims or warranties to the suitability or
     18validity of this information.  No other documentation on the AIMS
     19Lab (http://www.aimslab.com/) RadioTrack card was made available to the
     20author.  This document is offered in the hopes that it might help users who
     21want to use the RadioTrack card in an environment other than MS Windows.
     22
     23WHY THIS DOCUMENT?
     24------------------
     25
     26I have a RadioTrack card from back when I ran an MS-Windows platform.  After
     27converting to Linux, I found Gideon le Grange's command-line software for
     28running the card, and found that it was good!  Frans Brinkman made a
     29comfortable X-windows interface, and added a scanning feature.  For hack
     30value, I wanted to see if the tuner could be tuned beyond the usual FM radio
     31broadcast band, so I could pick up the audio carriers from North American
     32broadcast TV channels, situated just below and above the 87.0-109.0 MHz range.
     33I did not get much success, but I learned about programming ioports under
     34Linux and gained some insights about the hardware design used for the card.
     35
     36So, without further delay, here are the details.
     37
     38
     39PHYSICAL DESCRIPTION
     40--------------------
     41
     42The RadioTrack card is an ISA 8-bit FM radio card.  The radio frequency (RF)
     43input is simply an antenna lead, and the output is a power audio signal
     44available through a miniature phone plug.  Its RF frequencies of operation are
     45more or less limited from 87.0 to 109.0 MHz (the commercial FM broadcast
     46band).  Although the registers can be programmed to request frequencies beyond
     47these limits, experiments did not give promising results.  The variable
     48frequency oscillator (VFO) that demodulates the intermediate frequency (IF)
     49signal probably has a small range of useful frequencies, and wraps around or
     50gets clipped beyond the limits mentioned above.
     51
     52
     53CONTROLLING THE CARD WITH IOPORT
     54--------------------------------
     55
     56The RadioTrack (base) ioport is configurable for 0x30c or 0x20c.  Only one
     57ioport seems to be involved.  The ioport decoding circuitry must be pretty
     58simple, as individual ioport bits are directly matched to specific functions
     59(or blocks) of the radio card.  This way, many functions can be changed in
     60parallel with one write to the ioport.  The only feedback available through
     61the ioports appears to be the "Stereo Detect" bit.
     62
     63The bits of the ioport are arranged as follows:
     64
     65.. code-block:: none
     66
     67	MSb                                                         LSb
     68	+------+------+------+--------+--------+-------+---------+--------+
     69	| VolA | VolB | ???? | Stereo | Radio  | TuneA | TuneB   | Tune   |
     70	|  (+) |  (-) |      | Detect | Audio  | (bit) | (latch) | Update |
     71	|      |      |      | Enable | Enable |       |         | Enable |
     72	+------+------+------+--------+--------+-------+---------+--------+
     73
     74
     75====  ====  =================================
     76VolA  VolB  Description
     77====  ====  =================================
     780	 0  audio mute
     790	 1  volume +    (some delay required)
     801	 0  volume -    (some delay required)
     811	 1  stay at present volume
     82====  ====  =================================
     83
     84====================	===========
     85Stereo Detect Enable	Description
     86====================	===========
     870			No Detect
     881			Detect
     89====================	===========
     90
     91Results available by reading ioport >60 msec after last port write.
     92
     93  0xff ==> no stereo detected,  0xfd ==> stereo detected.
     94
     95=============================	=============================
     96Radio to Audio (path) Enable	Description
     97=============================	=============================
     980				Disable path (silence)
     991				Enable path  (audio produced)
    100=============================	=============================
    101
    102=====  =====  ==================
    103TuneA  TuneB  Description
    104=====  =====  ==================
    1050	0     "zero" bit phase 1
    1060	1     "zero" bit phase 2
    1071	0     "one" bit phase 1
    1081	1     "one" bit phase 2
    109=====  =====  ==================
    110
    111
    11224-bit code, where bits = (freq*40) + 10486188.
    113The Most Significant 11 bits must be 1010 xxxx 0x0 to be valid.
    114The bits are shifted in LSb first.
    115
    116==================	===========================
    117Tune Update Enable	Description
    118==================	===========================
    1190			Tuner held constant
    1201			Tuner updating in progress
    121==================	===========================
    122
    123
    124PROGRAMMING EXAMPLES
    125--------------------
    126
    127.. code-block:: none
    128
    129	Default:        BASE <-- 0xc8  (current volume, no stereo detect,
    130					radio enable, tuner adjust disable)
    131
    132	Card Off:	BASE <-- 0x00  (audio mute, no stereo detect,
    133					radio disable, tuner adjust disable)
    134
    135	Card On:	BASE <-- 0x00  (see "Card Off", clears any unfinished business)
    136			BASE <-- 0xc8  (see "Default")
    137
    138	Volume Down:    BASE <-- 0x48  (volume down, no stereo detect,
    139					radio enable, tuner adjust disable)
    140			wait 10 msec
    141			BASE <-- 0xc8  (see "Default")
    142
    143	Volume Up:      BASE <-- 0x88  (volume up, no stereo detect,
    144					radio enable, tuner adjust disable)
    145			wait 10 msec
    146			BASE <-- 0xc8  (see "Default")
    147
    148	Check Stereo:   BASE <-- 0xd8  (current volume, stereo detect,
    149					radio enable, tuner adjust disable)
    150			wait 100 msec
    151			x <-- BASE     (read ioport)
    152			BASE <-- 0xc8  (see "Default")
    153
    154			x=0xff ==> "not stereo", x=0xfd ==> "stereo detected"
    155
    156	Set Frequency:  code = (freq*40) + 10486188
    157			foreach of the 24 bits in code,
    158			(from Least to Most Significant):
    159			to write a "zero" bit,
    160			BASE <-- 0x01  (audio mute, no stereo detect, radio
    161					disable, "zero" bit phase 1, tuner adjust)
    162			BASE <-- 0x03  (audio mute, no stereo detect, radio
    163					disable, "zero" bit phase 2, tuner adjust)
    164			to write a "one" bit,
    165			BASE <-- 0x05  (audio mute, no stereo detect, radio
    166					disable, "one" bit phase 1, tuner adjust)
    167			BASE <-- 0x07  (audio mute, no stereo detect, radio
    168					disable, "one" bit phase 2, tuner adjust)