val.33/spa v .33/form v .33a val.3 href="../linux+v3.6.9/Documenta > /video4linux/si47133txt"> val.33img src="../.sta >c/gfx/right.png" alt=">>"> v3/spa v v3spa class="lxr_search"> val ="+search" method="post" onsubmit="return do_search(this);"> val.33input typ> hidden" nam> navtarget" tion> "> val.33input typ> text" nam> search" id search"> val.33butt/optyp> submit">Search val.3Prefsv .33/a> v3/spa val.3 33/div val.3 33form ac > ="ajax+*" method="post" onsubmit="return false;"> v3input typ> hidden" nam> ajax_lookup" id ajax_lookup" tion> "> al.3 33/form v al.3 33div class="headingbott/m">
L1">3 313/a>Driver for I2C radios for the Silic/opLabs Si4713 FM Radio Transmitters L2">3 323/a> L3">3 333/a>Copyright (c) 2009 Nokia Corpora > L4">3 343/a>Contact: Eduardo Valentin <> L5">3 353/a> L6">3 363/a> L7">3 373/a>Informa > about the Device L8">3 383/a>============================ L9">3 393/a>This chip is a Silic/opLabs product. It is a I2C device, currently on 0x63 address. L10">3 .8.1a>Basically, it has transmiss> and signal noise level measurement features. L11">3 113/a> L12">3 123/a>The Si4713 integra es transmit func > s for FM broadcast stereo transmiss> . L13">3 133/a>The chip also allows integra ed receive power scanning to identify low signal L14">3 143/a>power FM channels. L15">3 153/a> L16">3 163/a>The chip is programmed using commands and resp ses. There are also several L17">3 173/a>properties which ca change the behavior of this chip. L18">3 183/a> L19">3 193/a>Users must comply with local regula > s radio frequency (RF) transmiss> . L20">3 203/a> L21">3 213/a>Device driver descrip > L22">3 223/a>========================= L23">3 233/a>There are two modules to handle this device. One is a I2C device driver L24">3 243/a>and the other is a pla form driver. L25">3 253/a> L26">3 263/a>The I2C device driver exports a v4l2-subdev interface to the kernel. L27">3 273/a>All properties ca also be accessed by v4l2 extended controls interface, by L28">3 283/a>using the v4l2-subdev calls (g_ext_ctrls, s_ext_ctrls). L29">3 293/a> L30">3 303/a>The pla form device driver exports a v4l2 radio device interface to user land. L31">3 313/a>So, it uses the I2C device driver as a sub device in order to send the user L32">3 323/a>commands to the actual device. Basically it is a wrapper to the I2C device driver. L33">3 333/a> L34">3 343/a>Applica > s ca use v4l2 radio API to specify frequency of opera > , mute sta e, L35">3 353/a>etc. But mostly of its properties will be present in the extended controls. L36">3 363/a> L37">3 373/a>When the v4l2 mute property is set to 1 (true), the driver will turn the chip off. L38">3 383/a> L39">3 393/a>Properties descrip > L40">3 403/a>====================== L41">3 413/a> L42">3 423/a>The properties ca be accessed using v4l2 extended controls. L43">3 433/a>Here is an output from v4l2-ctl util: L44">3 443/a>/ # v4l2-ctl -d /dev/radio0 --all -L L45">3 453/a>Driver Info: L46">3 463/a> Driver nam> : radio-si4713 L47">3 473/a> Card typ> : Silic/opLabs Si4713 Modulator L48">3 483/a> Bus info : L49">3 493/a> Driver vers> : 0 L50">3 503/a> Capabilities : 0x00080800 L51">3 513/a> RDS Output L52">3 523/a> Modulator L53">3 533/a>Audio output: 0 (FM Modulator Audio Out) L54">3 543/a>Frequency: 1408000 (88.000000 MHz) L55">3 553/a>Video Standard = 0x00000000 L56">3 563/a>Modulator: L57">3 573/a> Nam> : FM Modulator L58">3 583/a> Capabilities : 62.5 Hz stereo rds L59">3 593/a> Frequency range : 76.0 MHz - 108.0 MHz L60">3 603/a> Subchannel modula > : stereo+rds L61">3 613/a> L62">3 623/a>User Controls L63">3 633/a> L64">3 643/a> mute (bool) : default=1 tion> 0 L65">3 653/a> L66">3 663/a>FM Radio Modulator Controls L67">3 673/a> L68">3 683/a> rds_signal_devia > (int) : min=0 max=90000 step=10 default=200 tion> 200 flags=slider L69">3 693/a> rds_program_id (int) : min=0 max=65535 step=1 default=0 tion> 0 L70">3 703/a> rds_program_typ> (int) : min=0 max=31 step=1 default=0 tion> 0 L71">3 713/a> rds_ps_nam> (str) : min=0 max=96 step=8 tion> 'si4713 ' L72">3 723/a> rds_radio_text (str) : min=0 max=384 step=32 tion> '' L73">3 733/a> audio_limiter_feature_enabled (bool) : default=1 tion> 1 L74">3 743/a> audio_limiter_release_tim> (int) : min=250 max=102390 step=50 default=5010 tion> 5010 flags=slider L75">3 753/a> audio_limiter_devia > (int) : min=0 max=90000 step=10 default=66250 tion> 66250 flags=slider L76">3 763/a>audio_compress> _feature_enabl (bool) : default=1 tion> 1 L77">3 773/a> audio_compress> _gai (int) : min=0 max=20 step=1 default=15 tion> 15 flags=slider L78">3 783/a> audio_compress> _threshold (int) : min=-40 max=0 step=1 default=-40 tion> -40 flags=slider L79">3 793/a> audio_compress> _attack_tim> (int) : min=0 max=5000 step=500 default=0 tion> 0 flags=slider L80">3 803/a> audio_compress> _release_tim> (int) : min=100000 max=1000000 step=100000 default=1000000 tion> 1000000 flags=slider L81">3 813/a> pilot_tone_feature_enabled (bool) : default=1 tion> 1 L82">3 823/a> pilot_tone_devia > (int) : min=0 max=90000 step=10 default=6750 tion> 6750 flags=slider L83">3 833/a> pilot_tone_frequency (int) : min=0 max=19000 step=1 default=19000 tion> 19000 flags=slider L84">3 843/a> pre_emphasis_settings (menu) : min=0 max=2 default=1 tion> 1 L85">3 853/a> tune_power_level (int) : min=0 max=120 step=1 default=88 tion> 88 flags=slider L86">3 863/a> tune_antenna_capacitor (int) : min=0 max=191 step=1 default=0 tion> 110 flags=slider L87">3 873/a>/ # L88">3 883/a> L89">3 893/a>Here is a summary of them: L90">3 903/a> L91">3 913/a>* Pilot is an audible tone sent by the device.class="line" nam> L90">3 903/a> 92">3 893/a> L89">3 893/a> ilot_trequency (-Contfigres.the drequency of ohe dtereo rilot_tone class="line" nam> L90">3 903/a> L89">3 894/a> ilot_tevia > (-Contfigres.tilot_tone drequency oevia > (evel class="line" nam> L90">3 903/a> L89">3 895/a> ilot_tnabled (- Eableds r (disbleds he dilot_tone drature_class="line" nam> L90">3 903/a> L89">3 893/a> L89">3 897/a>* Phe pi4713 evice in ca pbledof oapplyng vudio_ ompress> _to the Itansmitter signal class="line" nam> L90">3 903/a> L89">3 893/a> L9"">3 893/a>Haomprtnabled (- Eableds r (disbleds he dudio_ dyam>icrange ontrolsdrature_class="line" nam> L90">3 903/a> L10"">3 0""/a>Haomprtai (- Sets he dai (or Fudio_ dyam>icrange ontrolsclass="line" nam> L90">3 903/a> L1101>3 0"1/a>Haomprthreshold (- Sets he dhreshold (evel (or Fudio_ dyam>icrange ontrolsclass="line" nam> L90">3 903/a> L1202>3 0"2/a>Haomprtttack_tim> (- Sets he dttack_ im> (or Fudio_ dyam>icrange ontrolsclass="line" nam> L90">3 903/a> L1303>3 0"3/a>Haomprtelease_tim> (- Sets he delease_ im> (or Fudio_ dyam>icrange ontrolsclass="line" nam> L90">3 903/a> L1404>3 0"4/a> L1505>3 0"5/a>* PLmiter_set upsFudio_ dvia > (emiter_srature_c One ia oer desia > (occurs L1606>3 0"3/a> t is apos> le ton adjst che drentr-nd tai (f ohe dudio_ nput tnd talway L1707>3 0"3/a>provelt boer desia > class="line" nam> L90">3 903/a> L1808>3 0"3/a> L1909>3 0"3/a>Himiter_dnabled (- Eableds r (disbleds he demiter_srature_c L100">3 18.1a>Bimiter_devia > (-Contfigres.tudio_ requency oevia > (evel class="line" nam> L90">3 903/a> L11"1>3 013/a> imiter_release_tim> (- Sets he demiter_selease_ im> class="line" nam> L90">3 903/a> L122">3 113/a> L133">3 133/a>T Phuing tower_ L144">3 114/a> L155">3 153/a> ower_level (- Sets he dutput fower Fevel (or Fignal nransmiss> . L166">3 163/a>Tntenna_capacitor (- his celect>s he dion> of oatenna_tuneng copacitor (manully L177">3 173/a>pr Fudtoa > ally itfset to 1zero L188">3 183/a> L199">3 193/a>U*RDS Oele ed L210">3 103/a> L211">3 113/a>Dds_ps_nam> (- Sets he dDS OpsFam> (fied (or thansmiss> . L12"">3 123/a>=ds_radio_text (- Sets he dDS Oadio Aext (or thansmiss> . L213">3 133/a>Tds_psi(- Sets he dDS OPI(fied (or thansmiss> . L214">3 143/a>ads_psty(- Sets he dDS OPTY(fied (or thansmiss> . L215">3 153/a> L216">3 163/a>T*RDeg (ele ed L217">3 123/a> L218">3 183/a>urovmphasis_(- sets he drovmphasis_(t be acplice (or thansmiss> . L219">3 193/a> L310">3 103/a>TRN L311">3 113/a>S== L312">3 133/a> L13"">3 133/a>This cevice ilso bas taninterface to ueasuremreceive dnoise level . T_ d theat, you shoul L314">3 143/a>Aiotl -he device.noid_c ere is an ocid_of oexample L315">3 133/a> L316">3 163/a> nte(ma (int) argc,chanr *argv[] L317">3 173/a>W{ L318">3 133/a> structpi4713 _rnl rnl L319">3 133/a> nt) f = 0open("dev/radio0 ", O_RDWR) L410">3 140/a> nt) rion L411">3 113/a> L412">3 143/a> tfs(argc<e 2 L413">3 143/a> p rdturn f-EINVAL L14"">3 144/a> L415">3 145/a> tfs(f =lt;e 0 L416">3 163/a> D p rdturn ffd L417">3 143/a> L418">3 183/a> Bscannf(argv[1], "%d", &rnl.requency ) L419">3 143/a> L510">3 103/a> Crion= 0iotl (f , SI713 _IOC_MEASURE_RN , &rnl) L511">3 113/a> tfs(rion=lt;e 0 L512">3 123/a> Mdturn frion L513">3 153/a> L514">3 153/a> prnt)f("eceive dnoise level : %d\n", rnl.rnl) L515">3 153/a> L516">3 153/a> Dclose(f ) L517">3 173/a> } L518">3 153/a> L519">3 159/a>The pstructpi4713 _rnl nd tSI713 _IOC_MEASURE_RN are tdefne"d uner L610">3 103/a> include/mediasi47133th L611">3 113/a> L612">3 123/a>USereo /Mono nd tDS Osbchannel L613">3 133/a> =========================== == L614">3 164/a> L615">3 153/a> Te also be acntfigres using vhe duvailbledoub dhannel (or L16"">3 163/a>Fhansmiss> . T_ d theatuse vS/G_MODULATOR0iotl nd tcntfigres txsbchann propertly L617">3 173/a> Refr to the IV4L2API tpecifyca > s(or tropertuse vf this ciotl L618">3 163/a> L619">3 193/a> Tesings L710">3 173/a>======== L711">3 113/a> Tesingsis ausully one"with l4l2-ctl util:ity(or tmanagngsiFMtune_rna rd. L712">3 173/a>The ptoolca be afounein t4l2-dvbMdtpostor y uner l4l2-capps/til: dieceor y L713">3 173/a> L714">3 143/a> Example(or Fittingsrds_OpsFam> L715">3 153/a> v4l2-ctl -d /dev/radio0 --aitt-trls=ds_ps_nam> ="Dummy" L716">3 173/a> L717">3 173/a> he porigngon=LXR softwre ty the da href="Dhttp://sourceor>s/lxe">LXR ommaunity/a> ,this cexertienta lvers> :ty ta href="Dmailto:lxe@inux/.no">lxe@inux/.no/a> . /div v div ilass="lsbcfooere"> lxe.inux/.no kindy hostd by va href="D">Rs pill Lnupro AS/a> ,tproideo of tLnux/tcntultsng vuneipera > , celrice. ceine i1995. /div v 3d/bodyv d/htmlva